Don't close the sidebar when the visibility of the data layer changes
authorTom Hughes <tom@compton.nu>
Wed, 3 Feb 2010 23:35:55 +0000 (23:35 +0000)
committerTom Hughes <tom@compton.nu>
Wed, 3 Feb 2010 23:35:55 +0000 (23:35 +0000)
if the browser isn't active. Closes #2684.

app/views/browse/start.rjs
app/views/site/index.html.erb

index 220295663f8c9753e083c3738e504ba05f0c9798..b045bc9ea6a9762e43c7467c295fc7ed10fa9233 100644 (file)
@@ -2,7 +2,6 @@ page.replace_html :sidebar_title, t('browse.start_rjs.data_frame_title')
 page.replace_html :sidebar_content, :partial => 'start'
 page << <<EOJ
   var browseBoxControl;
-  var browseActive;
   var browseMode = "auto";
   var browseBounds;
   var browseFeatureList;
@@ -15,7 +14,7 @@ page << <<EOJ
   OpenLayers.Feature.Vector.style['default'].cursor = "pointer";
     
   function startBrowse() {
-    browseActive = true;
+    map.dataLayer.active = true;
 
     openSidebar({ onclose: stopBrowse });
 
@@ -47,8 +46,8 @@ page << <<EOJ
   }
 
   function stopBrowse() {
-    if (browseActive) {
-      browseActive = false;
+    if (map.dataLayer.active) {
+      map.dataLayer.active = false;
 
       if (browseSelectControl) {   
         browseSelectControl.destroy();  
@@ -154,7 +153,7 @@ page << <<EOJ
   }    
 
   function customDataLoader(request) {
-    if (browseActive) {
+    if (this.map.dataLayer.active) {
       var doc = request.responseXML;
 
       if (!doc || !doc.documentElement) {
@@ -238,9 +237,9 @@ page << <<EOJ
   }
 
   function dataLoaded() {
-    if (browseActive) {
+    if (this.map.dataLayer.active) {
       clearStatus();
-        
+
       browseObjectList = document.createElement("div")
 
       var heading = document.createElement("p");
index 150bdce4d59804d9a699f754b316f1f36ffa8dd9..0602b6f11598b855b96955ae6055c6c12a6b49f2 100644 (file)
@@ -182,7 +182,7 @@ end
   function toggleData() {
     if (map.dataLayer.visibility) {
       <%= remote_function :url => { :controller => 'browse', :action => 'start' } %>
-    } else {
+    } else if (map.dataLayer.active) {
       closeSidebar();
     }
   }