diff --git a/backend/templates/state_partial.html.tera b/backend/templates/state_partial.html.tera index b6acafe..02c62f5 100644 --- a/backend/templates/state_partial.html.tera +++ b/backend/templates/state_partial.html.tera @@ -4,7 +4,7 @@

diff --git a/frontend/www/games.ts b/frontend/www/games.ts index 014724a..ad5ae9b 100644 --- a/frontend/www/games.ts +++ b/frontend/www/games.ts @@ -6,7 +6,20 @@ const OPTIONS = document.getElementById("options"); const game_location = LOCATION + "static/games/mod.ini"; +var game_name, game_file; + +document.getElementById("addbutton").onclick = function() { + const loc = window.location; + const query = `?game=${game_file}&name=${game_name}`; + navigator.clipboard.writeText(loc.origin+loc.pathname+encodeURI(query)).then(() => { + console.log("Success"); + }, () => { + console.log("Failed"); + }); +} + async function on_load() { + console.log("ON LOAD"); if (OPTIONS) { const r = await fetch(game_location); const response = await r.text(); @@ -16,7 +29,8 @@ async function on_load() { const urlVars = new URLSearchParams(window.location.search); if (urlVars.get("game") && urlVars.get("name")) { - handle("/games/"+urlVars.get("game"),urlVars.get("name")) + console.log(urlVars.get("game")+' '+urlVars.get("name")) + handle(urlVars.get("game"),urlVars.get("name")) } else if (options[0]) { const options_div = options[0]; if (options_div.children[0]) { @@ -25,10 +39,12 @@ async function on_load() { } } } - -window.addEventListener("load", on_load); +window.addEventListener("load", on_load, false); export function handle(location, name: string) { + game_file = location; + game_name = name; + set_loading(true); fetch(location) diff --git a/frontend/www/index.ts b/frontend/www/index.ts index af6578b..6d71601 100644 --- a/frontend/www/index.ts +++ b/frontend/www/index.ts @@ -30,10 +30,6 @@ const SLIDER = document.getElementById("turnSlider"); const FILESELECTOR = document.getElementById("fileselect"); const SPEED = document.getElementById("speed"); -document.getElementById("addbutton").onclick = function() { - FILESELECTOR.click(); -} - export function set_loading(loading: boolean) { if (loading) { if (!LOADER.classList.contains("loading")) { diff --git a/frontend/www/static/res/style.css b/frontend/www/static/res/style.css index 42a6574..6ca71a0 100644 --- a/frontend/www/static/res/style.css +++ b/frontend/www/static/res/style.css @@ -1,327 +1,309 @@ -* { - margin: 0; - padding: 0; -} - -body { - background-color: #333; -} - -p { - padding: 3px 0; -} - -#wrapper { - max-height: 100%; - min-height: 100%; - width: 100%; - height: 100%; - display: flex; -} - -#main { - height: 100%; - flex-grow: 1; - position: relative; -} - -#name { - position: absolute; - top: 10px; - left: 10px; - color: white; -} - -#meta { - padding: 10px 2%; - color: white; - position: absolute; - bottom: 0; - width: 96%; -} - -.options { - background-color: black; - max-width: 300px; - width: 20%; - min-width: 150px; - height: 100%; - display: flex; - flex-direction: column; - overflow-y: auto; -} - -.option { - color: white; - margin: 0 0 20px 0; - padding: 10px; - background-color: #333; -} - -.option:last-child { - margin: 0; -} - -.option:hover { - background-color: #777; -} - -.lds-roller { - display: none; -} - -.loading>.lds-roller { - display: inline-block; -} - -.lds-roller { - position: absolute; - left: 50%; - top: 50%; - transform: translate(-50%, -50%); - width: 80px; - height: 80px; -} - -.lds-roller div { - animation: lds-roller 1.2s cubic-bezier(0.5, 0, 0.5, 1) infinite; - transform-origin: 40px 40px; -} - -.lds-roller div:after { - content: " "; - display: block; - position: absolute; - width: 7px; - height: 7px; - border-radius: 50%; - background: #fff; - margin: -4px 0 0 -4px; -} - -.lds-roller div:nth-child(1) { - animation-delay: -0.036s; -} - -.lds-roller div:nth-child(1):after { - top: 63px; - left: 63px; -} - -.lds-roller div:nth-child(2) { - animation-delay: -0.072s; -} - -.lds-roller div:nth-child(2):after { - top: 68px; - left: 56px; -} - -.lds-roller div:nth-child(3) { - animation-delay: -0.108s; -} - -.lds-roller div:nth-child(3):after { - top: 71px; - left: 48px; -} - -.lds-roller div:nth-child(4) { - animation-delay: -0.144s; -} - -.lds-roller div:nth-child(4):after { - top: 72px; - left: 40px; -} - -.lds-roller div:nth-child(5) { - animation-delay: -0.18s; -} - -.lds-roller div:nth-child(5):after { - top: 71px; - left: 32px; -} - -.lds-roller div:nth-child(6) { - animation-delay: -0.216s; -} - -.lds-roller div:nth-child(6):after { - top: 68px; - left: 24px; -} - -.lds-roller div:nth-child(7) { - animation-delay: -0.252s; -} - -.lds-roller div:nth-child(7):after { - top: 63px; - left: 17px; -} - -.lds-roller div:nth-child(8) { - animation-delay: -0.288s; -} - -.lds-roller div:nth-child(8):after { - top: 56px; - left: 12px; -} - -@keyframes lds-roller { - 0% { - transform: rotate(0deg); + * { + margin: 0; + padding: 0; } - 100% { - transform: rotate(360deg); + + body { + background-color: #333; } -} - -#speed { - width: 100px; -} - -#c { - position: relative; - background-color: black; - width: 100%; - height: 100%; -} - -.button { - position: absolute; - top: 10px; - right: 10px; - width: 40px; - height: 40px; -} - -.button:before, -.button:after { - content: ""; - position: absolute; - background-color: grey; -} - -.button:hover:before, -.button:hover:after { - background-color: white; -} - -.button:before { - top: 0; - left: 50%; - width: 6px; - height: 100%; - margin-left: -3px; -} - -.button:after { - top: 50%; - left: 0; - width: 100%; - height: 6px; - margin-top: -3px; -} - - -/* ---------------------------------------------- + + p { + padding: 3px 0; + } + + #wrapper { + max-height: 100%; + min-height: 100%; + width: 100%; + height: 100%; + display: flex; + } + + #main { + height: 100%; + flex-grow: 1; + position: relative; + } + + #name { + position: absolute; + top: 10px; + left: 10px; + color: white; + } + + #meta { + padding: 10px 2%; + color: white; + position: absolute; + bottom: 0; + width: 96%; + } + + .options { + background-color: black; + max-width: 300px; + width: 20%; + min-width: 150px; + height: 100%; + display: flex; + flex-direction: column; + overflow-y: auto; + } + + .option { + color: white; + margin: 0 0 20px 0; + padding: 10px; + background-color: #333; + } + + .option:last-child { + margin: 0; + } + + .option:hover { + background-color: #777; + } + + .lds-roller { + display: none; + } + + .loading>.lds-roller { + display: inline-block; + } + + .lds-roller { + position: absolute; + left: 50%; + top: 50%; + transform: translate(-50%, -50%); + width: 80px; + height: 80px; + } + + .lds-roller div { + animation: lds-roller 1.2s cubic-bezier(0.5, 0, 0.5, 1) infinite; + transform-origin: 40px 40px; + } + + .lds-roller div:after { + content: " "; + display: block; + position: absolute; + width: 7px; + height: 7px; + border-radius: 50%; + background: #fff; + margin: -4px 0 0 -4px; + } + + .lds-roller div:nth-child(1) { + animation-delay: -0.036s; + } + + .lds-roller div:nth-child(1):after { + top: 63px; + left: 63px; + } + + .lds-roller div:nth-child(2) { + animation-delay: -0.072s; + } + + .lds-roller div:nth-child(2):after { + top: 68px; + left: 56px; + } + + .lds-roller div:nth-child(3) { + animation-delay: -0.108s; + } + + .lds-roller div:nth-child(3):after { + top: 71px; + left: 48px; + } + + .lds-roller div:nth-child(4) { + animation-delay: -0.144s; + } + + .lds-roller div:nth-child(4):after { + top: 72px; + left: 40px; + } + + .lds-roller div:nth-child(5) { + animation-delay: -0.18s; + } + + .lds-roller div:nth-child(5):after { + top: 71px; + left: 32px; + } + + .lds-roller div:nth-child(6) { + animation-delay: -0.216s; + } + + .lds-roller div:nth-child(6):after { + top: 68px; + left: 24px; + } + + .lds-roller div:nth-child(7) { + animation-delay: -0.252s; + } + + .lds-roller div:nth-child(7):after { + top: 63px; + left: 17px; + } + + .lds-roller div:nth-child(8) { + animation-delay: -0.288s; + } + + .lds-roller div:nth-child(8):after { + top: 56px; + left: 12px; + } + + @keyframes lds-roller { + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(360deg); + } + } + + #speed { + width: 100px; + } + + #c { + position: relative; + background-color: black; + width: 100%; + height: 100%; + } + + .button { + position: absolute; + top: 10px; + right: 10px; + width: 0; + height: 0; + } + + .button::before { + content: ""; + display: block; + float: left; + margin: 0 -20px 0 0; + font-family: 'fontawesome'; + content: "\f1e1"; + transform: translate(-1em, 0px); + color: antiquewhite; + font-size: 1.5em; + } + + .button:hover::before { + color: #ff7f00; + } + /* ---------------------------------------------- * Generated by Animista on 2019-9-17 14:35:13 * Licensed under FreeBSD License. * See http://animista.net/license for more info. * w: http://animista.net, t: @cssanimista * ---------------------------------------------- */ - - -/** + /** * ---------------------------------------- * animation slide-top * ---------------------------------------- */ - -@-webkit-keyframes slide-top { - 0% { - -webkit-transform: translate(-50%, 50%); - transform: translate(-50%, 50%); + + @-webkit-keyframes slide-top { + 0% { + -webkit-transform: translate(-50%, 50%); + transform: translate(-50%, 50%); + } + 100% { + -webkit-transform: translate(-50%, -150%); + transform: translate(-50%, -150%); + } } - 100% { - -webkit-transform: translate(-50%, -150%); - transform: translate(-50%, -150%); + + @keyframes slide-top { + 0% { + -webkit-transform: translate(-50%, 50%); + transform: translate(-50%, 50%); + } + 100% { + -webkit-transform: translate(-50%, -150%); + transform: translate(-50%, -150%); + } } -} - -@keyframes slide-top { - 0% { - -webkit-transform: translate(-50%, 50%); - transform: translate(-50%, 50%); - } - 100% { - -webkit-transform: translate(-50%, -150%); - transform: translate(-50%, -150%); - } -} - - -/** + /** * ---------------------------------------- * Copy from https://www.w3schools.com/howto/howto_js_rangeslider.asp * ---------------------------------------- */ - -.slidecontainer { - margin-top: 10px; - width: 100%; - /* Width of the outside container */ -} - -.slider { - -webkit-appearance: none; - width: 100%; - height: 15px; - border-radius: 5px; - background: #d3d3d3; - outline: none; - opacity: 0.7; - -webkit-transition: .2s; - transition: opacity .2s; -} - -.slider::-webkit-slider-thumb { - -webkit-appearance: none; - appearance: none; - width: 25px; - height: 25px; - border-radius: 50%; - background: #ff7000; - cursor: pointer; -} - -.slider::-moz-range-thumb { - width: 25px; - height: 25px; - border-radius: 50%; - background: #ff7000; - cursor: pointer; -} - -::-webkit-scrollbar-track { - -webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.3); - box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.3); - border-radius: 10px; - background-color: #444; - border-radius: 10px; -} - -::-webkit-scrollbar { - width: 10px; - background-color: #444; -} - -::-webkit-scrollbar-thumb { - border-radius: 10px; - background-color: #F90; - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .2) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .2) 50%, rgba(255, 255, 255, .2) 75%, transparent 75%, transparent) -} \ No newline at end of file + + .slidecontainer { + margin-top: 10px; + width: 100%; + /* Width of the outside container */ + } + + .slider { + -webkit-appearance: none; + width: 100%; + height: 15px; + border-radius: 5px; + background: #d3d3d3; + outline: none; + opacity: 0.7; + -webkit-transition: .2s; + transition: opacity .2s; + } + + .slider::-webkit-slider-thumb { + -webkit-appearance: none; + appearance: none; + width: 25px; + height: 25px; + border-radius: 50%; + background: #ff7000; + cursor: pointer; + } + + .slider::-moz-range-thumb { + width: 25px; + height: 25px; + border-radius: 50%; + background: #ff7000; + cursor: pointer; + } + + ::-webkit-scrollbar-track { + -webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.3); + box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.3); + border-radius: 10px; + background-color: #444; + border-radius: 10px; + } + + ::-webkit-scrollbar { + width: 10px; + background-color: #444; + } + + ::-webkit-scrollbar-thumb { + border-radius: 10px; + background-color: #F90; + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .2) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .2) 50%, rgba(255, 255, 255, .2) 75%, transparent 75%, transparent) + } \ No newline at end of file