Skip to content

Commit 2b8e915

Browse files
committed
load View data only for loaded modules
1 parent e465f7c commit 2b8e915

File tree

3 files changed

+36
-31
lines changed

3 files changed

+36
-31
lines changed

main.go

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -284,9 +284,16 @@ func (w *Worker) router() http.Handler {
284284
rw.WriteHeader(http.StatusBadRequest)
285285
return
286286
}
287-
rw.Header().Set("Content-Type", "application/json")
287+
288288
rw.Header().Set("Access-Control-Allow-Origin", "*")
289289

290+
if !w.modules.Loaded(module) {
291+
rw.WriteHeader(http.StatusNotImplemented)
292+
return
293+
}
294+
295+
rw.Header().Set("Content-Type", "application/json")
296+
290297
out, err := w.cache.Get(module)
291298
if err != nil {
292299
out, err = w.store.View(w.ctx, module)

modules.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,3 +17,12 @@ func (m Modules) String() string {
1717
}
1818
return s
1919
}
20+
21+
func (m Modules) Loaded(name string) bool {
22+
for _, mod := range m {
23+
if mod.Name() == name {
24+
return true
25+
}
26+
}
27+
return false
28+
}

web/view.html

Lines changed: 19 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
<!DOCTYPE html>
22
<title>RPId View</title>
33
<head>
4+
<!-- for testing on local machine -->
5+
<base href="http://mini.local:8095/">
46
<link href="data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbAAACnAUBJ98BAASnAAAAIwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAABxAAAC5DIEvf9FBP3/NwTP/wIACukAAAByAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABACAAm/IQKH/w4BSv8LAUP/HwKF/xMCWf8MAUX/IwKN/wMAF9EAAAAhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGALAOt/0wF//8eAn3/HAJ6/zoE2P8kA5T/HgJ//0sE//81BMj/AQAEpwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0j8E6v81BMv/BQEn/0ME9v9CBPX/RwT//xMCWv82BM3/RwT//wMBFN4AAAAAAAAAAAAAAAAAAAAAAAAARw4CSf8OAkz/AwEX/wUBJP8rA6b/QgT0/zMDxP8FAST/BQEp/x4CgP8LAUT9AAAAQwAAAAAAAAAAAAAAAAAAAaA9BOL/CgE//ykDo/9CBPX/JgOa/wUBKf8bAnP/PgTn/ywDrf8IATf/OwTc/wAAAZ0AAAAAAAAAAAAAAAAAAAGCMQO8/x0Cev8+BOT/QgTz/0ME+f8JATr/PATe/0IE9v9ABO7/IgOL/zMEw/8AAAGHAAAAAAAAAAAAAAAAAAAAFQMAFdMFASn/IwKO/0YE//88BOD/BAEd/zYEzf9HBP//KwOn/woBO/8EAR/aAAAAGwAAAAAAAAAAAAAAAAAAAAAAAABrJgOb/xsCdv8QAk//GgJw/xsCdf8hA4b/FgJl/yECh/8lA5j/AAAAZwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGwcANN83AM//DgBH/y8Ct/9LBP//OAPU/xQAWv81AMr/BgAt3gAAABYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAQC2AFEy/wRmTP8EBh7/DwBP/wQCHf8DWkX/AF81/wAEAMsAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB/AHA2/wDIWP8AulD/AFId/wAGAP8APAv/AK9M/wDJWf8AjEL/AQMCrQAAAAAAAAAAAAAAAAAAAAAAAAAKAR8K6QDCXP8Aq1H/AJBF/wC6V/8ANRf/ALBQ/wCVRP8Ao0z/AMle/wBAHf8AAAAkAAAAAAAAAAAAAAAAAAAAGAEkDv8AoEv/AKlQ/wCvUf8AdDb/AAIBvwBcKf8ArFD/AKtR/wClT/8AQR7/AAAAPAAAAAAAAAAAAAAAAAAAAAIAAABSAQICngISBtMBBwS6AAAAbwAAAAQAAABXAQQDsQITB9MBBAOrAAAAZAAAAAkAAAAA/j8AAPwfAADwBwAA4AMAAOADAADgAwAAwAEAAMABAADgAwAA8AcAAPAHAADwBwAA8AMAAOADAADgAwAA8ccAAA==" rel="icon" type="image/x-icon" />
57
<!-- Doc: https://plotly.com/javascript/line-charts/pi -->
68
<!-- Dark theme derived from: https://jsfiddle.net/3hfq7ast/ -->
@@ -16,9 +18,6 @@
1618

1719
<body>
1820
<div id='main'><!-- CPU temp and fan RPM chart --></div>
19-
<div id='la5m'><!-- 5 minute load average chart --></div>
20-
<div id='bmp280'><!-- atmospheric pressure chart --></div>
21-
<div id='smc768'><!-- atmospheric pressure chart --></div>
2221
<!-- theme switch -->
2322
<div id="theme-switch" style="position: absolute; top: 0; left: 0; padding: 4px; font-size: small; background-color: rgba(0,0,0,0.5); color: white; cursor: pointer;">
2423
<span id="theme-switch-text">Dark/Light</span>
@@ -48,6 +47,14 @@
4847
}
4948
}
5049

50+
function createChartElement(chartId) {
51+
if (document.getElementById(chartId) == null) {
52+
var chartDiv = document.createElement('div');
53+
chartDiv.id = chartId;
54+
document.body.appendChild(chartDiv);
55+
}
56+
}
57+
5158
async function loadMain() {
5259
let data = await getData("main");
5360

@@ -56,13 +63,9 @@
5663
return;
5764
}
5865

59-
for (var key in data["temp"]) {
60-
data["temp"][key] = parseInt(data["temp"][key]);
61-
}
62-
6366
var temp = {
6467
x: Object.keys(data["temp"]),
65-
y: Object.values(data["temp"]),
68+
y: Object.values(data["temp"]).map(Number),
6669
type: 'scatter',
6770
name: 'CPU, m˚C'
6871
};
@@ -81,13 +84,9 @@
8184
// check if there rpm data
8285
if (data["rpm"] != null) {
8386

84-
for (var key in data["rpm"]) {
85-
data["rpm"][key] = parseInt(data["rpm"][key]);
86-
}
87-
8887
var rpm = {
8988
x: Object.keys(data["rpm"]),
90-
y: Object.values(data["rpm"]),
89+
y: Object.values(data["rpm"]).map(Number),
9190
type: 'scatter',
9291
name: 'Fan RPM',
9392
yaxis: 'y2',
@@ -112,13 +111,11 @@
112111
return;
113112
}
114113

115-
for (var key in data["TC0C"]) {
116-
data["TC0C"][key] = parseInt(data["TC0C"][key]);
117-
}
114+
createChartElement('smc768');
118115

119116
var temp = {
120117
x: Object.keys(data["TC0C"]),
121-
y: Object.values(data["TC0C"]),
118+
y: Object.values(data["TC0C"]).map(Number),
122119
type: 'scatter',
123120
name: 'CPU, m˚C'
124121
};
@@ -137,13 +134,9 @@
137134
// check if there rpm data
138135
if (data["Exhaust"] != null) {
139136

140-
for (var key in data["Exhaust"]) {
141-
data["Exhaust"][key] = parseInt(data["Exhaust"][key]);
142-
}
143-
144137
var rpm = {
145138
x: Object.keys(data["Exhaust"]),
146-
y: Object.values(data["Exhaust"]),
139+
y: Object.values(data["Exhaust"]).map(Number),
147140
type: 'scatter',
148141
name: 'Fan RPM',
149142
yaxis: 'y2',
@@ -168,13 +161,11 @@
168161
return;
169162
}
170163

171-
for (var key in data["la5m"]) {
172-
data["la5m"][key] = parseFloat(data["la5m"][key]);
173-
}
164+
createChartElement('la5m');
174165

175166
var chartData = {
176167
x: Object.keys(data["la5m"]),
177-
y: Object.values(data["la5m"]),
168+
y: Object.values(data["la5m"]).map(parseFloat),
178169
type: 'scatter',
179170
name: 'CPU LA 5m',
180171
yaxis: 'y',
@@ -215,13 +206,11 @@
215206
return;
216207
}
217208

218-
for (var key in data["pressure"]) {
219-
data["pressure"][key] = parseFloat(data["pressure"][key]);
220-
}
209+
createChartElement('bmp280');
221210

222211
var press = {
223212
x: Object.keys(data["pressure"]),
224-
y: Object.values(data["pressure"]),
213+
y: Object.values(data["pressure"]).map(parseFloat),
225214
type: 'scatter',
226215
name: 'Pressure, hPa'
227216
};

0 commit comments

Comments
 (0)