aboutsummaryrefslogtreecommitdiff
path: root/src_frontend/Components/Editor/Controls.svelte
diff options
context:
space:
mode:
authorJakob Stendahl <14180120+JakobST1n@users.noreply.github.com>2021-10-11 20:02:04 +0200
committerGitHub <noreply@github.com>2021-10-11 20:02:04 +0200
commitc67531161e56488166a33232f87566309ba8676e (patch)
tree846e59a020e80bea48557d5a06af5728e44961ff /src_frontend/Components/Editor/Controls.svelte
parente6880cd8ccf82d993f222cb14b4860581654acb8 (diff)
parentc1b6eec770b885a9829e1f62bad5cc99389ca429 (diff)
downloadLuxcena-Neo-c67531161e56488166a33232f87566309ba8676e.tar.gz
Luxcena-Neo-c67531161e56488166a33232f87566309ba8676e.zip
Merge pull request #24 from JakobST1n/rebuild
v1.0.0
Diffstat (limited to 'src_frontend/Components/Editor/Controls.svelte')
-rw-r--r--src_frontend/Components/Editor/Controls.svelte83
1 files changed, 83 insertions, 0 deletions
diff --git a/src_frontend/Components/Editor/Controls.svelte b/src_frontend/Components/Editor/Controls.svelte
new file mode 100644
index 0000000..302aa7a
--- /dev/null
+++ b/src_frontend/Components/Editor/Controls.svelte
@@ -0,0 +1,83 @@
+<script>
+ import { onMount } from "svelte";
+ import PrettyVar from "../../ComponentLib/PrettyVar.svelte";
+ import { openSocket } from "../../stores/socketStore";
+
+ let brightnessValue = 0;
+ let power_on = false;
+ let variables = {};
+
+ function setBrightness() {
+ if (!power_on) { openSocket.emit("power:set", true); }
+ openSocket.emit("brightness:set", brightnessValue);
+ }
+ function setPower() { openSocket.emit("power:set", power_on); }
+ function setVar(ev) {
+ openSocket.emit("var:set", ev.target.id, ev.target.value);
+ }
+
+ openSocket.on("power", (power) => power_on = power);
+ openSocket.on("brightness", (value) => brightnessValue = value);
+ openSocket.on("vars", (vars) => variables = vars);
+ openSocket.on("var", (name, value) => {
+ name = name.replace("variable/", "");
+ if (value.value == null) {
+ delete variables[name];
+ } else {
+ variables[name] = value;
+ }
+ variables = variables;
+ });
+
+ onMount(() => {
+ openSocket.emit("power:get");
+ openSocket.emit("brightness:get");
+ openSocket.emit("vars:get")
+ });
+</script>
+
+<style>
+ label {
+ width: 100%;
+ font-size: 12px;
+ color: var(--grey-500);
+ }
+ .var-group {
+ display: flex;
+ }
+ input[type=range] {
+ width: 100%;
+ }
+ input[type=text] {
+ margin-top: 5px;
+ display: block;
+ width: 100%;
+ background-color: #737373;
+ padding: 5px;
+ color: white;
+ border: none;
+ box-sizing: border-box;
+ border-radius: 5px;
+ }
+</style>
+
+<div>
+ <div class="var-group">
+ <label for="power">Power</label>
+ <input type="checkbox" id="power" bind:checked={power_on} on:change={setPower} />
+ </div>
+ <div>
+ <label for="brightness">Brightness</label>
+ <div class="var-group">
+ <input id="brightness" type="range" min=0 max=255 bind:value={brightnessValue} on:change={setBrightness} />
+ {brightnessValue}
+ </div>
+ </div>
+
+ {#each Object.entries(variables) as [name, value]}
+ <div>
+ <label for="{name}"><PrettyVar varText={name} /></label>
+ <input type="text" id="{name}" bind:value={value.value} on:blur={setVar} />
+ </div>
+ {/each}
+</div> \ No newline at end of file