From 0fcd6ccaba6f391c1a0c2db07cf6b2926057d7d3 Mon Sep 17 00:00:00 2001 From: naielv <109038805+naielv@users.noreply.github.com> Date: Mon, 4 Aug 2025 19:59:25 +0200 Subject: [PATCH] Fixed --- assets/load.gif | Bin 0 -> 48049 bytes assets/static/euskaditech-css/simple.css | 611 ++++++++++++----------- src/app_modules.js | 78 ++- src/config.js | 21 +- src/gun_init.js | 104 ++-- src/index.html | 1 + src/page/index.js | 3 +- src/page/login.js | 2 +- 8 files changed, 455 insertions(+), 365 deletions(-) create mode 100644 assets/load.gif diff --git a/assets/load.gif b/assets/load.gif new file mode 100644 index 0000000000000000000000000000000000000000..94bfef5086a5b7877b58a94944218de942ccf8cb GIT binary patch literal 48049 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 literal 0 HcmV?d00001 diff --git a/assets/static/euskaditech-css/simple.css b/assets/static/euskaditech-css/simple.css index 13cb3f2..d22f9f4 100644 --- a/assets/static/euskaditech-css/simple.css +++ b/assets/static/euskaditech-css/simple.css @@ -1,306 +1,307 @@ - - html { - color-scheme: light only; - } - - body { - font-family: Arial, Helvetica, sans-serif; - } - - main { - /*max-width: 45rem; - margin: 0 auto;*/ - padding: 0 15px; - } - - .supermesh-indicator { - border-top-left-radius: 15px; - background-color: greenyellow; - border-top: 5px solid green; - border-left: 5px solid green; - padding: 15px; - max-width: 30rem; - position: fixed; - right: 0; - bottom: 0; - color: black; - display: none; - } - - .supermesh-indicator a { - color: blue; - } - - details.supermesh-indicator summary { - font-size: unset; - } - - .link, - a { - color: blue; - text-decoration: underline; - cursor: pointer; - } - - .link:hover, - a:hover { - text-decoration: underline; - } - - #articleID { - font-family: monospace; - } - - @media (prefers-color-scheme: dark) { - .link, - a { - color: lightblue; - } - } - - @media print { - .supermesh-indicator, - .no_print { - display: none; - } - } - - main { - margin-bottom: 25rem; - } - - button, - .button { - display: inline-block; - padding: 5px 10px; - background-color: beige; - border: 2px solid black; - font-size: 20px; - margin: 3px; - text-decoration: none; - color: black; - } - - button:hover, - .button:hover { - text-decoration: underline; - } - - /* https://coolors.co/palette/ff0000-ff8700-ffd300-deff0a-a1ff0a-0aff99-0aefff-147df5-580aff-be0aff */ - .rojo { - background: #ff0000; - color: white; - } - - .btn1 { - background: #ff0000; - color: white; - } - - .btn2 { - background: #ff8700; - color: white; - } - - .btn3 { - background: #ffd300; - color: black; - } - - .btn4 { - background: #deff0a; - color: black; - } - - .btn5 { - background: #a1ff0a; - color: black; - } - - .btn6 { - background: #0aff99; - color: black; - } - - .btn7 { - background: #0aefff; - color: black; - } - - .btn8 { - background: #147df5; - color: white; - } - - .nav-disabled { - background: black !important; - color: grey !important; - } - - .nav-disabled:hover { - text-decoration: unset !important; - } - - input, - select, - textarea { - font-size: 18px; - padding: 5px; - width: calc(100% - 11px); - } - - select { - width: 100%; - } - - details input, - details select, - details textarea { - font-size: 18px; - padding: 5px; - width: calc(100% - 15px); - } - - input[type="color"] { - width: 50px; - height: 50px; - } - - textarea { - height: 150px; - } - - details summary { - font-size: 20px; - } - - thead tr { - background-color: black; - color: white; - } - - table { - display: block; - line-break: loose; - width: fit-content; - min-width: 750px; - border: 1px solid black; - } - - table tr th { - line-break: auto; - } - - table tr td { - border-bottom: 3px solid black !important; - padding: 5px; - } - - .scase { - text-transform: lowercase; - } - - .scase:first-letter { - text-transform: uppercase; - } - - table tr:hover td { - text-decoration: underline; - background: rgba(200, 200, 200, 0.5); - /* color: black; */ - } - - table tr:hover td.TextBorder { - background: inherit; - color: inherit; - text-decoration: none; - } - - fieldset { - max-width: 25rem; - } - - .TextBorder { - color: black; - text-shadow: -1px -1px 0 #fff, 1px -1px 0 #fff, -1px 1px 0 #fff, - 1px 1px 0 #fff; - -webkit-text-stroke: 0.25px #fff; - } - - code { - font-size: x-small; - color: gray; - } - - .activeSCButton { - border: 7px dashed beige; - color: beige; - background: black !important; - } - - .btn1.activeSCButton { - border-color: #ff0000; - color: #ff0000; - } - - .btn2.activeSCButton { - border-color: #ff8700; - color: #ff8700; - } - - .btn3.activeSCButton { - border-color: #ffd300; - color: #ffd300; - } - - .btn4.activeSCButton { - border-color: #deff0a; - color: #deff0a; - } - - .btn5.activeSCButton { - border-color: #a1ff0a; - color: #a1ff0a; - } - - .btn6.activeSCButton { - border-color: #0aff99; - color: #0aff99; - } - - .btn7.activeSCButton { - border-color: #0aefff; - color: #0aefff; - } - - .btn8.activeSCButton { - border-color: #147df5; - color: #147df5; - } - - hr { - border-color: black; - border-style: solid; - } - - #snackbar { - visibility: hidden; - /* min-width: 250px; */ - background-color: #333; - color: #fff; - text-align: center; - border-radius: 2px; - padding: 16px; - position: fixed; - z-index: 1; - right: 70px; - bottom: 25px; - } - - #snackbar a { - color: lightblue; - } - - #snackbar.show { - visibility: visible; +html { + color-scheme: light only; } + +body { + font-family: Arial, Helvetica, sans-serif; +} + +main { + /*max-width: 45rem; + margin: 0 auto;*/ + padding: 0 15px; +} + +.supermesh-indicator { + border-top-left-radius: 15px; + background-color: greenyellow; + border-top: 5px solid green; + border-left: 5px solid green; + padding: 15px; + max-width: 30rem; + position: fixed; + right: 0; + bottom: 0; + color: black; + display: none; +} + +.supermesh-indicator a { + color: blue; +} + +details.supermesh-indicator summary { + font-size: unset; +} + +.link, +a { + color: blue; + text-decoration: underline; + cursor: pointer; +} + +.link:hover, +a:hover { + text-decoration: underline; +} + +#articleID { + font-family: monospace; +} + +@media (prefers-color-scheme: dark) { + + .link, + a { + color: lightblue; + } +} + +@media print { + + .supermesh-indicator, + .no_print { + display: none; + } +} + +main { + margin-bottom: 25rem; +} + +button, +.button { + display: inline-block; + padding: 5px 10px; + background-color: beige; + border: 2px solid black; + font-size: 20px; + margin: 3px; + text-decoration: none; + color: black; +} + +button:hover, +.button:hover { + text-decoration: underline; +} + +/* https://coolors.co/palette/ff0000-ff8700-ffd300-deff0a-a1ff0a-0aff99-0aefff-147df5-580aff-be0aff */ +.rojo { + background: #ff0000; + color: white; +} + +.btn1 { + background: #ff0000; + color: white; +} + +.btn2 { + background: #ff8700; + color: white; +} + +.btn3 { + background: #ffd300; + color: black; +} + +.btn4 { + background: #deff0a; + color: black; +} + +.btn5 { + background: #a1ff0a; + color: black; +} + +.btn6 { + background: #0aff99; + color: black; +} + +.btn7 { + background: #0aefff; + color: black; +} + +.btn8 { + background: #147df5; + color: white; +} + +.nav-disabled { + background: black !important; + color: grey !important; +} + +.nav-disabled:hover { + text-decoration: unset !important; +} + +input, +select, +textarea { + font-size: 18px; + padding: 5px; + width: calc(100% - 11px); +} + +select { + width: 100%; +} + +details input, +details select, +details textarea { + font-size: 18px; + padding: 5px; + width: calc(100% - 15px); +} + +input[type="color"] { + width: 50px; + height: 50px; +} + +textarea { + height: 150px; +} + +details summary { + font-size: 20px; +} + +thead tr { + background-color: black; + color: white; +} + +table { + display: block; + line-break: loose; + width: fit-content; + min-width: 750px; + border: 1px solid black; +} + +table tr th { + line-break: auto; +} + +table tr td { + border-bottom: 3px solid black !important; + padding: 5px; +} + +.scase { + text-transform: lowercase; +} + +.scase:first-letter { + text-transform: uppercase; +} + +table tr:hover td { + text-decoration: underline; + background: rgba(200, 200, 200, 0.5); + /* color: black; */ +} + +table tr:hover td.TextBorder { + background: inherit; + color: inherit; + text-decoration: none; +} + +fieldset { + max-width: 25rem; +} + +.TextBorder { + color: black; + text-shadow: -1px -1px 0 #fff, 1px -1px 0 #fff, -1px 1px 0 #fff, + 1px 1px 0 #fff; + -webkit-text-stroke: 0.25px #fff; +} + +code { + font-size: x-small; + color: gray; +} + +.activeSCButton { + border: 7px dashed beige; + color: beige; + background: black !important; +} + +.btn1.activeSCButton { + border-color: #ff0000; + color: #ff0000; +} + +.btn2.activeSCButton { + border-color: #ff8700; + color: #ff8700; +} + +.btn3.activeSCButton { + border-color: #ffd300; + color: #ffd300; +} + +.btn4.activeSCButton { + border-color: #deff0a; + color: #deff0a; +} + +.btn5.activeSCButton { + border-color: #a1ff0a; + color: #a1ff0a; +} + +.btn6.activeSCButton { + border-color: #0aff99; + color: #0aff99; +} + +.btn7.activeSCButton { + border-color: #0aefff; + color: #0aefff; +} + +.btn8.activeSCButton { + border-color: #147df5; + color: #147df5; +} + +hr { + border-color: black; + border-style: solid; +} + +#snackbar { + visibility: hidden; + /* min-width: 250px; */ + background-color: #333; + color: #fff; + text-align: center; + border-radius: 2px; + padding: 16px; + position: fixed; + z-index: 1; + right: 70px; + bottom: 25px; +} + +#snackbar a { + color: lightblue; +} + +#snackbar.show { + visibility: visible; +} \ No newline at end of file diff --git a/src/app_modules.js b/src/app_modules.js index 3982d67..39b18dc 100644 --- a/src/app_modules.js +++ b/src/app_modules.js @@ -628,7 +628,7 @@ function TS_IndexElement( container, rowCallback = undefined, canAddCallback = undefined, - globalSearchBar = true, + globalSearchBar = true ) { // Every item in config should have: // key: string @@ -639,14 +639,18 @@ function TS_IndexElement( var tablehead = safeuuid(); var scrolltable = safeuuid(); var searchKeyInput = safeuuid(); - + // Create the container with search bar and table container.innerHTML = `

- - + + + + @@ -662,14 +666,17 @@ function TS_IndexElement( }); // Add search functionality const searchKeyEl = document.getElementById(searchKeyInput); - searchKeyEl.addEventListener('input', debounce(() => render(), 300)); + searchKeyEl.addEventListener( + "input", + debounce(() => render(), 300) + ); function searchInData(data, searchValue, config) { if (!searchValue) return true; - + // Search in ID if (data._key.toLowerCase().includes(searchValue)) return true; - + // Search in configured fields for (const field of config) { const value = data[field.key]; @@ -681,9 +688,12 @@ function TS_IndexElement( try { const comandaData = JSON.parse(data.Comanda); // Search in all comanda fields - if (Object.values(comandaData).some(v => - String(v).toLowerCase().includes(searchValue) - )) return true; + if ( + Object.values(comandaData).some((v) => + String(v).toLowerCase().includes(searchValue) + ) + ) + return true; } catch (e) { // If JSON parse fails, search in raw string if (data.Comanda.toLowerCase().includes(searchValue)) return true; @@ -693,8 +703,10 @@ function TS_IndexElement( const persona = SC_Personas[value]; if (persona) { // Search in persona fields - if (persona.Nombre?.toLowerCase().includes(searchValue)) return true; - if (persona.Region?.toLowerCase().includes(searchValue)) return true; + if (persona.Nombre?.toLowerCase().includes(searchValue)) + return true; + if (persona.Region?.toLowerCase().includes(searchValue)) + return true; } break; default: @@ -715,7 +727,7 @@ function TS_IndexElement( } return 0; } - + const searchValue = searchKeyEl.value.toLowerCase().trim(); tablebody_EL.innerHTML = ""; Object.entries(rows) @@ -747,6 +759,7 @@ function TS_IndexElement( break; case "comanda": const tdComanda = document.createElement("td"); + tdComanda.style.verticalAlign = "top"; const parsedComanda = JSON.parse(data.Comanda); const precio = SC_priceCalc(parsedComanda)[0]; @@ -758,18 +771,26 @@ function TS_IndexElement( const pre = document.createElement("pre"); pre.style.fontSize = "15px"; pre.style.display = "inline-block"; - + pre.style.margin = "0"; + pre.style.verticalAlign = "top"; + pre.style.padding = "5px"; + //looking like a post-it + pre.style.background = "rgba(255, 255, 0, 0.5)"; + pre.style.border = "1px solid rgba(0, 0, 0, 0.2)"; + pre.style.borderRadius = "5px"; + pre.style.boxShadow = "2px 2px 5px rgba(0, 0, 0, 0.1)"; + pre.style.height = "100%"; const spanPrecio = document.createElement("span"); spanPrecio.style.fontSize = "20px"; spanPrecio.innerHTML = SC_Personas[data.Persona].Puntos >= 10 ? `Total: Gratis!(${precio}c)` : `Total: ${precio}c`; - - pre.appendChild(spanPrecio); + pre.innerHTML = "Ticket de compra "; pre.appendChild(document.createTextNode("\n")); pre.innerHTML += - SC_parse_short(parsedComanda) + "
" + data.Notas; + SC_parse_short(parsedComanda) + "
" + data.Notas + "
"; + pre.appendChild(spanPrecio); tdComanda.appendChild(pre); new_tr.appendChild(tdComanda); @@ -945,7 +966,7 @@ function TS_IndexElement( } const PAGES = {}; -document.addEventListener("DOMContentLoaded", () => { +function SetPages() { Object.keys(PAGES).forEach((key) => { if (PAGES[key].Esconder == true) { return; @@ -956,5 +977,24 @@ document.addEventListener("DOMContentLoaded", () => { a.innerText = PAGES[key].Title; document.getElementById("appendApps").append(a); }); - open_page(location.hash.replace("#", "")); +} +document.addEventListener("DOMContentLoaded", () => { + SetPages(); + document.getElementById("appendApps").style.display = "none"; + document.getElementById("loading").style.display = "block"; }); +var Booted = false; +getPeers(); +setInterval(() => { + getPeers(); + if (ConnectionStarted && !Booted) { + Booted = true; + document.getElementById("loading").style.display = "none"; + if (!SUB_LOGGED_IN) { + open_page("login"); + return; + } + document.getElementById("appendApps").style.display = "block"; + open_page(location.hash.replace("#", "")); + } +}, 1500); diff --git a/src/config.js b/src/config.js index 4d4eccc..abc9d4f 100644 --- a/src/config.js +++ b/src/config.js @@ -22,4 +22,23 @@ const RELAYS = [ var SECRET = ""; var SUB_LOGGED_IN = false; var SUB_LOGGED_IN_DETAILS = false; -var SUB_LOGGED_IN_ID = false; \ No newline at end of file +var SUB_LOGGED_IN_ID = false; +if (urlParams.get("sublogin") != null) { + SUB_LOGGED_IN = true; + SUB_LOGGED_IN_ID = urlParams.get("sublogin"); + SUB_LOGGED_IN_DETAILS = true; + setTimeout(() => { + SUB_LOGGED_IN_DETAILS = SC_Personas[SUB_LOGGED_IN_ID]; + }, 1500); +} +function LogOutTeleSec() { + SUB_LOGGED_IN = false; + SUB_LOGGED_IN_DETAILS = false; + SUB_LOGGED_IN_ID = false; + document.getElementById("appendApps").style.display = "none"; + document.getElementById("loading").style.display = "block"; + //Remove sublogin from URL and reload + urlParams.delete("sublogin"); + history.replaceState(null, "", "?" + urlParams.toString()); + location.reload(); +} \ No newline at end of file diff --git a/src/gun_init.js b/src/gun_init.js index cb2b3bc..f5b1205 100644 --- a/src/gun_init.js +++ b/src/gun_init.js @@ -14,48 +14,76 @@ function removeCache() { location.reload(true); }); } -function getPeers() { - var peerCount = 0; - var peerCountEl = document.getElementById("peerCount"); - var peerListEl = document.getElementById("peerList"); - var list = document.createElement("ul"); - document.getElementById("peerPID").innerText = "PID " + gun.back("opt.pid"); - Object.values(gun.back("opt.peers")).forEach((peer) => { - if ( - peer.wire != undefined && - (peer.wire.readyState == 1 || peer.wire.readyState == "open") - ) { - peerCount += 1; - var wireType = peer.wire.constructor.name; - var wireHType = peer.wire.constructor.name; - var wireID = peer.id; - switch (wireType) { - case "WebSocket": - wireHType = "Web"; - wireID = wireID.split("/")[2]; - break; - case "RTCDataChannel": - wireHType = "Mesh"; - wireID = peer.id; - } - var el = document.createElement("li"); - el.innerText = `Nodo ${wireHType}: ${wireID}`; - list.append(el); - } - }); - peerListEl.innerHTML = list.innerHTML; - peerCountEl.innerText = peerCount; +var AtLeastThreePeers = false; +var ConnectionStarted = false; +function formatPeerInfo(peer) { + const wireType = peer.wire.constructor.name; + let wireHType = wireType; + let wireID = peer.id; + + switch (wireType) { + case "WebSocket": + wireHType = "Web"; + wireID = wireID.split("/")[2]; + break; + case "RTCDataChannel": + wireHType = "Mesh"; + break; + } + + return { wireHType, wireID }; +} + +function isPeerConnected(peer) { + return peer.wire != undefined && + (peer.wire.readyState == 1 || peer.wire.readyState == "open"); +} + +function createPeerListElement(wireHType, wireID) { + const el = document.createElement("li"); + el.innerText = `Nodo ${wireHType}: ${wireID}`; + return el; +} + +function updateConnectionStatus(peerCount) { + const statusImage = peerCount < 3 ? "connect_ko.svg" : "connect_ok.svg"; + document.getElementById("connectStatus").src = `static/ico/${statusImage}`; + if (peerCount < 3) { - document.getElementById("connectStatus").src = "static/ico/connect_ko.svg"; - gun.opt({ peers: RELAYS }); + if (!window.peerRetryCount) window.peerRetryCount = 0; + window.peerRetryCount = (window.peerRetryCount + 1) % 3; + if (window.peerRetryCount === 0) { + gun.opt({ peers: RELAYS }); + } + AtLeastThreePeers = false; } else { - document.getElementById("connectStatus").src = "static/ico/connect_ok.svg"; + ConnectionStarted = true; + AtLeastThreePeers = true; } } -getPeers(); -setInterval(() => { - getPeers(); -}, 2500); + +function getPeers() { + const peerCountEl = document.getElementById("peerCount"); + const peerListEl = document.getElementById("peerList"); + const list = document.createElement("ul"); + + document.getElementById("peerPID").innerText = "PID " + gun.back("opt.pid"); + + const connectedPeers = Object.values(gun.back("opt.peers")) + .filter(isPeerConnected) + .map(peer => { + const { wireHType, wireID } = formatPeerInfo(peer); + return createPeerListElement(wireHType, wireID); + }); + + connectedPeers.forEach(el => list.append(el)); + + peerListEl.innerHTML = list.innerHTML; + const peerCount = connectedPeers.length; + peerCountEl.innerText = peerCount; + + updateConnectionStatus(peerCount); +} function safeuuid(prefix = "AXLUID_") { return prefix + crypto.randomUUID().split("-")[4]; } diff --git a/src/index.html b/src/index.html index 7e77ed2..f336ae6 100644 --- a/src/index.html +++ b/src/index.html @@ -12,6 +12,7 @@ +
SuperMesh
diff --git a/src/page/index.js b/src/page/index.js index 145327d..b4cda89 100644 --- a/src/page/index.js +++ b/src/page/index.js @@ -3,9 +3,10 @@ PAGES.index = { Title: "Inicio", index: function () { container.innerHTML = ` -

Inicio

+

¡Hola, ${SUB_LOGGED_IN_DETAILS.Nombre}!

Utiliza el menú superior para abrir un modulo

+ `; }, }; diff --git a/src/page/login.js b/src/page/login.js index dc97e42..f3a568e 100644 --- a/src/page/login.js +++ b/src/page/login.js @@ -15,7 +15,7 @@ PAGES.login = { - Acceso sin cuenta + Acceso sin cuenta - No disponible `; var divact = document.getElementById(div_actions); addCategory_Personas(
+ +