client cookie caching of ID's
authorerickson <erickson@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Fri, 12 Aug 2005 13:55:03 +0000 (13:55 +0000)
committererickson <erickson@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Fri, 12 Aug 2005 13:55:03 +0000 (13:55 +0000)
git-svn-id: svn://svn.open-ils.org/ILS/trunk@1643 dcc99617-32d9-48b4-a31d-7c20da2025e4

Open-ILS/src/javascript/lib/js/opac/mresult.js
Open-ILS/src/javascript/lib/js/opac/result_common.js
Open-ILS/src/javascript/lib/js/opac/rresult.js

index 6ed54b4..3b3157f 100644 (file)
@@ -6,7 +6,6 @@ var idsCookie = new cookieObject("ids", 1, "/", COOKIE_IDS);
 
 function mresultUnload() { removeChildren(table); table = null;}
 
-
 function mresultDoSearch() {
 
        table = G.ui.result.main_table;
@@ -20,7 +19,6 @@ function mresultDoSearch() {
                mresultCollectIds(); /* do the actual search */
        } else { 
                resultSetInfo();
-               //mresultCollectRecords();  /* grab the records if we have the id's cached */
                mresultCollectIds();
        }
 }
@@ -41,12 +39,18 @@ function mresultHandleCount(r) {
 /* performs the actual search */
 function mresultCollectIds() {
 
-       var c = JSON2js(idsCookie.get(COOKIE_IDS));
-       if(c && c.recs) { records = c.recs; ranks = c.ranks; } 
 
-       if( records[getOffset()] != null && 
-                       records[getOffset() + getDisplayCount() - 1] != null) {
-       //              alert("cached!");
+       if(getOffset() == 0) {
+               idsCookie.put(COOKIE_IDS,"");
+               idsCookie.write();
+       } else {
+               var c = JSON2js(idsCookie.get(COOKIE_IDS));
+               if(c && c.recs) { records = c.recs; ranks = c.ranks; } 
+       }
+
+       if(     getOffset() != 0 && 
+                       records[getOffset()] != null && 
+                       records[resultFinalPageIndex()] != null) {
                        mresultCollectRecords(); 
 
        } else {
@@ -65,9 +69,10 @@ function mresultHandleMRIds(r) {
 
 function mresultSetRecords(idstruct) {
        var o = getOffset();
-       for( var x = o; x!= idstruct.length + o; x++ ) {
-               records[x] = idstruct[x - o][0];
-               ranks[x] = idstruct[x - o][1];
+       for( var x = o; x < idstruct.length + o; x++ ) {
+               if(idstruct[x-o] == null) break;
+               records[x] = parseInt(idstruct[x - o][0]);
+               ranks[x] = parseFloat(idstruct[x - o][1]);
        }
        idsCookie.put(COOKIE_IDS, js2JSON({ recs: records, ranks : ranks }) );
        idsCookie.write();
index 7d9137f..d0e844c 100644 (file)
@@ -3,6 +3,12 @@ var authorCache = {};
 var seriesCache = {};
 var recordsHandled = 0;
 
+function resultFinalPageIndex() {
+       if(getHitCount() < (getOffset() + getDisplayCount())) 
+               return getHitCount() - 1;
+       return getOffset() + getDisplayCount() - 1;
+}
+
 /* set the search result info, number of hits, which results we're 
        displaying, links to the next/prev pages, etc. */
 function resultSetInfo() { 
index dc177a8..3547a0a 100644 (file)
@@ -28,6 +28,7 @@ function rresultHandleRIds(r) {
 function rresultCollectRecords(ids) {
        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++;