diff --git a/lib/towerops_web/live/maintenance_live/form.ex b/lib/towerops_web/live/maintenance_live/form.ex index 2597882f..71a03ac1 100644 --- a/lib/towerops_web/live/maintenance_live/form.ex +++ b/lib/towerops_web/live/maintenance_live/form.ex @@ -1,4 +1,5 @@ defmodule ToweropsWeb.MaintenanceLive.Form do + @moduledoc false use ToweropsWeb, :live_view alias Towerops.Maintenance @@ -21,13 +22,14 @@ defmodule ToweropsWeb.MaintenanceLive.Form do def handle_params(params, _url, socket) do case socket.assigns.live_action do :new -> - changeset = MaintenanceWindow.changeset(%MaintenanceWindow{suppress_alerts: true}, %{}) + window = %MaintenanceWindow{suppress_alerts: true, recurring: false} + changeset = MaintenanceWindow.changeset(window, %{}) {:noreply, socket |> assign(:page_title, t("New Maintenance Window")) - |> assign(:window, %MaintenanceWindow{suppress_alerts: true, recurring: false}) - |> assign(:changeset, changeset) + |> assign(:window, window) + |> assign(:form, to_form(changeset)) |> assign(:scope_type, "org")} :edit -> @@ -46,7 +48,7 @@ defmodule ToweropsWeb.MaintenanceLive.Form do socket |> assign(:page_title, t("Edit Maintenance Window")) |> assign(:window, window) - |> assign(:changeset, changeset) + |> assign(:form, to_form(changeset)) |> assign(:scope_type, scope_type)} end end @@ -58,7 +60,7 @@ defmodule ToweropsWeb.MaintenanceLive.Form do |> MaintenanceWindow.changeset(params) |> Map.put(:action, :validate) - {:noreply, assign(socket, :changeset, changeset)} + {:noreply, assign(socket, :form, to_form(changeset))} end def handle_event("change_scope", %{"scope_type" => scope_type}, socket) do @@ -97,7 +99,7 @@ defmodule ToweropsWeb.MaintenanceLive.Form do |> push_navigate(to: ~p"/maintenance/#{window.id}")} {:error, changeset} -> - {:noreply, assign(socket, :changeset, changeset)} + {:noreply, assign(socket, :form, to_form(changeset))} end end @@ -110,7 +112,7 @@ defmodule ToweropsWeb.MaintenanceLive.Form do |> push_navigate(to: ~p"/maintenance/#{window.id}")} {:error, changeset} -> - {:noreply, assign(socket, :changeset, changeset)} + {:noreply, assign(socket, :form, to_form(changeset))} end end end diff --git a/lib/towerops_web/live/maintenance_live/form.html.heex b/lib/towerops_web/live/maintenance_live/form.html.heex index b60a0c3c..5a41b5eb 100644 --- a/lib/towerops_web/live/maintenance_live/form.html.heex +++ b/lib/towerops_web/live/maintenance_live/form.html.heex @@ -17,48 +17,35 @@
<.form - for={@changeset} + for={@form} phx-change="validate" phx-submit="save" id="maintenance-form" >
<%!-- Name --%> -
- - - <%= for {msg, _} <- (@changeset.errors[:name] || []) do %> -

{msg}

- <% end %> -
+ <.input + field={@form[:name]} + type="text" + label={t("Name") <> " *"} + required + placeholder={t("e.g., Tower firmware upgrade")} + /> <%!-- Reason --%> -
- - -
+ <.input + field={@form[:reason]} + type="textarea" + label={t("Reason")} + rows="3" + placeholder={t("Optional description of the maintenance work")} + /> <%!-- Scope --%>
- +
<%!-- Time Range --%>
-
- - - <%= for {msg, _} <- (@changeset.errors[:starts_at] || []) do %> -

{msg}

- <% end %> -
-
- - - <%= for {msg, _} <- (@changeset.errors[:ends_at] || []) do %> -

{msg}

- <% end %> -
+ <.input + field={@form[:starts_at]} + type="datetime-local" + label={t("Starts At") <> " *"} + required + value={format_datetime_local(@form[:starts_at].value)} + /> + <.input + field={@form[:ends_at]} + type="datetime-local" + label={t("Ends At") <> " *"} + required + value={format_datetime_local(@form[:ends_at].value)} + />
<%!-- Suppress Alerts --%> -
- -
+ <.input + field={@form[:suppress_alerts]} + type="checkbox" + label={t("Suppress alerts during this window")} + /> <%!-- Recurring --%> -
- -
+ <.input + field={@form[:recurring]} + type="checkbox" + label={t("Recurring")} + /> <%!-- Recurrence Rule --%> - <%= if Ecto.Changeset.get_field(@changeset, :recurring) == true do %> -
- - -
+ <%= if Phoenix.HTML.Form.input_value(@form, :recurring) == true do %> + <.input + field={@form[:recurrence_rule]} + type="text" + label={t("Recurrence Rule")} + placeholder={t("e.g., FREQ=WEEKLY;BYDAY=SU")} + /> <% end %> <%!-- Submit --%>