annotate NCBI Blast reference example_files/toggle.js @ 0:a54279222d84 draft

Imported from capsule None
author jankanis
date Mon, 19 May 2014 09:43:54 -0400
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
1
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
2 Toggle = function(node) {
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
3 this.init(node);
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
4 }
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
5
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
6 /**
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
7 * @class Creates a new Toggle class with "node" as src
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
8 * @return Reutrns a new toggle instance
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
9 */
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
10 Toggle.prototype = {
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
11
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
12 init: function(node) {
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
13
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
14 // Subclass instance?
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
15 if (typeof(arguments[0]) == 'undefined') return;
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
16
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
17 var oThis = this;
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
18 this.node = node;
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
19
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
20 // Initialize "showing" variable based on presence of "showing" or
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
21 // "hiding" class. If neither, then showing. Be sure class is
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
22 // set to reflect variable value
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
23 node.showing =
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
24 utils.hasClass(node, "showing") || !utils.hasClass(node, "hiding");
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
25 utils.addClass(node, node.showing ? "showing" : "hiding");
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
26
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
27 // Set notifier for node
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
28 utils.addEvent(node, "click", function(e) {
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
29 e = e || window.event;
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
30 utils.preventDefault(e);
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
31
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
32 var theNode = utils.getTargetObj(e);
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
33
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
34 // Send message to global notifier, if one exists
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
35 if (typeof(Notifier) != 'undefined') {
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
36 var notifier = Notifier.getInstance();
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
37 // Notify before change
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
38 notifier.Notify(oThis, "change:" + theNode.id, !this.showing);
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
39 }
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
40
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
41 // Hide or show based on current state
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
42 if (this.showing) {
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
43 oThis.hide();
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
44 } else {
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
45 oThis.show();
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
46 }
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
47
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
48 }, false);
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
49
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
50 utils.addEvent(node, "selectstart", function(e) { utils.preventDefault(e); }, true);
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
51 utils.addEvent(node, "drag", function(e) { utils.preventDefault(e); }, true);
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
52
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
53 // Cache "this" for ID lookup
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
54 if (!node.id) {
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
55 node.id = utils.createNewId();
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
56 }
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
57 var m = Toggle.getSrcs();
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
58 m[node.id] = this;
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
59 },
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
60
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
61 // Hide targets, and set self to hiding.
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
62 hide: function() {
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
63 var oThis = this;
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
64
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
65 oThis.setHiding();
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
66 if (oThis.listeners) {
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
67 forEach(oThis.listeners, function(l) {
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
68 oThis.hideTarget(l);
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
69 });
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
70 }
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
71 },
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
72
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
73 // Show targets, and set self to showing.
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
74 show: function() {
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
75 var oThis = this;
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
76
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
77 oThis.setShowing();
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
78 if (oThis.listeners) {
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
79 forEach(oThis.listeners, function(l) {
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
80 oThis.showTarget(l);
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
81 });
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
82 }
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
83 },
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
84
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
85 // Set own presentation to "showing"
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
86 setShowing: function() {
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
87 utils.addClass(this.node, "showing");
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
88 utils.removeClass(this.node, "hiding");
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
89 this.node.showing = true;
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
90 },
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
91
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
92 // Set own presentation to "hiding"
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
93 setHiding: function() {
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
94 utils.addClass(this.node, "hiding");
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
95 utils.removeClass(this.node, "showing");
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
96 this.node.showing = false;
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
97 },
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
98
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
99 // Show a target
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
100 showTarget: function(l) {
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
101 utils.addClass(l, "shown");
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
102 utils.removeClass(l, "hidden");
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
103 },
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
104
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
105 // Hide a target
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
106 hideTarget: function(l) {
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
107 utils.addClass(l, "hidden");
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
108 utils.removeClass(l, "shown");
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
109 },
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
110
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
111 // Add a target to this toggle.
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
112 add: function(target) {
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
113 if (!this.listeners) {
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
114 this.listeners = new Array();
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
115 }
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
116 this.listeners[this.listeners.length] = target;
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
117
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
118 if (utils.hasClass(target, "hidden")) {
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
119 this.setHiding();
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
120 this.node.showing = false;
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
121 } else {
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
122 this.setShowing();
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
123 this.node.showing = true;
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
124 }
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
125 }
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
126 }
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
127
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
128 // Show/hide a "target" (a node controlled by the node with the given ID)
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
129 Toggle.addTarget = function(srcid, target) {
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
130 var tn = Toggle.findOrMake(srcid);
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
131 tn.add(target);
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
132 }
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
133
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
134 // Assoc array of srcs indexed by their ids
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
135 Toggle.getSrcs = function() {
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
136 if (!Toggle.srcs) {
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
137 Toggle.srcs = new Object();
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
138 }
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
139 return Toggle.srcs;
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
140 }
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
141
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
142 // Find or make toggle for given id
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
143 Toggle.findOrMake = function(srcid) {
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
144 var ts = Toggle.getSrcs();
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
145 var tn = ts[srcid];
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
146 if (!tn) {
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
147 tn = new Toggle($(srcid));
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
148 }
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
149 return tn;
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
150 }
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
151
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
152 // This dispatches the call to Toggle.onload, which may be
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
153 // overridden by instances (subclasses)
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
154 Toggle._onload = function() {
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
155 Toggle.onload();
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
156 }
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
157
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
158 // A toggle source node controls other nodes that reference it by id using
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
159 // their toggle= attribute. A node may be both a toggle source and destination.
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
160 Toggle.onload = function() {
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
161 //alert("toggle start");
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
162 if(utils.hasClass(document.body,"noToggleCheck")) return;
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
163
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
164 shnodes = jQuery("[toggle]");
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
165 // Now hook up dst nodes
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
166 forEach(shnodes, function(node) {
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
167 // Link toggle node to its source
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
168 var srcid = node.getAttribute("toggle");
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
169 Toggle.addTarget(srcid, node);
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
170 });
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
171 //alert("toggle 2 end");
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
172 }
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
173
a54279222d84 Imported from capsule None
jankanis
parents:
diff changeset
174 utils.addEvent(window, 'load', Toggle._onload, false);