X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=testing%2FMCTXWeb%2Fpublic_html%2Fstatic%2Fmctx.gui.js;h=773fa2335bf48b79e05749595542dcd22b407a91;hb=df1a9751a2d23cc9d43bf49c069ac9effc2a752f;hp=26f6f3c1db418f2844d6cee587d640dff09cd512;hpb=f7835777d9a2e85ab310919a150a200ea55c7222;p=matches%2FMCTX3420.git diff --git a/testing/MCTXWeb/public_html/static/mctx.gui.js b/testing/MCTXWeb/public_html/static/mctx.gui.js index 26f6f3c..773fa23 100644 --- a/testing/MCTXWeb/public_html/static/mctx.gui.js +++ b/testing/MCTXWeb/public_html/static/mctx.gui.js @@ -1,5 +1,11 @@ /** * MCTX3420 2013 GUI stuff. + * Coding style: + * - Always end statements with semicolons + * - Egyptian brackets are highly recommended (*cough*). + * - Don't use synchronous stuff - hook events into callbacks + * - $.fn functions should return either themselves or some useful object + * to allow for chaining of method calls */ mctx = {}; @@ -10,11 +16,11 @@ mctx.location = mctx.location.substring(0, mctx.location.lastIndexOf('/')) + "/" mctx.api = location.protocol + "//" + location.host + "/" + "api/"; mctx.expected_api_version = 0; mctx.has_control = false; -//mctx.debug = true; +mctx.debug = true; mctx.statusCodes = { STATUS_OK : 1 -} +}; mctx.statusCodesDescription = { "1" : "Ok", @@ -45,42 +51,64 @@ mctx.strain_gauges = {}; mctx.strain_gauges.ids = [0, 1, 2, 3]; mctx.strain_gauges.time_limit = 20; -function debugLog (msg) { - if (typeof console === "undefined" || typeof console.log === "undefined") { - alert(msg); - } else { - console.log(msg); +/** + * Logs a message if mctx.debug is enabled. This function takes + * a variable number of arguments and passes them + * to alert or console.log (based on browser support). + * @returns {undefined} + */ +function debugLog () { + if (mctx.debug) { + if (typeof console === "undefined" || typeof console.log === "undefined") { + for (var i = 0; i < arguments.length; i++) { + alert(arguments[i]); + } + } else { + console.log.apply(this, arguments); + } } } /** * Writes the current date to wherever it's called. */ -function getDate(){ +function getDate() { document.write((new Date()).toDateString()); } +/** + * Should be run before the load of any GUI page. + * To hook events to be called after this function runs, + * use the 'always' method, e.g runBeforeLoad().always(function() {my stuff}); + * @param {type} isLoginPage + * @returns The return value of calling $.ajax + */ function runBeforeLoad(isLoginPage) { - $.ajax({ + return $.ajax({ url : mctx.api + "identify" }).done(function (data) { - if (mctx.debug) { - debugLog("Redirect disabled!"); - } else if (data.logged_in && isLoginPage) { + if (data.logged_in && isLoginPage) { + if (mctx.debug) { + debugLog("Redirect disabled!"); + } else { window.location = mctx.location; + } } else if (!data.logged_in && !isLoginPage) { - //Note: this only clears the nameless cookie - document.cookie = ""; - window.location = mctx.location + "login.html"; + if (mctx.debug) { + debugLog("Redirect disabled!"); + } else { + //Note: this only clears the nameless cookie + document.cookie = ""; + window.location = mctx.location + "login.html"; + } } else { mctx.friendlyName = data.friendly_name; - $("#content").css("display", "block"); } }).fail(function (jqHXR) { - if (!isLoginPage) { - window.location = mctx.location + "login.html"; - } else { + if (mctx.debug) { debugLog("Failed to ident server. Is API running?") + } else if (!isLoginPage) { + window.location = mctx.location + "login.html"; } }); } @@ -131,6 +159,7 @@ $.fn.populateNavbar = function () { /** * Sets the camera autoupdater + * Obsolete? * @returns {$.fn} */ $.fn.setCamera = function () { @@ -160,6 +189,10 @@ $.fn.setCamera = function () { return this; }; +/** + * Sets the strain graphs to graph stuff. Obsolete? + * @returns {$.fn} + */ $.fn.setStrainGraphs = function () { var sensor_url = mctx.api + "sensors"; var graphdiv = this; @@ -185,13 +218,16 @@ $.fn.setStrainGraphs = function () { } $.plot(graphdiv, data); setTimeout(updater, 500); - }, function () {alert("It crashed");}); + }, function () {debugLog("It crashed");}); }; updater(); return this; }; +/** + * Performs a login attempt. + * @returns The AJAX object of the login request */ $.fn.login = function () { var username = this.find("input[name='username']").val(); var password = this.find("input[name='pass']").val(); @@ -203,7 +239,7 @@ $.fn.login = function () { out.removeAttr("class"); out.text("Logging in..."); - $.ajax({ + return $.ajax({ url : mctx.api + "bind", data : {user: username, pass : password} }).done(function (data) { @@ -225,16 +261,25 @@ $.fn.login = function () { }); }; +/** + * Performs a logout request. The nameless cookie is + * always cleared and the browser redirected to the login page, + * independent of whether or not logout succeeded. + * @returns The AJAX object of the logout request. + */ $.fn.logout = function () { - $.ajax({ + return $.ajax({ url : mctx.api + "unbind" }).always(function () { //Note: this only clears the nameless cookie document.cookie = ""; window.location = mctx.location + "login.html"; }); -} +}; +/** + * Sets the error log to continuously update. + * @returns itself */ $.fn.setErrorLog = function () { var url = mctx.api + "errorlog"; var outdiv = this; @@ -245,16 +290,17 @@ $.fn.setErrorLog = function () { outdiv.scrollTop( outdiv[0].scrollHeight - outdiv.height() ); - setTimeout(updater, 1000); + setTimeout(updater, 2000); }).fail(function (jqXHR) { if (jqXHR.status === 502 || jqXHR.status === 0) { outdiv.text("Failed to retrieve the error log."); } - setTimeout(updater, 1500); + setTimeout(updater, 4000); }); }; updater(); + return this; }; $(document).ajaxError(function (event, jqXHR) {