]> git.evergreen-ils.org Git - Evergreen.git/blob - Open-ILS/web/opac/skin/default/js/rresult.js
allow bookbag (rlist) display to work with just one record id
[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                 default:
77                         var form = rresultGetForm();
78                         var args = { format : form, org : getLocation(), depth : rresultGetDepth() };
79
80                         var lasso = getLasso();
81                         if (lasso) args.org = -lasso;
82
83                         var req = new Request(FETCH_RIDS, getMrid(), args);
84                         req.callback( rresultHandleRIds );
85                         req.send();
86
87                         if( rresultGetDepth() != findOrgDepth(globalOrgTree) ) {
88                                 var link = $('rresult_show_all_link');
89                                 if(link) {
90                                         unHideMe($('rresult_show_all'));
91                                         link.appendChild( text(
92                                                 findOrgType(globalOrgTree.ou_type()).opac_label()));
93                                 }
94
95                         } else {
96                                 if( rresultGetDepth() != getDepth() ) { /* inside a limited display */
97                                         var link = $('rresult_show_here_link');
98                                         if(link) {
99                                                 link.appendChild( text(
100                                                         findOrgType(findOrgUnit(getLocation()).ou_type()).opac_label()));
101                                                 unHideMe($('rresult_show_here'));
102                                         }
103                                 }
104                         }
105         }
106 }
107
108 function rresultExpandSearch() {
109         var args = {};
110         args[PARAM_RDEPTH] = findOrgDepth(globalOrgTree);
111         goTo(buildOPACLink(args));
112 }
113
114 function rresultContractSearch() {
115         var args = {};
116         RDEPTH = null;
117         args[PARAM_OFFSET] = 0;
118         goTo(buildOPACLink(args));
119 }
120
121
122 function rresultGetDepth() {
123         if( getRdepth() != null) return getRdepth();
124         return getDepth();
125 }
126
127
128 function rresultGetForm() {
129         var form;
130
131         if(getTform())  /* did the user select a format from the icon list (temporary) */
132                 form = (getTform() == 'all') ? null : getTform();
133         else  /* did the use select a format from simple search dropdown */
134                 form = (getForm() == 'all') ? null : getForm();
135
136         if(!form) { /* did the user select a format from the advanced search */
137                 form = getItemType();
138                 var f = getItemForm();
139
140                 if(form) {
141                         form = form.replace(/,/,'');
142                         if(f) form += '-' + f;
143                 } else {
144                         if(f) form = '-' + f;
145                 }
146         }
147
148         return form;
149 }
150
151
152 function rresultCollectMARCIds() {
153
154         var args                        = {};
155         args.searches   = JSON2js(getSearches());
156         args.limit              = 200;
157         args.org_unit   = globalOrgTree.id();
158         args.depth              = 0;
159
160         rresultIsPaged = true;
161         var req = new Request(FETCH_ADV_MARC_MRIDS, args, getDisplayCount(), getOffset());
162         req.callback(rresultHandleRIds);
163         req.request.noretry = true;
164         req.send();
165 }
166
167
168 function rresultCollectISBNIds() {
169         var req = new Request(FETCH_ADV_ISBN_RIDS, getAdvTerm() );
170         req.callback(
171                 function(r) {
172                         var blob = r.getResultObject();
173                         _rresultHandleIds(blob.ids, blob.count);
174                 }
175         );
176         req.send();
177 }
178
179 function rresultCollectTCNIds() {
180         var req = new Request(FETCH_ADV_TCN_RIDS, getAdvTerm() );
181         req.callback(
182                 function(r) {
183                         var blob = r.getResultObject();
184                         _rresultHandleIds(blob.ids, blob.count);
185                 }
186         );
187         req.send();
188 }
189
190 function rresultCollectISSNIds() {
191         var req = new Request(FETCH_ADV_ISSN_RIDS, getAdvTerm() );
192         req.callback(
193                 function(r) {
194                         var blob = r.getResultObject();
195                         _rresultHandleIds(blob.ids, blob.count);
196                 }
197         );
198         req.send();
199 }
200
201 function rresultHandleList() {
202         var ids = new CGI().param(PARAM_RLIST);
203     var count;
204     if(!dojo.isArray(ids)) {
205         count = 1;
206         ids = [ids];
207     } else {
208         count = ids.length;
209     }
210         if(ids) _rresultHandleIds(ids, count);
211 }
212
213 var rresultTries = 0;
214 function rresultHandleRIds(r) {
215         var res = r.getResultObject();
216
217         if(!res) res = {count:0,ids:[]};
218
219         if( res.count == 0 && rresultTries == 0 && ! r.noretry) {
220
221                 rresultTries++;
222                 var form = rresultGetForm();
223                 var args = { format : form, org : getLocation(), depth : findOrgDepth(globalOrgTree) };
224
225                 var lasso = getLasso();
226                 if (lasso) args.org = -lasso;
227
228                 var req = new Request(FETCH_RIDS, getMrid(), args );
229                 req.callback( rresultHandleRIds );
230                 req.send();
231                 unHideMe($('no_formats'));
232                 hideMe($('rresult_show_all'));
233
234         } else {
235
236                 _rresultHandleIds(res.ids, res.count);
237         }
238 }
239
240 function _rresultHandleIds(ids, count) {
241         //var json = js2JSON({ids:ids,count:count});
242         /*
243         cookieManager.write(COOKIE_SRIDS, json, '+1d');
244         */
245
246         HITCOUNT = parseInt(count);
247         runEvt('result', 'hitCountReceived');
248         runEvt('result', 'idsReceived', ids);
249 }
250
251 /*
252 function rresultCollectRecords(ids) {
253         runEvt("result", "preCollectRecords");
254         var x = 0;
255         for( var i = getOffset(); i!= getDisplayCount() + getOffset(); i++ ) {
256                 if(ids[i] == null) break;
257                 var req = new Request(FETCH_RMODS, parseInt(ids[i]));
258                 req.callback(rresultHandleMods);
259                 req.request.userdata = x++;
260                 req.send();
261         }
262 }
263 */
264
265
266 function rresultCollectRecords(ids) {
267         runEvt("result", "preCollectRecords");
268         var x = 0;
269
270         //var base = getOffset();
271     var base = 0;
272         if( rresultIsPaged )  base = 0;
273
274         for( var i = base; i!= getDisplayCount() + base; i++ ) {
275                 if(ids[i] == null) break;
276                 var req = new Request(FETCH_RMODS, parseInt(ids[i]));
277                 req.callback(rresultHandleMods);
278                 req.request.userdata = x++;
279                 req.send();
280         }
281 }
282
283
284 function rresultHandleMods(r) {
285         var rec = r.getResultObject();
286         runEvt('result', 'recordReceived', rec, r.userdata, false);
287         resultCollectCopyCounts(rec, r.userdata, FETCH_R_COPY_COUNTS);
288         if(resultPageIsDone()) {
289                 runEvt('result', 'allRecordsReceived', recordsCache);
290                 unHideMe($('copyright_block')); 
291         }
292 }
293
294 function rresultLaunchDrawn(id, node) {
295         runEvt("rresult", "recordDrawn", id, node);
296 }
297
298
299 function rresultDoRecordSearch() { 
300         rresultIsPaged = true;
301         resultCollectSearchIds(true, SEARCH_RS_QUERY, rresultFilterSearchResults ); 
302 }
303
304 function rresultDoRecordMultiSearch() { 
305         rresultIsPaged = true;
306         resultCollectSearchIds(false, SEARCH_RS_QUERY, rresultFilterSearchResults ); 
307 }
308
309
310 function rresultFilterSearchResults(r) {
311         var result = r.getResultObject();
312         var ids = [];
313         if( result.count > 0 ) {
314                 for( var i = 0; i != result.ids.length; i++ ) 
315                         ids.push(result.ids[i][0]);
316         }
317
318     resultCompiledSearch = result.compiled_search;
319     cookieManager.write(COOKIE_SEARCH, js2JSON(result.compiled_search), -1);
320         _rresultHandleIds( ids, result.count );
321 }
322
323
324