From c75b6845a6e48ca70ba71b5568ca2bc4ce1fa7cf Mon Sep 17 00:00:00 2001 From: Thomas Weber Date: Fri, 18 Jun 2021 18:27:30 -0500 Subject: [PATCH] Add controls to scaffolding example --- src/scaffolding/example.html | 84 ++++++++++++++++++++++++++++++++++++ 1 file changed, 84 insertions(+) diff --git a/src/scaffolding/example.html b/src/scaffolding/example.html index 6844fc8..e3030d4 100644 --- a/src/scaffolding/example.html +++ b/src/scaffolding/example.html @@ -67,6 +67,27 @@ width: 0; background-color: currentColor; } + .control-button { + width: 2rem; + height: 2rem; + padding: 0.375rem; + border-radius: 0.25rem; + margin-top: 0.5rem; + margin-bottom: 0.5rem; + user-select: none; + cursor: pointer; + border: 0; + border-radius: 4px; + } + .control-button:hover { + background: hsla(0, 100%, 65%, 0.15); + } + .control-button.active { + background: hsla(0, 100%, 65%, 0.35); + } + .fullscreen-button { + background: white !important; + } @@ -127,6 +148,69 @@ }; setProgress(0.1); + const greenFlagButton = document.createElement("img"); + greenFlagButton.src = 'data:image/svg+xml,' + encodeURIComponent(``); + greenFlagButton.className = 'control-button'; + greenFlagButton.addEventListener('click', () => { + scaffolding.greenFlag(); + }); + scaffolding.addEventListener('PROJECT_RUN_START', () => { + greenFlagButton.classList.add('active'); + }); + scaffolding.addEventListener('PROJECT_RUN_STOP', () => { + greenFlagButton.classList.remove('active'); + }); + scaffolding.addControlButton({ + element: greenFlagButton, + where: 'top-left' + }); + + const stopAllButton = document.createElement("img"); + stopAllButton.src = 'data:image/svg+xml,' + encodeURIComponent(``); + stopAllButton.className = 'control-button'; + stopAllButton.addEventListener('click', () => { + scaffolding.stopAll(); + }); + scaffolding.addControlButton({ + element: stopAllButton, + where: 'top-left' + }); + + if (document.fullscreenEnabled) { + let isFullScreen = !!document.fullscreenElement; + const fullscreenButton = document.createElement("img"); + fullscreenButton.className = 'control-button fullscreen-button'; + fullscreenButton.addEventListener('click', () => { + if (isFullScreen) { + document.exitFullscreen().then(() => { + isFullScreen = false; + updateFullscreenImage(); + }); + } else { + document.body.requestFullscreen().then(() => { + isFullScreen = true; + updateFullscreenImage(); + }); + } + }); + const updateFullscreenImage = () => { + if (isFullScreen) { + fullscreenButton.src = 'data:image/svg+xml,' + encodeURIComponent(``); + } else { + fullscreenButton.src = 'data:image/svg+xml,' + encodeURIComponent(``); + } + }; + updateFullscreenImage(); + document.addEventListener('fullscreenchange', () => { + isFullScreen = !!document.fullscreenElement; + updateFullscreenImage(); + }); + scaffolding.addControlButton({ + element: fullscreenButton, + where: 'top-right' + }); + } + scaffolding.addCloudProvider(new Scaffolding.Cloud.WebSocketProvider('wss://clouddata.turbowarp.org', PROJECT_ID)); const getProjectJSON = async () => {