Tienson Qin 2 лет назад
Родитель
Сommit
7cc0b15d04

+ 65 - 64
src/main/frontend/components/page.cljs

@@ -505,79 +505,80 @@
           *current-block-page (::current-page state)
           block-or-whiteboard? (or block? whiteboard?)
           home? (= :home (state/get-current-route))]
-      [:div.flex-1.page.relative
-       (merge (if (seq (:block/tags page))
-                (let [page-names (model/get-page-names-by-ids (map :db/id (:block/tags page)))]
-                  {:data-page-tags (text-util/build-data-value page-names)})
-                {})
-
-              {:key path-page-name
-               :class (util/classnames [{:is-journals (or journal? fmt-journal?)}])})
-
-       (if (and whiteboard-page? (not sidebar?))
-         [:div ((state/get-component :whiteboard/tldraw-preview) page-name)] ;; FIXME: this is not reactive
-         [:div.relative
-          (when (and (not sidebar?) (not block?))
-            [:div.flex.flex-row.space-between
-             (when (or (mobile-util/native-platform?) (util/mobile?))
-               [:div.flex.flex-row.pr-2
-                {:style {:margin-left -15}
-                 :on-mouse-over (fn [e]
-                                  (page-mouse-over e *control-show? *all-collapsed?))
-                 :on-mouse-leave (fn [e]
-                                   (page-mouse-leave e *control-show?))}
-                (page-blocks-collapse-control title *control-show? *all-collapsed?)])
-             (let [original-name (:block/original-name (db/entity [:block/name (util/page-name-sanity-lc page-name)]))]
-               (when (and (not whiteboard?) original-name)
-                 (page-title page-name {:journal? journal?
-                                        :fmt-journal? fmt-journal?
-                                        :built-in-property? built-in-property?
-                                        :preview? preview?})))
-             (when (not config/publishing?)
-               (when config/lsp-enabled?
-                 [:div.flex.flex-row
-                  (plugins/hook-ui-slot :page-head-actions-slotted nil)
-                  (plugins/hook-ui-items :pagebar)]))])
+      (when page-name
+        [:div.flex-1.page.relative
+         (merge (if (seq (:block/tags page))
+                  (let [page-names (model/get-page-names-by-ids (map :db/id (:block/tags page)))]
+                    {:data-page-tags (text-util/build-data-value page-names)})
+                  {})
+
+                {:key path-page-name
+                 :class (util/classnames [{:is-journals (or journal? fmt-journal?)}])})
+
+         (if (and whiteboard-page? (not sidebar?))
+           [:div ((state/get-component :whiteboard/tldraw-preview) page-name)] ;; FIXME: this is not reactive
+           [:div.relative
+            (when (and (not sidebar?) (not block?))
+              [:div.flex.flex-row.space-between
+               (when (or (mobile-util/native-platform?) (util/mobile?))
+                 [:div.flex.flex-row.pr-2
+                  {:style {:margin-left -15}
+                   :on-mouse-over (fn [e]
+                                    (page-mouse-over e *control-show? *all-collapsed?))
+                   :on-mouse-leave (fn [e]
+                                     (page-mouse-leave e *control-show?))}
+                  (page-blocks-collapse-control title *control-show? *all-collapsed?)])
+               (let [original-name (:block/original-name (db/entity [:block/name (util/page-name-sanity-lc page-name)]))]
+                 (when (and (not whiteboard?) original-name)
+                   (page-title page-name {:journal? journal?
+                                          :fmt-journal? fmt-journal?
+                                          :built-in-property? built-in-property?
+                                          :preview? preview?})))
+               (when (not config/publishing?)
+                 (when config/lsp-enabled?
+                   [:div.flex.flex-row
+                    (plugins/hook-ui-slot :page-head-actions-slotted nil)
+                    (plugins/hook-ui-items :pagebar)]))])
 
-          [:div
-           (when (and block? (not sidebar?) (not whiteboard?))
-             (let [config {:id "block-parent"
-                           :block? true}]
-               [:div.mb-4
-                (component-block/breadcrumb config repo block-id {:level-limit 3})]))
+            [:div
+             (when (and block? (not sidebar?) (not whiteboard?))
+               (let [config {:id "block-parent"
+                             :block? true}]
+                 [:div.mb-4
+                  (component-block/breadcrumb config repo block-id {:level-limit 3})]))
 
-           (when (and db-based? (not block?) (not preview?))
-             (db-page/page-properties-react page {:configure? false}))
+             (when (and db-based? (not block?) (not preview?))
+               (db-page/page-properties-react page {:configure? false}))
 
            ;; blocks
-           (let [_ (and block? page (reset! *current-block-page (:block/name (:block/page page))))
-                 _ (when (and block? (not page))
-                     (route-handler/redirect-to-page! @*current-block-page))]
-             (page-blocks-cp repo page {:sidebar? sidebar? :whiteboard? whiteboard?}))]])
+             (let [_ (and block? page (reset! *current-block-page (:block/name (:block/page page))))
+                   _ (when (and block? (not page))
+                       (route-handler/redirect-to-page! @*current-block-page))]
+               (page-blocks-cp repo page {:sidebar? sidebar? :whiteboard? whiteboard?}))]])
 
-       (when today?
-         (today-queries repo today? sidebar?))
+         (when today?
+           (today-queries repo today? sidebar?))
 
-       (when today?
-         (scheduled/scheduled-and-deadlines page-name))
+         (when today?
+           (scheduled/scheduled-and-deadlines page-name))
 
-       (when-not block?
-         (tagged-pages repo page-name page-original-name))
+         (when-not block?
+           (tagged-pages repo page-name page-original-name))
 
        ;; referenced blocks
-       (when-not block-or-whiteboard?
-         [:div {:key "page-references"}
-          (rum/with-key
-            (reference/references route-page-name)
-            (str route-page-name "-refs"))])
-
-       (when-not block-or-whiteboard?
-         (when (not journal?)
-           (hierarchy/structures route-page-name)))
-
-       (when-not (or block-or-whiteboard? sidebar? home?)
-         [:div {:key "page-unlinked-references"}
-          (reference/unlinked-references route-page-name)])])))
+         (when-not block-or-whiteboard?
+           [:div {:key "page-references"}
+            (rum/with-key
+              (reference/references route-page-name)
+              (str route-page-name "-refs"))])
+
+         (when-not block-or-whiteboard?
+           (when (not journal?)
+             (hierarchy/structures route-page-name)))
+
+         (when-not (or block-or-whiteboard? sidebar? home?)
+           [:div {:key "page-unlinked-references"}
+            (reference/unlinked-references route-page-name)])]))))
 
 (rum/defcs page < rum/reactive
   [state option]

+ 1 - 1
src/main/frontend/date.cljs

@@ -151,7 +151,7 @@
   [journal-title]
   (let [formatter (if-let [format (state/get-journal-file-name-format)]
                     (tf/formatter format)
-                    default-journal-filename-formatter)]
+                    (tf/formatter default-journal-filename-formatter))]
     (journal-title-> journal-title #(tf/unparse formatter %))))
 
 (defn journal-title->custom-format

+ 5 - 1
src/main/frontend/persist_db/browser.cljs

@@ -12,7 +12,8 @@
             [frontend.state :as state]
             [electron.ipc :as ipc]
             [frontend.handler.worker :as worker-handler]
-            [logseq.db :as ldb]))
+            [logseq.db :as ldb]
+            [frontend.date :as date]))
 
 (defonce *worker (atom nil))
 
@@ -41,11 +42,14 @@
   [^js worker repo tx-data tx-meta]
   (let [tx-meta' (pr-str tx-meta)
         tx-data' (pr-str tx-data)
+        ;; TODO: a better way to share those information with worker, maybe using the state watcher to notify the worker?
         context {:dev? config/dev?
                  :node-test? util/node-test?
                  :validate-db-options (:dev/validate-db-options (state/get-config))
                  :importing? (:graph/importing @state/state)
                  :date-formatter (state/get-date-formatter)
+                 :journal-file-name-format (or (state/get-journal-file-name-format)
+                                               date/default-journal-filename-formatter)
                  :export-bullet-indentation (state/get-export-bullet-indentation)
                  :preferred-format (state/get-preferred-format)
                  :journals-directory (config/get-journals-directory)

+ 5 - 5
src/main/frontend/worker/date.cljs

@@ -3,7 +3,7 @@
   (:require [cljs-time.format :as tf]
             [logseq.common.util :as common-util]))
 
-(def default-journal-filename-formatter (tf/formatter "yyyy_MM_dd"))
+(def default-journal-filename-formatter "yyyy_MM_dd")
 
 (defn journal-title-formatters
   [date-formatter]
@@ -71,8 +71,8 @@
 
 (defn date->file-name
   "Date object to filename format"
-  [date date-formater]
-  (let [formatter (if date-formater
-                    (tf/formatter date-formater)
-                    default-journal-filename-formatter)]
+  [date journal-filename-formatter]
+  (let [formatter (if journal-filename-formatter
+                    (tf/formatter journal-filename-formatter)
+                    (tf/formatter default-journal-filename-formatter))]
     (tf/unparse formatter date)))

+ 2 - 1
src/main/frontend/worker/file/core.cljs

@@ -2,6 +2,7 @@
   "Save file to disk"
   (:require [clojure.string :as string]
             [frontend.worker.file.util :as wfu]
+            [frontend.worker.state :as worker-state]
             [logseq.graph-parser.property :as gp-property]
             [logseq.common.path :as path]
             [datascript.core :as d]
@@ -121,7 +122,7 @@
           journal-title (worker-date/normalize-journal-title title date-formatter)
           journal-page? (and journal-page? (not (string/blank? journal-title)))
           filename (if journal-page?
-                     (worker-date/date->file-name journal-title date-formatter)
+                     (worker-date/date->file-name journal-title (:journal-file-name-format context))
                      (-> (or (:block/original-name page-block) (:block/name page-block))
                          wfu/file-name-sanity))
           sub-dir (cond

+ 2 - 1
src/main/frontend/worker/state.cljs

@@ -1,6 +1,7 @@
 (ns frontend.worker.state
   "State hub for worker"
-  (:require [logseq.common.util :as common-util]))
+  (:require [logseq.common.util :as common-util]
+            [frontend.worker.date :as date]))
 
 (defonce *state (atom {:worker/object nil