From c0da209caca1460b1bf4092e8f4a7986543071f6 Mon Sep 17 00:00:00 2001 From: Harshad Sharma Date: Wed, 22 May 2024 01:00:43 +0530 Subject: [PATCH] Add enable/disable service commands --- lib/freedive/api/service/server.ex | 8 +++++ lib/freedive_web/live/service_live.ex | 42 +++++++++++++++++++++++++-- 2 files changed, 47 insertions(+), 3 deletions(-) diff --git a/lib/freedive/api/service/server.ex b/lib/freedive/api/service/server.ex index 8da5c47..cdbac54 100644 --- a/lib/freedive/api/service/server.ex +++ b/lib/freedive/api/service/server.ex @@ -34,6 +34,14 @@ defmodule Freedive.Api.Service do GenServer.call(__MODULE__, {:list}) end + def enable(name) do + GenServer.cast(__MODULE__, {:command, name, "enable"}) + end + + def disable(name) do + GenServer.cast(__MODULE__, {:command, name, "disable"}) + end + def start(name) do GenServer.cast(__MODULE__, {:command, name, "start"}) end diff --git a/lib/freedive_web/live/service_live.ex b/lib/freedive_web/live/service_live.ex index b12c8a9..fd49b28 100644 --- a/lib/freedive_web/live/service_live.ex +++ b/lib/freedive_web/live/service_live.ex @@ -51,8 +51,10 @@ defmodule FreediveWeb.ServiceLive do end def handle_event("action:" <> action, %{"name" => service_name}, socket) - when action in ["start", "stop", "restart"] do + when action in ["enable", "disable", "start", "stop", "restart"] do case action do + "enable" -> Service.enable(service_name) + "disable" -> Service.disable(service_name) "start" -> Service.start(service_name) "stop" -> Service.stop(service_name) "restart" -> Service.restart(service_name) @@ -160,8 +162,9 @@ defmodule FreediveWeb.ServiceLive.Components do <.back_link selected_item={@selected_item} /> <.service_header selected_item={@selected_item} /> <.std_log selected_item={@selected_item} /> - <.basic_commands selected_item={@selected_item} /> <.extra_commands selected_item={@selected_item} /> + <.start_stop_commands selected_item={@selected_item} /> + <.enable_disable_commands selected_item={@selected_item} /> """ end @@ -228,7 +231,40 @@ defmodule FreediveWeb.ServiceLive.Components do """ end - def basic_commands(assigns) do + def enable_disable_commands(assigns) do + ~H""" + <.panel_block_div> + <%= if @selected_item.enabled do %> + <.icon_raw for="enabled" color="lightgreen" size="1.5rem" class="ml-2 mr-5" aria-hidden="true" /> + <% else %> + <.icon_raw for="disabled" color="gray" size="1.5rem" class="ml-2 mr-5" aria-hidden="true" /> + <% end %> +
+ <%= if @selected_item.enabled do %> + + <% else %> + + <% end %> +
+ + """ + end + + def start_stop_commands(assigns) do ~H""" <.panel_block_div> <%= if @selected_item.running do %>