/[webpac2]/Webpacus/root/js/search.js
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Diff of /Webpacus/root/js/search.js

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 283 by dpavlin, Sat Dec 17 23:41:10 2005 UTC revision 329 by dpavlin, Tue Dec 27 21:36:42 2005 UTC
# Line 60  function get_page_nr() { Line 60  function get_page_nr() {
60  function reset_page_nr( nr ) {  function reset_page_nr( nr ) {
61          if (! nr) nr = 1;          if (! nr) nr = 1;
62          Logger.info('reset_page_nr to '+nr);          Logger.info('reset_page_nr to '+nr);
63          page_nr = nr;          $('page_nr').value = nr;
         $('page_nr').value = page_nr;  
64  }  }
65    
66  /* syntaxtic sugar */  /* syntaxtic sugar */
# Line 189  function load_rec(record_uri, tmp_templa Line 188  function load_rec(record_uri, tmp_templa
188    
189  function checkbox_click() {  function checkbox_click() {
190          if (search_active) return false;          if (search_active) return false;
         submit_results_form();  
191          Logger.debug('checkbox_click');          Logger.debug('checkbox_click');
192            submit_results_form();
193          return true;          return true;
194  }  }
195    
196    /* toggle or select checkbox with value toggle */
197    
198    function checkbox_toggle( name, val ) {
199            return checkbox_magic( name, val, 0 );
200    }
201    
202    function checkbox_single( name, val ) {
203            return checkbox_magic( name, val, 1 );
204    }
205    
206    function checkbox_magic( name, val, single ) {
207    
208            Logger.info('checkbox_magic('+name+','+val+','+single+')');
209    
210            var form = $('results_form');
211            var inputs = form.getElementsByTagName('input');
212    
213            for (var i = 0; i < inputs.length; i++) {
214                    var input = inputs[i];
215                    if (input.type != 'checkbox') continue;
216                    if (single) {
217                            input.checked = false;
218                    }
219                    if (input.name != name || input.value != val) continue;
220                    Logger.debug('toggle '+input.name+'='+input.value+' '+input.checked);
221                    input.checked = ! input.checked;
222                    if (! single) {
223                            submit_results_form();
224                            return false;
225                    }
226            }
227            submit_results_form();
228            return false;
229    }
230    
231    /* reset form fields in _reset hidden field to nothing */
232    
233    function reset_form() {
234            Logger.info('reset '+$F('_reset'));
235    
236            var names = new Array();
237            names = $F('_reset').split(',');
238            for(var i = 0; i < names.length; i++) {
239                    Logger.debug('reset '+i+': '+names[i]);
240                    $(names[i]).value='';
241            }
242    
243            var t=$('search_table');
244            var max_p = t.rows.length;
245            for(var i = 0; i < attr_rows.length; i++) {
246                    var p = attr_rows[i];
247                    if (p != -1) {
248                            if (p < max_p) {
249                                    Logger.debug('delete row '+p);
250                                    t.deleteRow( p );
251                            } else {
252                                    Logger.error('skipping invalid delete row '+p);
253                            }
254                    }
255            }
256    
257            attr_rows = new Array();
258    
259            return false;
260    }
261    
262    /* helper function for [% search($display, $search, $delimiter) %] */
263    
264    function search_via_link(attr, val, template) {
265    
266            if (! template) template = $('template_name').value;
267            Logger.info('search called from link for '+attr+'='+val+' in '+template);
268            save_search(attr, val);
269    
270            $('template_name').value = template;
271            submit_results_form();
272    
273            return false;
274    }
275    
276    /* save search and add element for it in search form */
277    
278    var attr_rows = new Array();
279    
280    function save_search( attr, val ) {
281            Logger.info('save_search('+attr+','+val+')');
282    
283            var t=$('search_table');
284            if (! t) {
285                    Logger.error("can't find search_table");
286                    return undef;
287            }
288            reset_form();
289    
290            var form = $('results_form');
291            var inputs = form.getElementsByTagName('input');
292    
293            for (var i = 0; i < inputs.length; i++) {
294                    var input = inputs[i];
295                    if (input.name != attr) continue;
296                    Logger.debug('found '+name+'='+input.value);
297                    input.value = unescape( val );
298                    return false;
299            }
300    
301            var t_row_nr = t.rows.length;
302            var tr = t.insertRow( t_row_nr );
303    
304            if (! tr) {
305                    Logger.error("can't create row "+t_row_nr);
306                    return undef;
307            }
308    
309            var row_nr = attr_rows.length;
310            attr_rows[ row_nr ] = t_row_nr;
311    
312            Logger.debug('added row '+t_row_nr+' to table [offset: '+row_nr+']');
313    
314            var td = tr.insertCell(0);
315            td.setAttribute('align', 'right');
316            td.appendChild(
317                    document.createTextNode(attr)
318            );
319    
320            td = tr.insertCell(1);
321            td.setAttribute('align', 'left');
322    
323            var el = document.createElement('input');
324            el.setAttribute('type', 'text');
325            el.setAttribute('disabled', 'true');
326            el.setAttribute('name', attr);
327            el.setAttribute('id', '_attr_'+attr+'_id');
328            el.setAttribute('size', val.length < 60 ? 60: val.length);
329            el.setAttribute('value', unescape( val ) );
330            td.appendChild(el);
331    
332            var el = document.createElement('input');
333            el.setAttribute('type', 'button');
334            el.setAttribute('value', '-');
335            el.onclick = function () {
336                    if (attr_rows[row_nr] == -1) {
337                            Logger.error('row '+row_nr+' allready deleted');
338                            return false;
339                    }
340                    Logger.info('remove:' + attr + ' row:'+row_nr+' ['+attr_rows[row_nr]+']');
341                    t.deleteRow( attr_rows[row_nr] );
342    
343                    attr_rows[row_nr] = -1;
344                    for (var i=(row_nr + 1); i < attr_rows.length; i++) {
345                            attr_rows[i]--;
346                            Logger.debug('moved '+i+' to '+attr_rows[i]);
347                    }
348                    submit_results_form();
349                    return false;
350            }
351            td.appendChild(el);
352    
353            return true;
354    };

Legend:
Removed from v.283  
changed lines
  Added in v.329

  ViewVC Help
Powered by ViewVC 1.1.26