/*global $*/ 'use strict'; var TABS = {}; // filled by individual tab js file var GUI_control = function () { this.connecting_to = false; this.connected_to = false; this.connect_lock = false; this.active_tab; this.tab_switch_in_progress = false; this.operating_system; this.defaultAllowedTabsWhenDisconnected = [ 'landing', 'firmware_flasher', 'mission_control', 'help' ]; this.defaultAllowedTabsWhenConnected = [ 'failsafe', 'transponder', 'adjustments', 'auxiliary', 'cli', 'configuration', 'gps', 'led_strip', 'logging', 'onboard_logging', 'modes', 'outputs', 'pid_tuning', 'ports', 'receiver', 'sensors', 'calibration', 'setup', 'osd', 'profiles', 'advanced_tuning', 'mission_control', 'mixer', 'programming' ]; this.allowedTabs = this.defaultAllowedTabsWhenDisconnected; // check which operating system is user running if (navigator.appVersion.indexOf("Win") != -1) this.operating_system = "Windows"; else if (navigator.appVersion.indexOf("Mac") != -1) this.operating_system = "MacOS"; else if (navigator.appVersion.indexOf("CrOS") != -1) this.operating_system = "ChromeOS"; else if (navigator.appVersion.indexOf("Linux") != -1) this.operating_system = "Linux"; else if (navigator.appVersion.indexOf("X11") != -1) this.operating_system = "UNIX"; else this.operating_system = "Unknown"; }; // message = string GUI_control.prototype.log = function (message) { var command_log = $('div#log'); var d = new Date(); var year = d.getFullYear(); var month = ((d.getMonth() < 9) ? '0' + (d.getMonth() + 1) : (d.getMonth() + 1)); var date = ((d.getDate() < 10) ? '0' + d.getDate() : d.getDate()); var time = ((d.getHours() < 10) ? '0' + d.getHours(): d.getHours()) + ':' + ((d.getMinutes() < 10) ? '0' + d.getMinutes(): d.getMinutes()) + ':' + ((d.getSeconds() < 10) ? '0' + d.getSeconds(): d.getSeconds()); var formattedDate = "{0}-{1}-{2} {3}".format( year, month, date, ' @ ' + time ); $('div.wrapper', command_log).append('
' + formattedDate + ' -- ' + message + '
'); command_log.scrollTop($('div.wrapper', command_log).height()); }; // Method is called every time a valid tab change event is received // callback = code to run when cleanup is finished // default switch doesn't require callback to be set GUI_control.prototype.tab_switch_cleanup = function (callback) { MSP.callbacks_cleanup(); // we don't care about any old data that might or might not arrive helper.interval.killAll(['global_data_refresh', 'msp-load-update']); helper.mspBalancedInterval.flush(); if (this.active_tab) { TABS[this.active_tab].cleanup(callback); } else { callback(); } }; GUI_control.prototype.switchery = function() { $('.togglesmall').each(function(index, elem) { var switchery = new Switchery(elem, { size: 'small', color: '#37a8db', secondaryColor: '#c4c4c4' }); $(elem).on("change", function (evt) { switchery.setPosition(); }); $(elem).removeClass('togglesmall'); }); $('.toggle').each(function(index, elem) { var switchery = new Switchery(elem, { color: '#37a8db', secondaryColor: '#c4c4c4' }); $(elem).on("change", function (evt) { switchery.setPosition(); }); $(elem).removeClass('toggle'); }); $('.togglemedium').each(function(index, elem) { var switchery = new Switchery(elem, { className: 'switcherymid', color: '#37a8db', secondaryColor: '#c4c4c4' }); $(elem).on("change", function (evt) { switchery.setPosition(); }); $(elem).removeClass('togglemedium'); }); }; GUI_control.prototype.content_ready = function (callback) { const content = $('#content').removeClass('loading'); $('.togglesmall').each(function(index, elem) { var switchery = new Switchery(elem, { size: 'small', color: '#37a8db', secondaryColor: '#c4c4c4' }); $(elem).on("change", function (evt) { switchery.setPosition(); }); $(elem).removeClass('togglesmall'); }); $('.toggle').each(function(index, elem) { var switchery = new Switchery(elem, { color: '#37a8db', secondaryColor: '#c4c4c4' }); $(elem).on("change", function (evt) { switchery.setPosition(); }); $(elem).removeClass('toggle'); }); $('.togglemedium').each(function(index, elem) { var switchery = new Switchery(elem, { className: 'switcherymid', color: '#37a8db', secondaryColor: '#c4c4c4' }); $(elem).on("change", function (evt) { switchery.setPosition(); }); $(elem).removeClass('togglemedium'); }); // Insert a documentation button next to the tab title const tabTitle = $('div#content .tab_title'); const documentationDiv = $('