-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.js
More file actions
100 lines (82 loc) · 3.02 KB
/
Copy pathmain.js
File metadata and controls
100 lines (82 loc) · 3.02 KB
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
$(document).ready(function() {
var $form = $("#remige");
var $formInputs = $("input", $form); // Note: we cache this, so if you are dynamically adding in inputs don't cache it
var $robotConnection = $("#robot-connection");
var $serverConnection = $("#server-connection");
function updateSeverConnection(str) {
$serverConnection.html(str);
};
function updateRobotConnection(str) {
$robotConnection.html(str);
};
function getFormData() {
var data = {};
for(var i = 0; i < $formInputs.length; i++) {
var $input = $($formInputs[i]);
if($input.attr("type") === "radio") { // then it has to be "checked" to be a value
if(!$input.is(':checked')) {
continue;
}
}
data[$input.attr("name")] = $input.val();
}
return data;
};
updateSeverConnection("Connecting...");
$.getJSON("/config.json", function(config) {
updateSeverConnection("Establishing WS Connection...");
var wsClient = new WebSocket("ws://localhost:" + config["ws_port"]);
var updating = false; // poor man's mutex lock
wsClient.onopen = function (e) {
updateSeverConnection("Connected!");
var send = function(data) {
var str = JSON.stringify(data);
console.log("SEND: -> " + str);
wsClient.send(str);
};
$(document).on("change", "#remige", function() {
if(!updating) {
send(getFormData());
}
});
};
wsClient.onmessage = function(e) {
console.log("GOT: <- " + e.data);
var parsed;
try {
parsed = JSON.parse(e.data);
}
catch(err) {
updateSeverConnection("Sent invalid JSON...");
return;
}
updateRobotConnection(parsed.robot_status);
updating = true;
var newFormData = parsed.form;
for(var key in newFormData) {
if(newFormData.hasOwnProperty(key)) {
var value = newFormData[key];
var $input = $("input[name=" + key + "]");
if($input.attr("type") === "radio") {
$input.prop("checked", false);
$("input[value=" + value + "]").prop("checked", true);
}
else {
$input.val(value);
}
}
}
updating = false;
};
wsClient.onerror = function() {
console.log("socket errored");
updateSeverConnection("Errored");
$formInputs.prop('disabled', true);
};
wsClient.onclose = function() {
console.log("connection closed");
updateSeverConnection("Closed");
$formInputs.prop('disabled', true);
};
});
});