Initial commit
This commit is contained in:
@@ -0,0 +1,58 @@
|
||||
var CoreView = require('backbone/core-view');
|
||||
var MosaicView = require('./mosaic/mosaic-view');
|
||||
|
||||
/**
|
||||
* Mosaic form view
|
||||
*/
|
||||
|
||||
module.exports = CoreView.extend({
|
||||
|
||||
initialize: function (opts) {
|
||||
if (!opts.collection) throw new Error('Mosaic collection is required');
|
||||
if (!opts.template) throw new Error('template is required');
|
||||
|
||||
this.template = opts.template;
|
||||
this._disabled = opts.disabled;
|
||||
|
||||
this._initBinds();
|
||||
},
|
||||
|
||||
render: function () {
|
||||
var selectedItem = this.collection.getSelected();
|
||||
var selectedName = selectedItem && selectedItem.getName();
|
||||
this.$el.html(
|
||||
this.template({
|
||||
name: selectedName
|
||||
})
|
||||
);
|
||||
this._initViews();
|
||||
return this;
|
||||
},
|
||||
|
||||
_initBinds: function () {
|
||||
this.collection.bind('change:highlighted', this._onChangeHighlighted, this);
|
||||
},
|
||||
|
||||
_initViews: function () {
|
||||
var mosaic = new MosaicView({
|
||||
collection: this.collection,
|
||||
disabled: this._disabled
|
||||
});
|
||||
|
||||
if (!this.$('.js-selector').length) throw new Error('HTML element with js-selector class is required');
|
||||
|
||||
this.$('.js-selector').append(mosaic.render().el);
|
||||
this.addView(mosaic);
|
||||
},
|
||||
|
||||
_onChangeHighlighted: function () {
|
||||
var item = this.collection.getHighlighted() || this.collection.getSelected();
|
||||
if (item) {
|
||||
var $el = this.$('.js-highlight');
|
||||
if ($el) {
|
||||
$el.text(item.getName());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
});
|
||||
Reference in New Issue
Block a user