75 lines
3.4 KiB
Django/Jinja
75 lines
3.4 KiB
Django/Jinja
async settingsUploadUpdate() {
|
|
if (!this.uploadFw.filename) {
|
|
alert('Выберите файл для загрузки');
|
|
return;
|
|
}
|
|
|
|
async function readFileAsArrayBuffer(fileName) {
|
|
return new Promise((resolve, reject) => {
|
|
if (!fileName) { reject(`Файл не выбран`); return }
|
|
const reader = new FileReader();
|
|
reader.onload = (e) => { resolve(reader.result) }
|
|
reader.onerror = (e) => { reject(e) }
|
|
reader.readAsArrayBuffer(fileName)
|
|
})
|
|
}
|
|
|
|
try {
|
|
this.submitStatus.firmwareUpload = true
|
|
this.uploadFw.progress = 0
|
|
const blob = await readFileAsArrayBuffer(this.uploadFw.filename)
|
|
|
|
const xhr = new XMLHttpRequest();
|
|
await new Promise((resolve) => {
|
|
xhr.upload.addEventListener("progress", (event) => {
|
|
if (event.lengthComputable) {
|
|
this.uploadFw.progress = Math.round((event.loaded / event.total) * 1000) / 10;
|
|
}
|
|
});
|
|
xhr.addEventListener("loadend", () => {
|
|
this.uploadFw.progress = 100
|
|
const rep = JSON.parse(xhr.responseText);
|
|
this.uploadFw.sha256 = rep['sha256']
|
|
resolve(xhr.readyState === 4 && xhr.status === 200);
|
|
});
|
|
xhr.open("PUT", "/api/firmwareUpdate", true);
|
|
xhr.setRequestHeader("Content-Type", "application/octet-stream");
|
|
xhr.send(blob);
|
|
});
|
|
} catch (e) {
|
|
alert(`Ошибка загрузки файла: ${e}`);
|
|
}
|
|
this.submitStatus.firmwareUpload = false
|
|
},
|
|
|
|
async settingsPerformFirmwareUpgrade() {
|
|
if (this.submitStatus.firmwareUpgrade) { return }
|
|
this.submitStatus.firmwareUpgrade = true
|
|
try {
|
|
await fetch('/api/doFirmwareUpgrade', { method: 'POST' })
|
|
} catch (e) {
|
|
console.log("failed to perform upgrade firmware: ", e)
|
|
}
|
|
this.submitStatus.firmwareUpgrade = false
|
|
},
|
|
{% if modem == 'tdma' %}
|
|
async settingsPerformFirmwareUpgradeOta() {
|
|
if (this.submitStatus.firmwareUpgradeOta) { return }
|
|
this.submitStatus.firmwareUpgradeOta = true
|
|
try {
|
|
await fetch('/api/doFirmwareUpgrade?ota=1', { method: 'POST' })
|
|
} catch (e) {
|
|
console.log("failed to perform upgrade firmware: ", e)
|
|
}
|
|
this.submitStatus.firmwareUpgradeOta = false
|
|
},
|
|
{% endif %}
|
|
|
|
doModemReboot() {
|
|
if (this.submitStatus.modemReboot !== null) {
|
|
return
|
|
}
|
|
this.submitStatus.modemReboot = 30
|
|
fetch('/api/reboot', { method: 'POST' }).then((r) => {})
|
|
},
|