defmodule DaProductAppWeb.SbomComponentOldLive do use DaProductAppWeb, :live_view import Logger alias DaProductApp.Users alias DaProductAppWeb.Router.Helpers, as: Routes # on_mount DaProductAppWeb.Live.SetCurrentPage @impl true def mount(_params, session, socket) do changeset = build_changeset() current_user = session["user_token"] |> Users.get_user_by_session_token() || nil socket = socket |> assign(:current_user, current_user) |> assign(:show_sidebar, true) # Enable sidebar for dashboard |> assign(:page_title, "SBOM Component") # Set the page title {:ok, assign(socket, modal: false, slide_over: false, group_size: "md", pagination_page: 1, total_pages: 10, form: to_form(changeset, as: :object), form2: to_form(changeset, as: :object2), show_childbom_spdx: false, show_checksum_details: false, active_tab: :live )} end def handle_event("toggle_childbom", _params, socket) do new_value = !socket.assigns.show_childbom_spdx {:noreply, assign(socket, show_childbom_spdx: new_value)} end def handle_event("toggle_checksum_type", %{"value" => "File"}, socket) do {:noreply, assign(socket, show_checksum_details: true)} end def handle_event("toggle_checksum_type", _params, socket) do {:noreply, assign(socket, show_checksum_details: false)} end @impl true def handle_event("validate", %{"object" => object_params}, socket) do changeset = object_params |> build_changeset() |> Map.put(:action, :validate) {:noreply, assign_form(socket, changeset)} end @impl true def handle_event("submit", %{"object" => object_params}, socket) do changeset = build_changeset(object_params) case validate_changeset(changeset) do {:ok, _object} -> socket = socket |> put_flash(:success, "Object successfully created") |> assign_form(build_changeset()) {:noreply, socket} {:error, changeset} -> socket = socket |> put_flash(:error, inspect(changeset.errors)) {:noreply, assign_form(socket, changeset)} end end defp assign_form(socket, changeset) do assign(socket, form: to_form(changeset, as: :object)) end defp build_changeset(params \\ %{}) do data = %{} types = %{ text: :string, select: :string, checkbox_group: {:array, :string}, radio_group: :string, textarea: :string, checkbox: :boolean, color: :string, date: :date, datetime: :naive_datetime, email: :string, file: :string, hidden: :string, month: :string, number: :integer, password: :string, radio: :string, range: :integer, search: :string, tel: :string, time: :time, url: :string, week: :string, switch: :boolean } {data, types} |> Ecto.Changeset.cast(params, Map.keys(types)) |> Ecto.Changeset.validate_required([:text]) |> Ecto.Changeset.validate_acceptance(:checkbox) |> Ecto.Changeset.validate_length(:text, min: 3, max: 50) end defp validate_changeset(changeset) do Ecto.Changeset.apply_action(changeset, :validate) end @impl true def handle_params(params, _uri, socket) do case socket.assigns.live_action do :index -> {:noreply, assign(socket, modal: false, slide_over: false)} :modal -> {:noreply, assign(socket, modal: params["size"])} :slide_over -> {:noreply, assign(socket, slide_over: params["origin"])} :pagination -> {:noreply, assign(socket, pagination_page: String.to_integer(params["page"]))} end end @impl true def render(assigns) do ~H"""
ACME-INFUSION-1.0-SBOM-DRAFT
Application Name
| Component Name | Version | Action |
|---|---|---|
| Example Component | 1.0 |