don't erase what a user wrote when they go over max_label_length
This commit is contained in:
@@ -1,10 +1,10 @@
|
|||||||
defmodule LabelmakerWeb.Constants do
|
defmodule LabelmakerWeb.Constants do
|
||||||
@defaults %{
|
@defaults %{
|
||||||
label: "64 character maximum",
|
label: "",
|
||||||
font: "Helvetica",
|
font: "Helvetica",
|
||||||
color: "black",
|
color: "black",
|
||||||
outline: "none",
|
outline: "white",
|
||||||
size: "24"
|
size: "32"
|
||||||
}
|
}
|
||||||
|
|
||||||
@preview %{
|
@preview %{
|
||||||
@@ -36,6 +36,7 @@ defmodule LabelmakerWeb.Constants do
|
|||||||
|> Enum.map(&String.trim_leading(&1, " Font: "))
|
|> Enum.map(&String.trim_leading(&1, " Font: "))
|
||||||
|
|
||||||
@max_label_length 64
|
@max_label_length 64
|
||||||
|
@max_label_error "64-character maximum"
|
||||||
|
|
||||||
@outlines ~w(none white black gray)
|
@outlines ~w(none white black gray)
|
||||||
|
|
||||||
@@ -50,6 +51,7 @@ defmodule LabelmakerWeb.Constants do
|
|||||||
def fonts, do: @fonts
|
def fonts, do: @fonts
|
||||||
def font_count, do: @fonts |> length()
|
def font_count, do: @fonts |> length()
|
||||||
def max_label_length, do: @max_label_length
|
def max_label_length, do: @max_label_length
|
||||||
|
def max_label_error, do: @max_label_error
|
||||||
def outlines, do: @outlines
|
def outlines, do: @outlines
|
||||||
def permitted_keys, do: @permitted_keys
|
def permitted_keys, do: @permitted_keys
|
||||||
def preview, do: @preview
|
def preview, do: @preview
|
||||||
|
|||||||
@@ -6,7 +6,6 @@ defmodule LabelmakerWeb.Home do
|
|||||||
def mount(_params, _session, socket) do
|
def mount(_params, _session, socket) do
|
||||||
assigns =
|
assigns =
|
||||||
Constants.defaults()
|
Constants.defaults()
|
||||||
|> Map.replace(:label, "")
|
|
||||||
|> Map.merge(Constants.preview())
|
|> Map.merge(Constants.preview())
|
||||||
|> Enum.to_list()
|
|> Enum.to_list()
|
||||||
|
|
||||||
@@ -45,10 +44,14 @@ defmodule LabelmakerWeb.Home do
|
|||||||
]}
|
]}
|
||||||
style={"height: calc(2rem + #{@preview_height}px); color: #{@color}; font-family: #{@font}; font-size: #{@size}px; line-height: #{@size}px;"}
|
style={"height: calc(2rem + #{@preview_height}px); color: #{@color}; font-family: #{@font}; font-size: #{@size}px; line-height: #{@size}px;"}
|
||||||
>
|
>
|
||||||
|
<%= if String.length(@label) > Constants.max_label_length() do %>
|
||||||
|
{Constants.max_label_error()}
|
||||||
|
<% else %>
|
||||||
<%= for {str, i} <- Enum.with_index(@preview_text) do %>
|
<%= for {str, i} <- Enum.with_index(@preview_text) do %>
|
||||||
{str}
|
{str}
|
||||||
{if i < length(@preview_text) - 1, do: raw("<br />")}
|
{if i < length(@preview_text) - 1, do: raw("<br />")}
|
||||||
<% end %>
|
<% end %>
|
||||||
|
<% end %>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<form phx-change="update_label" phx-submit="make_label" class="space-y-4">
|
<form phx-change="update_label" phx-submit="make_label" class="space-y-4">
|
||||||
|
|||||||
@@ -11,14 +11,23 @@ defmodule LabelmakerWeb.Tools do
|
|||||||
|> Map.take(Constants.permitted_keys())
|
|> Map.take(Constants.permitted_keys())
|
||||||
|> Map.new(fn {k, v} -> {String.to_atom(k), v} end)
|
|> Map.new(fn {k, v} -> {String.to_atom(k), v} end)
|
||||||
|> Enum.map(fn
|
|> Enum.map(fn
|
||||||
{:preview_height, _} -> {:preview_height, size + size * line_breaks}
|
{:label, label} ->
|
||||||
{:preview_text, _} -> {:preview_text, String.split(label, "\\n")}
|
if String.length(label) > Constants.max_label_length(),
|
||||||
pair -> pair
|
do: {:label, String.slice(label, 0, Constants.max_label_length())},
|
||||||
|
else: {:label, label}
|
||||||
|
|
||||||
|
{:preview_height, _} ->
|
||||||
|
{:preview_height, size + size * line_breaks}
|
||||||
|
|
||||||
|
{:preview_text, _} ->
|
||||||
|
{:preview_text, String.split(label, "\\n")}
|
||||||
|
|
||||||
|
pair ->
|
||||||
|
pair
|
||||||
end)
|
end)
|
||||||
|> Enum.filter(fn
|
|> Enum.filter(fn
|
||||||
{:color, color} -> color in Constants.colors()
|
{:color, color} -> color in Constants.colors()
|
||||||
{:font, font} -> font in Constants.fonts()
|
{:font, font} -> font in Constants.fonts()
|
||||||
{:label, label} -> String.length(label) <= Constants.max_label_length()
|
|
||||||
{:outline, outline} -> outline in Constants.outlines()
|
{:outline, outline} -> outline in Constants.outlines()
|
||||||
{:size, size} -> size in Constants.sizes()
|
{:size, size} -> size in Constants.sizes()
|
||||||
_ -> true
|
_ -> true
|
||||||
|
|||||||
Reference in New Issue
Block a user