X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=testing%2FMCTXWeb%2Fpublic_html%2Fstatic%2Fmctx.gui.js;h=773fa2335bf48b79e05749595542dcd22b407a91;hb=71c13fe3c04db7f93a69cbc6a6c7c3dc2393bf3f;hp=7c87c3790f75460345114cf573d0ab8ee1a4562a;hpb=7805efadd8cfde75fafc29a3bfa23cd3023121dc;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 7c87c37..773fa23 100644 --- a/testing/MCTXWeb/public_html/static/mctx.gui.js +++ b/testing/MCTXWeb/public_html/static/mctx.gui.js @@ -1,14 +1,28 @@ /** * 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 = {}; -mctx.api = location.protocol + "//" + location.host + "/api/"; +//Don't use this in the final version +mctx.location = window.location.pathname; +mctx.location = mctx.location.substring(0, mctx.location.lastIndexOf('/')) + "/"; +//mctx.location = location.protocol + "//" + location.host + "/"; +mctx.api = location.protocol + "//" + location.host + "/" + "api/"; mctx.expected_api_version = 0; -mctx.key = undefined; mctx.has_control = false; +mctx.debug = true; -mctx.return_codes = { +mctx.statusCodes = { + STATUS_OK : 1 +}; + +mctx.statusCodesDescription = { "1" : "Ok", "-1" : "General error", "-2" : "Unauthorized", @@ -22,7 +36,8 @@ mctx.sensors = { 2 : {name : "Strain gauge 3"}, 3 : {name : "Strain gauge 4"}, 4 : {name : "Pressure sensor 1"}, - 5 : {name : "Pressure sensor 2"} + 5 : {name : "Pressure sensor 2"}, + 6 : {name : "Pressure sensor 3"} }; mctx.actuators = { @@ -36,13 +51,68 @@ mctx.strain_gauges = {}; mctx.strain_gauges.ids = [0, 1, 2, 3]; mctx.strain_gauges.time_limit = 20; +/** + * 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) { + return $.ajax({ + url : mctx.api + "identify" + }).done(function (data) { + if (data.logged_in && isLoginPage) { + if (mctx.debug) { + debugLog("Redirect disabled!"); + } else { + window.location = mctx.location; + } + } else if (!data.logged_in && !isLoginPage) { + 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; + } + }).fail(function (jqHXR) { + if (mctx.debug) { + debugLog("Failed to ident server. Is API running?") + } else if (!isLoginPage) { + window.location = mctx.location + "login.html"; + } + }); +} + /** * Populates a submenu of the navigation bar * @param {string} header The header @@ -55,7 +125,7 @@ $.fn.populateSubmenu = function(header, items, translator) { var submenuHeader = $("
  • ").append($("", {text : header, href : "#"})); var submenu = $("