diff --git a/lib/labelmaker_web/constants.ex b/lib/labelmaker_web/constants.ex index a840f37..0c8e4f8 100644 --- a/lib/labelmaker_web/constants.ex +++ b/lib/labelmaker_web/constants.ex @@ -8,14 +8,11 @@ defmodule LabelmakerWeb.Constants do } @preview %{ + preview_bg: "r", preview_height: @defaults.size, preview_text: [] } - @stringview @preview - |> Enum.map(fn {k, v} -> {Atom.to_string(k), v} end) - |> Map.new() - @permitted_keys @defaults |> Map.merge(@preview) |> Map.keys() @@ -30,6 +27,7 @@ defmodule LabelmakerWeb.Constants do |> Enum.reject(&is_nil/1) # filter out colors that end in a number (no CSS equivalent) |> Enum.reject(fn color -> String.match?(color, ~r/\d+$/) end) + |> Enum.uniq() @fonts System.cmd("magick", ["-list", "font"]) |> elem(0) @@ -59,5 +57,4 @@ defmodule LabelmakerWeb.Constants do def permitted_keys, do: @permitted_keys def preview, do: @preview def sizes, do: @sizes - def stringview, do: @stringview end diff --git a/lib/labelmaker_web/live/home.ex b/lib/labelmaker_web/live/home.ex index 3ebd477..df160c9 100644 --- a/lib/labelmaker_web/live/home.ex +++ b/lib/labelmaker_web/live/home.ex @@ -18,10 +18,16 @@ defmodule LabelmakerWeb.Home do } end + def handle_event("update_preview", %{"bg" => bg}, socket) do + {:noreply, assign(socket, :preview_bg, bg)} + end + def handle_event("update_label", params, socket) do assigns = - params - |> Map.merge(Constants.stringview()) + socket.assigns + |> Enum.map(fn {k, v} -> {Atom.to_string(k), v} end) + |> Map.new() + |> Map.merge(params) |> Tools.process_parameters() |> Enum.to_list() @@ -40,14 +46,22 @@ defmodule LabelmakerWeb.Home do String.length(assigns.label) > Constants.max_label_length() ) + preview_background = + case assigns.preview_bg do + "r" -> "bg-[linear-gradient(to_right,_black_25%,_white_75%)]" + "b" -> "bg-[linear-gradient(to_bottom,_black_25%,_white_75%)]" + "c" -> "bg-[#{assigns.color}]" + _ -> "bg-[linear-gradient(to_right,_black_25%,_white_75%)]" + end + ~H"""
+ Note: not all fonts are available for preview. +
+