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