From 96cb9f6f7fce040d294964375f3d128804417b4e Mon Sep 17 00:00:00 2001 From: Gavin McDonald Date: Tue, 29 Apr 2025 15:25:18 -0400 Subject: [PATCH] pass in settings via query string parameters --- lib/labelmaker_web/live/label.ex | 38 +++++++++++++++++++++++--------- 1 file changed, 28 insertions(+), 10 deletions(-) diff --git a/lib/labelmaker_web/live/label.ex b/lib/labelmaker_web/live/label.ex index fb32dc6..d8f7d22 100644 --- a/lib/labelmaker_web/live/label.ex +++ b/lib/labelmaker_web/live/label.ex @@ -2,20 +2,34 @@ defmodule LabelmakerWeb.Label do use LabelmakerWeb, :live_view @label_dir Path.join(:code.priv_dir(:labelmaker), "static/labels") + File.mkdir_p!(@label_dir) - def mount(%{"label" => label}, _session, socket) do - File.mkdir_p!(@label_dir) + @defaults %{ + "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) unless File.exists?(filepath) do - generate_label_image(label, filepath) + generate_label_image(options, filepath) end {:ok, assign(socket, - label: label, + label: options["label"], image_path: ~p"/labels/#{filename}" )} end @@ -29,17 +43,17 @@ defmodule LabelmakerWeb.Label do """ end - defp generate_label_image(label, filepath) do + defp generate_label_image(options, filepath) do args = [ "-background", "none", "-fill", - "black", + options["color"], "-pointsize", - "24", + options["size"], "-font", - "Comic-Sans-MS", - "label:#{label}", + options["font"], + "label:#{options["label"]}", filepath ] @@ -50,4 +64,8 @@ defmodule LabelmakerWeb.Label do # File.rm(tmp_file) # Base.encode64(png_binary) end + + # defp get_image_settings(socket) do + # + # end end