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