86 lines
2.1 KiB
HTML
86 lines
2.1 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
|
|
<head>
|
|
<title>Update firmware</title>
|
|
<link rel="stylesheet" type="text/css" href="style.css">
|
|
<script type="text/javascript" src="../jquery.js"></script>
|
|
<script type="text/javascript">
|
|
|
|
|
|
var xhr = new XMLHttpRequest();
|
|
|
|
function doReboot() {
|
|
xhr.open("GET", "/flash/reboot");
|
|
xhr.onreadystatechange = function () {
|
|
if (xhr.readyState == 4 && xhr.status >= 200 && xhr.status < 300) {
|
|
window.setTimeout(function () {
|
|
location.reload(true);
|
|
}, 3000);
|
|
}
|
|
}
|
|
xhr.send();
|
|
}
|
|
|
|
function setProgress(amt) {
|
|
$("#progressbarinner")[0].style.width = String(amt * 200) + "px";
|
|
}
|
|
|
|
function doUpgrade() {
|
|
var f = $("#file")[0].files[0];
|
|
if (typeof f == 'undefined') {
|
|
$("#remark")[0].innerHTML = "Can't read file!";
|
|
return
|
|
}
|
|
xhr.onreadystatechange = function () {
|
|
console.log("Ready state changed: " + xhr.readyState);
|
|
if (xhr.readyState == 4 && xhr.status >= 200 && xhr.status < 300) {
|
|
setProgress(1);
|
|
let response = JSON.parse(xhr.responseText);
|
|
if (!response["success"]) {
|
|
$("#remark")[0].innerHTML = "Error: " + xhr.responseText;
|
|
} else {
|
|
$("#remark")[0].innerHTML = "Uploading done. Rebooting.";
|
|
doReboot();
|
|
}
|
|
}
|
|
}
|
|
if (typeof xhr.upload.onprogress != 'undefined') {
|
|
xhr.upload.onprogress = function (e) {
|
|
console.log("Upload progress: " + e.loaded + " / " + e.total);
|
|
setProgress(e.loaded / e.total);
|
|
}
|
|
}
|
|
xhr.open("POST", "/flash/upload");
|
|
|
|
xhr.send(f);
|
|
return false;
|
|
}
|
|
|
|
|
|
window.onload = function (e) {
|
|
xhr.open("GET", "/flash/init");
|
|
xhr.onreadystatechange = function () {
|
|
if (xhr.readyState == 4 && xhr.status >= 200 && xhr.status < 300) {
|
|
var txt = "Please upload " + xhr.responseText + " or ota file.";
|
|
$("#remark")[0].innerHTML = txt;
|
|
setProgress(0);
|
|
}
|
|
}
|
|
xhr.send();
|
|
}
|
|
|
|
</script>
|
|
</head>
|
|
|
|
<body>
|
|
<div id="main">
|
|
<h1>Update firmware</h1>
|
|
<div id="remark">Loading...</div>
|
|
<input type="file" id="file" />
|
|
<input type="submit" value="Update!" onclick="doUpgrade()" />
|
|
<div id="progressbar">
|
|
<div id="progressbarinner"></div>
|
|
</div>
|
|
</div>
|
|
</body> |