X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=testing%2FMCTXWeb%2Fpublic_html%2Fstatic%2Fmctx.gui.js;h=a9e8ae7b2b1f7339376a58a6822c382b20f4dfa3;hb=c10b3c67e30d28905ea19253df696f562cf9efff;hp=e7dd167d46ecaf125633952e205ad1efd707a145;hpb=7b58480c5700b8ce4a686836049458be6681934b;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 e7dd167..a9e8ae7 100644
--- a/testing/MCTXWeb/public_html/static/mctx.gui.js
+++ b/testing/MCTXWeb/public_html/static/mctx.gui.js
@@ -5,6 +5,17 @@
mctx = {};
mctx.api = location.protocol + "//" + location.host + "/api/";
mctx.expected_api_version = 0;
+mctx.key = undefined;
+mctx.has_control = false;
+
+mctx.return_codes = {
+ "1" : "Ok",
+ "-1" : "General error",
+ "-2" : "Unauthorized",
+ "-3" : "Not running",
+ "-4" : "Already exists"
+};
+
mctx.sensors = {
0 : {name : "Strain gauge 1"},
1 : {name : "Strain gauge 2"},
@@ -25,39 +36,55 @@ mctx.strain_gauges = {};
mctx.strain_gauges.ids = [0, 1, 2, 3];
mctx.strain_gauges.time_limit = 20;
+/**
+ * Writes the current date to wherever it's called.
+ */
function getDate(){
document.write((new Date()).toDateString());
}
-/**
- * Populates the navigation bar
+/**
+ * Populates a submenu of the navigation bar
+ * @param {string} header The header
+ * @param {object} items An object representing the submenu items
+ * @param {function} translator A function that translates an object item
+ * into a text and href.
+ * @returns {$.fn} Itself
*/
-$.fn.populateNavbar = function () {
- var menu = $("
", {class : "menu"});
- var sensorEntry = $("").append($("", {text : "Sensor data", href : "#"}));
- var submenu = $("", {class : "submenu"});
+$.fn.populateSubmenu = function(header, items, translator) {
+ var submenuHeader = $("").append($("", {text : header, href : "#"}));
+ var submenu = $("", {"class" : "submenu"});
- for (sensor in mctx.sensors) {
- var href = mctx.api + "sensors?start_time=0&format=tsv&id=" + sensor;
+ for (var item in items) {
+ var info = translator(item, items);
submenu.append($("").append(
- $("", {text : mctx.sensors[sensor].name,
- href : href, target : "_blank"})
+ $("", {text : info.text,
+ href : info.href, target : "_blank"})
));
}
- menu.append(sensorEntry.append(submenu));
- var actuatorEntry = $("").append($("", {text : "Actuator data", href : "#"}));
- submenu = $("", {class : "submenu"});
+ this.append(submenuHeader.append(submenu));
+ return this;
+};
+
+/**
+ * Populates the navigation bar
+ */
+$.fn.populateNavbar = function () {
+ var menu = $("", {"class" : "menu"});
+ var sensorTranslator = function(item, items) {
+ var href = mctx.api + "sensors?start_time=0&format=tsv&id=" + item;
+ return {text : items[item].name, href : href};
+ };
+ var actuatorTranslator = function(item, items) {
+ var href = mctx.api + "actuators?start_time=0&format=tsv&id=" + item;
+ return {text : items[item].name, href : href};
+ };
- for (actuator in mctx.actuators) {
- var href = mctx.api + "actuators?start_time=0&format=tsv&id=" + actuator;
- submenu.append($("").append(
- $("", {text : mctx.actuators[actuator].name,
- href : href, target : "_blank"})
- ));
- }
- menu.append(actuatorEntry.append(submenu));
+ menu.populateSubmenu("Sensor data", mctx.sensors, sensorTranslator);
+ menu.populateSubmenu("Actuator data", mctx.actuators, actuatorTranslator);
menu.appendTo(this);
+ return this;
}
/**
@@ -65,7 +92,7 @@ $.fn.populateNavbar = function () {
* @returns {$.fn}
*/
$.fn.setCamera = function () {
- var url = mctx.api + "image";
+ var url = mctx.api + "image"; //http://beaglebone/api/image
var update = true;
//Stop updating if we can't retrieve an image!
@@ -84,7 +111,7 @@ $.fn.setCamera = function () {
parent.attr("src", url + "#" + (new Date()).getTime());
- setTimeout(updater, 500);
+ setTimeout(updater, 1000);
};
updater();
@@ -108,13 +135,63 @@ $.fn.setStrainGraphs = function () {
var data = new Array(arguments.length);
for (var i = 0; i < arguments.length; i++) {
var raw_data = arguments[i][0].data;
- data[i] = raw_data;
+ var pruned_data = [];
+ var step = ~~(raw_data.length/100);
+ for (var j = 0; j < raw_data.length; j += step)
+ pruned_data.push(raw_data[j]);
+ data[i] = pruned_data;
}
$.plot(graphdiv, data);
setTimeout(updater, 500);
- }, function () {alert("boo");});
+ }, function () {alert("It crashed");});
};
updater();
return this;
+};
+
+$.fn.login = function () {
+ var username = this.find("input[name='username']").val();
+ var password = this.find("input[name='pass']").val();
+ var force = this.find("input[name='force']").is(":checked");
+ var url = mctx.api + "control";
+
+ var authFunc = function(xhr) {
+ xhr.setRequestHeader("Authorization",
+ "Basic " + base64.encode(username + ":" + password));
+ };
+
+ $.ajax({
+ url : url,
+ data : {action : "lock", force : (force ? true : undefined)},
+ beforeSend : authFunc
+ }).done(function (data) {
+ mctx.key = data.key;
+ if (data.status < 0) {
+ alert("no - " + data.description);
+ } else {
+ mctx.has_control = true;
+ alert("yes - " + mctx.key);
+ }
+ }).fail(function (jqXHR) {
+ mctx.key = undefined;
+ mctx.has_control = false;
+ alert("no");
+ });
+};
+
+$.fn.setErrorLog = function () {
+ var url = mctx.api + "errorlog";
+ var outdiv = this;
+
+ var updater = function () {
+ $.ajax({url : url}).done(function (data) {
+ outdiv.text(data);
+ setTimeout(updater, 1000);
+ }).fail(function (jqXHR) {
+ outdiv.text("Failed to retrieve the error log.");
+ });
+ };
+
+ updater();
};
\ No newline at end of file