Skip to content

Commit

Permalink
Legg til sider for matvaregrupper
Browse files Browse the repository at this point in the history
  • Loading branch information
magnars committed Oct 16, 2023
1 parent c3b7787 commit d475d07
Show file tree
Hide file tree
Showing 5 changed files with 74 additions and 19 deletions.
4 changes: 4 additions & 0 deletions resources/app-schema.edn
@@ -1,3 +1,7 @@
[{:db/ident :food/id
:db/valueType :db.type/string
:db/cardinality :db.cardinality/one}

{:db/ident :food-group/id
:db/valueType :db.type/string
:db/cardinality :db.cardinality/one}]
28 changes: 22 additions & 6 deletions src/matvaretabellen/ingest.clj
Expand Up @@ -12,11 +12,25 @@
(mapcat
(fn [[id i18n-names]]
(for [[locale food-name] i18n-names]
{:page/uri (urls/get-url locale food-name)
{:page/uri (urls/get-food-url locale food-name)
:page/kind :page.kind/food
:page/locale locale
:food/id id})))))

(defn get-food-group-pages [db]
(->> (d/q '[:find ?id ?name
:where
[?f :food-group/id ?id]
[?f :food-group/name ?name]]
db)
(mapcat
(fn [[id i18n-names]]
(for [[locale name] i18n-names]
{:page/uri (urls/get-food-group-url locale name)
:page/kind :page.kind/food-group
:page/locale locale
:food-group/id id})))))

(defn ensure-unique-page-uris [entity-maps]
(when-not (= (count entity-maps)
(count (set (map :page/uri entity-maps))))
Expand All @@ -27,11 +41,13 @@
entity-maps)

(defn on-started [foods-conn powerpack-app]
(->> (concat pages/static-pages
(get-food-pages (d/db foods-conn)))
(ensure-unique-page-uris)
(d/transact (:datomic/conn powerpack-app))
deref))
(let [db (d/db foods-conn)]
(->> (concat pages/static-pages
(get-food-pages db)
(get-food-group-pages db))
(ensure-unique-page-uris)
(d/transact (:datomic/conn powerpack-app))
deref)))

(defn create-tx [_file-name datas]
datas)
47 changes: 37 additions & 10 deletions src/matvaretabellen/pages.clj
@@ -1,10 +1,11 @@
(ns matvaretabellen.pages
(:require [datomic-type-extensions.api :as d]
[matvaretabellen.components.toc :refer [Toc]]
[matvaretabellen.search-index :as index]
[matvaretabellen.urls :as urls]
[mt-designsystem.components.breadcrumbs :refer [Breadcrumbs]]
[mt-designsystem.components.search-input :refer [SearchInput]]
[mt-designsystem.components.site-header :refer [SiteHeader]]
[matvaretabellen.components.toc :refer [Toc]]
[powerpack.html :as html]))

(def static-pages
Expand Down Expand Up @@ -60,7 +61,7 @@
(let [food (d/entity (:foods/db context) [:food/id (:food/id page)])
locale (:page/locale page)
food-name (get-in food [:food/name locale])
food-category (get-in food [:food/food-group :food-group/name locale])]
food-group-name (get-in food [:food/food-group :food-group/name locale])]
(html/render-hiccup
context
page
Expand All @@ -69,19 +70,21 @@
[:div
[:div.mvt-hero-banner
[:div.container
(Breadcrumbs {:links [{:text "Mattilsynet.no" :url "https://www.mattilsynet.no/"}
{:text "Søk i Matvaretabellen" :url "/"}
{:text "Alle matvaregrupper" :url "/"}
{:text food-category :url "/"}
{:text food-name}]})]]
(Breadcrumbs
{:links [{:text "Mattilsynet.no" :url "https://www.mattilsynet.no/"}
{:text "Søk i Matvaretabellen" :url "/"}
{:text "Alle matvaregrupper" :url "/"}
{:text food-group-name
:url (urls/get-food-group-url locale food-group-name)}
{:text food-name}]})]]
[:div.mvt-hero-banner
[:div.container
[:div {:style {:display "flex"}}
[:div {:style {:flex "1"}}
[:h1.h1 food-name]
[:h1.h1 food-name]
[:div.intro.mtl
[:div "Matvare-ID: " (:food/id food)]
[:div "Kategori: " food-category]
[:div "Kategori: " food-group-name]
[:div "Latin: " (:food/latin-name food)]]]
(Toc {:title "Innhold"
:contents [{:title "Næringsinnhold"
Expand All @@ -101,10 +104,34 @@
{:title "Beskrivelse av matvaren"
:href "#beskrivelse"}]})]]]]))))

(defn render-food-group-page [context db page]
(let [food-group (d/entity (:foods/db context)
[:food-group/id (:food-group/id page)])
locale (:page/locale page)
food-group-name (get-in food-group [:food-group/name locale])]
(html/render-hiccup
context
page
(list
(SiteHeader {:home-url "/"})
[:div
[:div.mvt-hero-banner
[:div.container
(Breadcrumbs {:links [{:text "Mattilsynet.no" :url "https://www.mattilsynet.no/"}
{:text "Søk i Matvaretabellen" :url "/"}
{:text "Alle matvaregrupper" :url "/"}
{:text food-group-name}]})]]
[:div.mvt-hero-banner
[:div.container
[:div {:style {:display "flex"}}
[:div {:style {:flex "1"}}
[:h1.h1 food-group-name]]]]]]))))

(defn render-page [context page]
(let [db (:foods/db context)]
(case (:page/kind 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))))
:page.kind/food (render-food-page context db page)
:page.kind/food-group (render-food-group-page context db page))))
2 changes: 1 addition & 1 deletion src/matvaretabellen/ui/main.cljs
Expand Up @@ -44,7 +44,7 @@
["<ol class='mvt-ac-results'>"
(for [result (take 10 (foods-search/search @search-engine q))]
["<li class='mvt-ac-result'>"
["<a href='" (urls/get-url locale (:name result)) "'>" (:name result) "</a>"]
["<a href='" (urls/get-food-url locale (:name result)) "'>" (:name result) "</a>"]
"</li>"])
"</ol>"]))))))

Expand Down
12 changes: 10 additions & 2 deletions src/matvaretabellen/urls.cljc
Expand Up @@ -14,10 +14,18 @@
remove-diacritics
(str/replace #"\W+" "-")))

(defn get-url [locale food-name]
(defn get-url [locale prefix the-name]
(str (when-not (= :nb locale)
(str "/" (name locale)))
"/" (slugify food-name) "/"))
(or prefix "/") (slugify the-name) "/"))

(defn get-food-url [locale the-name]
(get-url locale "" the-name))

(defn get-food-group-url [locale the-name]
(get-url locale (case locale
:nb "/gruppe/"
:en "/group/") the-name))

(comment

Expand Down

0 comments on commit d475d07

Please sign in to comment.