aboutsummaryrefslogtreecommitdiff
path: root/src_frontend
diff options
context:
space:
mode:
Diffstat (limited to 'src_frontend')
-rw-r--r--src_frontend/Components/Editor/Controls.svelte2
-rw-r--r--src_frontend/Components/Editor/Editor.svelte3
-rw-r--r--src_frontend/Components/Editor/Simulation.svelte82
3 files changed, 84 insertions, 3 deletions
diff --git a/src_frontend/Components/Editor/Controls.svelte b/src_frontend/Components/Editor/Controls.svelte
index 4b5c8b6..85450a5 100644
--- a/src_frontend/Components/Editor/Controls.svelte
+++ b/src_frontend/Components/Editor/Controls.svelte
@@ -23,7 +23,6 @@
openSocket.on("power", (power) => power_on = power);
openSocket.on("brightness", (value) => brightnessValue = value);
openSocket.on("vars", (vars) => variables = vars);
- openSocket.on("vars", (vars) => console.log(vars));
openSocket.on("var", (name, value) => {
name = name.replace("variable/", "");
if (value.value == null) {
@@ -32,7 +31,6 @@
variables[name] = value;
}
variables = variables;
- console.log(variables);
});
onMount(() => {
diff --git a/src_frontend/Components/Editor/Editor.svelte b/src_frontend/Components/Editor/Editor.svelte
index b63ee9b..1876bf6 100644
--- a/src_frontend/Components/Editor/Editor.svelte
+++ b/src_frontend/Components/Editor/Editor.svelte
@@ -13,6 +13,7 @@
import ControlComponents from "../MainControls/ControlComponents.svelte";
import Controls from "./Controls.svelte";
import Output from "./Output.svelte";
+ import Simulation from "./Simulation.svelte";
import { authorizedSocket, authorizedSocketNeeded } from "../../stores/socketStore";
authorizedSocketNeeded.set(true);
@@ -276,12 +277,12 @@
<main use:initDebugger>
<div class="simulation">
<Pane header="simulation">
+ <Simulation />
</Pane>
</div>
<div class="controls">
<Pane header="Controls">
- <!-- <ControlComponents /> -->
<Controls />
</Pane>
</div>
diff --git a/src_frontend/Components/Editor/Simulation.svelte b/src_frontend/Components/Editor/Simulation.svelte
new file mode 100644
index 0000000..aba5cdd
--- /dev/null
+++ b/src_frontend/Components/Editor/Simulation.svelte
@@ -0,0 +1,82 @@
+<script>
+ import { onMount } from "svelte";
+ import { authorizedSocket, authorizedSocketNeeded } from "../../stores/socketStore";
+ authorizedSocketNeeded.set(true);
+
+ let pixels = [];
+ let strip_buffer = [];
+
+ let gridTemplateColumns = "1fr";
+ let gridTemplateRows = "1fr";
+
+ function updateMatrix(matrix) {
+ if (matrix == null) { return; }
+ pixels = [];
+ let columnN = 0;
+ for (let y = 0; y < matrix.length; y++) {
+ if (matrix[y].length > columnN) {
+ columnN = matrix[y].length;
+ }
+ }
+
+ for (let y = 0; y < matrix.length; y++) {
+ for (let x = 0; x < matrix[y].length; x++) {
+ pixels.push(matrix[y][x]);
+ }
+ for (let x = 0; x < (columnN - matrix[y].length); x++) {
+ pixels.push(-1);
+ }
+ }
+ gridTemplateColumns = `repeat(${columnN}, 1fr)`;
+ gridTemplateRows = `repeat(${matrix.length}, 1fr)`;
+ pixels = pixels;
+ }
+
+ async function updateColors(colors) {
+ for (let i = 0; i+2 < colors.length; i+=3) {
+ try {
+ document.querySelector("#sim-pixel-"+(i/3)).style.setProperty("--color", `rgb(${colors[i]}, ${colors[i+1]}, ${colors[i+2]})`);
+ } catch(e) {}
+ }
+ }
+
+ authorizedSocket.on("matrix", updateMatrix);
+ authorizedSocket.on("strip_buffer", updateColors);
+
+ onMount(() => {
+ authorizedSocket.emit("matrix:get");
+ });
+
+</script>
+
+<style>
+ .matrix {
+ display: grid;
+ width: 100%;
+ gap: 10px 10px;
+ }
+ .pixel {
+ display: inline-block;
+ width: 100%;
+ height: 5px;
+ background-color: var(--color);
+ box-shadow: 0 0 10px var(--color);
+ }
+ p {
+ margin: 0;
+ margin-bottom: 5px;
+ font-size: 10px;
+ color: var(--grey-500);
+ }
+</style>
+
+<p>(still quite buggy, especially for very fast changing pixels, if nothing is happening, try to restart the script)</p>
+<div class="matrix" style="grid-template-columns: {gridTemplateColumns}; grid-template-rows: {gridTemplateRows};">
+ {#each pixels as pixel}
+ {#if pixel > -1}
+ <div id="sim-pixel-{pixel}" style="--color:rgb(255, 255, 255)" class="pixel"></div>
+ {:else}
+ <div style="--color:none" class="pixel"></div>
+ {/if}
+ {/each}
+</div> \ No newline at end of file