]> git.evergreen-ils.org Git - Evergreen.git/blob - Open-ILS/web/opac/skin/default/js/rresult.js
39b7301e2356fe9ca36847ca8d7c3edff02f1da0
[Evergreen.git] / Open-ILS / web / opac / skin / default / js / rresult.js
1 var records = new Array();
2 var table;
3 var rowtemplate;
4 var rresultLimit = 200;
5
6 var rresultIsPaged = false;
7
8 function rresultUnload() { removeChildren(table); table = null;}
9
10 attachEvt("common", "unload", rresultUnload);
11 attachEvt("common", "run", rresultDoSearch);
12 attachEvt("result", "idsReceived", rresultCollectRecords); 
13 attachEvt("result", "recordDrawn", rresultLaunchDrawn); 
14
15 hideMe($('copyright_block')); 
16
17 function rresultDoSearch() {
18
19         swapCanvas($('loading_alt'));
20
21         table = G.ui.result.main_table;
22         hideMe(G.ui.result.row_template);
23         if( table && table.parentNode ) {
24                 while( table.parentNode.rows.length <= (getDisplayCount() +1) ) 
25                         hideMe(table.appendChild(G.ui.result.row_template.cloneNode(true)));
26         }
27         rresultCollectIds();
28 }
29
30 function rresultCollectIds() {
31         var ids;
32
33         switch(getRtype()) {
34
35                 case RTYPE_COOKIE:
36                         ids = JSON2js(cookieManager.read(COOKIE_RIDS));
37                         _rresultHandleIds( ids, ids.length );
38                         break;
39
40                 case RTYPE_TITLE:
41                 case RTYPE_AUTHOR:
42                 case RTYPE_SUBJECT:
43                 case RTYPE_SERIES:
44                 case RTYPE_KEYWORD:
45                         rresultDoRecordSearch();
46                         break;
47
48                 case RTYPE_MULTI:
49                         rresultDoRecordMultiSearch();
50                         break;
51                         
52                 case RTYPE_LIST :
53                         rresultHandleList();
54                         break;
55
56                 case RTYPE_MARC :
57                         rresultCollectMARCIds();
58                         break;
59
60                 case RTYPE_ISBN :
61                         rresultCollectISBNIds();
62                         break;
63
64                 case RTYPE_TCN :
65                         rresultCollectTCNIds();
66                         break;
67
68                 case RTYPE_ISSN :
69                         rresultCollectISSNIds();
70                         break;
71
72
73                 case RTYPE_MRID :
74                 case null :
75                 case "" :
76                 defaut:
77                         var form = rresultGetForm();
78                         var args = { format : form, org : getLocation(), depth : rresultGetDepth() };
79                         var req = new Request(FETCH_RIDS, getMrid(), args);
80                         req.callback( rresultHandleRIds );
81                         req.send();
82
83                         if( rresultGetDepth() != findOrgDepth(globalOrgTree) ) {
84                                 var link = $('rresult_show_all_link');
85                                 if(link) {
86                                         unHideMe($('rresult_show_all'));
87                                         link.appendChild( text(
88                                                 findOrgType(globalOrgTree.ou_type()).opac_label()));
89                                 }
90
91                         } else {
92                                 if( rresultGetDepth() != getDepth() ) { /* inside a limited display */
93                                         var link = $('rresult_show_here_link');
94                                         if(link) {
95                                                 link.appendChild( text(
96                                                         findOrgType(findOrgUnit(getLocation()).ou_type()).opac_label()));
97                                                 unHideMe($('rresult_show_here'));
98                                         }
99                                 }
100                         }
101         }
102 }
103
104 function rresultExpandSearch() {
105         var args = {};
106         args[PARAM_RDEPTH] = findOrgDepth(globalOrgTree);
107         goTo(buildOPACLink(args));
108 }
109
110 function rresultContractSearch() {
111         var args = {};
112         RDEPTH = null;
113         args[PARAM_OFFSET] = 0;
114         goTo(buildOPACLink(args));
115 }
116
117
118 function rresultGetDepth() {
119         if( getRdepth() != null) return getRdepth();
120         return getDepth();
121 }
122
123
124 function rresultGetForm() {
125         var form;
126
127         if(getTform())  /* did the user select a format from the icon list (temporary) */
128                 form = (getTform() == 'all') ? null : getTform();
129         else  /* did the use select a format from simple search dropdown */
130                 form = (getForm() == 'all') ? null : getForm();
131
132         if(!form) { /* did the user select a format from the advanced search */
133                 form = getItemType();
134                 var f = getItemForm();
135
136                 if(form) {
137                         form = form.replace(/,/,'');
138                         if(f) form += '-' + f;
139                 } else {
140                         if(f) form = '-' + f;
141                 }
142         }
143
144         return form;
145 }
146
147
148 function rresultCollectMARCIds() {
149
150         var args                        = {};
151         args.searches   = JSON2js(getSearches());
152         args.limit              = 200;
153         args.org_unit   = globalOrgTree.id();
154         args.depth              = 0;
155
156         rresultIsPaged = true;
157         var req = new Request(FETCH_ADV_MARC_MRIDS, args, getDisplayCount(), getOffset());
158         req.callback(rresultHandleRIds);
159         req.request.noretry = true;
160         req.send();
161 }
162
163
164 function rresultCollectISBNIds() {
165         var req = new Request(FETCH_ADV_ISBN_RIDS, getAdvTerm() );
166         req.callback(
167                 function(r) {
168                         var blob = r.getResultObject();
169                         _rresultHandleIds(blob.ids, blob.count);
170                 }
171         );
172         req.send();
173 }
174
175 function rresultCollectTCNIds() {
176         var req = new Request(FETCH_ADV_TCN_RIDS, getAdvTerm() );
177         req.callback(
178                 function(r) {
179                         var blob = r.getResultObject();
180                         _rresultHandleIds(blob.ids, blob.count);
181                 }
182         );
183         req.send();
184 }
185
186 function rresultCollectISSNIds() {
187         var req = new Request(FETCH_ADV_ISSN_RIDS, getAdvTerm() );
188         req.callback(
189                 function(r) {
190                         var blob = r.getResultObject();
191                         _rresultHandleIds(blob.ids, blob.count);
192                 }
193         );
194         req.send();
195 }
196
197 function rresultHandleList() {
198         var ids = new CGI().param(PARAM_RLIST);
199         if(ids) _rresultHandleIds(ids, ids.length);
200 }
201
202 var rresultTries = 0;
203 function rresultHandleRIds(r) {
204         var res = r.getResultObject();
205
206         if(!res) res = {count:0,ids:[]};
207
208         if( res.count == 0 && rresultTries == 0 && ! r.noretry) {
209
210                 rresultTries++;
211                 var form = rresultGetForm();
212                 var args = { format : form, org : getLocation(), depth : findOrgDepth(globalOrgTree) };
213                 var req = new Request(FETCH_RIDS, getMrid(), args );
214                 req.callback( rresultHandleRIds );
215                 req.send();
216                 unHideMe($('no_formats'));
217                 hideMe($('rresult_show_all'));
218
219         } else {
220
221                 _rresultHandleIds(res.ids, res.count);
222         }
223 }
224
225 function _rresultHandleIds(ids, count) {
226         //var json = js2JSON({ids:ids,count:count});
227         /*
228         cookieManager.write(COOKIE_SRIDS, json, '+1d');
229         */
230
231         HITCOUNT = parseInt(count);
232         runEvt('result', 'hitCountReceived');
233         runEvt('result', 'idsReceived', ids);
234 }
235
236 /*
237 function rresultCollectRecords(ids) {
238         runEvt("result", "preCollectRecords");
239         var x = 0;
240         for( var i = getOffset(); i!= getDisplayCount() + getOffset(); i++ ) {
241                 if(ids[i] == null) break;
242                 var req = new Request(FETCH_RMODS, parseInt(ids[i]));
243                 req.callback(rresultHandleMods);
244                 req.request.userdata = x++;
245                 req.send();
246         }
247 }
248 */
249
250
251 function rresultCollectRecords(ids) {
252         runEvt("result", "preCollectRecords");
253         var x = 0;
254
255         //var base = getOffset();
256     var base = 0;
257         if( rresultIsPaged )  base = 0;
258
259         for( var i = base; i!= getDisplayCount() + base; i++ ) {
260                 if(ids[i] == null) break;
261                 var req = new Request(FETCH_RMODS, parseInt(ids[i]));
262                 req.callback(rresultHandleMods);
263                 req.request.userdata = x++;
264                 req.send();
265         }
266 }
267
268
269 function rresultHandleMods(r) {
270         var rec = r.getResultObject();
271         runEvt('result', 'recordReceived', rec, r.userdata, false);
272         resultCollectCopyCounts(rec, r.userdata, FETCH_R_COPY_COUNTS);
273         if(resultPageIsDone()) {
274                 runEvt('result', 'allRecordsReceived', recordsCache);
275                 unHideMe($('copyright_block')); 
276         }
277 }
278
279 function rresultLaunchDrawn(id, node) {
280         runEvt("rresult", "recordDrawn", id, node);
281 }
282
283
284 function rresultDoRecordSearch() { 
285         rresultIsPaged = true;
286         resultCollectSearchIds(true, SEARCH_RS_QUERY, rresultFilterSearchResults ); 
287 }
288
289 function rresultDoRecordMultiSearch() { 
290         rresultIsPaged = true;
291         resultCollectSearchIds(false, SEARCH_RS_QUERY, rresultFilterSearchResults ); 
292 }
293
294
295 function rresultFilterSearchResults(r) {
296         var result = r.getResultObject();
297         var ids = [];
298         if( result.count > 0 ) {
299                 for( var i = 0; i != result.ids.length; i++ ) 
300                         ids.push(result.ids[i][0]);
301         }
302
303     resultCompiledSearch = result.compiled_search;
304     cookieManager.write(COOKIE_SEARCH, js2JSON(result.compiled_search), -1);
305         _rresultHandleIds( ids, result.count );
306 }
307
308
309