diff --git a/src/mmw/js/src/core/models.js b/src/mmw/js/src/core/models.js index e9710c23b..c5f343ff4 100644 --- a/src/mmw/js/src/core/models.js +++ b/src/mmw/js/src/core/models.js @@ -22,7 +22,8 @@ var MapModel = Backbone.Model.extend({ geolocationEnabled: true, previousAreaOfInterest: null, dataCatalogResults: null, // GeoJSON array - dataCatalogActiveResult: null // GeoJSON + dataCatalogActiveResult: null, // GeoJSON + selectedGeocoderArea: null, // GeoJSON }, revertMaskLayer: function() { diff --git a/src/mmw/js/src/core/views.js b/src/mmw/js/src/core/views.js index 226d03b83..0ec2f0dc7 100644 --- a/src/mmw/js/src/core/views.js +++ b/src/mmw/js/src/core/views.js @@ -44,6 +44,16 @@ var dataCatalogActiveStyle = { fillOpacity: 0.2 }; +var selectedGeocoderAreaStyle = { + stroke: true, + fill: true, + weight: 3, + opacity: 0.5, + fillOpacity: 0.2, + fillColor: '#E77471', + color: '#E77471' +}; + var RootView = Marionette.LayoutView.extend({ el: 'body', ui: { @@ -195,7 +205,8 @@ var MapView = Marionette.ItemView.extend({ 'change:size': 'toggleMapSize', 'change:maskLayerApplied': 'toggleMask', 'change:dataCatalogResults': 'renderDataCatalogResults', - 'change:dataCatalogActiveResult': 'renderDataCatalogActiveResult' + 'change:dataCatalogActiveResult': 'renderDataCatalogActiveResult', + 'change:selectedGeocoderArea': 'renderSelectedGeocoderArea', }, // L.Map instance. @@ -209,9 +220,15 @@ var MapView = Marionette.ItemView.extend({ // L.FeatureGroup instance. _modificationsLayer: null, + // Shapes for the active data catalog tab's results. + // L.FeatureGroup instance _dataCatalogResultsLayer: null, _dataCatalogActiveLayer: null, + // The shape for a selected geocoder boundary result + // L.FeatureGroup instance + _selectedGeocoderAreaLayer: null, + // Flag used to determine if AOI change should trigger a prompt. _areaOfInterestSet: false, _didRevert: false, @@ -242,6 +259,7 @@ var MapView = Marionette.ItemView.extend({ this._modificationsLayer = new L.FeatureGroup(); this._dataCatalogResultsLayer = new L.FeatureGroup(); this._dataCatalogActiveLayer = new L.FeatureGroup(); + this._selectedGeocoderAreaLayer = new L.FeatureGroup(); this.fitToDefaultBounds(); @@ -281,6 +299,7 @@ var MapView = Marionette.ItemView.extend({ map.addLayer(this._modificationsLayer); map.addLayer(this._dataCatalogResultsLayer); map.addLayer(this._dataCatalogActiveLayer); + map.addLayer(this._selectedGeocoderAreaLayer); }, fitToDefaultBounds: function() { @@ -701,6 +720,20 @@ var MapView = Marionette.ItemView.extend({ this._dataCatalogActiveLayer.addLayer(layer); } } + }, + + renderSelectedGeocoderArea: function() { + var geom = this.model.get('selectedGeocoderArea'); + + this._selectedGeocoderAreaLayer.clearLayers(); + + if (geom) { + this.disableGeolocation(); + + var layer = new L.GeoJSON(geom, { style: selectedGeocoderAreaStyle }); + this._leafletMap.fitBounds(layer.getBounds(), { reset: true }); + this._selectedGeocoderAreaLayer.addLayer(layer); + } } }); diff --git a/src/mmw/js/src/draw/controllers.js b/src/mmw/js/src/draw/controllers.js index d4327cf1d..aeabfc230 100644 --- a/src/mmw/js/src/draw/controllers.js +++ b/src/mmw/js/src/draw/controllers.js @@ -20,7 +20,10 @@ var DrawController = { toolbarModel.set('predefinedShapeTypes', _.filter(settings.get('boundary_layers'), { selectable: true })); - App.rootView.geocodeSearchRegion.show(geocodeSearch); + if (!App.rootView.geocodeSearchRegion.hasView()) { + App.rootView.geocodeSearchRegion.show(geocodeSearch); + } + App.rootView.sidebarRegion.show(new views.DrawWindow({ model: toolbarModel })); diff --git a/src/mmw/js/src/draw/views.js b/src/mmw/js/src/draw/views.js index 9056b4458..e6088b519 100644 --- a/src/mmw/js/src/draw/views.js +++ b/src/mmw/js/src/draw/views.js @@ -1114,6 +1114,8 @@ module.exports = { DrawWindow: DrawWindow, getShapeAndAnalyze: getShapeAndAnalyze, addLayer: addLayer, + validateShape: validateShape, + displayAlert: displayAlert, clearAoiLayer: clearAoiLayer, selectBoundary: selectBoundary, drawArea: drawArea, diff --git a/src/mmw/js/src/geocode/models.js b/src/mmw/js/src/geocode/models.js index 1ea27252b..64fd35ce3 100644 --- a/src/mmw/js/src/geocode/models.js +++ b/src/mmw/js/src/geocode/models.js @@ -7,6 +7,7 @@ var _ = require('underscore'), var GeocoderModel = Backbone.Model.extend({ defaults: { + selectedSuggestion: null, // SuggestionModel query: '' } }); diff --git a/src/mmw/js/src/geocode/templates/search.html b/src/mmw/js/src/geocode/templates/search.html index f0c3022bf..c29c53c11 100644 --- a/src/mmw/js/src/geocode/templates/search.html +++ b/src/mmw/js/src/geocode/templates/search.html @@ -1,5 +1,14 @@ - + +{% if selectedSuggestion and selectedSuggestion.get('isBoundaryLayer') %} + +{% endif %}