(ns chef.frontend.visitor.recipe (:require [chef.utils :as cutils] [clojure.string :as cstr] [hiccup2.core :as html] [ring.util.response :as ruresp] [chef.logic.recipes :as clrecipes] [chef.logic.categories :as clcategories])) (defn- render [portions recipe] (cutils/gen-page (str "chef - " (:recipes/title recipe)) [:div {:style {:margin-left "1em"}} [:div [:h1 {:style {:display :inline-block :margin-right "0.5em"}} (:recipes/title recipe)] [:i (str "(" (-> (:recipes/category recipe) clcategories/get-category clcategories/generate-path) ")")]] (when (some? (clrecipes/get-recipe-thumbnail (:recipes/id recipe))) [:img {:src (str "/recipes/" (:recipes/id recipe) "/thumbnail") :width "50%"}]) [: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) portions) (:unit ingredient)])] [:h2 "Zubereitung"] (->> (:recipes/preparation recipe) cstr/split-lines (map #(if (cstr/blank? %) [:br] [:p %])))])) (defn handler [req] (->> (clrecipes/get-recipe (get-in req [:path-params :id])) (render (or (cutils/s->int-or-nil (get-in req [:params "portions"])) 1)) html/html str ruresp/response))