cartodb/lib/assets/javascripts/builder/editor/layers/basemap-content-views/basemap-mosaic-add-item-view.js
2020-06-15 10:58:47 +08:00

75 lines
2.2 KiB
JavaScript
Executable File

var CoreView = require('backbone/core-view');
var template = require('builder/components/mosaic/mosaic-item.tpl');
var AddBasemapView = require('builder/components/modals/add-basemap/add-basemap-view');
var AddBasemapModel = require('builder/components/modals/add-basemap/add-basemap-model');
module.exports = CoreView.extend({
className: 'Mosaic-item Mosaic-item--dashed',
tagName: 'li',
events: {
'mouseenter': '_onMouseEnter',
'mouseleave': '_onMouseLeave',
'click': '_onClick'
},
initialize: function (opts) {
if (!opts.layerDefinitionsCollection) throw new Error('layerDefinitionsCollection is required');
if (!opts.modals) throw new Error('modals is required');
if (!opts.basemapsCollection) throw new Error('basemapsCollection is required');
if (!opts.customBaselayersCollection) throw new Error('customBaselayersCollection is required');
if (!opts.mosaicModel) throw new Error('mosaicModel is required');
this._layerDefinitionsCollection = opts.layerDefinitionsCollection;
this._basemapsCollection = opts.basemapsCollection;
this._customBaselayersCollection = opts.customBaselayersCollection;
this._modals = opts.modals;
this._currentTab = opts.currentTab;
this._mosaicModel = opts.mosaicModel;
this.add_related_model(this._mosaicModel);
},
render: function () {
this.$el.html(
template({
name: this.model.getName(),
template: this.model.get('template')()
})
);
return this;
},
_onMouseEnter: function () {
this._mosaicModel.set('highlightedAdd', true);
},
_onMouseLeave: function () {
this._mosaicModel.set('highlightedAdd', false);
},
_onClick: function () {
var self = this;
var modal = this._modals.create(function (modalModel) {
var addBasemapModel = new AddBasemapModel({}, {
layerDefinitionsCollection: self._layerDefinitionsCollection,
basemapsCollection: self._basemapsCollection,
customBaselayersCollection: self._customBaselayersCollection,
currentTab: self._currentTab
});
return new AddBasemapView({
modalModel: modalModel,
createModel: addBasemapModel
});
}, {
breadcrumbsEnabled: true
});
modal.show();
}
});