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