Initial commit
This commit is contained in:
62
lib/assets/javascripts/builder/map-mode-model.js
Executable file
62
lib/assets/javascripts/builder/map-mode-model.js
Executable file
@@ -0,0 +1,62 @@
|
||||
var Backbone = require('backbone');
|
||||
|
||||
var VIEWING_MODE = 'viewing';
|
||||
var DRAWING_FEATURE_MODE = 'drawing';
|
||||
var EDITING_FEATURE_MODE = 'editing';
|
||||
|
||||
var MapMode = Backbone.Model.extend({
|
||||
defaults: {
|
||||
mode: VIEWING_MODE
|
||||
},
|
||||
|
||||
enterViewingMode: function () {
|
||||
delete this._featureDefinition;
|
||||
this.set('mode', VIEWING_MODE);
|
||||
},
|
||||
|
||||
enterDrawingFeatureMode: function (feature) {
|
||||
this._featureDefinition = feature;
|
||||
this.set('mode', DRAWING_FEATURE_MODE);
|
||||
},
|
||||
|
||||
enterEditingFeatureMode: function (feature) {
|
||||
this._featureDefinition = feature;
|
||||
this.set('mode', EDITING_FEATURE_MODE);
|
||||
},
|
||||
|
||||
getFeatureDefinition: function () {
|
||||
return this._featureDefinition;
|
||||
},
|
||||
|
||||
isViewingMode: function () {
|
||||
return this._isMode(VIEWING_MODE);
|
||||
},
|
||||
|
||||
isDrawingFeatureMode: function () {
|
||||
return this._isMode(DRAWING_FEATURE_MODE);
|
||||
},
|
||||
|
||||
isEditingFeatureMode: function () {
|
||||
return this._isMode(EDITING_FEATURE_MODE);
|
||||
},
|
||||
|
||||
bindRouteEvents: function (routeModel) {
|
||||
this.listenTo(routeModel, 'change:currentRoute', this._handleRoute, this);
|
||||
},
|
||||
|
||||
_handleRoute: function (routeModel) {
|
||||
var currentRoute = routeModel.get('currentRoute');
|
||||
var routeName = currentRoute[0];
|
||||
|
||||
if (routeName !== 'edit_feature' &&
|
||||
routeName.indexOf('add_feature_') !== 0) {
|
||||
this.enterViewingMode();
|
||||
}
|
||||
},
|
||||
|
||||
_isMode: function (mode) {
|
||||
return this.get('mode') === mode;
|
||||
}
|
||||
});
|
||||
|
||||
module.exports = MapMode;
|
||||
Reference in New Issue
Block a user