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