jam-cloud/web/app/assets/javascripts/wizard/frame_buffers.js

154 lines
4.7 KiB
JavaScript

(function (context, $) {
"use strict";
context.JK = context.JK || {};
context.JK.FrameBuffers = function (app) {
var $knobs = null;
var $bufferIn = null;
var $bufferOut = null;
var $frameSize = null;
var $adjustSettingsLink = null;
var $self = $(this);
var logger = context.JK.logger;
var FRAMESIZE_CHANGED = 'frame_buffers.framesize_changed';
var BUFFER_IN_CHANGED = 'frame_buffers.buffer_in_changed';
var BUFFER_OUT_CHANGED = 'frame_buffers.buffer_out_changed';
var ADJUST_GEAR_LINK_CLICKED = 'frame_buffers.adjust_gear_settings_clicked';
function selectedFramesize() {
return parseFloat($frameSize.val());
}
function selectedBufferIn() {
return parseFloat($bufferIn.val());
}
function selectedBufferOut() {
return parseFloat($bufferOut.val());
}
function setFramesize(value) {
context.JK.dropdown($frameSize.val(value).easyDropDown('select', value.toString(), true))
}
function setBufferIn(value) {
context.JK.dropdown($bufferIn.val(value).easyDropDown('select', value.toString(), true));
}
function setBufferOut(value) {
context.JK.dropdown($bufferOut.val(value).easyDropDown('select', value.toString(), true))
}
function render() {
context.JK.dropdown($frameSize);
context.JK.dropdown($bufferIn);
context.JK.dropdown($bufferOut);
}
function disable() {
$frameSize.attr("disabled", "disabled").easyDropDown('disable');
$bufferIn.attr("disabled", "disabled").easyDropDown('disable');
$bufferOut.attr("disabled", "disabled").easyDropDown('disable');
}
function enable() {
$frameSize.removeAttr("disabled").easyDropDown('enable');
$bufferIn.removeAttr("disabled").easyDropDown('enable');
$bufferOut.removeAttr("disabled").easyDropDown('enable');
}
function resetValues() {
$frameSize.val('2.5');
$bufferIn.val('0');
$bufferOut.val('0');
}
function switchToWdm() {
if($frameSize.find('option').length == 3){
console.log("switching to WDM framesizez")
$frameSize.html('<option val="2.5">2.5</option><option val="5">5</option><option val="10">10</option><option val="20">20</option><option val="40">40</option>')
context.JK.dropdown($frameSize);
}
else {
console.log("nothing to switch to on WDM")
}
}
function switchOffWdm() {
if($frameSize.find('option').length != 3){
console.log("switching off of WDM")
$frameSize.html('<option val="2.5">2.5</option><option val="5">5</option><option val="10">10</option>')
context.JK.dropdown($frameSize);
}
else {
console.log("nothing to clean up on WDM")
}
}
function events() {
$frameSize.unbind('change').change(function () {
$self.triggerHandler(FRAMESIZE_CHANGED, {value: selectedFramesize()});
});
$bufferIn.unbind('change').change(function () {
logger.debug("buffer-in changed: " + selectedBufferIn());
$self.triggerHandler(BUFFER_IN_CHANGED, {value: selectedBufferIn()});
});
$bufferOut.unbind('change').change(function () {
logger.debug("buffer-out changed: " + selectedBufferOut());
$self.triggerHandler(BUFFER_OUT_CHANGED, {value: selectedBufferOut()});
});
$adjustSettingsLink.click(function() {
logger.debug("adjust-gear-settings clicked");
$self.triggerHandler(ADJUST_GEAR_LINK_CLICKED);
return false;
});
}
function initialize(_$knobs) {
$knobs = _$knobs;
if(!$knobs.is('.frame-and-buffers')) {
throw "$knobs != .frame-and-buffers"
}
$bufferIn = $knobs.find('.select-buffer-in');
$bufferOut = $knobs.find('.select-buffer-out');
$frameSize = $knobs.find('.select-frame-size');
$adjustSettingsLink = $knobs.find('.adjust-gear-settings')
events();
render();
}
this.FRAMESIZE_CHANGED = FRAMESIZE_CHANGED;
this.BUFFER_IN_CHANGED = BUFFER_IN_CHANGED;
this.BUFFER_OUT_CHANGED = BUFFER_OUT_CHANGED;
this.ADJUST_GEAR_LINK_CLICKED = ADJUST_GEAR_LINK_CLICKED;
this.initialize = initialize;
this.selectedFramesize = selectedFramesize;
this.selectedBufferIn = selectedBufferIn;
this.selectedBufferOut = selectedBufferOut;
this.setFramesize = setFramesize;
this.setBufferIn = setBufferIn;
this.setBufferOut = setBufferOut;
this.switchOffWdm = switchOffWdm;
this.switchToWdm = switchToWdm;
this.render = render;
this.enable = enable;
this.disable = disable;
this.resetValues = resetValues;
return this;
}
})(window, jQuery);