From 229299146376a2b847f4fe3f331efbd26c0abc70 Mon Sep 17 00:00:00 2001 From: Tim Date: Wed, 11 Jun 2025 19:00:03 +0200 Subject: Add selection for end user to calculate ingredients for x persons/portions --- src/chef/pages/recipe.clj | 29 +++++++++++++++++++---------- src/chef/routes.clj | 1 - src/chef/utils.clj | 3 ++- 3 files changed, 21 insertions(+), 12 deletions(-) (limited to 'src/chef') diff --git a/src/chef/pages/recipe.clj b/src/chef/pages/recipe.clj index 84f999c..be88b2d 100644 --- a/src/chef/pages/recipe.clj +++ b/src/chef/pages/recipe.clj @@ -8,7 +8,7 @@ [ring.util.response :as ruresp]) (:import java.io.File)) -(defn- render [recipe] +(defn- render [portions recipe] (cutils/gen-page (str "chef - " (:recipes/title recipe)) [:div {:style {:margin-left "1em"}} [:div @@ -22,20 +22,27 @@ (jdbc/execute! @cdb/db) first)) ")")]] (when (some? (cutils/get-thumbnail-file recipe)) - [:img {:src (str "/recipes/" (:recipes/id recipe) "/thumbnail") + [:img {:src (str "/recipes/" (:recipes/id recipe) "/thumbnail") :width "50%"}]) - [:h2 (str "Zutaten" - (condp = (:recipes/unit recipe) - 0 " pro Portion" - 1 " pro Person" - "") - ":")] + [:h2 + "Zutaten pro " + [:input {:type :number + :value portions + :style {:width "3em" + :display :inline-block} + "_" "on change go to url `?portions=${value of me}`"}] + (condp = (:recipes/unit recipe) + 0 " Portion(en)" + 1 " Person(en)" + "") + ":"] [:ul (for [ingredient (-> recipe :recipes/ingredients cutils/parse-ingredients)] [:li [:b (:description ingredient)] ": " - (:amount ingredient) (:unit ingredient)])] + (* (:amount ingredient) portions) + (:unit ingredient)])] [:h2 "Zubereitung"] (->> (:recipes/preparation recipe) cstr/split-lines @@ -50,7 +57,9 @@ sql/format (jdbc/execute! @cdb/db) first - render + (render (or (try (Integer/parseInt (get-in req [:params "portions"])) + (catch Exception _ nil)) + 1)) html/html str ruresp/response)) diff --git a/src/chef/routes.clj b/src/chef/routes.clj index d21cb0d..084c7d7 100644 --- a/src/chef/routes.clj +++ b/src/chef/routes.clj @@ -4,7 +4,6 @@ [ring.middleware.params :as rmparams] [ring.middleware.multipart-params :as rmmultiparams] [ring.middleware.session :as rmsession] - [ring.middleware.reload :as rmreload] [dotenv :as env] [clojure.string :as cstr] diff --git a/src/chef/utils.clj b/src/chef/utils.clj index e2725ce..22797cb 100644 --- a/src/chef/utils.clj +++ b/src/chef/utils.clj @@ -14,7 +14,8 @@ [:link {:rel :stylesheet :href "/static/style.css"}] [:meta {:http-equiv "content-type" :content "text/html; charset=utf-8"}] [:meta {:name "robots" :content "noindex,nofollow"}]] - (apply conj [:body] content [[:script {:src "/static/htmx.js"}]])]) + (apply conj [:body] content [[:script {:src "/static/htmx.js"}] + [:script {:src "/static/hyperscript.js"}]])]) (defmacro auth-only [request & body] `(if (some? (get-in ~request [:session :oauth-token])) -- cgit v1.2.3