blob: d85a655440b7328f8fe2222b6e410d4b7a413deb (
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
101
102
103
104
105
106
107
108
109
110
111
|
//environment variables will be fetched from server
let env = {'thing': 123}; // Default value until loaded
//the application config. default values here which can be overridden by user's local storage
let cfg = {
};
//some placeholder values here. some ideas for placeholder values here. might all be useful
let dom = {
input: {},
label: {},
box: {}, //an info-containing box
icon: {},
info: {}
};
//APP START HERE
$(document).ready(async function() {
console.log(window.env);
// 1. setup relationship with DOM and grab references to its elements
log('init DOM');
await initDOM();
// 2. grab any local user config
log('init cfg');
await initCfg();
// 3. communicate with any external services if needed, like REST API or websocket
log('init services');
await initServices();
});
//gets user config from local storage if there is any
function initCfg(){
let localCfg = localStorage.getItem('config');
if (localCfg) {
try {
cfg = JSON.parse(localCfg);
} catch (e) {
cfg = {};
}
} else {
}
}
function initServices(){
//connect to websocket server
//grab data from REST API
// Load environment variables from a server
return fetch('/api/env')
.then(response => {
if (response.status == 200){
return response.json()
} else {
return null;
}
})
.then(data => {
env = data;
console.log('Environment loaded:', env);
updateServerStatus('connected');
return data;
})
.catch(error => {
console.error('Error loading environment:', error);
updateServerStatus('error');
return env; // Return default
});
}
// Update server status indicator
function updateServerStatus(status) {
const serverStatus = document.getElementById('server-status');
if (!serverStatus) return;
switch(status) {
case 'connecting':
serverStatus.innerHTML = 'Server status: Connecting...';
serverStatus.style.color = 'orange';
break;
case 'connected':
serverStatus.innerHTML = 'Server status: Connected (Environment loaded successfully)';
serverStatus.style.color = 'green';
break;
case 'error':
serverStatus.innerHTML = 'Server status: Error (Could not load environment)';
serverStatus.style.color = 'red';
break;
}
}
function initDOM(){
dom.body = $('body')[0];
dom.serverStatus = document.getElementById('server-status');
if (dom.serverStatus) {
updateServerStatus('connecting');
}
}
function log(msg, lvl=1){
if (dom.debugInfo){
dom.debugInfo.innerHTML = msg; //TODO running log + timestamp
}
console.log(msg);
}
|