Initial dev repository
[kcls-web.git] / opac / skin / nogrey1 / js / rresult.js
diff --git a/opac/skin/nogrey1/js/rresult.js b/opac/skin/nogrey1/js/rresult.js
new file mode 100644 (file)
index 0000000..a33d23d
--- /dev/null
@@ -0,0 +1,339 @@
+\r
+var records = new Array();\r
+var table;\r
+var rowtemplate;\r
+var rresultLimit = 200;\r
+var resultFacetKey;\r
+\r
+var rresultIsPaged = false;\r
+\r
+function rresultUnload() { removeChildren(table); table = null;}\r
+\r
+attachEvt("common", "unload", rresultUnload);\r
+attachEvt("common", "run", rresultDoSearch);\r
+attachEvt("result", "idsReceived", rresultCollectRecords); \r
+attachEvt("result", "recordDrawn", rresultLaunchDrawn); \r
+\r
+hideMe($('copyright_block')); \r
+\r
+function rresultDoSearch() {\r
+\r
+       swapCanvas($('loading_alt'));\r
+\r
+       table = G.ui.result.main_table;\r
+       hideMe(G.ui.result.row_template);\r
+       if( table && table.parentNode ) {\r
+               while( table.parentNode.rows.length <= (getDisplayCount() +1) ) \r
+                       hideMe(table.appendChild(G.ui.result.row_template.cloneNode(true)));\r
+       }\r
+       rresultCollectIds();\r
+}\r
+\r
+function rresultCollectIds() {\r
+       var ids;\r
+\r
+    var rtype = getRtype();\r
+    if (rtype && rtype.indexOf('|') > -1)\r
+        rtype = rtype.substring(0,rtype.indexOf('|'));\r
+\r
+       switch(rtype) {\r
+\r
+               case RTYPE_COOKIE:\r
+                       ids = JSON2js(cookieManager.read(COOKIE_RIDS));\r
+                       _rresultHandleIds( ids, ids.length );\r
+                       break;\r
+\r
+               case RTYPE_TITLE:\r
+               case RTYPE_AUTHOR:\r
+               case RTYPE_SUBJECT:\r
+               case RTYPE_SERIES:\r
+               case RTYPE_KEYWORD:\r
+                       rresultDoRecordSearch();\r
+                       break;\r
+\r
+               case RTYPE_MULTI:\r
+                       rresultDoRecordMultiSearch();\r
+                       break;\r
+                       \r
+               case RTYPE_LIST :\r
+                       rresultHandleList();\r
+                       break;\r
+\r
+               case RTYPE_MARC :\r
+                       rresultCollectMARCIds();\r
+                       break;\r
+\r
+               case RTYPE_ISBN :\r
+                       rresultCollectISBNIds();\r
+                       break;\r
+\r
+               case RTYPE_TCN :\r
+                       rresultCollectTCNIds();\r
+                       break;\r
+\r
+               case RTYPE_ISSN :\r
+                       rresultCollectISSNIds();\r
+                       break;\r
+\r
+\r
+               case RTYPE_MRID :\r
+               case null :\r
+               case "" :\r
+               default:\r
+                       var form = rresultGetForm();\r
+                       var args = { format : form, org : getLocation(), depth : rresultGetDepth() };\r
+\r
+                       var lasso = getLasso();\r
+                       if (lasso) args.org = -lasso;\r
+\r
+                       var req = new Request(FETCH_RIDS, getMrid(), args);\r
+                       req.callback( rresultHandleRIds );\r
+                       req.send();\r
+\r
+                       if( rresultGetDepth() != findOrgDepth(globalOrgTree) ) {\r
+                               var link = $('rresult_show_all_link');\r
+                               if(link) {\r
+                                       unHideMe($('rresult_show_all'));\r
+                                       link.appendChild( text(\r
+                                               findOrgType(globalOrgTree.ou_type()).opac_label()));\r
+                               }\r
+\r
+                       } else {\r
+                               if( rresultGetDepth() != getDepth() ) { /* inside a limited display */\r
+                                       var link = $('rresult_show_here_link');\r
+                                       if(link) {\r
+                                               link.appendChild( text(\r
+                                                       findOrgType(findOrgUnit(getLocation()).ou_type()).opac_label()));\r
+                                               unHideMe($('rresult_show_here'));\r
+                                       }\r
+                               }\r
+                       }\r
+       }\r
+}\r
+\r
+function rresultExpandSearch() {\r
+       var args = {};\r
+       args[PARAM_RDEPTH] = findOrgDepth(globalOrgTree);\r
+       goTo(buildOPACLink(args));\r
+}\r
+\r
+function rresultContractSearch() {\r
+       var args = {};\r
+       RDEPTH = null;\r
+       args[PARAM_OFFSET] = 0;\r
+       goTo(buildOPACLink(args));\r
+}\r
+\r
+\r
+function rresultGetDepth() {\r
+       if( getRdepth() != null) return getRdepth();\r
+       return getDepth();\r
+}\r
+\r
+\r
+function rresultGetForm() {\r
+       var form;\r
+\r
+       if(getTform())  /* did the user select a format from the icon list (temporary) */\r
+               form = (getTform() == 'all') ? null : getTform();\r
+       else  /* did the use select a format from simple search dropdown */\r
+               form = (getForm() == 'all') ? null : getForm();\r
+\r
+       if(!form) { /* did the user select a format from the advanced search */\r
+               form = getItemType();\r
+               var f = getItemForm();\r
+\r
+               if(form) {\r
+                       form = form.replace(/,/,'');\r
+                       if(f) form += '-' + f;\r
+               } else {\r
+                       if(f) form = '-' + f;\r
+               }\r
+       }\r
+\r
+       return form;\r
+}\r
+\r
+\r
+function rresultCollectMARCIds() {\r
+\r
+       var args                        = {};\r
+       args.searches   = JSON2js(getSearches());\r
+       args.limit              = 200;\r
+       args.org_unit   = globalOrgTree.id();\r
+       args.depth              = 0;\r
+\r
+       rresultIsPaged = true;\r
+       var req = new Request(FETCH_ADV_MARC_MRIDS, args, getDisplayCount(), getOffset());\r
+       req.callback(rresultHandleRIds);\r
+       req.request.noretry = true;\r
+       req.send();\r
+}\r
+\r
+\r
+function rresultCollectISBNIds() {\r
+       var req = new Request(FETCH_ADV_ISBN_RIDS, getAdvTerm() );\r
+       req.callback(\r
+               function(r) {\r
+                       var blob = r.getResultObject();\r
+                       _rresultHandleIds(blob.ids, blob.count);\r
+               }\r
+       );\r
+       req.send();\r
+}\r
+\r
+function rresultCollectTCNIds() {\r
+       var req = new Request(FETCH_ADV_TCN_RIDS, getAdvTerm() );\r
+       req.callback(\r
+               function(r) {\r
+                       var blob = r.getResultObject();\r
+                       _rresultHandleIds(blob.ids, blob.count);\r
+               }\r
+       );\r
+       req.send();\r
+}\r
+\r
+function rresultCollectISSNIds() {\r
+       var req = new Request(FETCH_ADV_ISSN_RIDS, getAdvTerm() );\r
+       req.callback(\r
+               function(r) {\r
+                       var blob = r.getResultObject();\r
+                       _rresultHandleIds(blob.ids, blob.count);\r
+               }\r
+       );\r
+       req.send();\r
+}\r
+\r
+function rresultHandleList() {\r
+       var ids = new CGI().param(PARAM_RLIST);\r
+    var count;\r
+    if(!dojo.isArray(ids)) {\r
+        count = 1;\r
+        ids = [ids];\r
+    } else {\r
+        count = ids.length;\r
+    }\r
+       if(ids) _rresultHandleIds(ids, count);\r
+}\r
+\r
+var rresultTries = 0;\r
+function rresultHandleRIds(r) {\r
+       var res = r.getResultObject();\r
+\r
+       if(!res) res = {count:0,ids:[]};\r
+\r
+       if( res.count == 0 && rresultTries == 0 && ! r.noretry) {\r
+\r
+               rresultTries++;\r
+               var form = rresultGetForm();\r
+               var args = { format : form, org : getLocation(), depth : findOrgDepth(globalOrgTree) };\r
+\r
+               var lasso = getLasso();\r
+               if (lasso) args.org = -lasso;\r
+\r
+               var req = new Request(FETCH_RIDS, getMrid(), args );\r
+               req.callback( rresultHandleRIds );\r
+               req.send();\r
+               unHideMe($('no_formats'));\r
+               hideMe($('rresult_show_all'));\r
+\r
+       } else {\r
+\r
+               _rresultHandleIds(res.ids, res.count);\r
+       }\r
+}\r
+\r
+function _rresultHandleIds(ids, count) {\r
+       //var json = js2JSON({ids:ids,count:count});\r
+       /*\r
+       cookieManager.write(COOKIE_SRIDS, json, '+1d');\r
+       */\r
+\r
+       HITCOUNT = parseInt(count);\r
+       runEvt('result', 'hitCountReceived');\r
+       runEvt('result', 'idsReceived', ids, getOffset());\r
+}\r
+\r
+/*\r
+function rresultCollectRecords(ids) {\r
+       runEvt("result", "preCollectRecords");\r
+       var x = 0;\r
+       for( var i = getOffset(); i!= getDisplayCount() + getOffset(); i++ ) {\r
+               if(ids[i] == null) break;\r
+               var req = new Request(FETCH_RMODS, parseInt(ids[i]));\r
+               req.callback(rresultHandleMods);\r
+               req.request.userdata = x++;\r
+               req.send();\r
+       }\r
+}\r
+*/\r
+\r
+\r
+function rresultCollectRecords(ids, base) {\r
+       runEvt("result", "preCollectRecords");\r
+       var x = 0;\r
+\r
+       if (!base) base = 0;\r
+       if( rresultIsPaged )  base = 0;\r
+\r
+       for( var i = base; i!= getDisplayCount() + base; i++ ) {\r
+               if(ids[i] == null) break;\r
+               var req = new Request(FETCH_RMODS, parseInt(ids[i]));\r
+               req.callback(rresultHandleMods);\r
+               req.request.userdata = x++;\r
+               req.send();\r
+       }\r
+}\r
+\r
+var recsReceivedCalled = false;\r
+function rresultHandleMods(r) {\r
+       var rec = r.getResultObject();\r
+       runEvt('result', 'recordReceived', rec, r.userdata, false);\r
+       resultCollectCopyCounts(rec, r.userdata, FETCH_R_COPY_COUNTS);\r
+    if(resultPageIsDone() && !recsReceivedCalled) {\r
+        recsReceivedCalled = true;\r
+               runEvt('result', 'allRecordsReceived', recordsCache);\r
+               unHideMe($('copyright_block')); \r
+       }\r
+}\r
+\r
+function rresultLaunchDrawn(id, node) {\r
+       runEvt("rresult", "recordDrawn", id, node);\r
+}\r
+\r
+\r
+function rresultDoRecordSearch() { \r
+       rresultIsPaged = true;\r
+       resultCollectSearchIds(true, SEARCH_RS_QUERY, rresultFilterSearchResults ); \r
+}\r
+\r
+function rresultDoRecordMultiSearch() { \r
+       rresultIsPaged = true;\r
+       resultCollectSearchIds(false, SEARCH_RS_QUERY, rresultFilterSearchResults ); \r
+}\r
+\r
+\r
+function rresultFilterSearchResults(r) {\r
+       var result = r.getResultObject();\r
+       var ids = [];\r
+       if( result.count > 0 ) {\r
+               for( var i = 0; i != result.ids.length; i++ ) \r
+                       ids.push(result.ids[i][0]);\r
+       }\r
+\r
+    resultFacetKey = result.facet_key;\r
+    resultCompiledSearch = result.compiled_search;\r
+    cookieManager.write(COOKIE_SEARCH, js2JSON(result.compiled_search), -1);\r
+       _rresultHandleIds( ids, result.count );\r
+}\r
+\r
+function rresultHandlePlaceHold(target) {\r
+    function reload() {\r
+        location.href = location.href.replace(/&hold_target=\d+/, '');\r
+    }\r
+    attachEvt("common", "holdUpdated", reload);\r
+    attachEvt("common", "holdUpdateCanceled", reload);\r
+    attachEvt("common", "loginCanceled", reload);\r
+    holdsDrawEditor({record:target, type: 'T'});\r
+}\r
+\r