Initial commit
This commit is contained in:
+106
@@ -0,0 +1,106 @@
|
||||
var CoreView = require('backbone/core-view');
|
||||
var template = require('./add-basemap.tpl');
|
||||
var TabPaneView = require('builder/components/tab-pane/tab-pane-view');
|
||||
var TabPaneCollection = require('builder/components/tab-pane/tab-pane-collection');
|
||||
var ViewFactory = require('builder/components/view-factory');
|
||||
var renderLoading = require('builder/components/loading/render-loading');
|
||||
var ErrorView = require('builder/components/error/error-view');
|
||||
var _ = require('underscore');
|
||||
var TabsView = require('./tabs-view');
|
||||
|
||||
/**
|
||||
* Add basemap dialog
|
||||
*/
|
||||
module.exports = CoreView.extend({
|
||||
|
||||
className: 'Dialog-content Dialog-content--expanded',
|
||||
|
||||
events: {
|
||||
'click .js-ok': 'ok'
|
||||
},
|
||||
|
||||
initialize: function (opts) {
|
||||
if (!opts.modalModel) throw new TypeError('modalModel is required');
|
||||
if (!opts.createModel) throw new TypeError('createModel is required');
|
||||
|
||||
this._modalModel = opts.modalModel;
|
||||
this._createModel = opts.createModel;
|
||||
this._initBinds();
|
||||
},
|
||||
|
||||
render: function () {
|
||||
this.clearSubViews();
|
||||
this.$el.html(template());
|
||||
this._initViews();
|
||||
},
|
||||
|
||||
_initBinds: function () {
|
||||
this._createModel.bind('saveBasemapDone', this._modalModel.destroy.bind(this._modalModel), this);
|
||||
this._createModel.bind('change:contentPane', this._onChangeContentView, this);
|
||||
this.add_related_model(this._createModel);
|
||||
},
|
||||
|
||||
_onChangeContentView: function () {
|
||||
var context = this._createModel.get('contentPane');
|
||||
var paneModel = _.first(this._tabPaneCollection.where({ name: context }));
|
||||
paneModel.set('selected', true);
|
||||
},
|
||||
|
||||
_initViews: function () {
|
||||
var self = this;
|
||||
|
||||
this._submitButtom = this.$('.js-ok');
|
||||
this._modalFooter = this.$('.js-Modal-footer');
|
||||
|
||||
this._tabPaneCollection = new TabPaneCollection([
|
||||
{
|
||||
name: 'tabs',
|
||||
selected: this._createModel.get('contentPane') === 'tabs',
|
||||
createContentView: function () {
|
||||
return new TabsView({
|
||||
model: self._createModel,
|
||||
submitButton: self._submitButtom,
|
||||
modalFooter: self._modalFooter
|
||||
});
|
||||
}
|
||||
}, {
|
||||
name: 'addingBasemap',
|
||||
selected: this._createModel.get('contentPane') === 'addingBasemap',
|
||||
createContentView: function () {
|
||||
self._disableModalFooter(true);
|
||||
|
||||
return ViewFactory.createByHTML(
|
||||
renderLoading({
|
||||
title: _t('components.modals.add-basemap.adding-basemap')
|
||||
})
|
||||
);
|
||||
}
|
||||
}, {
|
||||
name: 'addBasemapFailed',
|
||||
selected: this._createModel.get('contentPane') === 'addBasemapFailed',
|
||||
createContentView: function () {
|
||||
return new ErrorView({
|
||||
title: _t('components.modals.add-basemap.add-basemap-error')
|
||||
});
|
||||
}
|
||||
}
|
||||
]);
|
||||
|
||||
var tabPaneView = new TabPaneView({
|
||||
collection: this._tabPaneCollection
|
||||
});
|
||||
this.addView(tabPaneView);
|
||||
this.$('.js-content-container').append(tabPaneView.render().el);
|
||||
},
|
||||
|
||||
_disableModalFooter: function (disable) {
|
||||
this._modalFooter.toggleClass('is-disabled', disable);
|
||||
},
|
||||
|
||||
ok: function () {
|
||||
if (this._createModel.canSaveBasemap()) {
|
||||
this._createModel.saveBasemap();
|
||||
}
|
||||
}
|
||||
|
||||
});
|
||||
Reference in New Issue
Block a user