pass in settings via query string parameters

This commit is contained in:
Gavin McDonald
2025-04-29 15:25:18 -04:00
parent 48e83f4986
commit 96cb9f6f7f

View File

@@ -2,20 +2,34 @@ defmodule LabelmakerWeb.Label do
use LabelmakerWeb, :live_view use LabelmakerWeb, :live_view
@label_dir Path.join(:code.priv_dir(:labelmaker), "static/labels") @label_dir Path.join(:code.priv_dir(:labelmaker), "static/labels")
File.mkdir_p!(@label_dir)
def mount(%{"label" => label}, _session, socket) do @defaults %{
File.mkdir_p!(@label_dir) "label" => "Labelmaker",
"font" => "Helvetica",
"color" => "black",
"size" => "24"
}
filename = "#{label}.png" @permitted_keys Map.keys(@defaults)
def mount(params, _session, socket) do
options =
@defaults
|> Map.merge(params)
|> Map.take(@permitted_keys)
IO.inspect(options)
filename = "#{options["label"]}.png"
filepath = Path.join(@label_dir, filename) filepath = Path.join(@label_dir, filename)
unless File.exists?(filepath) do unless File.exists?(filepath) do
generate_label_image(label, filepath) generate_label_image(options, filepath)
end end
{:ok, {:ok,
assign(socket, assign(socket,
label: label, label: options["label"],
image_path: ~p"/labels/#{filename}" image_path: ~p"/labels/#{filename}"
)} )}
end end
@@ -29,17 +43,17 @@ defmodule LabelmakerWeb.Label do
""" """
end end
defp generate_label_image(label, filepath) do defp generate_label_image(options, filepath) do
args = [ args = [
"-background", "-background",
"none", "none",
"-fill", "-fill",
"black", options["color"],
"-pointsize", "-pointsize",
"24", options["size"],
"-font", "-font",
"Comic-Sans-MS", options["font"],
"label:#{label}", "label:#{options["label"]}",
filepath filepath
] ]
@@ -50,4 +64,8 @@ defmodule LabelmakerWeb.Label do
# File.rm(tmp_file) # File.rm(tmp_file)
# Base.encode64(png_binary) # Base.encode64(png_binary)
end end
# defp get_image_settings(socket) do
#
# end
end end