/[webpac2]/Webpacus/root/js/webpac.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/webpac.js

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

revision 107 by dpavlin, Tue Nov 22 19:34:39 2005 UTC revision 205 by dpavlin, Sat Dec 3 01:56:37 2005 UTC
# Line 3  Line 3 
3  // Documented in this code only, I'm afraid. Beware of dragons!  // Documented in this code only, I'm afraid. Beware of dragons!
4  // Dobrica Pavlinusic dpavlin(at)rot13(dot)org 2005-11-22  // Dobrica Pavlinusic dpavlin(at)rot13(dot)org 2005-11-22
5    
6    /*
7            load another template
8    */
9  function load_template(template_name) {  function load_template(template_name) {
10  //      alert('load_template '+template_name+' old template is '+$('template_name').value);  
11            var old_template = $('template_name').value;
12    
13            Logger.info('load_template: '+template_name+' (old: '+old_template+')');
14    
15            if (template_name == old_template) {
16                    Logger.error('why reload same template?');
17                    return false;
18            }
19    
20          $('template_name').value = template_name;          $('template_name').value = template_name;
21            submit_results_form();
22            return false;
23    }
24    
25    /*
26            pager
27    */
28    function load_results_page(page_nr) {
29    
30            if (parseInt(page_nr) != page_nr) {
31                    Logger.error("load_results_page can't parseInt "+page_nr);
32                    return false;
33            }
34    
35            var old_page = get_page_nr();
36    
37            if (page_nr < 1) {
38                    Logger.error("load_results_page called with '"+page_nr+"' < 1");
39                    return false;
40            }
41    
42            Logger.info('load_results_page: '+page_nr+' (from page: '+old_page+')');
43    
44            if (page_nr == old_page) {
45                    Logger.error('why reload same page?');
46                    return false;
47            }
48    
49            $('page_nr').value = page_nr;
50            submit_results_form();
51    
52            return false;
53    }
54    
55    function get_page_nr() {
56            var page_nr = parseInt( $('page_nr').value ) || 1;
57            return page_nr;
58    }
59    
60    function reset_page_nr( nr ) {
61            if (! nr) nr = 1;
62            Logger.info('reset_page_nr to '+nr);
63            page_nr = nr;
64            $('page_nr').value = page_nr;
65    }
66    
67    /* syntaxtic sugar */
68    function set_page_nr(nr) {
69            return load_results_page(nr);
70    }
71    
72    function next_page() {
73            load_results_page( get_page_nr() + 1 );
74            return false;
75    }
76    
77          new Ajax.Updater( 'results', '/results', {  function prev_page() {
78                  parameters: Form.serialize( $('results_form') ),          load_results_page( get_page_nr() - 1 );
                 asynchronous: 1,  
                 onLoading: function(request) {  
                         show_searching();  
                 },  
                 onLoaded: function(request) {  
                         hide_searching();  
                 }  
         } ) ;  
79          return false;          return false;
80  }  }
81    
82    /*
83            submit results form using AJAX
84    */
85    function submit_results_form() {
86            var results_form = $('results_form');
87    
88            if (results_form) {
89                    var form_params = Form.serialize( results_form );
90    
91                    Logger.debug('Ajax.Updater(results,/results) '+form_params);
92    
93                    new Ajax.Updater( 'results', '/search/results', {
94                            parameters: form_params,
95                            asynchronous: 1,
96                            onLoading: function(request) {
97                                    show_searching();
98                            },
99                            onLoaded: function(request) {
100                                    hide_searching();
101                            }
102                    } ) ;
103                    return false;
104            } else {
105                    Logger.debug('no results_form element');
106                    return undef;
107            }
108            return false;
109    }
110    
111    /*
112            helper functions for submit_results_form()
113    */
114  function show_searching() {  function show_searching() {
115            Logger.debug('show_searching');
116          Element.show('searching');          Element.show('searching');
117    //      new Effect.Fade('results', { duration: 0.3 });
118            return false;
119  }  }
120    
121  function hide_searching() {  function hide_searching() {
122            Logger.debug('hide_searching');
123          Element.hide('searching');          Element.hide('searching');
124          new Effect.Highlight('results');  //      new Effect.Highlight('results');
125    //      new Effect.Appear('results', { duration: 0.3 });
126            return false;
127    }
128    
129    /*
130            load record nr in some template
131    */
132    
133    function load_rec(nr, tmp_template_filename) {
134            if (! tmp_template_filename) tmp_template_filename = template_filename;
135            Logger.info('load_rec '+nr+' in '+tmp_template_filename);
136    
137            var results_form = $('results_form');
138    
139            if (results_form) {
140                    var args = '?mfn='+nr+'&template_filename='+tmp_template_filename;
141                    Logger.debug('Ajax.Updater(results,/search/record) '+args);
142    
143                    new Ajax.Updater( 'results', '/search/record'+args, {
144                            asynchronous: 1,
145                            onLoading: function(request) {
146                                    show_searching();
147                            },
148                            onLoaded: function(request) {
149                                    hide_searching();
150                            }
151                    } ) ;
152                    return false;
153            } else {
154                    Logger.debug('no results_form element');
155                    return undef;
156            }
157            return false;
158  }  }
159    
160    /*
161            autocompleter which isn't (a suggest box)
162            - don't just on first option on appear
163            - removed fade-in/out effect
164            - added configurable width (content width? centered?)
165            - add icon which means suggest
166    
167            hopefully, this implementation won't break when I update prototype next time :-)
168    */
169    
170    
171    Ajax.Suggest = Class.create();
172    Logger.debug('Created Ajax.Suggest Class');
173    Object.extend(Object.extend(Object.extend(Ajax.Suggest.prototype, Ajax.Autocompleter.prototype), Autocompleter.Base.prototype), {
174      initialize: function(element, update, url, options) {
175              this.baseInitialize(element, update, options);
176        this.options.asynchronous  = true;
177        this.options.onComplete    = this.onComplete.bind(this);
178        this.options.defaultParams = this.options.parameters || null;
179        this.url                   = url;
180        this.ignoreReturn = true;
181    
182        Logger.debug('Ajax.Sugget initialize '+element+','+update+','+url);
183    
184        this.options.onShow = function(element, update) {
185          if(!update.style.position || update.style.position=='absolute') {
186            update.style.position = 'absolute';
187            Position.clone(element, update, {setHeight: false, offsetTop: element.offsetHeight});
188          }
189          new Element.show(update);
190          Logger.debug('Ajax.Suggest.onShow');
191        };
192    
193        this.options.onHide = function(element, update) {
194            new Element.hide(update);
195            Logger.debug('Ajax.Suggest.onHide');
196        };
197      },
198    
199      getUpdatedChoices: function() {
200        entry = encodeURIComponent(this.options.paramName) + '=' +
201          encodeURIComponent(this.getToken());
202    
203        this.options.parameters = this.options.callback ?
204          this.options.callback(this.element, entry) : entry;
205    
206        if(this.options.defaultParams)
207          this.options.parameters += '&' + this.options.defaultParams;
208    
209        Logger.debug('Ajax.Suggest called '+this.url);
210        new Ajax.Request(this.url, this.options);
211      },
212    
213      onComplete: function(request) {
214        Logger.debug('Ajax.Suggest onComplete called');
215        this.updateChoices(request.responseText);
216      },
217    
218      markPrevious: function() {
219        if(this.index > 0) this.index--
220        //  else this.index = this.entryCount-1;
221      },
222    
223      markNext: function() {
224        if(this.index < this.entryCount-1) this.index++
225        //  else this.index = 0;
226      }
227    
228    });
229    
230    

Legend:
Removed from v.107  
changed lines
  Added in v.205

  ViewVC Help
Powered by ViewVC 1.1.26