68 lines
2.9 KiB
TypeScript
68 lines
2.9 KiB
TypeScript
import {Controller} from "./main";
|
|
import {VersionInfo} from "./api";
|
|
|
|
function fmtBytes(n: number): string {
|
|
return `${n} B (${(n / 1024).toFixed(1)} KiB)`;
|
|
}
|
|
|
|
export class OTAView {
|
|
readonly file1Upload: HTMLInputElement;
|
|
readonly firmware_buildtime: HTMLDivElement;
|
|
readonly firmware_githash: HTMLDivElement;
|
|
readonly firmware_partition: HTMLDivElement;
|
|
readonly firmware_state0: HTMLDivElement;
|
|
readonly firmware_state1: HTMLDivElement;
|
|
readonly heap_free: HTMLDivElement;
|
|
readonly heap_used: HTMLDivElement;
|
|
readonly heap_total: HTMLDivElement;
|
|
readonly heap_max_used: HTMLDivElement;
|
|
|
|
constructor(controller: Controller) {
|
|
(document.getElementById("firmwareview") as HTMLElement).innerHTML = require("./ota.html")
|
|
|
|
let test = document.getElementById("test") as HTMLButtonElement;
|
|
let refresh = document.getElementById("refresh_firmware_info") as HTMLButtonElement;
|
|
|
|
this.firmware_buildtime = document.getElementById("firmware_buildtime") as HTMLDivElement;
|
|
this.firmware_githash = document.getElementById("firmware_githash") as HTMLDivElement;
|
|
this.firmware_partition = document.getElementById("firmware_partition") as HTMLDivElement;
|
|
this.firmware_state0 = document.getElementById("firmware_state0") as HTMLDivElement;
|
|
this.firmware_state1 = document.getElementById("firmware_state1") as HTMLDivElement;
|
|
this.heap_free = document.getElementById("heap_free") as HTMLDivElement;
|
|
this.heap_used = document.getElementById("heap_used") as HTMLDivElement;
|
|
this.heap_total = document.getElementById("heap_total") as HTMLDivElement;
|
|
this.heap_max_used = document.getElementById("heap_max_used") as HTMLDivElement;
|
|
|
|
const file = document.getElementById("firmware_file") as HTMLInputElement;
|
|
this.file1Upload = file
|
|
this.file1Upload.onchange = () => {
|
|
const selectedFile = file.files?.[0];
|
|
if (selectedFile == null) {
|
|
//TODO error dialog here
|
|
return
|
|
}
|
|
controller.uploadNewFirmware(selectedFile);
|
|
};
|
|
|
|
test.onclick = () => {
|
|
controller.selfTest();
|
|
}
|
|
|
|
refresh.onclick = () => {
|
|
controller.version();
|
|
}
|
|
}
|
|
|
|
setVersion(versionInfo: VersionInfo) {
|
|
this.firmware_buildtime.innerText = versionInfo.build_time;
|
|
this.firmware_githash.innerText = versionInfo.git_hash;
|
|
this.firmware_partition.innerText = versionInfo.current;
|
|
this.firmware_state0.innerText = versionInfo.slot0_state;
|
|
this.firmware_state1.innerText = versionInfo.slot1_state;
|
|
this.heap_free.innerText = fmtBytes(versionInfo.heap_free);
|
|
this.heap_used.innerText = fmtBytes(versionInfo.heap_used);
|
|
this.heap_total.innerText = fmtBytes(versionInfo.heap_total);
|
|
this.heap_max_used.innerText = fmtBytes(versionInfo.heap_max_used);
|
|
}
|
|
}
|