"use strict";
//Relative to index.html not app.js
const SerialScanner = require("../back-end/serial_scanner");
const PortSelect = require("./js/port_select");
function $(id) { return document.getElementById(id) }
const flashButton = $("flash-button");
const appStatus = $("status");
const portsSelect = new PortSelect($("ports"));
const serialScanner = new SerialScanner();
const pollTime = 1000; // One second
var last_notification = "";
flashButton.addEventListener("click", event => {
var notification = new Notification("Flash Finished!");
});
serialScanner.on("ports", (ports) => {
portsSelect.addAll(ports);
readyToFlash();
});
serialScanner.on("deviceAdded", (port) => {
portsSelect.add(port);
new Notification(`Added: ${port}!`);
});
serialScanner.on("deviceRemoved", (port ) => {
portsSelect.remove(port);
new Notification(`Removed: ${port}!`);
});
serialScanner.on("error", onError);
/**
* Updates UI to say it's ready
*/
function readyToFlash() {
appStatus.textContent = "Ready";
enableInputs();
}
/**
* Enabled the serial port SELECT and flash BUTTON elements.
*/
function enableInputs(){
portsSelect.disabled = false;
flashButton.disabled = false;
}
/**
* Generic catch all error. Shows notification at the moment.
* @param error
*/
function onError(error){
if(last_notification !== error.message) {
last_notification = error.message;
new Notification(last_notification);
}
appStatus.textContent = error.message;
}
/**
* Sets up UI
*/
function init() {
serialScanner.scan();
setInterval(serialScanner.checkForChanges.bind(serialScanner), pollTime);
}
init();