diff --git a/example_project/assets/svelte/LightControllers.svelte b/example_project/assets/svelte/LightControllers.svelte new file mode 100644 index 0000000..ecb5959 --- /dev/null +++ b/example_project/assets/svelte/LightControllers.svelte @@ -0,0 +1,60 @@ + + +
+ +
+ + +
+
diff --git a/example_project/assets/svelte/LightStatusBar.svelte b/example_project/assets/svelte/LightStatusBar.svelte new file mode 100644 index 0000000..aac948b --- /dev/null +++ b/example_project/assets/svelte/LightStatusBar.svelte @@ -0,0 +1,52 @@ + + + +
+
+ {brightness > 0 ? `${brightness}%` : "OFF"} +
+
+ + diff --git a/example_project/lib/example/application.ex b/example_project/lib/example/application.ex index c44835f..1d14433 100644 --- a/example_project/lib/example/application.ex +++ b/example_project/lib/example/application.ex @@ -8,7 +8,8 @@ defmodule Example.Application do @impl true def start(_type, _args) do children = [ - {NodeJS.Supervisor, [path: Application.app_dir(:example, "/priv/static/assets"), pool_size: 4]}, + {NodeJS.Supervisor, + [path: Application.app_dir(:example, "/priv/static/assets"), pool_size: 4]}, # Start the Telemetry supervisor ExampleWeb.Telemetry, # Start the Ecto repository diff --git a/example_project/lib/example_web/components/layouts/app.html.heex b/example_project/lib/example_web/components/layouts/app.html.heex index 0c4cbe0..05a06de 100644 --- a/example_project/lib/example_web/components/layouts/app.html.heex +++ b/example_project/lib/example_web/components/layouts/app.html.heex @@ -27,41 +27,47 @@ 2 3 4 5 6 7 8 + + 9 +
+

Light Bulb Controller

+ + +
+ """ + end + + def handle_event("up", _, socket) do + brightness = socket.assigns.brightness + Logger.info(brightness) + + case brightness do + 100 -> + {:noreply, socket} + + _ -> + new_brightness = brightness + 10 + {:noreply, assign(socket, %{brightness: new_brightness, previous: brightness})} + end + end + + def handle_event("down", _, socket) do + brightness = socket.assigns.brightness + Logger.info(brightness) + + case brightness do + 0 -> + {:noreply, socket} + + _ -> + new_brightness = brightness - 10 + {:noreply, assign(socket, %{brightness: new_brightness, previous: brightness})} + end + end + + def handle_event("on", _, socket) do + previous = socket.assigns.previous + brightness = socket.assigns.brightness + {:noreply, assign(socket, %{brightness: previous, previous: brightness})} + end + + def handle_event("off", _, socket) do + previous = socket.assigns.brightness + {:noreply, assign(socket, %{brightness: 0, previous: previous})} + end + + defp isOn?(brightness) do + brightness > 0 + end +end diff --git a/example_project/lib/example_web/router.ex b/example_project/lib/example_web/router.ex index 88d630b..68ceb3f 100644 --- a/example_project/lib/example_web/router.ex +++ b/example_project/lib/example_web/router.ex @@ -26,6 +26,7 @@ defmodule ExampleWeb.Router do live "/log-list", LiveExample4 live "/breaking-news", LiveExample5 live "/chat", LiveExample6 + live "/lights", LiveLights end # Other scopes may use custom stacks.