initial dashboard files
[osm/vim-emu.git] / dashboard / js / main.js
diff --git a/dashboard/js/main.js b/dashboard/js/main.js
new file mode 100644 (file)
index 0000000..928adf7
--- /dev/null
@@ -0,0 +1,83 @@
+var API_HOST = "http://127.0.0.1:5001";
+var ERROR_ALERT = true;
+var TIMESTAMP = 0;
+
+
+
+function updateMessageTable(msg_list) {
+   
+}
+
+function updateMessageCount(msg_list) {
+    $("#lbl_msg_count").text(msg_list.length);
+}
+
+function fetchMessages() {
+   
+}
+
+
+function autoFetchMessages() {
+    fetchMessages();
+    // do periodic update
+    if(AUTO_REFRESH)
+           setTimeout(autoFetchMessages, AUTO_REFRESH_INTERVAL);
+}
+
+function updateLateness() {
+    lateness = (Date.now() - LAST_UPDATE_TIMESTAMP) / 1000;
+    $("#lbl_lateness").text("Lateness: " + Number(lateness).toPrecision(3) + "s")
+    setTimeout(updateLateness, LATENESS_UPDATE_INTERVAL)
+}
+
+function errorAjaxConnection()
+{
+    // only do once
+    if(!ERROR_ALERT)
+    {
+        ERROR_ALERT = true;
+        // show message
+        bootbox.alert("ERROR!\nAPI request failed.\n\n Please check the backend connection.", function() {
+            // callback
+            ERROR_ALERT = false;
+        });
+    }
+}
+
+function change_auto_refresh(event)
+{
+    console.debug("trigger btn_auto_refresh");
+    AUTO_REFRESH = !AUTO_REFRESH;
+    if(AUTO_REFRESH) {
+        $("#btn_autorefresh").addClass("active");
+        autoFetchMessages();
+    }
+    else {
+        $("#btn_autorefresh").removeClass("active");
+    }
+}
+
+
+$(document).ready(function(){
+    console.info("document ready");
+       // setup global connection error handling
+       $.ajaxSetup({
+      "error": errorAjaxConnection
+       });
+
+    // add listeners
+    //TODO
+
+    // activate message fetching
+    autoFetchMessages();
+    LAST_UPDATE_TIMESTAMP = Date.now();
+    updateLateness();
+
+
+    // refresh on window focus
+    $(window).focus(function () {
+        // TODO observe if this works well
+        fetchMessages();
+    });
+
+});