diff --git a/lib/labelmaker_web/constants.ex b/lib/labelmaker_web/constants.ex index f6c60eb..c558717 100644 --- a/lib/labelmaker_web/constants.ex +++ b/lib/labelmaker_web/constants.ex @@ -3,25 +3,25 @@ defmodule LabelmakerWeb.Constants do align: "center", color: "black", font: "Helvetica", - height: "", + height: "300", label: "", label_too_long: false, link: "", - outline: "none", + outline: "white", size: "72", - sizing: "font", rows: 2, - width: "" + width: "400" } - @preview %{ + @form_defaults %{ + sizing: "font", preview_background: "r", preview_height: @defaults.size, preview_text: [] } @permitted_keys @defaults - |> Map.merge(@preview) + |> Map.merge(@form_defaults) |> Map.keys() |> Enum.map(&Atom.to_string/1) @@ -85,6 +85,8 @@ defmodule LabelmakerWeb.Constants do |> Enum.take_every(8) |> Enum.map(&Integer.to_string/1) + @sizing_values ["font", "wxh"] + def colors, do: @colors def danger, do: @danger def defaults, do: @defaults @@ -105,8 +107,9 @@ defmodule LabelmakerWeb.Constants do def permitted_alignments, do: @alignments def permitted_gravity, do: @gravity def permitted_keys, do: @permitted_keys - def preview, do: @preview + def form_defaults, do: @form_defaults def rows_min, do: @rows_min def rows_max, do: @rows_max def sizes, do: @sizes + def sizing_values, do: @sizing_values end diff --git a/lib/labelmaker_web/live/home.ex b/lib/labelmaker_web/live/home.ex index bd2954b..0ad825e 100644 --- a/lib/labelmaker_web/live/home.ex +++ b/lib/labelmaker_web/live/home.ex @@ -7,10 +7,10 @@ defmodule LabelmakerWeb.Home do def mount(_params, _session, socket) do assigns = Constants.defaults() - |> Map.merge(Constants.preview()) + |> Map.merge(Constants.form_defaults()) |> Map.put( :preview_background, - Tools.process_preview_background(Constants.preview().preview_background) + Tools.process_preview_background(Constants.form_defaults().preview_background) ) |> Enum.to_list() @@ -39,6 +39,15 @@ defmodule LabelmakerWeb.Home do {:noreply, assign(socket, :preview_background, Tools.process_preview_background(bg))} end + def handle_event("update_sizing", %{"sizing" => sizing}, socket) do + sizing = + if sizing in Constants.sizing_values(), do: sizing, else: Constants.form_defaults().sizing + + assigns = Map.put(socket.assigns, :sizing, sizing) + + {:noreply, assign(socket, sizing: sizing, link: Tools.generate_link(assigns))} + end + def handle_event("update_alignment", %{"option" => option}, socket) do {:noreply, assign(socket, :align, option)} end diff --git a/lib/labelmaker_web/live/home.html.heex b/lib/labelmaker_web/live/home.html.heex index 3cfba48..f522254 100644 --- a/lib/labelmaker_web/live/home.html.heex +++ b/lib/labelmaker_web/live/home.html.heex @@ -107,7 +107,11 @@ -