146 lines
No EOL
4.6 KiB
TypeScript
146 lines
No EOL
4.6 KiB
TypeScript
import './helpers.js';
|
|
|
|
var screens = ["Block Height", "Moscow Time", "Ticker", "Time", "Halving countdown"];
|
|
|
|
getBcStatus = () => {
|
|
fetch('/api/status', {
|
|
method: 'get'
|
|
})
|
|
.then(response => response.json())
|
|
.then(jsonData => {
|
|
var source = document.getElementById("entry-template").innerHTML;
|
|
var template = Handlebars.compile(source);
|
|
var context = { currentScreen: jsonData.currentScreen, rendered: jsonData.rendered, data: jsonData.data, screens: screens, ledStatus: jsonData.ledStatus ? jsonData.ledStatus.map((t) => (t).toString(16)) : [] };
|
|
document.getElementById('output').innerHTML = template(context);
|
|
})
|
|
.catch(err => {
|
|
//error block
|
|
});
|
|
}
|
|
|
|
interval = setInterval(getBcStatus, 2500);
|
|
getBcStatus();
|
|
|
|
fetch('/api/settings', {
|
|
method: 'get'
|
|
})
|
|
.then(response => response.json())
|
|
.then(jsonData => {
|
|
var fgColor = ("0x" + jsonData.fgColor.toString(16).toUpperCase());
|
|
if (jsonData.epdColors == 2) {
|
|
document.getElementById('fgColor').querySelector('[value="0xF800"]').remove();
|
|
document.getElementById('bgColor').querySelector('[value="0xF800"]').remove();
|
|
}
|
|
|
|
document.getElementById('output').classList.add("fg-" + jsonData.fgColor.toString(16));
|
|
document.getElementById('output').classList.add("bg-" + jsonData.bgColor.toString(16));
|
|
|
|
document.getElementById('fgColor').value = fgColor;
|
|
document.getElementById('bgColor').value = "0x" + jsonData.bgColor.toString(16).toUpperCase();
|
|
|
|
if (jsonData.ledFlashOnUpdate)
|
|
document.getElementById('ledFlashOnUpdate').checked = true;
|
|
|
|
if (jsonData.useBitcoinNode)
|
|
document.getElementById('useBitcoinNode').checked = true;
|
|
|
|
let nodeFields = ["rpcHost", "rpcPort", "rpcUser", "tzOffset"];
|
|
|
|
for (let n of nodeFields) {
|
|
document.getElementById(n).value = jsonData[n];
|
|
}
|
|
|
|
document.getElementById('timePerScreen').value = jsonData.timerSeconds / 60;
|
|
document.getElementById('ledBrightness').value = jsonData.ledBrightness;
|
|
document.getElementById('fullRefreshMin').value = jsonData.fullRefreshMin;
|
|
document.getElementById('wpTimeout').value = jsonData.wpTimeout;
|
|
|
|
|
|
if (jsonData.gitRev)
|
|
document.getElementById('gitRev').innerHTML = "Version: " + jsonData.gitRev;
|
|
|
|
if (jsonData.lastBuildTime)
|
|
document.getElementById('lastBuildTime').innerHTML = " / " + new Date((jsonData.lastBuildTime * 1000)).toLocaleString();
|
|
|
|
var source = document.getElementById("screens-template").innerHTML;
|
|
var template = Handlebars.compile(source);
|
|
var context = { screens: jsonData.screens };
|
|
document.getElementById('outputScreens').innerHTML = template(context);
|
|
})
|
|
.catch(err => {
|
|
console.log('error', err);
|
|
});
|
|
|
|
|
|
|
|
var settingsForm = document.querySelector('#settingsForm');
|
|
settingsForm.onsubmit = (event) => {
|
|
var formData = new FormData(settingsForm);
|
|
|
|
fetch("/api/settings",
|
|
{
|
|
body: formData,
|
|
method: "post"
|
|
}).then(() => {
|
|
console.log('Submitted');
|
|
document.getElementById('saveSettingsBtn')?.classList.add('btn-success');
|
|
});
|
|
|
|
return false;
|
|
}
|
|
|
|
document.getElementById('restartBtn').onclick = (event) => {
|
|
fetch('/api/restart');
|
|
return false;
|
|
}
|
|
|
|
|
|
var ledsForm = document.querySelector('#ledsForm');
|
|
ledsForm.onsubmit = (event) => {
|
|
var formData = new FormData(ledsForm);
|
|
|
|
fetch('/api/lights/' + encodeURIComponent(formData.get('pickedColor').substring(1)), {
|
|
method: 'get'
|
|
})
|
|
|
|
return false;
|
|
}
|
|
|
|
turnOffLedsBtn.onclick = (event) => {
|
|
fetch('/api/lights/off', {
|
|
method: 'get'
|
|
})
|
|
return false;
|
|
}
|
|
|
|
let tzOffsetBtn = document.getElementById('getTzOffsetBtn');
|
|
|
|
if (tzOffsetBtn)
|
|
tzOffsetBtn.onclick = (event) => {
|
|
document.getElementById("tzOffset").value = new Date(new Date().getFullYear(), 0, 1).getTimezoneOffset() * -1;
|
|
return false;
|
|
};
|
|
|
|
var textForm = document.querySelector('#customTextForm');
|
|
textForm.onsubmit = (event) => {
|
|
var formData = new FormData(textForm);
|
|
|
|
fetch('/api/show/text/' + encodeURIComponent(formData.get('customText')), {
|
|
method: 'get'
|
|
})
|
|
.then(response => response.json())
|
|
.catch(err => {
|
|
//error block
|
|
});
|
|
return false;
|
|
}
|
|
|
|
changeScreen = (id) => {
|
|
fetch('/api/show/screen/' + encodeURIComponent(id), {
|
|
method: 'get'
|
|
})
|
|
.then(response => response.json())
|
|
.catch(err => {
|
|
//error block
|
|
});
|
|
} |