blob: 6d5783a5379ef71689b440846bd7c6031b13744c (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
|
/**
* Copyright (c) 2016 Weitian LI <liweitianux@live.com>
* MIT license
*
* Web UI of "fg21sim"
* Console operations using the WebSocket communications
*/
"use strict";
/**
* Update the task status "#task-status" on the page.
*
* @param {Object} status - The status pushed from the server is an object
* containing the "running" and "finished" items.
*/
var updateTaskStatus = function (status) {
var running = status.running;
var finished = status.finished;
var ts = null;
if (!running && !finished) {
ts = "Not started";
$("#task-status").removeClass("label-success label-warning label-danger")
.addClass("label-default");
$("#task-status .icon").removeClass("fa-check-circle fa-question-circle")
.removeClass("fa-spin fa-spinner")
.addClass("fa-coffee");
}
else if (!running && finished) {
ts = "Finished";
$("#task-status").removeClass("label-default label-warning label-danger")
.addClass("label-success");
$("#task-status .icon").removeClass("fa-coffee fa-question-circle")
.removeClass("fa-spin fa-spinner")
.addClass("fa-check-circle");
}
else if (running && !finished) {
ts = "Running";
$("#task-status").removeClass("label-default label-success label-danger")
.addClass("label-warning");
$("#task-status .icon").removeClass("fa-coffee fa-check-circle")
.removeClass("fa-question-circle")
.addClass("fa-spin fa-spinner");
}
else {
// Unknown status: ERROR ??
ts = "ERROR?";
$("#task-status").removeClass("label-default label-success label-warning")
.addClass("label-danger");
$("#task-status .icon").removeClass("fa-coffee fa-check-circle")
.removeClass("fa-spin fa-spinner")
.addClass("fa-question-circle");
}
console.log("Task status:", ts);
$("#task-status .text").text(ts);
};
/**
* Get the task status from the server
*
* @param {Object} ws - The opened WebSocket object through which to send
* the request.
*/
var getServerTaskStatus = function (ws) {
var msg = {type: "console", action: "get_status"};
ws.send(JSON.stringify(msg));
};
/**
* Request to start the task on the server.
*/
var startServerTask = function (ws, time) {
time = typeof time !== "undefined" ? time : 5;
var msg = {type: "console", action: "start", time: time};
ws.send(JSON.stringify(msg));
};
/**
* Handle the received message of type "console"
*/
var handleMsgConsole = function (msg) {
if (msg.action === "log") {
// TODO: show the logging messages
}
else if (msg.action === "push") {
// Update the task status
updateTaskStatus(msg.status);
}
else if (msg.success) {
setFormConfigs(msg.data, msg.errors);
}
else {
console.error("WebSocket 'console' request failed:", msg.error);
// TODO: add error code support and handle each specific error ...
}
};
|