From 9f5c779e3d582f1516d7cc189d571f042e35700d Mon Sep 17 00:00:00 2001 From: Christian Johansen Date: Fri, 13 Oct 2023 13:27:02 +0200 Subject: [PATCH] =?UTF-8?q?Lag=20en=20side=20til=20hver=20matvare,=20p?= =?UTF-8?q?=C3=A5=20b=C3=A5de=20norsk=20og=20engelsk?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Magnar Sveen --- resources/app-schema.edn | 4 +++- src/matvaretabellen/ingest.clj | 24 +++++++++++++++++++++--- src/matvaretabellen/pages.clj | 29 ++++++++++++++++++++--------- 3 files changed, 44 insertions(+), 13 deletions(-) diff --git a/resources/app-schema.edn b/resources/app-schema.edn index fe51488..825ad39 100644 --- a/resources/app-schema.edn +++ b/resources/app-schema.edn @@ -1 +1,3 @@ -[] +[{:db/ident :food/id + :db/valueType :db.type/string + :db/cardinality :db.cardinality/one}] diff --git a/src/matvaretabellen/ingest.clj b/src/matvaretabellen/ingest.clj index b2a97bc..2460f12 100644 --- a/src/matvaretabellen/ingest.clj +++ b/src/matvaretabellen/ingest.clj @@ -1,9 +1,27 @@ (ns matvaretabellen.ingest (:require [datomic-type-extensions.api :as d] - [matvaretabellen.pages :as pages])) + [matvaretabellen.pages :as pages] + [matvaretabellen.urls :as urls])) -(defn on-started [_foods-conn powerpack-app] - @(d/transact (:datomic/conn powerpack-app) pages/static-pages)) +(defn get-food-pages [db] + (->> (d/q '[:find ?food-id ?food-name + :where + [?f :food/id ?food-id] + [?f :food/name ?food-name]] + db) + (mapcat + (fn [[id i18n-names]] + (for [[locale food-name] i18n-names] + {:page/uri (urls/get-url locale food-name) + :page/kind :page.kind/food + :page/locale locale + :food/id id}))))) + +(defn on-started [foods-conn powerpack-app] + (->> pages/static-pages + (concat (get-food-pages (d/db foods-conn))) + (d/transact (:datomic/conn powerpack-app)) + deref)) (defn create-tx [_file-name datas] datas) diff --git a/src/matvaretabellen/pages.clj b/src/matvaretabellen/pages.clj index 4340d3a..7a809de 100644 --- a/src/matvaretabellen/pages.clj +++ b/src/matvaretabellen/pages.clj @@ -7,22 +7,22 @@ (def static-pages [{:page/uri "/" - :page/kind :frontpage + :page/kind :page.kind/frontpage :page/locale :nb} {:page/uri "/en/" - :page/kind :frontpage + :page/kind :page.kind/frontpage :page/locale :en} {:page/uri "/index/nb.json" - :page/kind :foods-index + :page/kind :page.kind/foods-index :page/locale :nb} {:page/uri "/index/en.json" - :page/kind :foods-index + :page/kind :page.kind/foods-index :page/locale :en} {:page/uri "/foods/nb.json" - :page/kind :foods-lookup + :page/kind :page.kind/foods-lookup :page/locale :nb} {:page/uri "/foods/en.json" - :page/kind :foods-lookup + :page/kind :page.kind/foods-lookup :page/locale :en}]) (defn render-foods-index [db page] @@ -54,11 +54,22 @@ :input {:name "foods-search"} :autocomplete-id "foods-results"})]]))) +(defn render-food-page [context db page] + (let [food (d/entity (:foods/db context) [:food/id (:food/id page)])] + (html/render-hiccup + context + page + (list + (SiteHeader {:home-url "/"}) + [:div.container + [:h1 (get-in food [:food/name (:page/locale page)])]])))) + (defn render-page [context page] (let [db (:foods/db context)] (case (:page/kind page) - :foods-index (render-foods-index db page) - :foods-lookup (render-foods-lookup db page) - :frontpage (render-frontpage context db page) + :page.kind/foods-index (render-foods-index db page) + :page.kind/foods-lookup (render-foods-lookup db page) + :page.kind/frontpage (render-frontpage context db page) + :page.kind/food (render-food-page context db page) )) )