18 |
} |
} |
19 |
|
|
20 |
$('template_name').value = template_name; |
$('template_name').value = template_name; |
21 |
submit_results_form(); |
submit_results_form( 1 ); |
22 |
return false; |
return false; |
23 |
} |
} |
24 |
|
|
46 |
return false; |
return false; |
47 |
} |
} |
48 |
|
|
49 |
$('page_nr').value = page_nr; |
submit_results_form( page_nr ); |
|
submit_results_form(); |
|
50 |
|
|
51 |
return false; |
return false; |
52 |
} |
} |
103 |
/* |
/* |
104 |
submit results form using AJAX |
submit results form using AJAX |
105 |
*/ |
*/ |
106 |
function submit_results_form() { |
function submit_results_form( page_nr ) { |
107 |
var results_form = $('results_form'); |
var results_form = $('results_form'); |
108 |
|
|
109 |
if (results_form) { |
if (results_form) { |
110 |
var form_params = Form.serialize( results_form ); |
var form_params = Form.serialize( results_form ); |
111 |
|
|
112 |
Logger.debug('Ajax.Updater(results,/results/ajax) '+form_params); |
var results_div = 'results'; |
113 |
|
if (! page_nr) { |
114 |
|
page_nr = get_page_nr() || 0; |
115 |
|
} else { |
116 |
|
$('page_nr').value = page_nr; |
117 |
|
Logger.info("reset page_nr to "+page_nr); |
118 |
|
} |
119 |
|
|
120 |
|
if (page_nr > 1) { |
121 |
|
results_div += '_' + page_nr; |
122 |
|
} |
123 |
|
|
124 |
|
if (! $( results_div )) { |
125 |
|
Logger.error('next page div '+results_div+' doesn\'t exist'); |
126 |
|
results_div = 'results'; |
127 |
|
} |
128 |
|
|
129 |
|
var url = results_form.action; |
130 |
|
url += '/ajax'; |
131 |
|
|
132 |
new Ajax.Updater( 'results', '/search/results/ajax', { |
Logger.debug('submit_results_form to '+url+' page:'+page_nr+' div:'+results_div+' params:'+form_params); |
133 |
|
|
134 |
|
Logger.info( 'loading page '+page_nr+' into '+results_div ); |
135 |
|
show_searching( page_nr ); |
136 |
|
|
137 |
|
new Ajax.Updater( results_div, url, { |
138 |
parameters: form_params, |
parameters: form_params, |
139 |
asynchronous: 1, |
asynchronous: 1, |
140 |
onLoading: function(request) { |
onComplete: function(request) { |
141 |
show_searching(); |
Logger.info( 'page '+page_nr+' loaded into '+results_div ); |
142 |
}, |
update_results_stat( page_nr ); |
143 |
onLoaded: function(request) { |
hide_searching( page_nr ); |
|
hide_searching(); |
|
144 |
} |
} |
145 |
} ) ; |
} ) ; |
146 |
return false; |
return false; |
157 |
|
|
158 |
var search_active = 0; |
var search_active = 0; |
159 |
|
|
160 |
function show_searching() { |
function show_searching( page_nr ) { |
161 |
Logger.debug('show_searching'); |
Logger.debug('show_searching '+page_nr); |
162 |
Element.show('searching'); |
var el = 'searching'; |
163 |
// new Effect.Fade('results', { duration: 0.3 }); |
if (page_nr && page_nr > 1) el += '_'+page_nr; |
164 |
|
Element.show( el ); |
165 |
search_active = 1; |
search_active = 1; |
166 |
return false; |
return false; |
167 |
} |
} |
168 |
|
|
169 |
function hide_searching() { |
function hide_searching( page_nr ) { |
170 |
Logger.debug('hide_searching'); |
Logger.debug('hide_searching '+page_nr); |
171 |
Element.hide('searching'); |
var el = 'searching'; |
172 |
// new Effect.Highlight('results'); |
if (page_nr && page_nr > 1) { |
173 |
// new Effect.Appear('results', { duration: 0.3 }); |
Element.hide('page_'+(page_nr - 1)); |
174 |
|
} |
175 |
|
Element.hide( el ); |
176 |
search_active = 0; |
search_active = 0; |
177 |
|
// new Effect.Appear('results', { duration: 0.3 }); |
178 |
return false; |
return false; |
179 |
} |
} |
180 |
|
|
192 |
var args = '?record_uri='+record_uri+'&template_filename='+tmp_template_filename; |
var args = '?record_uri='+record_uri+'&template_filename='+tmp_template_filename; |
193 |
Logger.debug('Ajax.Updater(results,/search/record) '+args); |
Logger.debug('Ajax.Updater(results,/search/record) '+args); |
194 |
|
|
195 |
|
show_searching(); |
196 |
|
|
197 |
new Ajax.Updater( 'results', '/search/record'+args, { |
new Ajax.Updater( 'results', '/search/record'+args, { |
198 |
asynchronous: 1, |
asynchronous: 1, |
199 |
onLoading: function(request) { |
onComplete: function(request) { |
|
show_searching(); |
|
|
}, |
|
|
onLoaded: function(request) { |
|
200 |
hide_searching(); |
hide_searching(); |
201 |
} |
} |
202 |
} ) ; |
} ) ; |
212 |
|
|
213 |
function checkbox_click() { |
function checkbox_click() { |
214 |
if (search_active) return false; |
if (search_active) return false; |
|
submit_results_form(); |
|
215 |
Logger.debug('checkbox_click'); |
Logger.debug('checkbox_click'); |
216 |
|
submit_results_form( 1 ); |
217 |
return true; |
return true; |
218 |
} |
} |
219 |
|
|
220 |
|
/* toggle or select checkbox with value toggle */ |
221 |
|
|
222 |
|
function checkbox_toggle( name, val ) { |
223 |
|
return checkbox_magic( name, val, 0 ); |
224 |
|
} |
225 |
|
|
226 |
|
function checkbox_single( name, val ) { |
227 |
|
return checkbox_magic( name, val, 1 ); |
228 |
|
} |
229 |
|
|
230 |
|
function checkbox_magic( name, val, single ) { |
231 |
|
|
232 |
|
Logger.info('checkbox_magic('+name+','+val+','+single+')'); |
233 |
|
|
234 |
|
var form = $('results_form'); |
235 |
|
var inputs = form.getElementsByTagName('input'); |
236 |
|
|
237 |
|
for (var i = 0; i < inputs.length; i++) { |
238 |
|
var input = inputs[i]; |
239 |
|
if (input.type != 'checkbox') continue; |
240 |
|
if (single) { |
241 |
|
input.checked = false; |
242 |
|
} |
243 |
|
if (input.name != name || input.value != val) continue; |
244 |
|
Logger.debug('toggle '+input.name+'='+input.value+' '+input.checked); |
245 |
|
input.checked = ! input.checked; |
246 |
|
if (! single) { |
247 |
|
submit_results_form( 1 ); |
248 |
|
return false; |
249 |
|
} |
250 |
|
} |
251 |
|
submit_results_form( 1 ); |
252 |
|
return false; |
253 |
|
} |
254 |
|
|
255 |
/* reset form fields in _reset hidden field to nothing */ |
/* reset form fields in _reset hidden field to nothing */ |
256 |
|
|
257 |
function reset_form() { |
function reset_form() { |
265 |
} |
} |
266 |
|
|
267 |
var t=$('search_table'); |
var t=$('search_table'); |
268 |
|
var max_p = t.rows.length; |
269 |
for(var i = 0; i < attr_rows.length; i++) { |
for(var i = 0; i < attr_rows.length; i++) { |
270 |
var p = attr_rows[i]; |
var p = attr_rows[i]; |
271 |
if (p != -1) { |
if (p != -1) { |
272 |
Logger.debug('delete row '+p); |
if (p < max_p) { |
273 |
t.deleteRow( p ); |
Logger.debug('delete row '+p); |
274 |
|
t.deleteRow( p ); |
275 |
|
} else { |
276 |
|
Logger.error('skipping invalid delete row '+p); |
277 |
|
} |
278 |
} |
} |
279 |
} |
} |
280 |
|
|
281 |
|
attr_rows = new Array(); |
282 |
|
|
283 |
return false; |
return false; |
284 |
} |
} |
285 |
|
|
292 |
save_search(attr, val); |
save_search(attr, val); |
293 |
|
|
294 |
$('template_name').value = template; |
$('template_name').value = template; |
295 |
submit_results_form(); |
submit_results_form( 1 ); |
296 |
|
|
297 |
return false; |
return false; |
298 |
} |
} |
311 |
} |
} |
312 |
reset_form(); |
reset_form(); |
313 |
|
|
314 |
|
var form = $('results_form'); |
315 |
|
var inputs = form.getElementsByTagName('input'); |
316 |
|
|
317 |
|
for (var i = 0; i < inputs.length; i++) { |
318 |
|
var input = inputs[i]; |
319 |
|
if (input.name != attr) continue; |
320 |
|
Logger.debug('found '+name+'='+input.value); |
321 |
|
input.value = unescape( val ); |
322 |
|
return false; |
323 |
|
} |
324 |
|
|
325 |
var t_row_nr = t.rows.length; |
var t_row_nr = t.rows.length; |
326 |
var tr = t.insertRow( t_row_nr ); |
var tr = t.insertRow( t_row_nr ); |
327 |
|
|
376 |
|
|
377 |
return true; |
return true; |
378 |
}; |
}; |
379 |
|
|
380 |
|
/* update number of results for each database */ |
381 |
|
|
382 |
|
function update_results_stat( page_nr ) { |
383 |
|
var el_name = 'results_page_' + page_nr; |
384 |
|
var all_stats = new Array(); |
385 |
|
var node_stat = new Array(); |
386 |
|
|
387 |
|
var s_el = $( el_name ); |
388 |
|
|
389 |
|
if ( s_el ) { |
390 |
|
all_stats = s_el.value.split(/ /); |
391 |
|
for (var i = 0; i < all_stats.length; i++) { |
392 |
|
node_stat = all_stats[i].split(/\//); |
393 |
|
var result_name = 'node_' + node_stat[0] + '_results'; |
394 |
|
var u_el = $( result_name ); |
395 |
|
if (u_el) { |
396 |
|
Logger.debug("node "+node_stat[0]+" has "+node_stat[1]+" results"); |
397 |
|
u_el.innerHTML = node_stat[1] + '/'; |
398 |
|
} else { |
399 |
|
Logger.error("can't find " + result_name); |
400 |
|
} |
401 |
|
} |
402 |
|
} else { |
403 |
|
Logger.error("can't find element "+el_name); |
404 |
|
} |
405 |
|
} |
406 |
|
|
407 |
|
/* function which is called using DOM.Ready when html_results div is ready */ |
408 |
|
|
409 |
|
function results_ready( page_nr ) { |
410 |
|
if (! page_nr) page_nr = get_page_nr(); |
411 |
|
Logger.info("html_results ready, page "+page_nr); |
412 |
|
update_results_stat( page_nr ); |
413 |
|
var el = $( 'toggle_database_list' ); |
414 |
|
if (el) { |
415 |
|
el.onclick() |
416 |
|
} else { |
417 |
|
Logger.error("can't find toggle_database_list"); |
418 |
|
} |
419 |
|
} |
420 |
|
|