tv
Version:
Interactive debug console plugin for hapi
78 lines (50 loc) • 1.73 kB
JavaScript
;
// Load modules
const Backbone = require('backbone');
const _ = require('lodash');
const ChannelSelectorView = require('./channelSelector');
// Declare internals
const internals = {};
exports = module.exports = internals.ToolbarView = Backbone.View.extend({
template: require('../templates/toolbar.hbs'),
events: {
'keyup .search': '_triggerSearchChanged',
'click .settings': '_triggerShowSettings',
'click .clear': '_triggerClearFeed',
'click .pause-resume': '_pauseResumeRequests'
},
render: function () {
this.$el.html(this.template());
new ChannelSelectorView({ el: this.$('.channel-selector-container'), model: this.model }).render();
return this;
},
_pauseResumeRequests: function (e) {
const paused = $(e.currentTarget).find('.resume:visible').length === 1;
if (paused) {
this._resumeRequests();
}
else {
this._pauseRequests();
}
},
_pauseRequests: function () {
this.$el.find('.pause').addClass('hidden');
this.$el.find('.resume').removeClass('hidden');
this.trigger('pause');
},
_resumeRequests: function () {
this.$el.find('.pause').removeClass('hidden');
this.$el.find('.resume').addClass('hidden');
this.trigger('resume');
},
_triggerSearchChanged: _.debounce(function (e) {
const queryString = $(e.currentTarget).val();
this.trigger('searchChanged', queryString);
}, 200),
_triggerShowSettings: function () {
this.trigger('showSettings');
},
_triggerClearFeed: function () {
this.trigger('clearFeed');
}
});