diff --git a/lib/mv_web/components/layouts.ex b/lib/mv_web/components/layouts.ex index ba8ec67..1495bb1 100644 --- a/lib/mv_web/components/layouts.ex +++ b/lib/mv_web/components/layouts.ex @@ -8,6 +8,8 @@ defmodule MvWeb.Layouts do in regular views and live views. """ use MvWeb, :html + use Gettext, backend: MvWeb.Gettext + import MvWeb.Layouts.Navbar embed_templates "layouts/*" @@ -19,7 +21,7 @@ defmodule MvWeb.Layouts do

Content

- + """ attr :flash, :map, required: true, doc: "the map of flash messages" @@ -31,44 +33,9 @@ defmodule MvWeb.Layouts do def app(assigns) do ~H""" - - -
-
+ <.navbar /> +
+
{render_slot(@inner_block)}
@@ -119,38 +86,4 @@ defmodule MvWeb.Layouts do
""" end - - @doc """ - Provides dark vs light theme toggle based on themes defined in app.css. - - See in root.html.heex which applies the theme before page load. - """ - def theme_toggle(assigns) do - ~H""" -
-
- - - - - - -
- """ - end end diff --git a/lib/mv_web/components/layouts/navbar.ex b/lib/mv_web/components/layouts/navbar.ex new file mode 100644 index 0000000..b917ddc --- /dev/null +++ b/lib/mv_web/components/layouts/navbar.ex @@ -0,0 +1,80 @@ +defmodule MvWeb.Layouts.Navbar do + @moduledoc """ + Navbar that is used in the rootlayout shown on every page + """ + use Phoenix.Component + use Gettext, backend: MvWeb.Gettext + + def navbar(assigns) do + ~H""" + + """ + end +end diff --git a/lib/mv_web/components/table_components.ex b/lib/mv_web/components/table_components.ex new file mode 100644 index 0000000..ed94994 --- /dev/null +++ b/lib/mv_web/components/table_components.ex @@ -0,0 +1,44 @@ +defmodule MvWeb.TableComponents do + @moduledoc """ + TableComponents that can be used in tables as components (like a button for sorting, a filter...) + """ + use Phoenix.Component + import MvWeb.CoreComponents + use Gettext, backend: MvWeb.Gettext + + attr :field, :atom, required: true + attr :label, :string, required: true + attr :sort_field, :atom, default: nil + attr :sort_order, :atom, default: nil + + @doc """ + A sort button (with chevron icon) that can be used to sort a list of items + """ + def sort_button(assigns) do + ~H""" + + """ + end + + defp aria_sort(current_field, current_order, this_field) do + cond do + current_field != this_field -> "none" + current_order == :asc -> "ascending" + true -> "descending" + end + end +end diff --git a/lib/mv_web/live/member_live/index.ex b/lib/mv_web/live/member_live/index.ex index 1cff898..476abd1 100644 --- a/lib/mv_web/live/member_live/index.ex +++ b/lib/mv_web/live/member_live/index.ex @@ -1,58 +1,19 @@ defmodule MvWeb.MemberLive.Index do use MvWeb, :live_view - - @impl true - def render(assigns) do - ~H""" - - <.header> - {gettext("Listing Members")} - <:actions> - <.button variant="primary" navigate={~p"/members/new"}> - <.icon name="hero-plus" /> {gettext("New Member")} - - - - - <.table - id="members" - rows={@streams.members} - row_click={fn {_id, member} -> JS.navigate(~p"/members/#{member}") end} - > - - <:col :let={{_id, member}} label={gettext("First Name")}>{member.first_name} - <:col :let={{_id, member}} label={gettext("Last Name")}>{member.last_name} - <:col :let={{_id, member}} label={gettext("Email")}>{member.email} - <:col :let={{_id, member}} label={gettext("City")}>{member.city} - <:col :let={{_id, member}} label={gettext("Join Date")}>{member.join_date} - - <:action :let={{_id, member}}> -
- <.link navigate={~p"/members/#{member}"}>{gettext("Show")} -
- - <.link navigate={~p"/members/#{member}/edit"}>{gettext("Edit")} - - - <:action :let={{id, member}}> - <.link - phx-click={JS.push("delete", value: %{id: member.id}) |> hide("##{id}")} - data-confirm={gettext("Are you sure?")} - > - {gettext("Delete")} - - - -
- """ - end + import MvWeb.TableComponents @impl true def mount(_params, _session, socket) do + members = Ash.read!(Mv.Membership.Member) + sorted = Enum.sort_by(members, & &1.first_name) + {:ok, socket - |> assign(:page_title, gettext("Listing Members")) - |> stream(:members, Ash.read!(Mv.Membership.Member))} + |> assign(:page_title, gettext("Members")) + |> assign(:sort_field, :first_name) + |> assign(:sort_order, :asc) + |> assign(:members, sorted) + |> assign(:selected_members, [])} end @impl true @@ -62,4 +23,64 @@ defmodule MvWeb.MemberLive.Index do {:noreply, stream_delete(socket, :members, member)} end + + # Selects one member in the list of members + @impl true + def handle_event("select_member", %{"id" => id}, socket) do + selected = + if id in socket.assigns.selected_members do + List.delete(socket.assigns.selected_members, id) + else + [id | socket.assigns.selected_members] + end + + {:noreply, assign(socket, :selected_members, selected)} + end + + # Sorts the list of members according to a field, when you click on the column header + @impl true + def handle_event("sort", %{"field" => field_str}, socket) do + members = socket.assigns.members + field = String.to_existing_atom(field_str) + + new_order = + if socket.assigns.sort_field == field do + toggle_order(socket.assigns.sort_order) + else + :asc + end + + sorted_members = + members + |> Enum.sort_by(&Map.get(&1, field), sort_fun(new_order)) + + {:noreply, + socket + |> assign(:sort_field, field) + |> assign(:sort_order, new_order) + |> assign(:members, sorted_members)} + end + + # Selects all members in the list of members + + @impl true + def handle_event("select_all", _params, socket) do + members = socket.assigns.members + + all_ids = Enum.map(members, & &1.id) + + selected = + if Enum.sort(socket.assigns.selected_members) == Enum.sort(all_ids) do + [] + else + all_ids + end + + {:noreply, assign(socket, :selected_members, selected)} + end + + defp toggle_order(:asc), do: :desc + defp toggle_order(:desc), do: :asc + defp sort_fun(:asc), do: &<=/2 + defp sort_fun(:desc), do: &>=/2 end diff --git a/lib/mv_web/live/member_live/index.html.heex b/lib/mv_web/live/member_live/index.html.heex new file mode 100644 index 0000000..fc38889 --- /dev/null +++ b/lib/mv_web/live/member_live/index.html.heex @@ -0,0 +1,83 @@ + + <.header> + {gettext("Members")} + <:actions> + <.button variant="primary" navigate={~p"/members/new"}> + <.icon name="hero-plus" /> {gettext("New Member")} + + + + + <.table + id="members" + rows={@members} + row_click={fn member -> JS.navigate(~p"/members/#{member}") end} + > + + + <:col + :let={member} + label={ + ~H""" + <.input + type="checkbox" + name="select_all" + phx-click="select_all" + checked={Enum.sort(@selected_members) == Enum.map(@members, & &1.id) |> Enum.sort()} + aria-label={gettext("Select all members")} + role="checkbox" + /> + """ + } + > + <.input + type="checkbox" + name={member.id} + phx-click="select_member" + phx-value-id={member.id} + checked={member.id in @selected_members} + phx-capture-click + phx-stop-propagation + aria-label={gettext("Select member")} + role="checkbox" + /> + + <:col + :let={member} + label={ + sort_button(%{ + field: :first_name, + label: gettext("Name"), + sort_field: @sort_field, + sort_order: @sort_order + }) + } + > + {member.first_name} {member.last_name} + + <:col :let={member} label={gettext("Email")}>{member.email} + <:col :let={member} label={gettext("Street")}>{member.street} + <:col :let={member} label={gettext("House Number")}>{member.house_number} + <:col :let={member} label={gettext("Postal Code")}>{member.postal_code} + <:col :let={member} label={gettext("City")}>{member.city} + <:col :let={member} label={gettext("Phone Number")}>{member.phone_number} + <:col :let={member} label={gettext("Join Date")}>{member.join_date} + + <:action :let={member}> +
+ <.link navigate={~p"/members/#{member}"}>{gettext("Show")} +
+ + <.link navigate={~p"/members/#{member}/edit"}>{gettext("Edit")} + + + <:action :let={member}> + <.link + phx-click={JS.push("delete", value: %{id: member.id}) |> hide("#row-#{member.id}")} + data-confirm={gettext("Are you sure?")} + > + {gettext("Delete")} + + + +
diff --git a/mix.lock b/mix.lock index bbb190e..ce26802 100644 --- a/mix.lock +++ b/mix.lock @@ -1,5 +1,5 @@ %{ - "ash": {:hex, :ash, "3.5.27", "bfa227b75da2b447d1b98e16a19b2fa957fe32bef33dfe33aa93b861a532c641", [:mix], [{:decimal, "~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:ecto, "~> 3.7", [hex: :ecto, repo: "hexpm", optional: false]}, {:ets, "~> 0.8", [hex: :ets, repo: "hexpm", optional: false]}, {:igniter, ">= 0.6.4 and < 1.0.0-0", [hex: :igniter, repo: "hexpm", optional: true]}, {:jason, ">= 1.0.0", [hex: :jason, repo: "hexpm", optional: false]}, {:picosat_elixir, "~> 0.2", [hex: :picosat_elixir, repo: "hexpm", optional: true]}, {:plug, ">= 0.0.0", [hex: :plug, repo: "hexpm", optional: true]}, {:reactor, "~> 0.11", [hex: :reactor, repo: "hexpm", optional: false]}, {:simple_sat, ">= 0.1.1 and < 1.0.0-0", [hex: :simple_sat, repo: "hexpm", optional: true]}, {:spark, ">= 2.2.65 and < 3.0.0-0", [hex: :spark, repo: "hexpm", optional: false]}, {:splode, ">= 0.2.6 and < 1.0.0-0", [hex: :splode, repo: "hexpm", optional: false]}, {:stream_data, "~> 1.0", [hex: :stream_data, repo: "hexpm", optional: false]}, {:telemetry, "~> 1.1", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "f75694b0012e4e56293e1beef1d6c20a52f2f2c9baebfa5c8f2426d25d43608e"}, + "ash": {:hex, :ash, "3.5.30", "6af633be79a521783e551d469dede6d996301fb29839f57b88c6cae3c7735cfd", [:mix], [{:decimal, "~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:ecto, "~> 3.7", [hex: :ecto, repo: "hexpm", optional: false]}, {:ets, "~> 0.8", [hex: :ets, repo: "hexpm", optional: false]}, {:igniter, ">= 0.6.4 and < 1.0.0-0", [hex: :igniter, repo: "hexpm", optional: true]}, {:jason, ">= 1.0.0", [hex: :jason, repo: "hexpm", optional: false]}, {:picosat_elixir, "~> 0.2", [hex: :picosat_elixir, repo: "hexpm", optional: true]}, {:plug, ">= 0.0.0", [hex: :plug, repo: "hexpm", optional: true]}, {:reactor, "~> 0.11", [hex: :reactor, repo: "hexpm", optional: false]}, {:simple_sat, ">= 0.1.1 and < 1.0.0-0", [hex: :simple_sat, repo: "hexpm", optional: true]}, {:spark, ">= 2.2.65 and < 3.0.0-0", [hex: :spark, repo: "hexpm", optional: false]}, {:splode, ">= 0.2.6 and < 1.0.0-0", [hex: :splode, repo: "hexpm", optional: false]}, {:stream_data, "~> 1.0", [hex: :stream_data, repo: "hexpm", optional: false]}, {:telemetry, "~> 1.1", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "e62128da67b55af37abd39fbc05059176e9bd5256fb66b345b4e86579f1d659f"}, "ash_admin": {:hex, :ash_admin, "0.13.12", "5d4bb5e64b1aca7ae0086411a3cafc3afba6d42699944408ef1075b32fc244af", [:mix], [{:ash, ">= 3.4.63 and < 4.0.0-0", [hex: :ash, repo: "hexpm", optional: false]}, {:ash_phoenix, ">= 2.1.8 and < 3.0.0-0", [hex: :ash_phoenix, repo: "hexpm", optional: false]}, {:gettext, "~> 0.26", [hex: :gettext, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}, {:phoenix, "~> 1.7", [hex: :phoenix, repo: "hexpm", optional: false]}, {:phoenix_html, "~> 4.1", [hex: :phoenix_html, repo: "hexpm", optional: false]}, {:phoenix_live_view, "~> 1.1-rc", [hex: :phoenix_live_view, repo: "hexpm", optional: false]}, {:phoenix_view, "~> 2.0", [hex: :phoenix_view, repo: "hexpm", optional: false]}], "hexpm", "821c94ba7066948327dc3d9f2a1a32a9ffd42db95b13ad3b650f194157591503"}, "ash_authentication": {:hex, :ash_authentication, "4.9.7", "1e7cbd21597c34cc37bd1f6a81b8a4cde15c9c555fbff2457887e3484433d399", [:mix], [{:argon2_elixir, "~> 4.0", [hex: :argon2_elixir, repo: "hexpm", optional: true]}, {:ash, ">= 3.4.29 and < 4.0.0-0", [hex: :ash, repo: "hexpm", optional: false]}, {:ash_postgres, ">= 2.6.8 and < 3.0.0-0", [hex: :ash_postgres, repo: "hexpm", optional: true]}, {:assent, "~> 0.2.13", [hex: :assent, repo: "hexpm", optional: false]}, {:bcrypt_elixir, "~> 3.0", [hex: :bcrypt_elixir, repo: "hexpm", optional: false]}, {:castore, "~> 1.0", [hex: :castore, repo: "hexpm", optional: false]}, {:finch, "~> 0.19", [hex: :finch, repo: "hexpm", optional: false]}, {:igniter, "~> 0.4", [hex: :igniter, repo: "hexpm", optional: true]}, {:jason, "~> 1.4", [hex: :jason, repo: "hexpm", optional: false]}, {:joken, "~> 2.5", [hex: :joken, repo: "hexpm", optional: false]}, {:plug, "~> 1.13", [hex: :plug, repo: "hexpm", optional: false]}, {:spark, "~> 2.0", [hex: :spark, repo: "hexpm", optional: false]}, {:splode, "~> 0.2", [hex: :splode, repo: "hexpm", optional: false]}], "hexpm", "26483e61a846d17a68f4aa0bc686fb3bcb6f98955978121b4baa610f2701268d"}, "ash_authentication_phoenix": {:hex, :ash_authentication_phoenix, "2.10.3", "b3c32e51a77eefc02c155eccdd17f1b697da3314fb40102854dcdd79288325b7", [:mix], [{:ash, "~> 3.0", [hex: :ash, repo: "hexpm", optional: false]}, {:ash_authentication, ">= 4.9.1 and < 5.0.0-0", [hex: :ash_authentication, repo: "hexpm", optional: false]}, {:ash_phoenix, "~> 2.0", [hex: :ash_phoenix, repo: "hexpm", optional: false]}, {:bcrypt_elixir, "~> 3.0", [hex: :bcrypt_elixir, repo: "hexpm", optional: false]}, {:gettext, "~> 0.26", [hex: :gettext, repo: "hexpm", optional: true]}, {:igniter, ">= 0.5.25 and < 1.0.0-0", [hex: :igniter, repo: "hexpm", optional: true]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}, {:phoenix, "~> 1.6", [hex: :phoenix, repo: "hexpm", optional: false]}, {:phoenix_html, "~> 4.0", [hex: :phoenix_html, repo: "hexpm", optional: false]}, {:phoenix_html_helpers, "~> 1.0", [hex: :phoenix_html_helpers, repo: "hexpm", optional: false]}, {:phoenix_live_view, "~> 1.0", [hex: :phoenix_live_view, repo: "hexpm", optional: false]}, {:phoenix_view, "~> 2.0", [hex: :phoenix_view, repo: "hexpm", optional: false]}, {:slugify, "~> 1.3", [hex: :slugify, repo: "hexpm", optional: false]}], "hexpm", "89be0de638123193933a54ae15b9d1c670bb4010775c38b2b22a99180ecc1ac3"}, @@ -24,18 +24,16 @@ "elixir_make": {:hex, :elixir_make, "0.9.0", "6484b3cd8c0cee58f09f05ecaf1a140a8c97670671a6a0e7ab4dc326c3109726", [:mix], [], "hexpm", "db23d4fd8b757462ad02f8aa73431a426fe6671c80b200d9710caf3d1dd0ffdb"}, "esbuild": {:hex, :esbuild, "0.10.0", "b0aa3388a1c23e727c5a3e7427c932d89ee791746b0081bbe56103e9ef3d291f", [:mix], [{:jason, "~> 1.4", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "468489cda427b974a7cc9f03ace55368a83e1a7be12fba7e30969af78e5f8c70"}, "ets": {:hex, :ets, "0.9.0", "79c6a6c205436780486f72d84230c6cba2f8a9920456750ddd1e47389107d5fd", [:mix], [], "hexpm", "2861fdfb04bcaeff370f1a5904eec864f0a56dcfebe5921ea9aadf2a481c822b"}, - "ex_phone_number": {:hex, :ex_phone_number, "0.4.5", "2065cc48c3e9d1ed9821f50877c32f2f6898362cb990f44147ca217c5d1374ed", [:mix], [{:sweet_xml, "~> 0.7", [hex: :sweet_xml, repo: "hexpm", optional: false]}], "hexpm", "67163f8706f8cbfef1b1f4b9230c461f19786d0d79fd0b22cbeeefc6f0b99d4a"}, + "ex_phone_number": {:hex, :ex_phone_number, "0.4.8", "c1c5e6f0673822a2a7b439b43af7d3eb1a5c19ae582b772b8b8d12625dd51ec1", [:mix], [{:sweet_xml, "~> 0.7", [hex: :sweet_xml, repo: "hexpm", optional: false]}], "hexpm", "43e2357c6b8cfe556bcd417f4ce9aaef267a786e31a2938902daaa0d36f69757"}, "expo": {:hex, :expo, "1.1.0", "f7b9ed7fb5745ebe1eeedf3d6f29226c5dd52897ac67c0f8af62a07e661e5c75", [:mix], [], "hexpm", "fbadf93f4700fb44c331362177bdca9eeb8097e8b0ef525c9cc501cb9917c960"}, "file_system": {:hex, :file_system, "1.1.0", "08d232062284546c6c34426997dd7ef6ec9f8bbd090eb91780283c9016840e8f", [:mix], [], "hexpm", "bfcf81244f416871f2a2e15c1b515287faa5db9c6bcf290222206d120b3d43f6"}, "finch": {:hex, :finch, "0.20.0", "5330aefb6b010f424dcbbc4615d914e9e3deae40095e73ab0c1bb0968933cadf", [:mix], [{:mime, "~> 1.0 or ~> 2.0", [hex: :mime, repo: "hexpm", optional: false]}, {:mint, "~> 1.6.2 or ~> 1.7", [hex: :mint, repo: "hexpm", optional: false]}, {:nimble_options, "~> 0.4 or ~> 1.0", [hex: :nimble_options, repo: "hexpm", optional: false]}, {:nimble_pool, "~> 1.1", [hex: :nimble_pool, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "2658131a74d051aabfcba936093c903b8e89da9a1b63e430bee62045fa9b2ee2"}, "fine": {:hex, :fine, "0.1.1", "df2ce44e438bed0061627e10c470873c69374ee7390a51bc612c2358ad37d556", [:mix], [], "hexpm", "41335526b82cf2c196d2588cd54d4504480e2e6ead24f2c07ae0c1cf40af61e5"}, - "floki": {:hex, :floki, "0.38.0", "62b642386fa3f2f90713f6e231da0fa3256e41ef1089f83b6ceac7a3fd3abf33", [:mix], [], "hexpm", "a5943ee91e93fb2d635b612caf5508e36d37548e84928463ef9dd986f0d1abd9"}, "gettext": {:hex, :gettext, "0.26.2", "5978aa7b21fada6deabf1f6341ddba50bc69c999e812211903b169799208f2a8", [:mix], [{:expo, "~> 0.5.1 or ~> 1.0", [hex: :expo, repo: "hexpm", optional: false]}], "hexpm", "aa978504bcf76511efdc22d580ba08e2279caab1066b76bb9aa81c4a1e0a32a5"}, "glob_ex": {:hex, :glob_ex, "0.1.11", "cb50d3f1ef53f6ca04d6252c7fde09fd7a1cf63387714fe96f340a1349e62c93", [:mix], [], "hexpm", "342729363056e3145e61766b416769984c329e4378f1d558b63e341020525de4"}, "heroicons": {:git, "https://github.com/tailwindlabs/heroicons.git", "0435d4ca364a608cc75e2f8683d374e55abbae26", [tag: "v2.2.0", sparse: "optimized", depth: 1]}, "hpax": {:hex, :hpax, "1.0.3", "ed67ef51ad4df91e75cc6a1494f851850c0bd98ebc0be6e81b026e765ee535aa", [:mix], [], "hexpm", "8eab6e1cfa8d5918c2ce4ba43588e894af35dbd8e91e6e55c817bca5847df34a"}, - "igniter": {:hex, :igniter, "0.6.19", "d87703b36890bc4278341d966a7ed8e10604a18610a4331ac10c75d1af48fff4", [:mix], [{:glob_ex, "~> 0.1.7", [hex: :glob_ex, repo: "hexpm", optional: false]}, {:jason, "~> 1.4", [hex: :jason, repo: "hexpm", optional: false]}, {:owl, "~> 0.11", [hex: :owl, repo: "hexpm", optional: false]}, {:phx_new, "~> 1.7", [hex: :phx_new, repo: "hexpm", optional: true]}, {:req, "~> 0.5", [hex: :req, repo: "hexpm", optional: false]}, {:rewrite, ">= 1.1.1 and < 2.0.0-0", [hex: :rewrite, repo: "hexpm", optional: false]}, {:sourceror, "~> 1.4", [hex: :sourceror, repo: "hexpm", optional: false]}, {:spitfire, ">= 0.1.3 and < 1.0.0-0", [hex: :spitfire, repo: "hexpm", optional: false]}], "hexpm", "c2070b3fdbd238fc0a0bfbc1f125b5c0f79a1fe2f5b3c7b43cd33de696783663"}, - "inflex": {:hex, :inflex, "2.1.0", "a365cf0821a9dacb65067abd95008ca1b0bb7dcdd85ae59965deef2aa062924c", [:mix], [], "hexpm", "14c17d05db4ee9b6d319b0bff1bdf22aa389a25398d1952c7a0b5f3d93162dd8"}, + "igniter": {:hex, :igniter, "0.6.21", "23d374120912873392b5c47e630b3261ed5e7572e59e16edb64357e23dc41f06", [:mix], [{:glob_ex, "~> 0.1.7", [hex: :glob_ex, repo: "hexpm", optional: false]}, {:jason, "~> 1.4", [hex: :jason, repo: "hexpm", optional: false]}, {:owl, "~> 0.11", [hex: :owl, repo: "hexpm", optional: false]}, {:phx_new, "~> 1.7", [hex: :phx_new, repo: "hexpm", optional: true]}, {:req, "~> 0.5", [hex: :req, repo: "hexpm", optional: false]}, {:rewrite, ">= 1.1.1 and < 2.0.0-0", [hex: :rewrite, repo: "hexpm", optional: false]}, {:sourceror, "~> 1.4", [hex: :sourceror, repo: "hexpm", optional: false]}, {:spitfire, ">= 0.1.3 and < 1.0.0-0", [hex: :spitfire, repo: "hexpm", optional: false]}], "hexpm", "3bd592634c5a4ec2d203e17e02791ce8b462627b606527e9598a298e00712932"}, "iterex": {:hex, :iterex, "0.1.2", "58f9b9b9a22a55cbfc7b5234a9c9c63eaac26d276b3db80936c0e1c60355a5a6", [:mix], [], "hexpm", "2e103b8bcc81757a9af121f6dc0df312c9a17220f302b1193ef720460d03029d"}, "jason": {:hex, :jason, "1.4.4", "b9226785a9aa77b6857ca22832cffa5d5011a667207eb2a0ad56adb5db443b8a", [:mix], [{:decimal, "~> 1.0 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: true]}], "hexpm", "c5eb0cab91f094599f94d55bc63409236a8ec69a21a67814529e8d5f6cc90b3b"}, "joken": {:hex, :joken, "2.6.2", "5daaf82259ca603af4f0b065475099ada1b2b849ff140ccd37f4b6828ca6892a", [:mix], [{:jose, "~> 1.11.10", [hex: :jose, repo: "hexpm", optional: false]}], "hexpm", "5134b5b0a6e37494e46dbf9e4dad53808e5e787904b7c73972651b51cce3d72b"}, diff --git a/priv/gettext/de/LC_MESSAGES/default.po b/priv/gettext/de/LC_MESSAGES/default.po index 7e6d755..c3d4c84 100644 --- a/priv/gettext/de/LC_MESSAGES/default.po +++ b/priv/gettext/de/LC_MESSAGES/default.po @@ -10,230 +10,206 @@ msgid "" msgstr "" "Language: en\n" -#: lib/mv_web/components/core_components.ex:482 +#: lib/mv_web/components/core_components.ex:339 #, elixir-autogen, elixir-format msgid "Actions" msgstr "" -#: lib/mv_web/member_live/index.ex:39 +#: lib/mv_web/live/member_live/index.html.heex:77 #, elixir-autogen, elixir-format msgid "Are you sure?" msgstr "Bist du sicher?" -#: lib/mv_web/components/core_components.ex:160 +#: lib/mv_web/components/layouts.ex:71 +#: lib/mv_web/components/layouts.ex:83 #, elixir-autogen, elixir-format msgid "Attempting to reconnect" msgstr "Verbindung wird wiederhergestellt" -#: lib/mv_web/member_live/form_component.ex:50 -#: lib/mv_web/member_live/index.ex:25 -#: lib/mv_web/member_live/show.ex:32 +#: lib/mv_web/live/member_live/form.ex:25 +#: lib/mv_web/live/member_live/index.html.heex:62 +#: lib/mv_web/live/member_live/show.ex:36 #, elixir-autogen, elixir-format msgid "City" msgstr "Stadt" -#: lib/mv_web/member_live/index.ex:41 +#: lib/mv_web/live/member_live/index.html.heex:79 #, elixir-autogen, elixir-format msgid "Delete" msgstr "Löschen" -#: lib/mv_web/member_live/index.ex:33 +#: lib/mv_web/live/member_live/index.html.heex:71 #, elixir-autogen, elixir-format msgid "Edit" msgstr "Bearbeiten" -#: lib/mv_web/member_live/index.ex:76 -#: lib/mv_web/member_live/show.ex:93 +#: lib/mv_web/live/member_live/show.ex:18 +#: lib/mv_web/live/member_live/show.ex:81 #, elixir-autogen, elixir-format msgid "Edit Member" msgstr "Mitglied bearbeiten" -#: lib/mv_web/member_live/form_component.ex:43 -#: lib/mv_web/member_live/index.ex:24 -#: lib/mv_web/member_live/show.ex:23 +#: lib/mv_web/live/member_live/form.ex:18 +#: lib/mv_web/live/member_live/index.html.heex:58 +#: lib/mv_web/live/member_live/show.ex:27 #, elixir-autogen, elixir-format msgid "Email" msgstr "E-Mail" -#: lib/mv_web/components/core_components.ex:151 -#, elixir-autogen, elixir-format -msgid "Error!" -msgstr "Fehler!" - -#: lib/mv_web/member_live/form_component.ex:41 -#: lib/mv_web/member_live/index.ex:22 -#: lib/mv_web/member_live/show.ex:21 +#: lib/mv_web/live/member_live/form.ex:16 +#: lib/mv_web/live/member_live/show.ex:25 #, elixir-autogen, elixir-format msgid "First Name" msgstr "Vorname" -#: lib/mv_web/components/core_components.ex:172 -#, elixir-autogen, elixir-format -msgid "Hang in there while we get back on track" -msgstr "Bitte warten, wir stellen die Verbindung wieder her." - -#: lib/mv_web/member_live/form_component.ex:47 -#: lib/mv_web/member_live/index.ex:26 -#: lib/mv_web/member_live/show.ex:29 +#: lib/mv_web/live/member_live/form.ex:22 +#: lib/mv_web/live/member_live/index.html.heex:64 +#: lib/mv_web/live/member_live/show.ex:33 #, elixir-autogen, elixir-format msgid "Join Date" msgstr "Beitrittsdatum" -#: lib/mv_web/member_live/form_component.ex:42 -#: lib/mv_web/member_live/index.ex:23 -#: lib/mv_web/member_live/show.ex:22 +#: lib/mv_web/live/member_live/form.ex:17 +#: lib/mv_web/live/member_live/show.ex:26 #, elixir-autogen, elixir-format msgid "Last Name" msgstr "Nachname" -#: lib/mv_web/member_live/index.ex:8 -#: lib/mv_web/member_live/index.ex:88 -#, elixir-autogen, elixir-format -msgid "Listing Members" -msgstr "Mitglieder" - -#: lib/mv_web/member_live/index.ex:11 -#: lib/mv_web/member_live/index.ex:82 +#: lib/mv_web/live/member_live/index.html.heex:6 #, elixir-autogen, elixir-format msgid "New Member" msgstr "Neues Mitglied" -#: lib/mv_web/member_live/index.ex:30 +#: lib/mv_web/live/member_live/index.html.heex:68 #, elixir-autogen, elixir-format msgid "Show" msgstr "Anzeigen" -#: lib/mv_web/components/core_components.ex:167 +#: lib/mv_web/components/layouts.ex:78 #, elixir-autogen, elixir-format msgid "Something went wrong!" msgstr "Etwas ist schiefgelaufen!" -#: lib/mv_web/components/core_components.ex:150 -#, elixir-autogen, elixir-format -msgid "Success!" -msgstr "Erfolg!" - -#: lib/mv_web/components/core_components.ex:155 +#: lib/mv_web/components/layouts.ex:66 #, elixir-autogen, elixir-format msgid "We can't find the internet" msgstr "Keine Internetverbindung gefunden" -#: lib/mv_web/components/core_components.ex:76 -#: lib/mv_web/components/core_components.ex:130 +#: lib/mv_web/components/core_components.ex:74 #, elixir-autogen, elixir-format msgid "close" msgstr "schließen" -#: lib/mv_web/member_live/form_component.ex:44 -#: lib/mv_web/member_live/show.ex:24 +#: lib/mv_web/live/member_live/form.ex:19 +#: lib/mv_web/live/member_live/show.ex:28 #, elixir-autogen, elixir-format msgid "Birth Date" msgstr "Geburtsdatum" -#: lib/mv_web/member_live/form_component.ex:55 -#: lib/mv_web/member_live/show.ex:38 +#: lib/mv_web/live/member_live/form.ex:30 +#: lib/mv_web/live/member_live/show.ex:42 #, elixir-autogen, elixir-format msgid "Custom Properties" msgstr "Eigene Eigenschaften" -#: lib/mv_web/member_live/form_component.ex:48 -#: lib/mv_web/member_live/show.ex:30 +#: lib/mv_web/live/member_live/form.ex:23 +#: lib/mv_web/live/member_live/show.ex:34 #, elixir-autogen, elixir-format msgid "Exit Date" msgstr "Austrittsdatum" -#: lib/mv_web/member_live/form_component.ex:52 -#: lib/mv_web/member_live/show.ex:34 +#: lib/mv_web/live/member_live/form.ex:27 +#: lib/mv_web/live/member_live/index.html.heex:60 +#: lib/mv_web/live/member_live/show.ex:38 #, elixir-autogen, elixir-format msgid "House Number" msgstr "Hausnummer" -#: lib/mv_web/member_live/form_component.ex:49 -#: lib/mv_web/member_live/show.ex:31 +#: lib/mv_web/live/member_live/form.ex:24 +#: lib/mv_web/live/member_live/show.ex:35 #, elixir-autogen, elixir-format msgid "Notes" msgstr "Notizen" -#: lib/mv_web/member_live/form_component.ex:45 -#: lib/mv_web/member_live/show.ex:25 +#: lib/mv_web/live/member_live/form.ex:20 +#: lib/mv_web/live/member_live/show.ex:29 #, elixir-autogen, elixir-format msgid "Paid" msgstr "Bezahlt" -#: lib/mv_web/member_live/form_component.ex:46 -#: lib/mv_web/member_live/show.ex:28 +#: lib/mv_web/live/member_live/form.ex:21 +#: lib/mv_web/live/member_live/index.html.heex:63 +#: lib/mv_web/live/member_live/show.ex:32 #, elixir-autogen, elixir-format msgid "Phone Number" msgstr "Telefonnummer" -#: lib/mv_web/member_live/form_component.ex:53 -#: lib/mv_web/member_live/show.ex:35 +#: lib/mv_web/live/member_live/form.ex:28 +#: lib/mv_web/live/member_live/index.html.heex:61 +#: lib/mv_web/live/member_live/show.ex:39 #, elixir-autogen, elixir-format msgid "Postal Code" msgstr "Postleitzahl" -#: lib/mv_web/member_live/form_component.ex:75 +#: lib/mv_web/live/member_live/form.ex:50 #, elixir-autogen, elixir-format msgid "Save Member" msgstr "Mitglied speichern" -#: lib/mv_web/member_live/form_component.ex:75 +#: lib/mv_web/live/member_live/form.ex:49 +#: lib/mv_web/live/property_live/form.ex:41 +#: lib/mv_web/live/property_type_live/form.ex:29 #, elixir-autogen, elixir-format msgid "Saving..." msgstr "Speichern..." -#: lib/mv_web/member_live/form_component.ex:51 -#: lib/mv_web/member_live/show.ex:33 +#: lib/mv_web/live/member_live/form.ex:26 +#: lib/mv_web/live/member_live/index.html.heex:59 +#: lib/mv_web/live/member_live/show.ex:37 #, elixir-autogen, elixir-format msgid "Street" msgstr "Straße" -#: lib/mv_web/member_live/form_component.ex:30 +#: lib/mv_web/live/member_live/form.ex:11 #, elixir-autogen, elixir-format msgid "Use this form to manage member records and their properties." msgstr "Dieses Formular dient zur Verwaltung von Mitgliedern und deren Eigenschaften." -#: lib/mv_web/member_live/show.ex:52 -#, elixir-autogen, elixir-format -msgid "Back to members" -msgstr "Zurück zur Mitgliederliste" - -#: lib/mv_web/member_live/show.ex:14 -#, elixir-autogen, elixir-format -msgid "Edit member" -msgstr "Mitglied bearbeiten" - -#: lib/mv_web/member_live/show.ex:20 +#: lib/mv_web/live/member_live/show.ex:24 #, elixir-autogen, elixir-format msgid "Id" msgstr "ID" -#: lib/mv_web/member_live/show.ex:26 +#: lib/mv_web/live/member_live/show.ex:30 #, elixir-autogen, elixir-format msgid "No" msgstr "Nein" -#: lib/mv_web/member_live/show.ex:92 +#: lib/mv_web/live/member_live/show.ex:80 #, elixir-autogen, elixir-format, fuzzy msgid "Show Member" msgstr "Mitglied anzeigen" -#: lib/mv_web/member_live/show.ex:10 +#: lib/mv_web/live/member_live/show.ex:11 #, elixir-autogen, elixir-format msgid "This is a member record from your database." msgstr "Dies ist ein Mitglied aus deiner Datenbank." -#: lib/mv_web/member_live/show.ex:26 +#: lib/mv_web/live/member_live/show.ex:30 #, elixir-autogen, elixir-format msgid "Yes" msgstr "Ja" -#: lib/mv_web/member_live/form_component.ex:102 +#: lib/mv_web/live/member_live/form.ex:108 +#: lib/mv_web/live/property_live/form.ex:200 +#: lib/mv_web/live/property_type_live/form.ex:73 #, elixir-autogen, elixir-format msgid "create" msgstr "erstellt" -#: lib/mv_web/member_live/form_component.ex:103 +#: lib/mv_web/live/member_live/form.ex:109 +#: lib/mv_web/live/property_live/form.ex:201 +#: lib/mv_web/live/property_type_live/form.ex:74 #, elixir-autogen, elixir-format msgid "update" msgstr "aktualisiert" @@ -243,7 +219,7 @@ msgstr "aktualisiert" msgid "Incorrect email or password" msgstr "" -#: lib/mv_web/member_live/form_component.ex:109 +#: lib/mv_web/live/member_live/form.ex:115 #, elixir-autogen, elixir-format msgid "Member %{action} successfully" msgstr "Mitglied %{action} erfolgreich" @@ -258,7 +234,7 @@ msgstr "" msgid "You are now signed out" msgstr "" -#: lib/mv_web/controllers/auth_controller.ex:36 +#: lib/mv_web/controllers/auth_controller.ex:37 #, elixir-autogen, elixir-format msgid "You have already signed in another way, but have not confirmed your account.\nYou can confirm your account using the link we sent to you, or by resetting your password.\n" msgstr "" @@ -272,3 +248,143 @@ msgstr "" #, elixir-autogen, elixir-format msgid "Your password has successfully been reset" msgstr "" + +#: lib/mv_web/live/member_live/form.ex:52 +#: lib/mv_web/live/property_live/form.ex:44 +#: lib/mv_web/live/property_type_live/form.ex:32 +#, elixir-autogen, elixir-format +msgid "Cancel" +msgstr "" + +#: lib/mv_web/live/property_live/form.ex:29 +#, elixir-autogen, elixir-format +msgid "Choose a member" +msgstr "" + +#: lib/mv_web/live/property_live/form.ex:20 +#, elixir-autogen, elixir-format +msgid "Choose a property type" +msgstr "" + +#: lib/mv_web/live/property_type_live/form.ex:25 +#, elixir-autogen, elixir-format +msgid "Description" +msgstr "" + +#: lib/mv_web/live/property_type_live/form.ex:26 +#, elixir-autogen, elixir-format +msgid "Immutable" +msgstr "" + +#: lib/mv_web/components/layouts/navbar.ex:35 +#, elixir-autogen, elixir-format +msgid "Logout" +msgstr "" + +#: lib/mv_web/live/property_live/form.ex:27 +#, elixir-autogen, elixir-format +msgid "Member" +msgstr "" + +#: lib/mv_web/components/layouts/navbar.ex:14 +#: lib/mv_web/live/member_live/index.ex:12 +#: lib/mv_web/live/member_live/index.html.heex:3 +#, elixir-autogen, elixir-format +msgid "Members" +msgstr "Mitglieder" + +#: lib/mv_web/live/member_live/index.html.heex:50 +#: lib/mv_web/live/property_type_live/form.ex:16 +#, elixir-autogen, elixir-format +msgid "Name" +msgstr "" + +#: lib/mv_web/live/property_live/form.ex:37 +#, elixir-autogen, elixir-format +msgid "Please select a property type first" +msgstr "" + +#: lib/mv_web/components/layouts/navbar.ex:31 +#, elixir-autogen, elixir-format +msgid "Profil" +msgstr "" + +#: lib/mv_web/live/property_live/form.ex:207 +#, elixir-autogen, elixir-format, fuzzy +msgid "Property %{action} successfully" +msgstr "Mitglied %{action} erfolgreich" + +#: lib/mv_web/live/property_live/form.ex:18 +#, elixir-autogen, elixir-format +msgid "Property type" +msgstr "" + +#: lib/mv_web/live/property_type_live/form.ex:80 +#, elixir-autogen, elixir-format +msgid "Property type %{action} successfully" +msgstr "" + +#: lib/mv_web/live/property_type_live/form.ex:27 +#, elixir-autogen, elixir-format +msgid "Required" +msgstr "" + +#: lib/mv_web/live/property_live/form.ex:42 +#, elixir-autogen, elixir-format +msgid "Save Property" +msgstr "" + +#: lib/mv_web/live/property_type_live/form.ex:30 +#, elixir-autogen, elixir-format +msgid "Save Property type" +msgstr "" + +#: lib/mv_web/live/member_live/index.html.heex:27 +#, elixir-autogen, elixir-format +msgid "Select all members" +msgstr "" + +#: lib/mv_web/live/member_live/index.html.heex:41 +#, elixir-autogen, elixir-format +msgid "Select member" +msgstr "" + +#: lib/mv_web/components/layouts/navbar.ex:34 +#, elixir-autogen, elixir-format +msgid "Settings" +msgstr "" + +#: lib/mv_web/live/property_live/form.ex:95 +#, elixir-autogen, elixir-format +msgid "Unsupported value type: %{type}" +msgstr "" + +#: lib/mv_web/live/property_live/form.ex:10 +#, elixir-autogen, elixir-format, fuzzy +msgid "Use this form to manage property records in your database." +msgstr "Dieses Formular dient zur Verwaltung von Mitgliedern und deren Eigenschaften." + +#: lib/mv_web/live/property_type_live/form.ex:11 +#, elixir-autogen, elixir-format, fuzzy +msgid "Use this form to manage property_type records in your database." +msgstr "Dieses Formular dient zur Verwaltung von Mitgliedern und deren Eigenschaften." + +#: lib/mv_web/live/property_live/form.ex:59 +#, elixir-autogen, elixir-format +msgid "Value" +msgstr "" + +#: lib/mv_web/live/property_type_live/form.ex:20 +#, elixir-autogen, elixir-format +msgid "Value type" +msgstr "" + +#: lib/mv_web/components/table_components.ex:30 +#, elixir-autogen, elixir-format +msgid "ascending" +msgstr "" + +#: lib/mv_web/components/table_components.ex:30 +#, elixir-autogen, elixir-format +msgid "descending" +msgstr "" diff --git a/priv/gettext/default.pot b/priv/gettext/default.pot index aad2ae9..bb17d15 100644 --- a/priv/gettext/default.pot +++ b/priv/gettext/default.pot @@ -11,230 +11,206 @@ msgid "" msgstr "" -#: lib/mv_web/components/core_components.ex:482 +#: lib/mv_web/components/core_components.ex:339 #, elixir-autogen, elixir-format msgid "Actions" msgstr "" -#: lib/mv_web/member_live/index.ex:39 +#: lib/mv_web/live/member_live/index.html.heex:77 #, elixir-autogen, elixir-format msgid "Are you sure?" msgstr "" -#: lib/mv_web/components/core_components.ex:160 +#: lib/mv_web/components/layouts.ex:71 +#: lib/mv_web/components/layouts.ex:83 #, elixir-autogen, elixir-format msgid "Attempting to reconnect" msgstr "" -#: lib/mv_web/member_live/form_component.ex:50 -#: lib/mv_web/member_live/index.ex:25 -#: lib/mv_web/member_live/show.ex:32 +#: lib/mv_web/live/member_live/form.ex:25 +#: lib/mv_web/live/member_live/index.html.heex:62 +#: lib/mv_web/live/member_live/show.ex:36 #, elixir-autogen, elixir-format msgid "City" msgstr "" -#: lib/mv_web/member_live/index.ex:41 +#: lib/mv_web/live/member_live/index.html.heex:79 #, elixir-autogen, elixir-format msgid "Delete" msgstr "" -#: lib/mv_web/member_live/index.ex:33 +#: lib/mv_web/live/member_live/index.html.heex:71 #, elixir-autogen, elixir-format msgid "Edit" msgstr "" -#: lib/mv_web/member_live/index.ex:76 -#: lib/mv_web/member_live/show.ex:93 +#: lib/mv_web/live/member_live/show.ex:18 +#: lib/mv_web/live/member_live/show.ex:81 #, elixir-autogen, elixir-format msgid "Edit Member" msgstr "" -#: lib/mv_web/member_live/form_component.ex:43 -#: lib/mv_web/member_live/index.ex:24 -#: lib/mv_web/member_live/show.ex:23 +#: lib/mv_web/live/member_live/form.ex:18 +#: lib/mv_web/live/member_live/index.html.heex:58 +#: lib/mv_web/live/member_live/show.ex:27 #, elixir-autogen, elixir-format msgid "Email" msgstr "" -#: lib/mv_web/components/core_components.ex:151 -#, elixir-autogen, elixir-format -msgid "Error!" -msgstr "" - -#: lib/mv_web/member_live/form_component.ex:41 -#: lib/mv_web/member_live/index.ex:22 -#: lib/mv_web/member_live/show.ex:21 +#: lib/mv_web/live/member_live/form.ex:16 +#: lib/mv_web/live/member_live/show.ex:25 #, elixir-autogen, elixir-format msgid "First Name" msgstr "" -#: lib/mv_web/components/core_components.ex:172 -#, elixir-autogen, elixir-format -msgid "Hang in there while we get back on track" -msgstr "" - -#: lib/mv_web/member_live/form_component.ex:47 -#: lib/mv_web/member_live/index.ex:26 -#: lib/mv_web/member_live/show.ex:29 +#: lib/mv_web/live/member_live/form.ex:22 +#: lib/mv_web/live/member_live/index.html.heex:64 +#: lib/mv_web/live/member_live/show.ex:33 #, elixir-autogen, elixir-format msgid "Join Date" msgstr "" -#: lib/mv_web/member_live/form_component.ex:42 -#: lib/mv_web/member_live/index.ex:23 -#: lib/mv_web/member_live/show.ex:22 +#: lib/mv_web/live/member_live/form.ex:17 +#: lib/mv_web/live/member_live/show.ex:26 #, elixir-autogen, elixir-format msgid "Last Name" msgstr "" -#: lib/mv_web/member_live/index.ex:8 -#: lib/mv_web/member_live/index.ex:88 -#, elixir-autogen, elixir-format -msgid "Listing Members" -msgstr "" - -#: lib/mv_web/member_live/index.ex:11 -#: lib/mv_web/member_live/index.ex:82 +#: lib/mv_web/live/member_live/index.html.heex:6 #, elixir-autogen, elixir-format msgid "New Member" msgstr "" -#: lib/mv_web/member_live/index.ex:30 +#: lib/mv_web/live/member_live/index.html.heex:68 #, elixir-autogen, elixir-format msgid "Show" msgstr "" -#: lib/mv_web/components/core_components.ex:167 +#: lib/mv_web/components/layouts.ex:78 #, elixir-autogen, elixir-format msgid "Something went wrong!" msgstr "" -#: lib/mv_web/components/core_components.ex:150 -#, elixir-autogen, elixir-format -msgid "Success!" -msgstr "" - -#: lib/mv_web/components/core_components.ex:155 +#: lib/mv_web/components/layouts.ex:66 #, elixir-autogen, elixir-format msgid "We can't find the internet" msgstr "" -#: lib/mv_web/components/core_components.ex:76 -#: lib/mv_web/components/core_components.ex:130 +#: lib/mv_web/components/core_components.ex:74 #, elixir-autogen, elixir-format msgid "close" msgstr "" -#: lib/mv_web/member_live/form_component.ex:44 -#: lib/mv_web/member_live/show.ex:24 +#: lib/mv_web/live/member_live/form.ex:19 +#: lib/mv_web/live/member_live/show.ex:28 #, elixir-autogen, elixir-format msgid "Birth Date" msgstr "" -#: lib/mv_web/member_live/form_component.ex:55 -#: lib/mv_web/member_live/show.ex:38 +#: lib/mv_web/live/member_live/form.ex:30 +#: lib/mv_web/live/member_live/show.ex:42 #, elixir-autogen, elixir-format msgid "Custom Properties" msgstr "" -#: lib/mv_web/member_live/form_component.ex:48 -#: lib/mv_web/member_live/show.ex:30 +#: lib/mv_web/live/member_live/form.ex:23 +#: lib/mv_web/live/member_live/show.ex:34 #, elixir-autogen, elixir-format msgid "Exit Date" msgstr "" -#: lib/mv_web/member_live/form_component.ex:52 -#: lib/mv_web/member_live/show.ex:34 +#: lib/mv_web/live/member_live/form.ex:27 +#: lib/mv_web/live/member_live/index.html.heex:60 +#: lib/mv_web/live/member_live/show.ex:38 #, elixir-autogen, elixir-format msgid "House Number" msgstr "" -#: lib/mv_web/member_live/form_component.ex:49 -#: lib/mv_web/member_live/show.ex:31 +#: lib/mv_web/live/member_live/form.ex:24 +#: lib/mv_web/live/member_live/show.ex:35 #, elixir-autogen, elixir-format msgid "Notes" msgstr "" -#: lib/mv_web/member_live/form_component.ex:45 -#: lib/mv_web/member_live/show.ex:25 +#: lib/mv_web/live/member_live/form.ex:20 +#: lib/mv_web/live/member_live/show.ex:29 #, elixir-autogen, elixir-format msgid "Paid" msgstr "" -#: lib/mv_web/member_live/form_component.ex:46 -#: lib/mv_web/member_live/show.ex:28 +#: lib/mv_web/live/member_live/form.ex:21 +#: lib/mv_web/live/member_live/index.html.heex:63 +#: lib/mv_web/live/member_live/show.ex:32 #, elixir-autogen, elixir-format msgid "Phone Number" msgstr "" -#: lib/mv_web/member_live/form_component.ex:53 -#: lib/mv_web/member_live/show.ex:35 +#: lib/mv_web/live/member_live/form.ex:28 +#: lib/mv_web/live/member_live/index.html.heex:61 +#: lib/mv_web/live/member_live/show.ex:39 #, elixir-autogen, elixir-format msgid "Postal Code" msgstr "" -#: lib/mv_web/member_live/form_component.ex:75 +#: lib/mv_web/live/member_live/form.ex:50 #, elixir-autogen, elixir-format msgid "Save Member" msgstr "" -#: lib/mv_web/member_live/form_component.ex:75 +#: lib/mv_web/live/member_live/form.ex:49 +#: lib/mv_web/live/property_live/form.ex:41 +#: lib/mv_web/live/property_type_live/form.ex:29 #, elixir-autogen, elixir-format msgid "Saving..." msgstr "" -#: lib/mv_web/member_live/form_component.ex:51 -#: lib/mv_web/member_live/show.ex:33 +#: lib/mv_web/live/member_live/form.ex:26 +#: lib/mv_web/live/member_live/index.html.heex:59 +#: lib/mv_web/live/member_live/show.ex:37 #, elixir-autogen, elixir-format msgid "Street" msgstr "" -#: lib/mv_web/member_live/form_component.ex:30 +#: lib/mv_web/live/member_live/form.ex:11 #, elixir-autogen, elixir-format msgid "Use this form to manage member records and their properties." msgstr "" -#: lib/mv_web/member_live/show.ex:52 -#, elixir-autogen, elixir-format -msgid "Back to members" -msgstr "" - -#: lib/mv_web/member_live/show.ex:14 -#, elixir-autogen, elixir-format -msgid "Edit member" -msgstr "" - -#: lib/mv_web/member_live/show.ex:20 +#: lib/mv_web/live/member_live/show.ex:24 #, elixir-autogen, elixir-format msgid "Id" msgstr "" -#: lib/mv_web/member_live/show.ex:26 +#: lib/mv_web/live/member_live/show.ex:30 #, elixir-autogen, elixir-format msgid "No" msgstr "" -#: lib/mv_web/member_live/show.ex:92 +#: lib/mv_web/live/member_live/show.ex:80 #, elixir-autogen, elixir-format msgid "Show Member" msgstr "" -#: lib/mv_web/member_live/show.ex:10 +#: lib/mv_web/live/member_live/show.ex:11 #, elixir-autogen, elixir-format msgid "This is a member record from your database." msgstr "" -#: lib/mv_web/member_live/show.ex:26 +#: lib/mv_web/live/member_live/show.ex:30 #, elixir-autogen, elixir-format msgid "Yes" msgstr "" -#: lib/mv_web/member_live/form_component.ex:102 +#: lib/mv_web/live/member_live/form.ex:108 +#: lib/mv_web/live/property_live/form.ex:200 +#: lib/mv_web/live/property_type_live/form.ex:73 #, elixir-autogen, elixir-format msgid "create" msgstr "" -#: lib/mv_web/member_live/form_component.ex:103 +#: lib/mv_web/live/member_live/form.ex:109 +#: lib/mv_web/live/property_live/form.ex:201 +#: lib/mv_web/live/property_type_live/form.ex:74 #, elixir-autogen, elixir-format msgid "update" msgstr "" @@ -244,7 +220,7 @@ msgstr "" msgid "Incorrect email or password" msgstr "" -#: lib/mv_web/member_live/form_component.ex:109 +#: lib/mv_web/live/member_live/form.ex:115 #, elixir-autogen, elixir-format msgid "Member %{action} successfully" msgstr "" @@ -259,7 +235,7 @@ msgstr "" msgid "You are now signed out" msgstr "" -#: lib/mv_web/controllers/auth_controller.ex:36 +#: lib/mv_web/controllers/auth_controller.ex:37 #, elixir-autogen, elixir-format msgid "You have already signed in another way, but have not confirmed your account.\nYou can confirm your account using the link we sent to you, or by resetting your password.\n" msgstr "" @@ -273,3 +249,143 @@ msgstr "" #, elixir-autogen, elixir-format msgid "Your password has successfully been reset" msgstr "" + +#: lib/mv_web/live/member_live/form.ex:52 +#: lib/mv_web/live/property_live/form.ex:44 +#: lib/mv_web/live/property_type_live/form.ex:32 +#, elixir-autogen, elixir-format +msgid "Cancel" +msgstr "" + +#: lib/mv_web/live/property_live/form.ex:29 +#, elixir-autogen, elixir-format +msgid "Choose a member" +msgstr "" + +#: lib/mv_web/live/property_live/form.ex:20 +#, elixir-autogen, elixir-format +msgid "Choose a property type" +msgstr "" + +#: lib/mv_web/live/property_type_live/form.ex:25 +#, elixir-autogen, elixir-format +msgid "Description" +msgstr "" + +#: lib/mv_web/live/property_type_live/form.ex:26 +#, elixir-autogen, elixir-format +msgid "Immutable" +msgstr "" + +#: lib/mv_web/components/layouts/navbar.ex:35 +#, elixir-autogen, elixir-format +msgid "Logout" +msgstr "" + +#: lib/mv_web/live/property_live/form.ex:27 +#, elixir-autogen, elixir-format +msgid "Member" +msgstr "" + +#: lib/mv_web/components/layouts/navbar.ex:14 +#: lib/mv_web/live/member_live/index.ex:12 +#: lib/mv_web/live/member_live/index.html.heex:3 +#, elixir-autogen, elixir-format +msgid "Members" +msgstr "" + +#: lib/mv_web/live/member_live/index.html.heex:50 +#: lib/mv_web/live/property_type_live/form.ex:16 +#, elixir-autogen, elixir-format +msgid "Name" +msgstr "" + +#: lib/mv_web/live/property_live/form.ex:37 +#, elixir-autogen, elixir-format +msgid "Please select a property type first" +msgstr "" + +#: lib/mv_web/components/layouts/navbar.ex:31 +#, elixir-autogen, elixir-format +msgid "Profil" +msgstr "" + +#: lib/mv_web/live/property_live/form.ex:207 +#, elixir-autogen, elixir-format +msgid "Property %{action} successfully" +msgstr "" + +#: lib/mv_web/live/property_live/form.ex:18 +#, elixir-autogen, elixir-format +msgid "Property type" +msgstr "" + +#: lib/mv_web/live/property_type_live/form.ex:80 +#, elixir-autogen, elixir-format +msgid "Property type %{action} successfully" +msgstr "" + +#: lib/mv_web/live/property_type_live/form.ex:27 +#, elixir-autogen, elixir-format +msgid "Required" +msgstr "" + +#: lib/mv_web/live/property_live/form.ex:42 +#, elixir-autogen, elixir-format +msgid "Save Property" +msgstr "" + +#: lib/mv_web/live/property_type_live/form.ex:30 +#, elixir-autogen, elixir-format +msgid "Save Property type" +msgstr "" + +#: lib/mv_web/live/member_live/index.html.heex:27 +#, elixir-autogen, elixir-format +msgid "Select all members" +msgstr "" + +#: lib/mv_web/live/member_live/index.html.heex:41 +#, elixir-autogen, elixir-format +msgid "Select member" +msgstr "" + +#: lib/mv_web/components/layouts/navbar.ex:34 +#, elixir-autogen, elixir-format +msgid "Settings" +msgstr "" + +#: lib/mv_web/live/property_live/form.ex:95 +#, elixir-autogen, elixir-format +msgid "Unsupported value type: %{type}" +msgstr "" + +#: lib/mv_web/live/property_live/form.ex:10 +#, elixir-autogen, elixir-format +msgid "Use this form to manage property records in your database." +msgstr "" + +#: lib/mv_web/live/property_type_live/form.ex:11 +#, elixir-autogen, elixir-format +msgid "Use this form to manage property_type records in your database." +msgstr "" + +#: lib/mv_web/live/property_live/form.ex:59 +#, elixir-autogen, elixir-format +msgid "Value" +msgstr "" + +#: lib/mv_web/live/property_type_live/form.ex:20 +#, elixir-autogen, elixir-format +msgid "Value type" +msgstr "" + +#: lib/mv_web/components/table_components.ex:30 +#, elixir-autogen, elixir-format +msgid "ascending" +msgstr "" + +#: lib/mv_web/components/table_components.ex:30 +#, elixir-autogen, elixir-format +msgid "descending" +msgstr "" diff --git a/priv/gettext/en/LC_MESSAGES/default.po b/priv/gettext/en/LC_MESSAGES/default.po index 3317236..616b323 100644 --- a/priv/gettext/en/LC_MESSAGES/default.po +++ b/priv/gettext/en/LC_MESSAGES/default.po @@ -11,230 +11,206 @@ msgstr "" "Language: en\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: lib/mv_web/components/core_components.ex:482 +#: lib/mv_web/components/core_components.ex:339 #, elixir-autogen, elixir-format msgid "Actions" msgstr "" -#: lib/mv_web/member_live/index.ex:39 +#: lib/mv_web/live/member_live/index.html.heex:77 #, elixir-autogen, elixir-format msgid "Are you sure?" msgstr "" -#: lib/mv_web/components/core_components.ex:160 +#: lib/mv_web/components/layouts.ex:71 +#: lib/mv_web/components/layouts.ex:83 #, elixir-autogen, elixir-format msgid "Attempting to reconnect" msgstr "" -#: lib/mv_web/member_live/form_component.ex:50 -#: lib/mv_web/member_live/index.ex:25 -#: lib/mv_web/member_live/show.ex:32 +#: lib/mv_web/live/member_live/form.ex:25 +#: lib/mv_web/live/member_live/index.html.heex:62 +#: lib/mv_web/live/member_live/show.ex:36 #, elixir-autogen, elixir-format msgid "City" msgstr "" -#: lib/mv_web/member_live/index.ex:41 +#: lib/mv_web/live/member_live/index.html.heex:79 #, elixir-autogen, elixir-format msgid "Delete" msgstr "" -#: lib/mv_web/member_live/index.ex:33 +#: lib/mv_web/live/member_live/index.html.heex:71 #, elixir-autogen, elixir-format msgid "Edit" msgstr "" -#: lib/mv_web/member_live/index.ex:76 -#: lib/mv_web/member_live/show.ex:93 +#: lib/mv_web/live/member_live/show.ex:18 +#: lib/mv_web/live/member_live/show.ex:81 #, elixir-autogen, elixir-format msgid "Edit Member" msgstr "" -#: lib/mv_web/member_live/form_component.ex:43 -#: lib/mv_web/member_live/index.ex:24 -#: lib/mv_web/member_live/show.ex:23 +#: lib/mv_web/live/member_live/form.ex:18 +#: lib/mv_web/live/member_live/index.html.heex:58 +#: lib/mv_web/live/member_live/show.ex:27 #, elixir-autogen, elixir-format msgid "Email" msgstr "" -#: lib/mv_web/components/core_components.ex:151 -#, elixir-autogen, elixir-format -msgid "Error!" -msgstr "" - -#: lib/mv_web/member_live/form_component.ex:41 -#: lib/mv_web/member_live/index.ex:22 -#: lib/mv_web/member_live/show.ex:21 +#: lib/mv_web/live/member_live/form.ex:16 +#: lib/mv_web/live/member_live/show.ex:25 #, elixir-autogen, elixir-format msgid "First Name" msgstr "" -#: lib/mv_web/components/core_components.ex:172 -#, elixir-autogen, elixir-format -msgid "Hang in there while we get back on track" -msgstr "" - -#: lib/mv_web/member_live/form_component.ex:47 -#: lib/mv_web/member_live/index.ex:26 -#: lib/mv_web/member_live/show.ex:29 +#: lib/mv_web/live/member_live/form.ex:22 +#: lib/mv_web/live/member_live/index.html.heex:64 +#: lib/mv_web/live/member_live/show.ex:33 #, elixir-autogen, elixir-format msgid "Join Date" msgstr "" -#: lib/mv_web/member_live/form_component.ex:42 -#: lib/mv_web/member_live/index.ex:23 -#: lib/mv_web/member_live/show.ex:22 +#: lib/mv_web/live/member_live/form.ex:17 +#: lib/mv_web/live/member_live/show.ex:26 #, elixir-autogen, elixir-format msgid "Last Name" msgstr "" -#: lib/mv_web/member_live/index.ex:8 -#: lib/mv_web/member_live/index.ex:88 -#, elixir-autogen, elixir-format -msgid "Listing Members" -msgstr "" - -#: lib/mv_web/member_live/index.ex:11 -#: lib/mv_web/member_live/index.ex:82 +#: lib/mv_web/live/member_live/index.html.heex:6 #, elixir-autogen, elixir-format msgid "New Member" msgstr "" -#: lib/mv_web/member_live/index.ex:30 +#: lib/mv_web/live/member_live/index.html.heex:68 #, elixir-autogen, elixir-format msgid "Show" msgstr "" -#: lib/mv_web/components/core_components.ex:167 +#: lib/mv_web/components/layouts.ex:78 #, elixir-autogen, elixir-format msgid "Something went wrong!" msgstr "" -#: lib/mv_web/components/core_components.ex:150 -#, elixir-autogen, elixir-format -msgid "Success!" -msgstr "" - -#: lib/mv_web/components/core_components.ex:155 +#: lib/mv_web/components/layouts.ex:66 #, elixir-autogen, elixir-format msgid "We can't find the internet" msgstr "" -#: lib/mv_web/components/core_components.ex:76 -#: lib/mv_web/components/core_components.ex:130 +#: lib/mv_web/components/core_components.ex:74 #, elixir-autogen, elixir-format msgid "close" msgstr "" -#: lib/mv_web/member_live/form_component.ex:44 -#: lib/mv_web/member_live/show.ex:24 +#: lib/mv_web/live/member_live/form.ex:19 +#: lib/mv_web/live/member_live/show.ex:28 #, elixir-autogen, elixir-format msgid "Birth Date" msgstr "" -#: lib/mv_web/member_live/form_component.ex:55 -#: lib/mv_web/member_live/show.ex:38 +#: lib/mv_web/live/member_live/form.ex:30 +#: lib/mv_web/live/member_live/show.ex:42 #, elixir-autogen, elixir-format msgid "Custom Properties" msgstr "" -#: lib/mv_web/member_live/form_component.ex:48 -#: lib/mv_web/member_live/show.ex:30 +#: lib/mv_web/live/member_live/form.ex:23 +#: lib/mv_web/live/member_live/show.ex:34 #, elixir-autogen, elixir-format msgid "Exit Date" msgstr "" -#: lib/mv_web/member_live/form_component.ex:52 -#: lib/mv_web/member_live/show.ex:34 +#: lib/mv_web/live/member_live/form.ex:27 +#: lib/mv_web/live/member_live/index.html.heex:60 +#: lib/mv_web/live/member_live/show.ex:38 #, elixir-autogen, elixir-format msgid "House Number" msgstr "" -#: lib/mv_web/member_live/form_component.ex:49 -#: lib/mv_web/member_live/show.ex:31 +#: lib/mv_web/live/member_live/form.ex:24 +#: lib/mv_web/live/member_live/show.ex:35 #, elixir-autogen, elixir-format msgid "Notes" msgstr "" -#: lib/mv_web/member_live/form_component.ex:45 -#: lib/mv_web/member_live/show.ex:25 +#: lib/mv_web/live/member_live/form.ex:20 +#: lib/mv_web/live/member_live/show.ex:29 #, elixir-autogen, elixir-format msgid "Paid" msgstr "" -#: lib/mv_web/member_live/form_component.ex:46 -#: lib/mv_web/member_live/show.ex:28 +#: lib/mv_web/live/member_live/form.ex:21 +#: lib/mv_web/live/member_live/index.html.heex:63 +#: lib/mv_web/live/member_live/show.ex:32 #, elixir-autogen, elixir-format msgid "Phone Number" msgstr "" -#: lib/mv_web/member_live/form_component.ex:53 -#: lib/mv_web/member_live/show.ex:35 +#: lib/mv_web/live/member_live/form.ex:28 +#: lib/mv_web/live/member_live/index.html.heex:61 +#: lib/mv_web/live/member_live/show.ex:39 #, elixir-autogen, elixir-format msgid "Postal Code" msgstr "" -#: lib/mv_web/member_live/form_component.ex:75 +#: lib/mv_web/live/member_live/form.ex:50 #, elixir-autogen, elixir-format, fuzzy msgid "Save Member" msgstr "" -#: lib/mv_web/member_live/form_component.ex:75 +#: lib/mv_web/live/member_live/form.ex:49 +#: lib/mv_web/live/property_live/form.ex:41 +#: lib/mv_web/live/property_type_live/form.ex:29 #, elixir-autogen, elixir-format msgid "Saving..." msgstr "" -#: lib/mv_web/member_live/form_component.ex:51 -#: lib/mv_web/member_live/show.ex:33 +#: lib/mv_web/live/member_live/form.ex:26 +#: lib/mv_web/live/member_live/index.html.heex:59 +#: lib/mv_web/live/member_live/show.ex:37 #, elixir-autogen, elixir-format msgid "Street" msgstr "" -#: lib/mv_web/member_live/form_component.ex:30 +#: lib/mv_web/live/member_live/form.ex:11 #, elixir-autogen, elixir-format msgid "Use this form to manage member records and their properties." msgstr "" -#: lib/mv_web/member_live/show.ex:52 -#, elixir-autogen, elixir-format -msgid "Back to members" -msgstr "" - -#: lib/mv_web/member_live/show.ex:14 -#, elixir-autogen, elixir-format, fuzzy -msgid "Edit member" -msgstr "" - -#: lib/mv_web/member_live/show.ex:20 +#: lib/mv_web/live/member_live/show.ex:24 #, elixir-autogen, elixir-format msgid "Id" msgstr "" -#: lib/mv_web/member_live/show.ex:26 +#: lib/mv_web/live/member_live/show.ex:30 #, elixir-autogen, elixir-format msgid "No" msgstr "" -#: lib/mv_web/member_live/show.ex:92 +#: lib/mv_web/live/member_live/show.ex:80 #, elixir-autogen, elixir-format, fuzzy msgid "Show Member" msgstr "" -#: lib/mv_web/member_live/show.ex:10 +#: lib/mv_web/live/member_live/show.ex:11 #, elixir-autogen, elixir-format msgid "This is a member record from your database." msgstr "" -#: lib/mv_web/member_live/show.ex:26 +#: lib/mv_web/live/member_live/show.ex:30 #, elixir-autogen, elixir-format msgid "Yes" msgstr "" -#: lib/mv_web/member_live/form_component.ex:102 +#: lib/mv_web/live/member_live/form.ex:108 +#: lib/mv_web/live/property_live/form.ex:200 +#: lib/mv_web/live/property_type_live/form.ex:73 #, elixir-autogen, elixir-format msgid "create" msgstr "" -#: lib/mv_web/member_live/form_component.ex:103 +#: lib/mv_web/live/member_live/form.ex:109 +#: lib/mv_web/live/property_live/form.ex:201 +#: lib/mv_web/live/property_type_live/form.ex:74 #, elixir-autogen, elixir-format msgid "update" msgstr "" @@ -244,7 +220,7 @@ msgstr "" msgid "Incorrect email or password" msgstr "" -#: lib/mv_web/member_live/form_component.ex:109 +#: lib/mv_web/live/member_live/form.ex:115 #, elixir-autogen, elixir-format msgid "Member %{action} successfully" msgstr "" @@ -259,7 +235,7 @@ msgstr "" msgid "You are now signed out" msgstr "" -#: lib/mv_web/controllers/auth_controller.ex:36 +#: lib/mv_web/controllers/auth_controller.ex:37 #, elixir-autogen, elixir-format msgid "You have already signed in another way, but have not confirmed your account.\nYou can confirm your account using the link we sent to you, or by resetting your password.\n" msgstr "" @@ -273,3 +249,143 @@ msgstr "" #, elixir-autogen, elixir-format msgid "Your password has successfully been reset" msgstr "" + +#: lib/mv_web/live/member_live/form.ex:52 +#: lib/mv_web/live/property_live/form.ex:44 +#: lib/mv_web/live/property_type_live/form.ex:32 +#, elixir-autogen, elixir-format +msgid "Cancel" +msgstr "" + +#: lib/mv_web/live/property_live/form.ex:29 +#, elixir-autogen, elixir-format +msgid "Choose a member" +msgstr "" + +#: lib/mv_web/live/property_live/form.ex:20 +#, elixir-autogen, elixir-format +msgid "Choose a property type" +msgstr "" + +#: lib/mv_web/live/property_type_live/form.ex:25 +#, elixir-autogen, elixir-format +msgid "Description" +msgstr "" + +#: lib/mv_web/live/property_type_live/form.ex:26 +#, elixir-autogen, elixir-format +msgid "Immutable" +msgstr "" + +#: lib/mv_web/components/layouts/navbar.ex:35 +#, elixir-autogen, elixir-format +msgid "Logout" +msgstr "" + +#: lib/mv_web/live/property_live/form.ex:27 +#, elixir-autogen, elixir-format +msgid "Member" +msgstr "" + +#: lib/mv_web/components/layouts/navbar.ex:14 +#: lib/mv_web/live/member_live/index.ex:12 +#: lib/mv_web/live/member_live/index.html.heex:3 +#, elixir-autogen, elixir-format +msgid "Members" +msgstr "" + +#: lib/mv_web/live/member_live/index.html.heex:50 +#: lib/mv_web/live/property_type_live/form.ex:16 +#, elixir-autogen, elixir-format +msgid "Name" +msgstr "" + +#: lib/mv_web/live/property_live/form.ex:37 +#, elixir-autogen, elixir-format +msgid "Please select a property type first" +msgstr "" + +#: lib/mv_web/components/layouts/navbar.ex:31 +#, elixir-autogen, elixir-format +msgid "Profil" +msgstr "" + +#: lib/mv_web/live/property_live/form.ex:207 +#, elixir-autogen, elixir-format, fuzzy +msgid "Property %{action} successfully" +msgstr "" + +#: lib/mv_web/live/property_live/form.ex:18 +#, elixir-autogen, elixir-format +msgid "Property type" +msgstr "" + +#: lib/mv_web/live/property_type_live/form.ex:80 +#, elixir-autogen, elixir-format +msgid "Property type %{action} successfully" +msgstr "" + +#: lib/mv_web/live/property_type_live/form.ex:27 +#, elixir-autogen, elixir-format +msgid "Required" +msgstr "" + +#: lib/mv_web/live/property_live/form.ex:42 +#, elixir-autogen, elixir-format +msgid "Save Property" +msgstr "" + +#: lib/mv_web/live/property_type_live/form.ex:30 +#, elixir-autogen, elixir-format +msgid "Save Property type" +msgstr "" + +#: lib/mv_web/live/member_live/index.html.heex:27 +#, elixir-autogen, elixir-format +msgid "Select all members" +msgstr "" + +#: lib/mv_web/live/member_live/index.html.heex:41 +#, elixir-autogen, elixir-format +msgid "Select member" +msgstr "" + +#: lib/mv_web/components/layouts/navbar.ex:34 +#, elixir-autogen, elixir-format +msgid "Settings" +msgstr "" + +#: lib/mv_web/live/property_live/form.ex:95 +#, elixir-autogen, elixir-format +msgid "Unsupported value type: %{type}" +msgstr "" + +#: lib/mv_web/live/property_live/form.ex:10 +#, elixir-autogen, elixir-format, fuzzy +msgid "Use this form to manage property records in your database." +msgstr "" + +#: lib/mv_web/live/property_type_live/form.ex:11 +#, elixir-autogen, elixir-format, fuzzy +msgid "Use this form to manage property_type records in your database." +msgstr "" + +#: lib/mv_web/live/property_live/form.ex:59 +#, elixir-autogen, elixir-format +msgid "Value" +msgstr "" + +#: lib/mv_web/live/property_type_live/form.ex:20 +#, elixir-autogen, elixir-format +msgid "Value type" +msgstr "" + +#: lib/mv_web/components/table_components.ex:30 +#, elixir-autogen, elixir-format +msgid "ascending" +msgstr "" + +#: lib/mv_web/components/table_components.ex:30 +#, elixir-autogen, elixir-format +msgid "descending" +msgstr ""