Changeset 53d7834 in osmose-frontend


Ignore:
Timestamp:
Mar 1, 2014 11:08:42 AM (6 years ago)
Author:
Frédéric Rodrigo <fred.rodrigo@…>
Branches:
master
Children:
1e9bc2e
Parents:
d6369e1
git-author:
Frédéric Rodrigo <fred.rodrigo@…> (19/02/2014 23:40:24)
git-committer:
Frédéric Rodrigo <fred.rodrigo@…> (01/03/2014 11:08:42)
Message:

No close popup on move map

Location:
static/map
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • static/map/Osmose.Errors.js

    r83106b6 r53d7834  
    44 
    55  _onMap: false, 
     6 
     7  _osmoseMarker: null, 
    68 
    79  initialize: function (menu) { 
     
    4143        dataType: 'json' 
    4244      }).done(function (data) { 
     45        var content = null, 
     46         error_id = null; 
     47        if (self._onMap && self._osmoseMarker) { 
     48          self._osmoseMarker.eachLayer (function (layer) { 
     49            if (layer.getPopup() && layer.getPopup()._isOpen) { 
     50              error_id = layer.error_id; 
     51              content = layer.getPopup().getContent(); 
     52            } 
     53          }); 
     54        } 
    4355        self.clearLayers(); 
    4456        if (self._onMap) { 
    45           self.addLayer(new OsmoseMarker(data)); 
     57          self._osmoseMarker = new OsmoseMarker(data, { 
     58            error_id: error_id, 
     59            content: content 
     60          }); 
     61          self.addLayer(self._osmoseMarker); 
    4662        } 
    4763      }); 
  • static/map/Osmose.Marker.js

    r0d139ae r53d7834  
    11OsmoseMarker = L.GeoJSON.extend({ 
    22 
     3  _options: {}, 
     4 
    35  initialize: function (data, options) { 
     6    this._options = options; 
    47    L.GeoJSON.prototype.initialize.call(this, data, { 
    5       pointToLayer: this._pointToLayer, 
    6       onEachFeature: this._onEachFeature, 
     8      pointToLayer: this._pointToLayer.bind(this), 
     9      onEachFeature: this._onEachFeature.bind(this), 
    710    }); 
    811  }, 
     
    2225 
    2326  _onEachFeature: function (featureData, layer) { 
    24     layer.bindPopup('', { 
     27    var self = this; 
     28    layer.error_id = featureData.properties.error_id; 
     29    layer.bindPopup(null, { 
    2530      maxWidth: 280, 
    2631      autoPan: false 
     
    3843        layer.openPopup(); 
    3944      } 
     45    }).on('add', function (e) { 
     46      if (layer.error_id == self._options.error_id) { 
     47        layer.setPopupContent(self._options.content).openPopup(); 
     48      } 
    4049    }).on('popupclose', function (e) { 
    4150      layer.click = false; 
    4251    }).on('popupopen', function (e) { 
    43       e.popup.setContent("<center><img src='../images/throbbler.gif' alt='downloading'></center>"); 
    44       e.popup.update(); 
     52      if (!e.popup.getContent()) { 
     53        e.popup.setContent("<center><img src='../images/throbbler.gif' alt='downloading'></center>"); 
     54        e.popup.update(); 
    4555 
    46       setTimeout(function () { 
    47         if (e.popup._isOpen) { 
    48           // Popup still open, so download content 
    49           $.ajax({ 
    50             url: '../api/0.2/error/' + featureData.properties.error_id, 
    51             dataType: 'json', 
    52             success: function (data) { 
    53               var template = $('#popupTpl').html(), 
    54                 content = Mustache.render(template, data); 
    55               e.popup.setContent(content); 
    56             }, 
    57             error: function (jqXHR, textStatus, errorThrown) { 
    58               e.popup.setContent(textStatus); 
    59             }, 
    60           }); 
    61         } 
    62       }, 100); 
     56        setTimeout(function () { 
     57          if (e.popup._isOpen) { 
     58            // Popup still open, so download content 
     59            $.ajax({ 
     60              url: '../api/0.2/error/' + featureData.properties.error_id, 
     61              dataType: 'json', 
     62              success: function (data) { 
     63                var template = $('#popupTpl').html(), 
     64                  content = Mustache.render(template, data); 
     65                e.popup.setContent(content); 
     66              }, 
     67              error: function (jqXHR, textStatus, errorThrown) { 
     68                e.popup.setContent(textStatus); 
     69              }, 
     70            }); 
     71          } 
     72        }, 100); 
     73      } 
    6374    }); 
    6475  }, 
Note: See TracChangeset for help on using the changeset viewer.