86 lines
2.7 KiB
JavaScript
86 lines
2.7 KiB
JavaScript
|
var CoreView = require('backbone/core-view');
|
||
|
var BasemapCategoriesView = require('./basemap-categories-view');
|
||
|
var BasemapSelectView = require('./basemap-select-view');
|
||
|
var template = require('./basemap-inner.tpl');
|
||
|
|
||
|
module.exports = CoreView.extend({
|
||
|
|
||
|
className: 'Editor-inner',
|
||
|
|
||
|
initialize: function (opts) {
|
||
|
if (!opts.categoriesCollection) throw new Error('categoriesCollection is required');
|
||
|
if (!opts.layerDefinitionsCollection) throw new Error('layerDefinitionsCollection is required');
|
||
|
if (!opts.basemapsCollection) throw new Error('basemapsCollection is required');
|
||
|
if (!opts.customBaselayersCollection) throw new Error('customBaselayersCollection is required');
|
||
|
if (!opts.modals) throw new Error('modals is required');
|
||
|
|
||
|
this._categoriesCollection = opts.categoriesCollection;
|
||
|
this._layerDefinitionsCollection = opts.layerDefinitionsCollection;
|
||
|
this._basemapsCollection = opts.basemapsCollection;
|
||
|
this._customBaselayersCollection = opts.customBaselayersCollection;
|
||
|
this._modals = opts.modals;
|
||
|
|
||
|
this._initBinds();
|
||
|
},
|
||
|
|
||
|
_initBinds: function () {
|
||
|
this.model.bind('change:disabled', function () {
|
||
|
this._renderSelect();
|
||
|
}, this);
|
||
|
|
||
|
this._basemapsCollection.bind('add remove', function () {
|
||
|
this._renderSelect();
|
||
|
}, this);
|
||
|
this.add_related_model(this._basemapsCollection);
|
||
|
|
||
|
this._categoriesCollection.bind('change:selected', this._renderSelect, this);
|
||
|
this.add_related_model(this._categoriesCollection);
|
||
|
},
|
||
|
|
||
|
render: function () {
|
||
|
this.clearSubViews();
|
||
|
this.$el.html(template());
|
||
|
|
||
|
this._initViews();
|
||
|
return this;
|
||
|
},
|
||
|
|
||
|
_initViews: function () {
|
||
|
this._renderCategories();
|
||
|
this._renderSelect();
|
||
|
},
|
||
|
|
||
|
_renderCategories: function () {
|
||
|
if (this._categoriesView) {
|
||
|
this.removeView(this._categoriesView);
|
||
|
this._categoriesView.clean();
|
||
|
}
|
||
|
|
||
|
this._categoriesView = new BasemapCategoriesView({
|
||
|
categoriesCollection: this._categoriesCollection
|
||
|
});
|
||
|
|
||
|
this.addView(this._categoriesView);
|
||
|
this.$('.js-basemapCategory').html(this._categoriesView.render().el);
|
||
|
},
|
||
|
|
||
|
_renderSelect: function () {
|
||
|
if (this._selectView) {
|
||
|
this.removeView(this._selectView);
|
||
|
this._selectView.clean();
|
||
|
}
|
||
|
|
||
|
this._selectView = new BasemapSelectView({
|
||
|
layerDefinitionsCollection: this._layerDefinitionsCollection,
|
||
|
basemapsCollection: this._basemapsCollection,
|
||
|
customBaselayersCollection: this._customBaselayersCollection,
|
||
|
selectedCategoryVal: this._categoriesCollection.getSelectedValue(),
|
||
|
modals: this._modals,
|
||
|
disabled: this.model.get('disabled')
|
||
|
});
|
||
|
this.addView(this._selectView);
|
||
|
this.$('.js-basemapSelect').html(this._selectView.render().el);
|
||
|
}
|
||
|
|
||
|
});
|