diff --git a/lib/labelmaker_web/constants.ex b/lib/labelmaker_web/constants.ex
index ffa8a7b..0c5d078 100644
--- a/lib/labelmaker_web/constants.ex
+++ b/lib/labelmaker_web/constants.ex
@@ -3,16 +3,17 @@ defmodule LabelmakerWeb.Constants do
color: "black",
font: "Helvetica",
gravity: "Center",
- height: "0",
+ height: "",
label: "",
+ label_too_long: false,
link: "",
outline: "none",
size: "72",
- width: "0"
+ width: ""
}
@preview %{
- preview_bg: "r",
+ preview_background: "r",
preview_height: @defaults.size,
preview_text: []
}
diff --git a/lib/labelmaker_web/controllers/label_controller.ex b/lib/labelmaker_web/controllers/label_controller.ex
index b0e30cf..f7eaf4b 100644
--- a/lib/labelmaker_web/controllers/label_controller.ex
+++ b/lib/labelmaker_web/controllers/label_controller.ex
@@ -42,7 +42,7 @@ defmodule LabelmakerWeb.LabelController do
]
end
- defp size_settings(args, %{height: 0, width: 0} = options) do
+ defp size_settings(args, %{height: "", width: ""} = options) do
args ++
[
"-pointsize",
@@ -87,6 +87,9 @@ defmodule LabelmakerWeb.LabelController do
defp generate_image(args) do
File.mkdir_p!(@label_dir)
+ # IO.puts("-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-")
+ # IO.inspect(args)
+
{_, 0} = System.cmd("magick", args)
end
end
diff --git a/lib/labelmaker_web/controllers/page_controller.ex b/lib/labelmaker_web/controllers/page_controller.ex
deleted file mode 100644
index 7dee29e..0000000
--- a/lib/labelmaker_web/controllers/page_controller.ex
+++ /dev/null
@@ -1,9 +0,0 @@
-defmodule LabelmakerWeb.PageController do
- use LabelmakerWeb, :controller
-
- def home(conn, _params) do
- # The home page is often custom made,
- # so skip the default app layout.
- render(conn, :home, layout: false)
- end
-end
diff --git a/lib/labelmaker_web/controllers/page_html.ex b/lib/labelmaker_web/controllers/page_html.ex
deleted file mode 100644
index 1b6df2e..0000000
--- a/lib/labelmaker_web/controllers/page_html.ex
+++ /dev/null
@@ -1,10 +0,0 @@
-defmodule LabelmakerWeb.PageHTML do
- @moduledoc """
- This module contains pages rendered by PageController.
-
- See the `page_html` directory for all templates available.
- """
- use LabelmakerWeb, :html
-
- embed_templates "page_html/*"
-end
diff --git a/lib/labelmaker_web/controllers/page_html/home.html.heex b/lib/labelmaker_web/controllers/page_html/home.html.heex
deleted file mode 100644
index d72b03c..0000000
--- a/lib/labelmaker_web/controllers/page_html/home.html.heex
+++ /dev/null
@@ -1,222 +0,0 @@
-<.flash_group flash={@flash} />
-
-
-
-
-
-
-
- Phoenix Framework
-
- v{Application.spec(:phoenix, :vsn)}
-
-
-
- Peace of mind from prototype to production.
-
-
- Build rich, interactive web applications quickly, with less code and fewer moving parts. Join our growing community of developers using Phoenix to craft APIs, HTML5 apps and more, for fun or at scale.
-
-
-
-
diff --git a/lib/labelmaker_web/live/home.ex b/lib/labelmaker_web/live/home.ex
index 77546ea..9a7b729 100644
--- a/lib/labelmaker_web/live/home.ex
+++ b/lib/labelmaker_web/live/home.ex
@@ -19,7 +19,15 @@ defmodule LabelmakerWeb.Home do
end
def handle_event("update_preview", %{"bg" => bg}, socket) do
- {:noreply, assign(socket, :preview_bg, bg)}
+ preview_background =
+ case bg do
+ "r" -> "bg-[linear-gradient(to_right,_black_33%,_white_67%)]"
+ "b" -> "bg-[linear-gradient(to_bottom,_black_33%,_white_67%)]"
+ "c" -> ""
+ _ -> "bg-[linear-gradient(to_right,_black_33%,_white_67%)]"
+ end
+
+ {:noreply, assign(socket, :preview_background, preview_background)}
end
def handle_event("update_label", params, socket) do
@@ -37,154 +45,4 @@ defmodule LabelmakerWeb.Home do
def handle_event("make_label", params, socket) do
{:noreply, redirect(socket, to: ~p"/#{params["label"]}?#{Map.drop(params, ["label"])}")}
end
-
- def render(assigns) do
- preview_background =
- case assigns.preview_bg do
- "r" -> "bg-[linear-gradient(to_right,_black_33%,_white_67%)]"
- "b" -> "bg-[linear-gradient(to_bottom,_black_33%,_white_67%)]"
- "c" -> ""
- _ -> "bg-[linear-gradient(to_right,_black_33%,_white_67%)]"
- end
-
- assigns =
- assign(
- assigns,
- label_too_long: String.length(assigns.label) > Constants.max_label_length(),
- preview_background: preview_background
- )
-
- ~H"""
-
-
Labelmaker
-
- Easily create text-based images. Perfect for quickly creating decals in Tabletop Simulator.
-
-
-
- <%= if @label_too_long do %>
- {Constants.max_label_error()}
- <% else %>
- <%= for {str, i} <- Enum.with_index(@preview_text) do %>
- {str}
- {if i < length(@preview_text) - 1, do: raw(" ")}
- <% end %>
- <% end %>
-
-
-
-
-
-
-
- """
- end
end
diff --git a/lib/labelmaker_web/live/home.html.heex b/lib/labelmaker_web/live/home.html.heex
new file mode 100644
index 0000000..a237ba8
--- /dev/null
+++ b/lib/labelmaker_web/live/home.html.heex
@@ -0,0 +1,160 @@
+
+
Labelmaker
+
+ Easily create text-based images. Perfect for quickly creating decals in Tabletop Simulator.
+
+
+
+ <%= if @label_too_long do %>
+ {Constants.max_label_error()}
+ <% else %>
+ <%= for {str, i} <- Enum.with_index(@preview_text) do %>
+ {str}
+ {if i < length(@preview_text) - 1, do: raw(" ")}
+ <% end %>
+ <% end %>
+
+
+
+
+
+
+
diff --git a/lib/labelmaker_web/tools.ex b/lib/labelmaker_web/tools.ex
index c061a2f..9433c48 100644
--- a/lib/labelmaker_web/tools.ex
+++ b/lib/labelmaker_web/tools.ex
@@ -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