enhance(capacitor): journals calendar

This commit is contained in:
charlie
2025-04-24 13:46:51 +08:00
parent f50e0ed81a
commit 56fbdec8a2
2 changed files with 37 additions and 4 deletions

View File

@@ -14,6 +14,8 @@
[frontend.db-mixins :as db-mixins]
[frontend.state :as fstate]
[frontend.db.utils :as db-util]
[frontend.date :as frontend-date]
[goog.date :as gdate]
[logseq.db :as ldb]
[capacitor.pages.settings :as settings]))
@@ -38,6 +40,24 @@
(ionic/tabler-icon "calendar")
[:span.pl-1 (:block/title journal)]]))]))
(rum/defc journals-calendar-modal
[{:keys [close!]}]
(ionic/ion-modal
{:is-open true
:mode "ios"
:onWillDismiss (fn [] (close!))
:class "journals-calendar-modal ion-datetime-button-overlay"}
(ionic/ion-datetime {:presentation "date"
:onIonChange (fn [^js e]
(let [val (.-value (.-detail e))]
(let [page-name (frontend-date/journal-name (gdate/Date. (js/Date. val)))
nav-to-journal! #(pages-util/nav-to-block! % {:reload-pages! (fn [] ())})]
(if-let [journal (handler/local-page page-name)]
(nav-to-journal! journal)
(-> (handler/<create-page! page-name)
(p/then #(nav-to-journal! (handler/local-page page-name)))))
(close!))))})))
(rum/defc create-page-input
[{:keys [close! reload-pages!]}]
(ionic/ion-alert
@@ -65,6 +85,7 @@
(let [[all-pages set-all-pages!] (rum/use-state [])
[reload set-reload!] (rum/use-state 0)
[page-input-open? set-page-input-open?] (rum/use-state false)
[journal-calendar-open? set-journal-calendar-open?] (rum/use-state false)
[filtered-pages set-filtered-pages!] (rum/use-state [])]
(rum/use-effect!
@@ -91,9 +112,17 @@
[:h1.text-3xl.font-mono.font-bold.py-2 "Current graph"]
[:h2.py-1.text-lg (fstate/get-current-repo)]
[:h1.text-3xl.font-mono.font-bold.py-2.mt-4 "Journals"]
[:div.flex.justify-between.items-center.mt-4
[:h1.text-3xl.font-mono.font-bold.py-2 "Journals"]
[:flex.gap-1
(ionic/ion-button {:size "small" :fill "clear" :on-click #(set-journal-calendar-open? true)}
[:span {:slot "icon-only"} (ionic/tabler-icon "calendar" {:size 22})])]]
(journals-list)
(when journal-calendar-open?
(journals-calendar-modal {:close! #(set-journal-calendar-open? false)}))
[:div.flex.justify-between.items-center.pt-4
[:h1.text-3xl.font-mono.font-bold.py-2
"All pages"
@@ -101,9 +130,10 @@
[:div.flex.gap-1
(ionic/ion-button {:size "small" :fill "clear" :on-click #(set-page-input-open? true)}
[:span {:slot "icon-only"} (ionic/tabler-icon "plus")])
(ionic/ion-button {:size "small" :fill "clear" :on-click #(set-reload! (inc reload))}
[:span {:slot "icon-only"} (ionic/tabler-icon "refresh")])]]
[:span {:slot "icon-only"} (ionic/tabler-icon "file-plus" {:size 22})])
;(ionic/ion-button {:size "small" :fill "clear" :on-click #(set-reload! (inc reload))}
; [:span {:slot "icon-only"} (ionic/tabler-icon "refresh")])
]]
[:ul.mb-24.pt-2
(for [page filtered-pages]
(let [ident (some-> (:block/tags page) first :db/ident)]

View File

@@ -24,6 +24,9 @@
(defn local-all-pages []
(some->> (local-db) (ldb/get-all-pages) (sort-by :block/created-at) (reverse)))
(defn local-page [name]
(ldb/get-page (local-db) name))
(defn sub-journals
[]
(-> (react/q (fstate/get-current-repo)