messagesdebug: new app, log all `message` events to storage file

pull/2423/head
Richard de Boer 2022-12-21 16:04:46 +01:00
parent 1f1b8a20d5
commit 0dc07fb418
No known key found for this signature in database
5 changed files with 90 additions and 0 deletions

View File

@ -0,0 +1 @@
0.01: New app!

BIN
apps/messagesdebug/app.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

View File

@ -0,0 +1,3 @@
Bangle.on("message", (t, m) => {
require("Storage").open("messagesdebug.log", "a").write(`${t}: ${JSON.stringify(m)}\n`);
});

View File

@ -0,0 +1,71 @@
<html lang="en">
<head>
<link rel="stylesheet" href="../../css/spectre.min.css">
<title>Messages Debug</title>
</head>
<body>
<div id="data"></div>
<button class="btn btn-default" id="btnSave">Save</button>
<button class="btn btn-default" id="btnDelete">Clear</button>
<button class="btn btn-default" id="btnReload" style="float:right">Reload</button>
<script src="../../core/lib/interface.js"></script>
<script>
const dataElement = document.getElementById("data");
let messages = "";
function getData() {
// show loading window
Util.showModal("Loading...");
// get the data
dataElement.innerHTML = "";
Util.readStorageFile(`messagesdebug.log`, data => {
messages = data.trim();
// remove window
Util.hideModal();
let disable = false;
if (data.length) {
dataElement.innerHTML = `<pre style="overflow:auto;border:1px solid black;">${data}</pre>`;
} else {
dataElement.innerHTML = "<b>No messages found</b>";
disable = true;
}
['btnSave','btnDelete','btnCopy'].forEach(id=>{
document.getElementById(id).disabled = disable;
});
});
}
const button = (id, fn) => document.getElementById(id).addEventListener("click", fn);
// Save messages to file
button("btnSave", function() {
let a = document.createElement("a");
let url = URL.createObjectURL(new Blob([messages], {type: "text/plain"}));
a.href = url;
a.download = "messagesdebug.log";
document.body.appendChild(a);
a.click();
setTimeout(function() {
document.body.removeChild(a);
window.URL.revokeObjectURL(url);
}, 0);
});
// Delete the file from the watch
button("btnDelete", function() {
Util.showModal("Deleting...");
Util.eraseStorageFile("messagesdebug.log", function() {
Util.hideModal();
getData();
});
});
// Reload, in case we're e.g. using the IDE to send test messages
button("btnReload", getData);
// Called when app starts
function onInit() {
getData();
}
</script>
</body>
</html>

View File

@ -0,0 +1,15 @@
{
"id": "messagesdebug",
"name": "Messages Debug",
"version": "0.01",
"description": "Write all messages to a file, for debugging purposes",
"icon": "app.png",
"type": "bootloader",
"tags": "tool,system",
"supports": ["BANGLEJS","BANGLEJS2"],
"interface": "interface.html",
"storage": [
{"name":"messagesdebug.boot.js","url":"boot.js"}
],
"data": [{"name":"messagesdebug.log"}]
}