commit 15/10/2025
Overview menu belum beres
This commit is contained in:
@@ -69,10 +69,10 @@ function fetchAPI(endpoint, method, headers = {}, body = null, cbOK, cbError) {
|
||||
}
|
||||
}
|
||||
fetch(url, options)
|
||||
.then(async(response) => {
|
||||
.then(async (response) => {
|
||||
if (!response.ok) {
|
||||
let msg ;
|
||||
try{
|
||||
let msg;
|
||||
try {
|
||||
let _xxx = await response.json();
|
||||
msg = _xxx.message || response.statusText;
|
||||
} catch {
|
||||
@@ -281,10 +281,10 @@ window.redcircle = null;
|
||||
*/
|
||||
$(document).ready(function () {
|
||||
document.title = "Automatic Announcement System"
|
||||
if (window.greencircle === null){
|
||||
if (window.greencircle === null) {
|
||||
fetchImg('green_circle.png', (url) => { window.greencircle = url; }, (err) => { console.error("Error loading green_circle.png : ", err); });
|
||||
}
|
||||
if (window.redcircle === null){
|
||||
if (window.redcircle === null) {
|
||||
fetchImg('red_circle.png', (url) => { window.redcircle = url; }, (err) => { console.error("Error loading red_circle.png : ", err); });
|
||||
}
|
||||
const wsURL = window.location.pathname + '/ws'
|
||||
@@ -292,8 +292,8 @@ $(document).ready(function () {
|
||||
alert("Runtime error: " + chrome.runtime.lastError.message);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// reset status indicators
|
||||
function resetStatusIndicators() {
|
||||
@@ -311,64 +311,83 @@ $(document).ready(function () {
|
||||
getCategories();
|
||||
getLanguages();
|
||||
getScheduledDays();
|
||||
|
||||
|
||||
// Initialize WebSocket connection
|
||||
window.ws = new WebSocket(wsURL);
|
||||
|
||||
window.ws.onopen = () => {
|
||||
console.log('WebSocket connection established');
|
||||
$('#onlineindicator').attr('src', window.greencircle);
|
||||
};
|
||||
window.ws.onmessage = (event) => {
|
||||
if ($('#onlineindicator').attr('src') !== window.greencircle) {
|
||||
// reconnect handle
|
||||
let ws_reconnect;
|
||||
|
||||
function reconnect() {
|
||||
if (window.ws && window.ws.readyState === WebSocket.OPEN) return;
|
||||
const s = new WebSocket(wsURL);
|
||||
s.addEventListener('open', () => {
|
||||
console.log('WebSocket connection established');
|
||||
$('#onlineindicator').attr('src', window.greencircle);
|
||||
}
|
||||
let rep = JSON.parse(event.data);
|
||||
let cmd = rep.reply
|
||||
let data = rep.data;
|
||||
if (cmd && cmd.length > 0) {
|
||||
switch (cmd) {
|
||||
case "getCPUStatus":
|
||||
$('#cpustatus').text("CPU : " + data)
|
||||
break;
|
||||
case "getMemoryStatus":
|
||||
$('#ramstatus').text("RAM : " + data)
|
||||
break;
|
||||
case "getDiskStatus":
|
||||
$('#diskstatus').text("Disk : " + data)
|
||||
break;
|
||||
case "getNetworkStatus":
|
||||
//console.log("Network status: ", data);
|
||||
let result = "";
|
||||
let json = JSON.parse(data);
|
||||
if (Array.isArray(json) && json.length> 0){
|
||||
json.forEach((net)=>{
|
||||
//console.log("Network interface: ", net);
|
||||
if (result.length>0) result+="\n"
|
||||
result+=`${net.displayName} (${net.ipV4addr.join(";")}) TX:${(net.txSpeed/1024).toFixed(1)} KB/s RX:${(net.rxSpeed/1024).toFixed(1)} KB/s; `
|
||||
})
|
||||
} else result = "N/A";
|
||||
$('#networkstatus').text(result)
|
||||
break;
|
||||
case "getSystemTime":
|
||||
$('#datetimetext').text(data)
|
||||
break;
|
||||
|
||||
if (ws_reconnect) {
|
||||
// stop reconnect attempts
|
||||
clearTimeout(ws_reconnect);
|
||||
ws_reconnect = null;
|
||||
}
|
||||
window.dispatchEvent(new Event('ws_connected'));
|
||||
});
|
||||
s.addEventListener('close', () => {
|
||||
console.log('WebSocket connection closed');
|
||||
window.dispatchEvent(new Event('ws_disconnected'));
|
||||
resetStatusIndicators();
|
||||
if (!ws_reconnect) {
|
||||
clearTimeout(ws_reconnect);
|
||||
ws_reconnect = null;
|
||||
}
|
||||
ws_reconnect = setTimeout(reconnect, 5000); // try to reconnect every 5 seconds
|
||||
});
|
||||
s.addEventListener('message', (event) => {
|
||||
if ($('#onlineindicator').attr('src') !== window.greencircle) {
|
||||
$('#onlineindicator').attr('src', window.greencircle);
|
||||
}
|
||||
let rep = JSON.parse(event.data);
|
||||
window.dispatchEvent(new CustomEvent('ws_message', { detail: rep }));
|
||||
let cmd = rep.reply
|
||||
let data = rep.data;
|
||||
if (cmd && cmd.length > 0) {
|
||||
switch (cmd) {
|
||||
case "getCPUStatus":
|
||||
$('#cpustatus').text("CPU : " + data)
|
||||
break;
|
||||
case "getMemoryStatus":
|
||||
$('#ramstatus').text("RAM : " + data)
|
||||
break;
|
||||
case "getDiskStatus":
|
||||
$('#diskstatus').text("Disk : " + data)
|
||||
break;
|
||||
case "getNetworkStatus":
|
||||
let result = "";
|
||||
let json = JSON.parse(data);
|
||||
if (Array.isArray(json) && json.length > 0) {
|
||||
json.forEach((net) => {
|
||||
if (result.length > 0) result += "\n"
|
||||
result += `${net.displayName} (${net.ipV4addr.join(";")}) TX:${(net.txSpeed / 1024).toFixed(1)} KB/s RX:${(net.rxSpeed / 1024).toFixed(1)} KB/s`
|
||||
})
|
||||
} else result = "N/A";
|
||||
$('#networkstatus').text(result)
|
||||
break;
|
||||
case "getSystemTime":
|
||||
$('#datetimetext').text(data)
|
||||
break;
|
||||
|
||||
}
|
||||
}
|
||||
});
|
||||
window.ws = s;
|
||||
}
|
||||
|
||||
reconnect();
|
||||
window.addEventListener('beforeunload', () => {
|
||||
try{
|
||||
window.ws?.close(1000, "Client closed connection");
|
||||
} catch (error) {
|
||||
console.error("Error closing WebSocket connection:", error);
|
||||
}
|
||||
};
|
||||
window.ws.onclose = () => {
|
||||
console.log('WebSocket connection closed');
|
||||
resetStatusIndicators();
|
||||
|
||||
};
|
||||
|
||||
// window.ws.onerror = (error) => {
|
||||
// console.error('WebSocket error:', error);
|
||||
// };
|
||||
|
||||
|
||||
});
|
||||
|
||||
setInterval(() => {
|
||||
sendCommand("getCPUStatus", "")
|
||||
@@ -395,7 +414,7 @@ $(document).ready(function () {
|
||||
if (status === "success") {
|
||||
console.log("Soundbank content loaded successfully");
|
||||
// pindah soundbank.js
|
||||
|
||||
|
||||
} else {
|
||||
console.error("Error loading soundbank content : ", xhr.status, xhr.statusText);
|
||||
}
|
||||
@@ -408,7 +427,7 @@ $(document).ready(function () {
|
||||
if (status === "success") {
|
||||
console.log("Messagebank content loaded successfully");
|
||||
// pindah messagebank.js
|
||||
|
||||
|
||||
} else {
|
||||
console.error("Error loading messagebank content : ", xhr.status, xhr.statusText);
|
||||
}
|
||||
@@ -421,7 +440,7 @@ $(document).ready(function () {
|
||||
if (status === "success") {
|
||||
console.log("Language content loaded successfully");
|
||||
// pindah languagelink.js
|
||||
|
||||
|
||||
} else {
|
||||
console.error("Error loading language content : ", xhr.status, xhr.statusText);
|
||||
}
|
||||
@@ -445,7 +464,7 @@ $(document).ready(function () {
|
||||
if (status === "success") {
|
||||
console.log("Timer content loaded successfully");
|
||||
// pindah ke schedulebank.js
|
||||
|
||||
|
||||
} else {
|
||||
console.error("Error loading timer content : ", xhr.status, xhr.statusText);
|
||||
}
|
||||
@@ -469,7 +488,7 @@ $(document).ready(function () {
|
||||
if (status === "success") {
|
||||
console.log("User Management content loaded successfully");
|
||||
// pindah ke usermanagement.js
|
||||
|
||||
|
||||
} else {
|
||||
console.error("Error loading user management content:", xhr.status, xhr.statusText);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user