mirror of
https://github.com/lidarr/lidarr.git
synced 2025-07-15 01:23:53 -07:00
81 lines
No EOL
2 KiB
JavaScript
81 lines
No EOL
2 KiB
JavaScript
var Backbone = require('backbone');
|
|
var Marionette = require('marionette');
|
|
var _ = require('underscore');
|
|
var CommandController = require('../../../Commands/CommandController');
|
|
|
|
module.exports = Marionette.ItemView.extend({
|
|
template : 'Shared/Toolbar/ButtonTemplate',
|
|
className : 'btn btn-default btn-icon-only-xs',
|
|
|
|
ui : {
|
|
icon : 'i'
|
|
},
|
|
|
|
events : {
|
|
'click' : 'onClick'
|
|
},
|
|
|
|
initialize : function() {
|
|
this.storageKey = this.model.get('menuKey') + ':' + this.model.get('key');
|
|
},
|
|
|
|
onRender : function() {
|
|
if (this.model.get('active')) {
|
|
this.$el.addClass('active');
|
|
this.invokeCallback();
|
|
}
|
|
|
|
if (!this.model.get('title')) {
|
|
this.$el.addClass('btn-icon-only');
|
|
}
|
|
|
|
if (this.model.get('className')) {
|
|
this.$el.addClass(this.model.get('className'));
|
|
}
|
|
|
|
var command = this.model.get('command');
|
|
if (command) {
|
|
var properties = _.extend({ name : command }, this.model.get('properties'));
|
|
|
|
CommandController.bindToCommand({
|
|
command : properties,
|
|
element : this.$el
|
|
});
|
|
}
|
|
},
|
|
|
|
onClick : function() {
|
|
if (this.$el.hasClass('disabled')) {
|
|
return;
|
|
}
|
|
|
|
this.invokeCallback();
|
|
this.invokeRoute();
|
|
this.invokeCommand();
|
|
},
|
|
|
|
invokeCommand : function() {
|
|
var command = this.model.get('command');
|
|
if (command) {
|
|
CommandController.Execute(command, this.model.get('properties'));
|
|
}
|
|
},
|
|
|
|
invokeRoute : function() {
|
|
var route = this.model.get('route');
|
|
if (route) {
|
|
Backbone.history.navigate(route, { trigger : true });
|
|
}
|
|
},
|
|
|
|
invokeCallback : function() {
|
|
if (!this.model.ownerContext) {
|
|
throw 'ownerContext must be set.';
|
|
}
|
|
|
|
var callback = this.model.get('callback');
|
|
if (callback) {
|
|
callback.call(this.model.ownerContext, this);
|
|
}
|
|
}
|
|
}); |