src/hg/js/ajax.js 1.7

1.7 2010/05/14 17:29:34 tdreszer
Added setCartVars to set an array of names and values. Needed for inageV2 imgOrd
Index: src/hg/js/ajax.js
===================================================================
RCS file: /projects/compbio/cvsroot/kent/src/hg/js/ajax.js,v
retrieving revision 1.6
retrieving revision 1.7
diff -b -B -U 4 -r1.6 -r1.7
--- src/hg/js/ajax.js	16 Feb 2010 01:26:45 -0000	1.6
+++ src/hg/js/ajax.js	14 May 2010 17:29:34 -0000	1.7
@@ -49,11 +49,15 @@
         req.send("");
     }
 }
 
-function setCartVar(name, value)
+function setCartVars(names, values)
 {
-// Asynchronously set a cart variable.
+// Asynchronously sets the array of cart vars with values
+    if(names.length <= 0)
+        return;
+
+    // Set up constant portion of url
     var loc = window.location.href;
     if(loc.indexOf("?") > -1) {
         loc = loc.substring(0, loc.indexOf("?"));
     }
@@ -61,10 +65,29 @@
         loc = loc.substring(0, loc.lastIndexOf("/"));
     }
     loc = loc + "/cartDump";
     var hgsid = getHgsid();
-    loc = loc + "?submit=1&noDisplay=1&cartDump.varName=" + escape(name) + "&cartDump.newValue=" + escape(value) + "&hgsid=" + hgsid;
-    loadXMLDoc(loc);
+    loc = loc + "?submit=1&noDisplay=1&hgsid=" + hgsid;
+
+    // Set up dynamic portion of url
+    var ix=0;
+    while( ix < names.length ) { // Sends multiple messages if the URL gets too long
+        var pairs = "";
+        for(  ;ix<names.length && pairs.length < 5000;ix++) {  // FIXME: How big is too big?
+            //pairs = pairs + "&cartDump.varName=" + escape(names[ix]) + "&cartDump.newValue=" + escape(values[ix]);
+            pairs = pairs + "&" + escape(names[ix]) + "=" + escape(values[ix]);
+        }
+        if(pairs.length == 0)
+            return;
+        //warn(pairs);
+        loadXMLDoc(loc + pairs);
+    }
+}
+
+function setCartVar(name, value)
+{
+// Asynchronously set a cart variable.
+    setCartVars( [ name ], [ value ] );
 }
 
 function submitMain()
 {