defmodule GustWeb.DagRunComponents do @moduledoc false use Phoenix.Component use Gettext, backend: GustWeb.Gettext attr :status, :atom, required: true attr :rest, :global, doc: "data-testid, etc." def status_badge(assigns) do ~H"""
"badge-success" :failed -> "badge-error" :upstream_failed -> "badge-warning" _ -> "badge-info" end ]} > {@status}
""" end attr :level, :string, required: true def log_badge(assigns) do ~H"""
"badge-info" "info" -> "badge-info" "warn" -> "badge-warning" "error" -> "badge-error" end ]}> {@level}
""" end attr :id, :string, required: true attr :selected, :string attr :status, :string def task_cell(assigns) do assigns = assign_new(assigns, :classes, fn -> base_classes = if assigns[:status], do: ["status-#{assigns[:status]}", "active"], else: ["status-none"] classes = base_classes ++ if assigns[:selected], do: ["selected"], else: [] Enum.join(classes, " ") end) ~H"""
""" end attr :run_id, :string, required: true attr :ran_tasks, :list, required: true attr :name, :string, required: true attr :selected_task, :map, required: true attr :navigate, :string, required: true attr :rest, :global def interactive_task_cell(assigns) do assigns = assign_new(assigns, :current_task_ran, fn -> assigns[:ran_tasks] |> Enum.find(&(&1.name == assigns[:name])) end) if assigns[:current_task_ran] do ~H""" <.link navigate={@navigate} {@rest}> <.task_cell selected={if @selected_task, do: @selected_task.id == @current_task_ran.id, else: false} status={@current_task_ran.status} id={"#{@name}-at-run-#{@run_id}"} /> """ else ~H""" <.task_cell id={"#{@name}-at-run-#{@run_id}"} /> """ end end end