better width x height support
This commit is contained in:
@@ -8,6 +8,11 @@ defmodule LabelmakerWeb.Tools do
|
||||
alias LabelmakerWeb.Constants
|
||||
|
||||
def process_parameters(parameters) do
|
||||
parameters =
|
||||
Constants.defaults()
|
||||
|> Map.new(fn {k, v} -> {Atom.to_string(k), v} end)
|
||||
|> Map.merge(parameters)
|
||||
|
||||
parameters =
|
||||
Constants.defaults()
|
||||
|> Map.new(fn {k, v} -> {Atom.to_string(k), v} end)
|
||||
@@ -24,6 +29,9 @@ defmodule LabelmakerWeb.Tools do
|
||||
{:label, label} ->
|
||||
{:label, process_label(label)}
|
||||
|
||||
{:label_too_long, _} ->
|
||||
{:label_too_long, String.length(parameters["label"]) > Constants.max_label_length()}
|
||||
|
||||
{:link, _} ->
|
||||
{:link, generate_link(parameters)}
|
||||
|
||||
@@ -31,7 +39,7 @@ defmodule LabelmakerWeb.Tools do
|
||||
{:preview_height, calculate_preview_height(parameters)}
|
||||
|
||||
{:preview_text, _} ->
|
||||
{:preview_text, String.split(parameters.label, "\\n")}
|
||||
{:preview_text, String.split(parameters["label"], "\\n")}
|
||||
|
||||
{:width, width} ->
|
||||
{:width, process_width(width, parameters)}
|
||||
@@ -51,8 +59,8 @@ defmodule LabelmakerWeb.Tools do
|
||||
Map.merge(Constants.defaults(), parameters)
|
||||
end
|
||||
|
||||
defp process_height("0", parameters) do
|
||||
parameters.width |> String.to_integer() |> max(0) |> min(Constants.max_height())
|
||||
defp process_height("", parameters) do
|
||||
parameters["width"] |> String.to_integer() |> max(0) |> min(Constants.max_height())
|
||||
end
|
||||
|
||||
defp process_height(height, _parameters) do
|
||||
@@ -67,22 +75,16 @@ defmodule LabelmakerWeb.Tools do
|
||||
end
|
||||
end
|
||||
|
||||
defp generate_link(%{:height => "0", "label" => label, :width => "0"} = parameters) do
|
||||
defp generate_link(%{"height" => "", "label" => label, "width" => ""} = parameters) do
|
||||
~p"/#{label}?#{Map.take(parameters, ["color", "font", "outline", "size"])}"
|
||||
end
|
||||
|
||||
defp generate_link(%{height: "0", width: width} = parameters),
|
||||
do: generate_link(%{parameters | height: width, width: width})
|
||||
|
||||
defp generate_link(%{height: height, width: "0"} = parameters),
|
||||
do: generate_link(%{parameters | height: height, width: height})
|
||||
|
||||
defp generate_link(%{"label" => label} = parameters) do
|
||||
~p"/#{label}?#{Map.take(parameters, ["color", "font", "height", "outline", "width"])}"
|
||||
end
|
||||
|
||||
defp process_width("0", parameters) do
|
||||
parameters.height |> String.to_integer() |> max(0) |> min(Constants.max_width())
|
||||
defp process_width("", parameters) do
|
||||
parameters["height"] |> String.to_integer() |> max(0) |> min(Constants.max_width())
|
||||
end
|
||||
|
||||
defp process_width(width, _parameters) do
|
||||
@@ -90,8 +92,8 @@ defmodule LabelmakerWeb.Tools do
|
||||
end
|
||||
|
||||
defp calculate_preview_height(parameters) do
|
||||
size = parameters.size |> String.to_integer()
|
||||
line_breaks = Regex.scan(~r/#{Regex.escape("\\n")}/, parameters.label) |> length()
|
||||
size = parameters["size"] |> String.to_integer()
|
||||
line_breaks = Regex.scan(~r/#{Regex.escape("\\n")}/, parameters["label"]) |> length()
|
||||
|
||||
size + size * line_breaks
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user