|
|
|
/*jslint laxbreak:true */
|
|
|
|
/*jslint laxcomma:true */
|
|
|
|
/*jslint loopfunc:true */
|
|
|
|
/*jslint strict:true */
|
|
|
|
/*jslint browser:true */
|
|
|
|
/*jslint devel:true */
|
|
|
|
define([
|
|
|
|
"underscore"
|
|
|
|
, "jquery"
|
|
|
|
, "backbone"
|
|
|
|
, "bootstrap"
|
|
|
|
|
|
|
|
, "text!../../templates/footer/layout.html"
|
|
|
|
]
|
|
|
|
, function (
|
|
|
|
_
|
|
|
|
, $
|
|
|
|
, Backbone
|
|
|
|
, Bootstrap
|
|
|
|
|
|
|
|
, tmplFooterLayout
|
|
|
|
) {
|
|
|
|
"use strict";
|
|
|
|
|
|
|
|
var Footer = Backbone.View.extend({
|
|
|
|
events: {
|
|
|
|
"click button[data-target='about']": "__eventButtonAboutClick"
|
|
|
|
, "click button[data-target='sidebar']": "__eventToggleButtonSideBar"
|
|
|
|
, "click button[data-target='random']": "__eventToggleButtonRandom"
|
|
|
|
, "click button[data-target='repeat']": "__eventToggleButtonRepeat"
|
|
|
|
}
|
|
|
|
|
|
|
|
, _stateRepeat: false
|
|
|
|
|
|
|
|
, _stateRandom: false
|
|
|
|
|
|
|
|
, initialize: function (options) {
|
|
|
|
_.bindAll(this
|
|
|
|
, "__eventToggleButtonRandom"
|
|
|
|
, "__eventToggleButtonRepeat"
|
|
|
|
, "__eventToggleButtonSideBar"
|
|
|
|
, "__eventButtonAboutClick"
|
|
|
|
);
|
|
|
|
|
|
|
|
var that = this
|
|
|
|
;
|
|
|
|
|
|
|
|
Footer.__super__.initialize.apply(that, arguments);
|
|
|
|
|
|
|
|
that.$el.html(tmplFooterLayout);
|
|
|
|
|
|
|
|
return that;
|
|
|
|
}
|
|
|
|
|
|
|
|
, __eventToggleButtonRandom: function (event) {
|
|
|
|
var that = this
|
|
|
|
, $target = $(event.target)
|
|
|
|
;
|
|
|
|
|
|
|
|
that._stateRandom = !that._stateRandom;
|
|
|
|
|
|
|
|
if (event.target.tagName === "I") {
|
|
|
|
$target = $target.parent();
|
|
|
|
}
|
|
|
|
|
|
|
|
if (that._stateRandom) {
|
|
|
|
$target.addClass("active");
|
|
|
|
} else {
|
|
|
|
$target.removeClass("active");
|
|
|
|
}
|
|
|
|
|
|
|
|
if (!that.__timeoutDebounceRandomButton) {
|
|
|
|
that.__timeoutDebounceRandomButton = setTimeout(function () {
|
|
|
|
that.trigger("toggle:random", that._stateRandom);
|
|
|
|
|
|
|
|
delete that.__timeoutDebounceRandomButton;
|
|
|
|
}, 500);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
, __eventToggleButtonRepeat: function (event) {
|
|
|
|
var that = this
|
|
|
|
, $target = $(event.target)
|
|
|
|
;
|
|
|
|
|
|
|
|
that._stateRepeat = !that._stateRepeat;
|
|
|
|
|
|
|
|
if (event.target.tagName === "I") {
|
|
|
|
$target = $target.parent();
|
|
|
|
}
|
|
|
|
|
|
|
|
if (that._stateRepeat) {
|
|
|
|
$target.addClass("active");
|
|
|
|
} else {
|
|
|
|
$target.removeClass("active");
|
|
|
|
}
|
|
|
|
|
|
|
|
if (!that.__timeoutDebounceRepeatButton) {
|
|
|
|
that.__timeoutDebounceRepeatButton = setTimeout(function () {
|
|
|
|
that.trigger("toggle:repeat", that._stateRepeat || null);
|
|
|
|
|
|
|
|
delete that.__timeoutDebounceRepeatButton;
|
|
|
|
}, 500);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
, __eventToggleButtonSideBar: function (event) {
|
|
|
|
var that = this
|
|
|
|
;
|
|
|
|
|
|
|
|
that.trigger("toggle:sidebar");
|
|
|
|
|
|
|
|
var $target = $(event.target);
|
|
|
|
if (event.target.tagName === "BUTTON") {
|
|
|
|
$target = $target.find("i");
|
|
|
|
}
|
|
|
|
|
|
|
|
$target.toggleClass("icon-chevron-right");
|
|
|
|
$target.toggleClass("icon-chevron-left");
|
|
|
|
}
|
|
|
|
|
|
|
|
, __eventButtonAboutClick: function(event) {
|
|
|
|
var that = this
|
|
|
|
;
|
|
|
|
|
|
|
|
Backbone.Router.prototype.navigate("about", true);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
return Footer;
|
|
|
|
});
|