From 4cb5f42fd11207482565ecf8dd8cebe033208ff7 Mon Sep 17 00:00:00 2001 From: Aaron LI Date: Wed, 2 Nov 2016 14:27:28 +0800 Subject: webui: Add preliminary WebSocket support to front-end UI Add a label to the header banner to show the WebSocket support status and connection status. --- fg21sim/webui/static/css/main.css | 5 ++++ fg21sim/webui/static/js/websocket.js | 51 ++++++++++++++++++++++++++++++++++++ fg21sim/webui/templates/header.html | 5 ++++ fg21sim/webui/templates/index.html | 4 +++ 4 files changed, 65 insertions(+) create mode 100644 fg21sim/webui/static/js/websocket.js (limited to 'fg21sim') diff --git a/fg21sim/webui/static/css/main.css b/fg21sim/webui/static/css/main.css index 4dcffb8..4672298 100644 --- a/fg21sim/webui/static/css/main.css +++ b/fg21sim/webui/static/css/main.css @@ -120,6 +120,7 @@ header.masthead { } .navigation .description { font-style: italic; + margin-right: 2.5rem; } .navigation .navigation-list { list-style: none; @@ -247,6 +248,10 @@ label, legend { background-color: #d9534f; } +.label .icon { + margin-right: 0.2rem; +} + /** * Button styles diff --git a/fg21sim/webui/static/js/websocket.js b/fg21sim/webui/static/js/websocket.js new file mode 100644 index 0000000..08f128f --- /dev/null +++ b/fg21sim/webui/static/js/websocket.js @@ -0,0 +1,51 @@ +/** + * Copyright (c) 2016 Weitian LI + * MIT license + * + * WebSocket codes for the Web UI of "fg21sim" + */ + + +$(document).ready(function () { + /** + * Check `WebSocket` support + */ + if (window.WebSocket) { + // WebSocket supported + var createWebSocket = function (uri) { + $("#ws-status .text").text("Supported"); + var proto = {"http:": "ws:", "https:": "wss:"}[location.protocol]; + var host = location.hostname; + var port = location.port; + var url = proto + "//" + host + ":" + port + uri; + var socket = new WebSocket(url); + return socket; + }; + + var ws = createWebSocket("/ws"); + ws.onopen = function () { + $("#ws-status").removeClass("label-default label-danger") + .addClass("label-success"); + $("#ws-status .icon").removeClass("fa-question-circle fa-warning") + .addClass("fa-check-circle"); + $("#ws-status .text").text("Connected"); + }; + ws.onclose = function () { + $("#ws-status").removeClass("label-default label-success") + .addClass("label-danger"); + $("#ws-status .icon").removeClass("fa-question-circle fa-check-circle") + .addClass("fa-warning"); + $("#ws-status .text").text("Disconnected!"); + }; + ws.onmessage = function (e) { + console.log("WS received: " + e.data); + }; + + } else { + // WebSocket NOT supported + $("#ws-status").removeClass("label-default").addClass("label-danger"); + $("#ws-status .icon").removeClass("fa-question-circle") + .addClass("fa-times-circle"); + $("#ws-status .text").text("Unsupported!!"); + } +}); diff --git a/fg21sim/webui/templates/header.html b/fg21sim/webui/templates/header.html index 6309b50..b086515 100644 --- a/fg21sim/webui/templates/header.html +++ b/fg21sim/webui/templates/header.html @@ -12,6 +12,11 @@ Foregrounds Simulation for EoR 21cm Signal Detection + + + N/A + +