diff options
author | RaindropsSys <contact@minteck.org> | 2023-04-20 16:20:11 +0200 |
---|---|---|
committer | RaindropsSys <contact@minteck.org> | 2023-04-20 16:20:11 +0200 |
commit | 3661eadc63e4d2a240f88c18c4d50d12956d7223 (patch) | |
tree | 61b306e48729ce792957b8c777c61d5a500eb001 | |
parent | 4f509150ab86e7919dd05cdf19392d5d0ed95158 (diff) | |
download | delta-kiosk-3661eadc63e4d2a240f88c18c4d50d12956d7223.tar.gz delta-kiosk-3661eadc63e4d2a240f88c18c4d50d12956d7223.tar.bz2 delta-kiosk-3661eadc63e4d2a240f88c18c4d50d12956d7223.zip |
Updated 2 files and added 3 files (automated)
-rw-r--r-- | build.sh | 4 | ||||
-rw-r--r-- | index.html | 90 | ||||
-rw-r--r-- | index.js | 98 | ||||
-rw-r--r-- | logo.svg | 15 | ||||
-rw-r--r-- | unlock.svg | 1 |
5 files changed, 202 insertions, 6 deletions
diff --git a/build.sh b/build.sh new file mode 100644 index 0000000..de1ee86 --- /dev/null +++ b/build.sh @@ -0,0 +1,4 @@ +#!/bin/bash + +electron-packager --overwrite --platform darwin --arch arm64 . +electron-packager --overwrite --platform linux --arch x64 .
\ No newline at end of file @@ -60,12 +60,83 @@ list-style: none; padding: 0; } + + #preload { + position: fixed; + z-index: 9999; + display: flex; + inset: 0; + background: black; + align-items: center; + justify-content: center; + cursor: none; + } + + #preload-icon { + width: 20%; + pointer-events: none; + } </style> + <script> + let server = "http://192.168.1.121:8081/"; + let admin = "6c89f976-0eee-4bd9-8f55-de961d4bd905"; + + window.preloadWaitInterval = null; + window.preloadWaitTimeout = null; + + async function startPreloadUnlock() { + document.getElementById("preload-icon").src = "./unlock.svg"; + document.getElementById("preload-icon").style.opacity = "1"; + + window.preloadWaitInterval = setInterval(() => { + if (document.getElementById("preload-icon").style.opacity === "0") { + document.getElementById("preload-icon").style.opacity = "1"; + } else if (document.getElementById("preload-icon").style.opacity === "1") { + document.getElementById("preload-icon").style.opacity = "0"; + } + }, 1000); + + window.preloadWaitTimeout = setTimeout(() => { + clearInterval(window.preloadWaitInterval); + clearInterval(window.authApprovalInterval); + + document.getElementById("preload-icon").src = "./logo.svg"; + document.getElementById("preload-icon").style.opacity = "1"; + }, 30000); + + let data = JSON.parse(await (await window.fetch(server + "/dev.equestria.delta.kiosk.RequestApproval/?activate&id=" + admin)).text()); + window.authId = data.id; + + window.authApprovalInterval = setInterval(async () => { + let data = JSON.parse(await (await window.fetch(server + "/dev.equestria.delta.kiosk.CheckApproved/?id=" + window.authId)).text()); + if (data['token']) { + clearInterval(window.preloadWaitInterval); + clearInterval(window.authApprovalInterval); + + document.getElementById("preload-icon").src = "./logo.svg"; + document.getElementById("preload-icon").style.opacity = "1"; + document.getElementById("preload").style.display = "none"; + document.getElementById("video").currentTime = 0; + } else if (data['token'] === false) { + clearInterval(window.preloadWaitInterval); + clearInterval(window.authApprovalInterval); + + document.getElementById("preload-icon").src = "./logo.svg"; + document.getElementById("preload-icon").style.opacity = "1"; + } + }, 500); + } + </script> </head> <body style="position: fixed;inset: 0;margin: 0;"> + <div id="preload" onclick="startPreloadUnlock();"> + <img id="preload-icon" alt="" src="./logo.svg"> + </div> + <div id="welcome"> - <video src="video.mp4" muted loop autoplay style="position: fixed;inset: 0;width: 100vw;height: 100vh;"></video> + <video id="video" src="video.mp4" muted loop autoplay style="position: fixed;inset: 0;width: 100vw;height: 100vh;"></video> <div style="position: fixed; bottom: 20px; left: 0; right: 0; text-align: center; text-shadow: 0 0 5px white; font-size: 24px;">Cliquez n'importe où pour commencer</div> + <div id="version" style="position: fixed;bottom: 5px;left: 0;right: 5px;text-align: right;text-shadow: 0 0 5px white;font-size: 18px;opacity: .25;">-</div> <div style="position: fixed; inset: 0; z-index: 999; cursor: pointer;" onclick="start();"></div> </div> @@ -88,7 +159,6 @@ const remote = require('@electron/remote'); const { ipcRenderer } = require('electron'); - let server = "http://192.168.1.121:8081/"; window.user = null; window.authTimeout = null; window.authApprovalInterval = null; @@ -97,6 +167,9 @@ window.browsingTimeout2 = null; (async () => { + window.serverVersion = await (await window.fetch("https://delta.equestria.dev/version")).text(); + document.getElementById("version").innerText = "v" + window.serverVersion; + let users = JSON.parse(await (await window.fetch(server + "/dev.equestria.delta.kiosk.GetUserList/")).text()); for (let user of users) { @@ -161,18 +234,29 @@ clearTimeout(window.authTimeout); window.browsingTimeout1 = setInterval(() => { - if (document.getElementById("webview").getURL().endsWith("/login/")) { + if (document.getElementById("webview").getURL().includes("/login/")) { end(); } if (document.getElementById("webview").getURL().endsWith("/_dev.equestria.delta.kiosk.ShutdownKiosk")) { window.close(); } + + if (document.getElementById("webview").getURL().endsWith("/_dev.equestria.delta.kiosk.DisableKiosk")) { + end(); + document.getElementById("preload").style.display = ""; + } + + if (document.getElementById("webview").getURL().endsWith("/_dev.equestria.delta.kiosk.SessionEnd")) { + end(); + } }); window.browsingTimeout2 = setTimeout(() => { end(); }, 300000); + } else if (data['token'] === false) { + end(); } }, 1000); } @@ -1,4 +1,4 @@ -const { app, BrowserWindow, Menu, ipcMain } = require('electron'); +const { app, BrowserWindow, Menu, ipcMain, MenuItem } = require('electron'); require('@electron/remote/main').initialize(); const createWindow = () => { @@ -21,8 +21,100 @@ const createWindow = () => { mainWindow.send('devtools'); }); - mainWindow.setMenu(Menu.buildFromTemplate([])); - Menu.setApplicationMenu(Menu.buildFromTemplate([])); + let menu = Menu.buildFromTemplate([ + new MenuItem({ + label: "Electron", + submenu: Menu.buildFromTemplate([ + new MenuItem({ + label: "quit", + role: "quit", + registerAccelerator: false, + accelerator: '' + }) + ]) + }), + new MenuItem({ + label: "devOptions", + submenu: Menu.buildFromTemplate([ + new MenuItem({ + label: "toggleDevTools", + role: "toggleDevTools", + registerAccelerator: false, + accelerator: '' + }), + new MenuItem({ + label: "forceReload", + role: "forceReload", + registerAccelerator: false, + accelerator: '' + }), + new MenuItem({ + label: "togglefullscreen", + role: "togglefullscreen", + registerAccelerator: false, + accelerator: '' + }), + new MenuItem({ + label: "minimize", + role: "minimize", + registerAccelerator: false, + accelerator: '' + }), + new MenuItem({ + label: "about", + role: "about", + registerAccelerator: false, + accelerator: '' + }), + new MenuItem({ + label: "quit", + role: "quit", + registerAccelerator: false, + accelerator: '' + }) + ]) + }), + new MenuItem({ + label: "editOptions", + submenu: Menu.buildFromTemplate([ + new MenuItem({ + label: "undo", + role: "undo" + }), + new MenuItem({ + label: "redo", + role: "redo" + }), + new MenuItem({ + label: "cut", + role: "cut" + }), + new MenuItem({ + label: "copy", + role: "copy" + }), + new MenuItem({ + label: "paste", + role: "paste" + }), + new MenuItem({ + label: "pasteAndMatchStyle", + role: "pasteAndMatchStyle" + }), + new MenuItem({ + label: "delete", + role: "delete" + }), + new MenuItem({ + label: "selectAll", + role: "selectAll" + }) + ]) + }) + ]); + + mainWindow.setMenu(menu); + Menu.setApplicationMenu(menu); mainWindow.loadFile('index.html'); } diff --git a/logo.svg b/logo.svg new file mode 100644 index 0000000..1019d73 --- /dev/null +++ b/logo.svg @@ -0,0 +1,15 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generator: Adobe Illustrator 26.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> +<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" + viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve"> +<style type="text/css"> + .st0{fill:url(#SVGID_1_);} +</style> +<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="73.6195" y1="186.9167" x2="437.5792" y2="550.8765"> + <stop offset="0" style="stop-color:#E44857"/> + <stop offset="0.5" style="stop-color:#C711E1"/> + <stop offset="1" style="stop-color:#7F52FF"/> +</linearGradient> +<path class="st0" d="M237.7,24.3L14.1,472.1C7.5,485.4,17.2,501,32,501h447.1c14.9,0,24.5-15.6,17.9-28.9L273.5,24.3 + C266.1,9.6,245.1,9.6,237.7,24.3z"/> +</svg> diff --git a/unlock.svg b/unlock.svg new file mode 100644 index 0000000..e1e45b4 --- /dev/null +++ b/unlock.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" height="48" viewBox="0 96 960 960" width="48" fill="#ffffff"><path d="M419 724q1-88 20.5-128.5T505 519q38-30 57-61.109T581 393q0-40-25.5-65.5T485 302q-47 0-75 27t-42 66l-118-51q26-72 84.5-118.5T484.756 179q108.228 0 167.736 61.148Q712 301.297 712 390q0 59-22 103.5T624 578q-47 42-58 67t-10 79H419Zm65.788 277Q448 1001 421.5 974.5T395 911.504q0-37.495 26.42-63.5Q447.841 822 484.92 822 523 822 549 848.004q26 26.005 26 63.5Q575 948 548.788 974.5q-26.213 26.5-64 26.5Z"/></svg>
\ No newline at end of file |