From 1de6c3489fc65dc3346be6c6e18791de61bd2036 Mon Sep 17 00:00:00 2001 From: DJ2LS <75909252+DJ2LS@users.noreply.github.com> Date: Sat, 11 Feb 2023 10:23:04 +0100 Subject: [PATCH] first run with new toast system --- gui/preload-main.js | 193 ++++++++++++++------------------- gui/src/index.html | 252 +------------------------------------------- 2 files changed, 81 insertions(+), 364 deletions(-) diff --git a/gui/preload-main.js b/gui/preload-main.js index da27bff1..4171799d 100644 --- a/gui/preload-main.js +++ b/gui/preload-main.js @@ -10,6 +10,11 @@ const { bearingDistance, latLngToLocator } = require('qth-locator'); + +const { + v4: uuidv4 +} = require('uuid'); + const os = require('os'); // split character used for appending additional data to files @@ -2666,234 +2671,151 @@ ipcRenderer.on('action-updater', (event, arg) => { // CQ TRANSMITTING ipcRenderer.on('action-show-cq-toast-transmitting', (event, data) => { - var toastCQsending = document.getElementById('toastCQsending'); - var toast = bootstrap.Toast.getOrCreateInstance(toastCQsending); // Returns a Bootstrap toast instance - toast.show(); + displayToast(type='success', icon='bi-broadcast', content='transmitting cq', duration=5000); }); // CQ RECEIVED ipcRenderer.on('action-show-cq-toast-received', (event, data) => { - var toastCQreceiving = document.getElementById('toastCQreceiving'); - var toast = bootstrap.Toast.getOrCreateInstance(toastCQreceiving); // Returns a Bootstrap toast instance - toast.show(); + displayToast(type='success', icon='bi-broadcast', content='received cq', duration=5000); }); // QRV TRANSMITTING ipcRenderer.on('action-show-qrv-toast-transmitting', (event, data) => { - var toastQRVtransmitting = document.getElementById('toastQRVtransmitting'); - var toast = bootstrap.Toast.getOrCreateInstance(toastQRVtransmitting); // Returns a Bootstrap toast instance - toast.show(); + displayToast(type='success', icon='bi-broadcast', content='transmitting qrv', duration=5000); }); // QRV RECEIVED ipcRenderer.on('action-show-qrv-toast-received', (event, data) => { - var toastQRVreceiving = document.getElementById('toastQRVreceiving'); - var toast = bootstrap.Toast.getOrCreateInstance(toastQRVreceiving); // Returns a Bootstrap toast instance - toast.show(); + displayToast(type='success', icon='bi-broadcast', content='received qrv', duration=5000); }); // BEACON TRANSMITTING ipcRenderer.on('action-show-beacon-toast-transmitting', (event, data) => { + displayToast(type='info', icon='bi-broadcast', content='transmitting beacon', duration=5000); }); // BEACON RECEIVED ipcRenderer.on('action-show-beacon-toast-received', (event, data) => { - var toastBEACONreceiving = document.getElementById('toastBEACONreceiving'); - var toast = bootstrap.Toast.getOrCreateInstance(toastBEACONreceiving); // Returns a Bootstrap toast instance - toast.show(); + displayToast(type='info', icon='bi-broadcast', content='received beacon', duration=5000); }); // PING TRANSMITTING ipcRenderer.on('action-show-ping-toast-transmitting', (event, data) => { - var toastPINGsending = document.getElementById('toastPINGsending'); - var toast = bootstrap.Toast.getOrCreateInstance(toastPINGsending); // Returns a Bootstrap toast instance - toast.show(); + displayToast(type='success', icon='bi-broadcast', content='transmitting ping', duration=5000); }); // PING RECEIVED ipcRenderer.on('action-show-ping-toast-received', (event, data) => { - var toastPINGreceiving = document.getElementById('toastPINGreceiving'); - var toast = bootstrap.Toast.getOrCreateInstance(toastPINGreceiving); // Returns a Bootstrap toast instance - toast.show(); + displayToast(type='success', icon='bi-broadcast', content='received ping', duration=5000); }); // PING RECEIVED ACK ipcRenderer.on('action-show-ping-toast-received-ack', (event, data) => { - var toastPINGreceivedACK = document.getElementById('toastPINGreceivedACK'); - var toast = bootstrap.Toast.getOrCreateInstance(toastPINGreceivedACK); // Returns a Bootstrap toast instance - toast.show(); + displayToast(type='success', icon='bi-broadcast', content='received ping ack', duration=5000); }); // DATA CHANNEL OPENING TOAST ipcRenderer.on('action-show-arq-toast-datachannel-opening', (event, data) => { - var toastDATACHANNELopening = document.getElementById('toastDATACHANNELopening'); - var toast = bootstrap.Toast.getOrCreateInstance(toastDATACHANNELopening); // Returns a Bootstrap toast instance - toast.show(); + displayToast(type='secondary', icon='bi-broadcast', content='opening datachannel', duration=5000); }); // DATA CHANNEL WAITING TOAST ipcRenderer.on('action-show-arq-toast-datachannel-waiting', (event, data) => { - var toastDATACHANNELwaiting = document.getElementById('toastDATACHANNELwaiting'); - var toast = bootstrap.Toast.getOrCreateInstance(toastDATACHANNELwaiting); // Returns a Bootstrap toast instance - toast.show(); + displayToast(type='warning', icon='bi-broadcast', content='waiting...', duration=5000); }); // DATA CHANNEL OPEN TOAST ipcRenderer.on('action-show-arq-toast-datachannel-open', (event, data) => { - var toastDATACHANNELopen = document.getElementById('toastDATACHANNELopen'); - var toast = bootstrap.Toast.getOrCreateInstance(toastDATACHANNELopen); // Returns a Bootstrap toast instance - toast.show(); + displayToast(type='success', icon='bi-broadcast', content='datachannel open', duration=5000); }); // DATA CHANNEL RECEIVED OPENER TOAST ipcRenderer.on('action-show-arq-toast-datachannel-received-opener', (event, data) => { - var toastDATACHANNELreceivedopener = document.getElementById('toastDATACHANNELreceivedopener'); - var toast = bootstrap.Toast.getOrCreateInstance(toastDATACHANNELreceivedopener); // Returns a Bootstrap toast instance - toast.show(); + displayToast(type='success', icon='bi-broadcast', content='received datachannel opener', duration=5000); }); // ARQ TRANSMISSION FAILED // TODO: use for both - transmitting and receiving --> we need to change the IDs ipcRenderer.on('action-show-arq-toast-transmission-failed', (event, data) => { - document.getElementById("transmission_progress").className = "progress-bar progress-bar-striped bg-danger"; - var toast = bootstrap.Toast.getOrCreateInstance(toastARQtransmittingfailed); // Returns a Bootstrap toast instance - toast.show(); + displayToast(type='danger', icon='bi-broadcast', content='transmission failed', duration=5000); }); // ARQ TRANSMISSION FAILED (Version mismatch) ipcRenderer.on('action-show-arq-toast-transmission-failed-ver', (event, data) => { - document.getElementById("transmission_progress").className = "progress-bar progress-bar-striped bg-danger"; - var toast = bootstrap.Toast.getOrCreateInstance(toastARQtransmittingfailedver); // Returns a Bootstrap toast instance - toast.show(); + displayToast(type='danger', icon='bi-broadcast', content='protocoll version missmatch', duration=5000); }); // ARQ TRANSMISSION STOPPED // TODO: RENAME ID -- WRONG ipcRenderer.on('action-show-arq-toast-transmission-stopped', (event, data) => { - var toastDATACHANNELreceivedopener = document.getElementById('toastTRANSMISSIONstopped'); - var toast = bootstrap.Toast.getOrCreateInstance(toastDATACHANNELreceivedopener); // Returns a Bootstrap toast instance - toast.show(); + displayToast(type='success', icon='bi-broadcast', content='transmission stopped', duration=5000); }); // ARQ TRANSMISSION FAILED // TODO: USE FOR TX AND RX ipcRenderer.on('action-show-arq-toast-transmission-failed', (event, data) => { - document.getElementById("transmission_progress").className = "progress-bar progress-bar-striped bg-danger"; - - var toastARQreceivingfailed = document.getElementById('toastARQreceivingfailed'); - var toast = bootstrap.Toast.getOrCreateInstance(toastARQreceivingfailed); // Returns a Bootstrap toast instance - toast.show(); + displayToast(type='success', icon='bi-broadcast', content='arq transmission failed', duration=5000); }); // ARQ TRANSMISSION TRANSMITTED ipcRenderer.on('action-show-arq-toast-transmission-transmitted', (event, data) => { - - document.getElementById("transmission_progress").className = "progress-bar progress-bar-striped bg-success"; - var toastARQtransmittingsuccess = document.getElementById('toastARQtransmittingsuccess'); - var toast = bootstrap.Toast.getOrCreateInstance(toastARQtransmittingsuccess); // Returns a Bootstrap toast instance - toast.show(); + displayToast(type='success', icon='bi-broadcast', content='data transmitted', duration=5000); }); // ARQ TRANSMISSION TRANSMITTING ipcRenderer.on('action-show-arq-toast-transmission-transmitting', (event, data) => { - //document.getElementById("toastARQtransmittingSNR").className = "progress-bar progress-bar-striped progress-bar-animated bg-primary"; - var toastARQtransmittingSNR = document.getElementById('toastARQtransmittingSNR'); - var toast = bootstrap.Toast.getOrCreateInstance(toastARQtransmittingSNR); // Returns a Bootstrap toast instance - var irs_snr = data["data"][0].irs_snr; if(irs_snr <= 0){ - document.getElementById("toastARQtransmittingSNR").className = "toast align-items-center text-white bg-danger border-0"; - document.getElementById('toastARQtransmittingSNRValue').innerHTML = " low " + irs_snr; - toast.show(); - + displayToast(type='warning', icon='bi-broadcast', content='low link margin -' + irs_snr, duration=5000); } else if(irs_snr > 0 && irs_snr <= 5){ - document.getElementById("toastARQtransmittingSNR").className = "toast align-items-center text-white bg-warning border-0"; - document.getElementById('toastARQtransmittingSNRValue').innerHTML = " okay " + irs_snr; - toast.show(); - + displayToast(type='warning', icon='bi-broadcast', content='medium link margin -' + irs_snr, duration=5000); } else if(irs_snr > 5 && irs_snr < 12.7){ - document.getElementById("toastARQtransmittingSNR").className = "toast align-items-center text-white bg-success border-0"; - document.getElementById('toastARQtransmittingSNRValue').innerHTML = " good " + irs_snr; - toast.show(); - + displayToast(type='success', icon='bi-broadcast', content='high link margin -' + irs_snr, duration=5000); } else if(irs_snr >= 12.7){ - document.getElementById("toastARQtransmittingSNR").className = "toast align-items-center text-white bg-success border-0"; - document.getElementById('toastARQtransmittingSNRValue').innerHTML = " really good 12.7+"; - toast.show(); - + displayToast(type='success', icon='bi-broadcast', content='very high link margin -' + irs_snr, duration=5000); } else { - console.log("no snr info available") - document.getElementById("transmission_progress").className = "progress-bar progress-bar-striped progress-bar-animated bg-primary"; - var toastARQtransmitting = document.getElementById('toastARQtransmitting'); - var toast = bootstrap.Toast.getOrCreateInstance(toastARQtransmitting); // Returns a Bootstrap toast instance - toast.show(); - + displayToast(type='info', icon='bi-broadcast', content='no snr information', duration=5000); } - - }); // ARQ TRANSMISSION RECEIVED ipcRenderer.on('action-show-arq-toast-transmission-received', (event, data) => { - - document.getElementById("transmission_progress").className = "progress-bar progress-bar-striped bg-success"; - var toastARQreceivingsuccess = document.getElementById('toastARQreceivingsuccess'); - var toast = bootstrap.Toast.getOrCreateInstance(toastARQreceivingsuccess); // Returns a Bootstrap toast instance - toast.show(); + displayToast(type='warning', icon='bi-broadcast', content='received', duration=5000); }); // ARQ TRANSMISSION RECEIVING ipcRenderer.on('action-show-arq-toast-transmission-receiving', (event, data) => { - - document.getElementById("transmission_progress").className = "progress-bar progress-bar-striped progress-bar-animated bg-primary"; - var toastARQsessionreceiving = document.getElementById('toastARQreceiving'); - var toast = bootstrap.Toast.getOrCreateInstance(toastARQsessionreceiving); // Returns a Bootstrap toast instance - toast.show(); + displayToast(type='primary', icon='bi-broadcast', content='session receiving', duration=5000); }); // ARQ SESSION CONNECTING ipcRenderer.on('action-show-arq-toast-session-connecting', (event, data) => { - - var toastARQsessionconnecting = document.getElementById('toastARQsessionconnecting'); - var toast = bootstrap.Toast.getOrCreateInstance(toastARQsessionconnecting); // Returns a Bootstrap toast instance - toast.show(); + displayToast(type='primary', icon='bi-broadcast', content='connecting...', duration=5000); }); // ARQ SESSION CONNECTED ipcRenderer.on('action-show-arq-toast-session-connected', (event, data) => { - - var toastARQsessionconnected = document.getElementById('toastARQsessionconnected'); - var toast = bootstrap.Toast.getOrCreateInstance(toastARQsessionconnected); // Returns a Bootstrap toast instance - toast.show(); + displayToast(type='success', icon='bi-broadcast', content='session connected', duration=5000); }); // ARQ SESSION CONNECTED ipcRenderer.on('action-show-arq-toast-session-waiting', (event, data) => { - - var toastARQsessionwaiting = document.getElementById('toastARQsessionwaiting'); - var toast = bootstrap.Toast.getOrCreateInstance(toastARQsessionwaiting); // Returns a Bootstrap toast instance - toast.show(); + displayToast(type='warning', icon='bi-broadcast', content='session waiting...', duration=5000); }); // ARQ SESSION CLOSE ipcRenderer.on('action-show-arq-toast-session-close', (event, data) => { - - var toastARQsessionclose = document.getElementById('toastARQsessionclose'); - var toast = bootstrap.Toast.getOrCreateInstance(toastARQsessionclose); // Returns a Bootstrap toast instance - toast.show(); + displayToast(type='warning', icon='bi-broadcast', content='session close', duration=5000); }); // ARQ SESSION FAILED ipcRenderer.on('action-show-arq-toast-session-failed', (event, data) => { - - var toastARQsessionfailed = document.getElementById('toastARQsessionfailed'); - var toast = bootstrap.Toast.getOrCreateInstance(toastARQsessionfailed); // Returns a Bootstrap toast instance - toast.show(); + displayToast(type='danger', icon='bi-broadcast', content='session failed', duration=5000); }); @@ -3012,4 +2934,49 @@ function formatBytes(bytes, decimals = 1) { const i = Math.floor(Math.log(bytes) / Math.log(k)) return `${parseFloat((bytes / Math.pow(k, i)).toFixed(dm))} ${sizes[i]}` +} + + +// display toast +function displayToast(type='primary', icon='bi-info', content='default', duration=5000){ + mainToastContainer = document.getElementById("mainToastContainer"); + + let randomID = uuidv4() + let toastCode = ` + + `; + + // insert toast to toast container + mainToastContainer.insertAdjacentHTML("beforeend", toastCode); + + // register toast + let toastHTMLElement = document.getElementById(randomID); + let toast = bootstrap.Toast.getOrCreateInstance(toastHTMLElement); // Returns a Bootstrap toast instance + toast._config.delay = duration; + + // show toast + toast.show() + + //register event listener if toast is hidden + toastHTMLElement.addEventListener('hidden.bs.toast', () => { + // remove eventListener + toastHTMLElement.removeEventListener('hidden.bs.toast', this); + // remove toast + toastHTMLElement.remove(); + }) + } \ No newline at end of file diff --git a/gui/src/index.html b/gui/src/index.html index 3599ddcc..94761a11 100644 --- a/gui/src/index.html +++ b/gui/src/index.html @@ -137,257 +137,7 @@
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+