Initial commit
This commit is contained in:
Executable
+87
@@ -0,0 +1,87 @@
|
||||
var CoreView = require('backbone/core-view');
|
||||
var template = require('./edit-feature-header.tpl');
|
||||
var ContextMenuFactory = require('builder/components/context-menu-factory-view');
|
||||
var ConfirmationView = require('builder/components/modals/confirmation/modal-confirmation-view');
|
||||
var checkAndBuildOpts = require('builder/helpers/required-opts');
|
||||
var templateConfirmation = require('./delete-feature-confirmation.tpl');
|
||||
|
||||
var REQUIRED_OPTS = [
|
||||
'url',
|
||||
'tableName',
|
||||
'modals',
|
||||
'isNew',
|
||||
'layerDefinitionModel'
|
||||
];
|
||||
|
||||
module.exports = CoreView.extend({
|
||||
|
||||
initialize: function (opts) {
|
||||
checkAndBuildOpts(opts, REQUIRED_OPTS, this);
|
||||
},
|
||||
|
||||
render: function () {
|
||||
this.clearSubViews();
|
||||
|
||||
var letter = this._layerDefinitionModel.get('letter');
|
||||
var featureType = this.model.getFeatureType() ? _t('editor.edit-feature.features.' + this.model.getFeatureType()) : _t('editor.edit-feature.features.geometry');
|
||||
var breadcrumbLabel = this._isNew ? _t('editor.edit-feature.add-' + featureType) : _t('editor.edit-feature.edit', { featureType: featureType });
|
||||
|
||||
this.$el.html(
|
||||
template({
|
||||
url: this._url,
|
||||
layerName: this._layerDefinitionModel.getName(),
|
||||
tableName: this._tableName,
|
||||
bgColor: this._layerDefinitionModel.getColor(),
|
||||
letter: letter,
|
||||
featureType: featureType,
|
||||
breadcrumbLabel: breadcrumbLabel
|
||||
})
|
||||
);
|
||||
|
||||
if (!this._isNew) {
|
||||
this._initViews();
|
||||
}
|
||||
|
||||
return this;
|
||||
},
|
||||
|
||||
_initViews: function () {
|
||||
var menuItems = [{
|
||||
label: _t('editor.edit-feature.delete', { featureType: _t('editor.edit-feature.features.' + this.model.getFeatureType()) }),
|
||||
val: 'delete-feature',
|
||||
destructive: true,
|
||||
action: this._confirmDeleteFeature.bind(this)
|
||||
}];
|
||||
|
||||
this._contextMenuFactory = new ContextMenuFactory({
|
||||
menuItems: menuItems
|
||||
});
|
||||
|
||||
this.$('.js-context-menu').append(this._contextMenuFactory.render().el);
|
||||
this.addView(this._contextMenuFactory);
|
||||
},
|
||||
|
||||
_confirmDeleteFeature: function () {
|
||||
this._modals.create(function (modalModel) {
|
||||
return new ConfirmationView({
|
||||
modalModel: modalModel,
|
||||
template: templateConfirmation,
|
||||
runAction: this._destroyFeature.bind(this)
|
||||
});
|
||||
}.bind(this));
|
||||
},
|
||||
|
||||
_destroyFeature: function () {
|
||||
this.model.trigger('destroyFeature');
|
||||
|
||||
this.model.destroy({
|
||||
success: function () {
|
||||
this.model.trigger('destroyFeatureSuccess');
|
||||
}.bind(this),
|
||||
error: function () {
|
||||
this.model.trigger('destroyFeatureFailed');
|
||||
}.bind(this)
|
||||
});
|
||||
}
|
||||
|
||||
});
|
||||
Reference in New Issue
Block a user