/[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 132 by dpavlin, Thu Nov 24 16:30:06 2005 UTC revision 203 by dpavlin, Fri Dec 2 23:01:25 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          new Ajax.Updater( 'results', '/results', {  /* syntaxtic sugar */
68                  parameters: Form.serialize( $('results_form') ),  function set_page_nr(nr) {
69                  asynchronous: 1,          return load_results_page(nr);
70                  onLoading: function(request) {  }
71                          show_searching();  
72                  },  function next_page() {
73                  onLoaded: function(request) {          load_results_page( get_page_nr() + 1 );
74                          Element.hide('searching');          return false;
75  /*                      hide_searching(); */  }
76                  }  
77          } ) ;  function prev_page() {
78            load_results_page( get_page_nr() - 1 );
79            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;          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.5 });  //      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.5 });  //      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    Object.extend(Object.extend(Ajax.Autocompleter.prototype, Autocompleter.Base.prototype), {
171      initialize: function(element, update, url, options) {
172              this.baseInitialize(element, update, options);
173        this.options.asynchronous  = true;
174        this.options.onComplete    = this.onComplete.bind(this);
175        this.options.defaultParams = this.options.parameters || null;
176        this.url                   = url;
177        this.ignoreReturn = true;
178    
179        this.options.onShow = function(element, update) {
180          if(!update.style.position || update.style.position=='absolute') {
181            update.style.position = 'absolute';
182            Position.clone(element, update, {setHeight: false, offsetTop: element.offsetHeight});
183          }
184          new Element.show(update);
185          Logger.debug('Ajax.Suggest.onShow');
186        };
187    
188        this.options.onHide = function(element, update) {
189            new Element.hide(update);
190            Logger.debug('Ajax.Suggest.onHide');
191        };
192      },
193    
194      getUpdatedChoices: function() {
195        entry = encodeURIComponent(this.options.paramName) + '=' +
196          encodeURIComponent(this.getToken());
197    
198        this.options.parameters = this.options.callback ?
199          this.options.callback(this.element, entry) : entry;
200    
201        if(this.options.defaultParams)
202          this.options.parameters += '&' + this.options.defaultParams;
203    
204        Logger.debug('Ajax.Suggest called '+this.url);
205        new Ajax.Request(this.url, this.options);
206      },
207    
208      onComplete: function(request) {
209        Logger.debug('Ajax.Suggest onComplete called');
210        this.updateChoices(request.responseText);
211      },
212    
213      markPrevious: function() {
214        if(this.index > 0) this.index--
215        //  else this.index = this.entryCount-1;
216      },
217    
218      markNext: function() {
219        if(this.index < this.entryCount-1) this.index++
220        //  else this.index = 0;
221      },
222    
223    });

Legend:
Removed from v.132  
changed lines
  Added in v.203

  ViewVC Help
Powered by ViewVC 1.1.26