daf92c0f9eb331ea60740e6802aabd241d4be363
tdreszer
  Wed Sep 1 13:40:10 2010 -0700
Change popup cfg to recognize only changed vars for update to cart and page update
diff --git src/hg/js/hgTracks.js src/hg/js/hgTracks.js
index 169fb10..f432953 100644
--- src/hg/js/hgTracks.js
+++ src/hg/js/hgTracks.js
@@ -1782,6 +1782,7 @@
 
 var popUpTrackName = "";
 var popUpTrackDescriptionOnly = false;
+var popSaveAllVars = null;
 function _hgTrackUiPopUp(trackName,descriptionOnly)
 { // popup cfg dialog
     popUpTrackName = trackName;
@@ -1810,17 +1811,18 @@
 { // When hgTrackUi Cfg popup closes with ok, then update cart and refresh parts of page
     var rec = trackDbJson[trackName];
     var subtrack = rec.isSubtrack ? trackName :"";  // If subtrack then vis rules differ
-
     var allVars = getAllVars($('#pop'), subtrack );
-    var newVis = allVars[subtrack];
-    var hide = (newVis == null || newVis == 'hide' || newVis == '[]');  // subtracks do not have "hide"
+    var changedVars = varHashChanges(allVars,popSaveAllVars);
+    //warn("cfgVars:"+varHashToQueryString(changedVars));
+    var newVis = changedVars[subtrack];
+    var hide = (newVis != null && (newVis == 'hide' || newVis == '[]'));  // subtracks do not have "hide", thus '[]'
     if($('#imgTbl') == undefined) { // On findTracks or config page
-        setAllVars(popObj, subtrack );
-        //if(hide) // Need to set checkbox here
+        setVarsFromHash(changedVars);
+        //if(hide) // TODO: When findTracks or config page has cfg popup, then vis change needs to be handled in page here
     }
     else {  // On image page
         if(hide) {
-            setAllVars(popObj, subtrack );
+            setVarsFromHash(changedVars);
             $('#tr_' + trackName).remove();
             initImgTblButtons();
             loadImgAreaSelect(false);
@@ -1834,7 +1836,7 @@
                     rec.localVisibility = newVis;
                 }
             }
-            var urlData = objectToQueryString(allVars);
+            var urlData = varHashToQueryString(changedVars);
             if(mapIsUpdateable) {
                 updateTrackImg(trackName,urlData,"");
             } else {
@@ -1866,10 +1868,15 @@
                                         hgTrackUiPopCfgOk($('#pop'), popUpTrackName);
                                     $(this).dialog("close");
                                }},
+                               open: function() {
+                                    var subtrack = trackDbJson[popUpTrackName].isSubtrack ? popUpTrackName :"";  // If subtrack then vis rules differ
+                                    popSaveAllVars = getAllVars( $('#pop'), subtrack );
+                               },
                                close: function() {
                                    $('#hgTrackUiDialog').html("");  // clear out html after close to prevent problems caused by duplicate html elements
                                 popUpTrackName = ""; //set to defaults
                                 popUpTrackDescriptionOnly = false;
+                                popSaveAllVars = null;
                                }
                            });
     if(popUpTrackDescriptionOnly) {