defmodule ToweropsWeb.MaintenanceLive.Index do @moduledoc false use ToweropsWeb, :live_view alias Towerops.Maintenance alias ToweropsWeb.MaintenanceLive.Helpers @impl true def mount(_params, _session, socket) do organization = socket.assigns.current_scope.organization {:ok, socket |> assign(:page_title, t("Maintenance Windows")) |> assign(:filter, "all") |> assign(:timezone, socket.assigns.current_scope.timezone) |> load_windows(organization.id)} end @impl true def handle_params(params, _url, socket) do filter = Map.get(params, "filter", "all") {:noreply, socket |> assign(:filter, filter) |> load_windows(socket.assigns.current_scope.organization.id)} end defp load_windows(socket, org_id) do filter_atom = case socket.assigns.filter do "active" -> :active "upcoming" -> :upcoming "past" -> :past _ -> nil end opts = if filter_atom, do: [filter: filter_atom], else: [] windows = Maintenance.list_windows(org_id, opts) assign(socket, :windows, windows) end defdelegate status_for(window), to: Helpers defdelegate scope_label(window), to: Helpers defdelegate format_datetime(dt, timezone), to: Helpers defdelegate status_label(status), to: Helpers end