Mercurial > hg > bts-webui
annotate bts_webui/amancay/static/amancay_interface.js @ 144:c93c594f1f98 draft
toolbox: convert the toolbox into a template tag
This is a *huge* improvement to how the code is organized right now.
Specifically this gives us complete control over how stuff is loaded from the
sidebar and makes more evident which are the paths taken by the code to
actually do stuff. A concrete example is how loading of links happen.
amancay_interface.js has been disabled to implement/move its functionality to
other places.
author | diegoe-guest |
---|---|
date | Mon, 10 Aug 2009 23:42:03 +0000 |
parents | 3f5b51f6f99b |
children |
rev | line source |
---|---|
3 | 1 function reload_current_view(evt) { |
2 var view = document.getElementById("current_view").value; | |
144
c93c594f1f98
toolbox: convert the toolbox into a template tag
diegoe-guest
parents:
44
diff
changeset
|
3 load_bugs(evt,"/" + view + "_table/"); |
0 | 4 } |
5 | |
3 | 6 var items_changed = function(request) { |
7 var item_type = document.getElementById("item").name; | |
8 var item_list = MochiKit.Async.evalJSONRequest(request)["item_list"]; | |
9 if (item_list.length == 0) { | |
10 var dom_form = document.getElementById("item_selection"); | |
9 | 11 new_span = DIV({'class': 'toolbox_message'}, "No items selected"); |
3 | 12 replaceChildNodes(dom_form, new_span); |
13 } else { | |
14 var cells = new Array(item_list.length); | |
15 for (var i=0; i < item_list.length; i++) { | |
16 cells[i] = [ TD({"class":"item_select"}, INPUT({"type":"checkbox", | |
17 "name":item_type+"_select", "id":"item_select", "value": | |
18 item_list[i]}, null)), TD({"class":"item_name"}, item_list[i]) ]; | |
19 } | |
20 var rows = map(partial(TR, null), cells); | |
21 var dom_item_table = document.getElementById("item_list"); | |
22 if (! dom_item_table) { | |
23 dom_item_table = TABLE({"id":"item_list"}) | |
24 dom_item_list = TBODY(null, null) | |
25 replaceChildNodes(dom_item_table, dom_item_list); | |
26 var dom_form = document.getElementById("item_selection"); | |
27 var dom_remove = DIV({"class":"toolbox_remove"}, | |
28 INPUT({"type":"submit", "value": "Remove", "class": "toolbox_remove"})) | |
29 MochiKit.Signal.connect( dom_form, 'onsubmit', send_item_selected ); | |
30 replaceChildNodes(dom_form, dom_item_table, dom_remove) | |
31 } else { | |
32 dom_item_list = dom_item_table.getElementsByTagName("tbody")[0]; | |
33 } | |
34 replaceChildNodes(dom_item_list, rows); | |
35 } | |
36 reload_current_view(); | |
37 } | |
0 | 38 |
39 | |
3 | 40 function loading_bugs() { |
41 new_span = SPAN({'class': 'loading'}, "Loading..."); | |
42 replaceChildNodes(document.getElementById("loading"), new_span); | |
43 } | |
44 function loading_finished() { | |
45 new_span = SPAN(); | |
46 replaceChildNodes(document.getElementById("loading"), new_span); | |
47 } | |
48 | |
36 | 49 var got_search_results = function(request) { |
50 place = document.getElementById("search_results"); | |
51 replace_content(request, place); | |
52 pagerConnect(); | |
53 } | |
3 | 54 |
55 var got_bugs = function(request) { | |
36 | 56 place = document.getElementById("main_content"); |
57 replace_content(request, place); | |
58 } | |
59 | |
60 function replace_content(request, place) { | |
0 | 61 if (strip(request.responseText) != "") { |
36 | 62 place.innerHTML = request.responseText; |
0 | 63 } |
64 else { | |
3 | 65 new_span = SPAN({'class': 'error'}, "No bugs found"); |
66 replaceChildNodes(place, new_span); | |
67 } | |
68 loading_finished(); | |
69 } | |
36 | 70 |
3 | 71 var failed_bugs = function(request) { |
72 new_span = SPAN({'class': 'error'}, "ERROR: bug list couldn't be loaded"); | |
36 | 73 replaceChildNodes(document.getElementById("main_content"), new_span); |
3 | 74 loading_finished(); |
75 } | |
76 | |
36 | 77 var failed_search_results = function(request) { |
78 new_span = SPAN({'class': 'error'}, "ERROR: search results couldn't be loaded"); | |
79 replaceChildNodes(document.getElementById("search_results"), new_span); | |
80 loading_finished(); | |
81 } | |
1 | 82 |
83 function load_bugs(evt, url) { | |
84 loading_bugs(); | |
85 var d = doXHR(url); | |
86 d.addCallbacks(got_bugs, failed_bugs); | |
87 evt.preventDefault(); | |
0 | 88 } |
1 | 89 |
36 | 90 function load_search_results(evt, url) { |
91 loading_bugs(); | |
92 var d = doXHR(url); | |
93 d.addCallbacks(got_search_results, failed_search_results); | |
94 evt.preventDefault(); | |
95 } | |
1 | 96 |
36 | 97 function send_page(evt) { |
98 url = (evt.src() + "").replace(/search/, "search_table"); | |
99 load_search_results(evt,url); | |
100 evt.preventDefault(); | |
101 } | |
102 | |
103 function pagerConnect() { | |
104 var pager = document.getElementById("pager") | |
105 if (pager) { | |
106 var items = pager.getElementsByTagName("a") | |
107 for (var i = 0; i < items.length; i++) { | |
108 MochiKit.Signal.connect( items[i], 'onclick', send_page ); | |
109 } | |
110 } | |
111 } | |
112 | |
0 | 113 function myLoadFunction() |
114 { | |
36 | 115 pagerConnect(); |
1 | 116 |
44
3f5b51f6f99b
Divided the javascript files into buglog / everything else
marga
parents:
36
diff
changeset
|
117 if (buglogConnect) |
3f5b51f6f99b
Divided the javascript files into buglog / everything else
marga
parents:
36
diff
changeset
|
118 buglogConnect(); |
3f5b51f6f99b
Divided the javascript files into buglog / everything else
marga
parents:
36
diff
changeset
|
119 |
1 | 120 var link; |
121 link = document.getElementById("submitted_bugs_link"); | |
25 | 122 if (link) |
123 MochiKit.Signal.connect( link, 'onclick', get_submitted_bugs ); | |
1 | 124 |
125 link = document.getElementById("received_bugs_link"); | |
25 | 126 if (link) |
127 MochiKit.Signal.connect( link, 'onclick', get_received_bugs ); | |
1 | 128 |
129 link = document.getElementById("package_bugs_link"); | |
25 | 130 if (link) |
131 MochiKit.Signal.connect( link, 'onclick', get_package_bugs ); | |
1 | 132 |
133 link = document.getElementById("selected_bugs_link"); | |
25 | 134 if (link) |
135 MochiKit.Signal.connect( link, 'onclick', get_selected_bugs ); | |
1 | 136 |
137 link = document.getElementById("tagged_bugs_link"); | |
25 | 138 if (link) |
139 MochiKit.Signal.connect( link, 'onclick', get_tagged_bugs ); | |
0 | 140 } |
141 | |
142 /*connect our event handlers right off*/ | |
144
c93c594f1f98
toolbox: convert the toolbox into a template tag
diegoe-guest
parents:
44
diff
changeset
|
143 MochiKit.DOM.addLoadEvent(myLoadFunction); |