Explorar o código

feat: add custom date format to settings

Tienson Qin %!s(int64=5) %!d(string=hai) anos
pai
achega
e84049a860

+ 21 - 1
src/main/frontend/components/settings.cljs

@@ -16,7 +16,8 @@
             [clojure.string :as string]
             [goog.object :as gobj]
             [frontend.context.i18n :as i18n]
-            [reitit.frontend.easy :as rfe]))
+            [reitit.frontend.easy :as rfe]
+            [frontend.date :as date]))
 
 (rum/defcs set-email < (rum/local "" ::email)
   [state]
@@ -136,6 +137,7 @@
 (rum/defcs settings < rum/reactive
   []
   (let [preferred-format (state/get-preferred-format)
+        custom-date-format (state/get-date-formatter)
         preferred-workflow (state/get-preferred-workflow)
         preferred-language (state/sub [:preferred-language])
         enable-timetracking? (state/enable-timetracking?)
@@ -229,6 +231,24 @@
                          (assoc :selected "selected"))
                (string/capitalize (name format))])]]]]
 
+        [:div.it.sm:grid.sm:grid-cols-3.sm:gap-4.sm:items-start
+         [:label.block.text-sm.font-medium.leading-5.opacity-70
+          {:for "custom_date_format"}
+          (t :settings-page/custom-date-format)]
+         [:div.mt-1.sm:mt-0.sm:col-span-2
+          [:div.max-w-lg.rounded-md
+           [:select.form-select.is-small
+            {:on-change (fn [e]
+                          (let [format (util/evalue e)]
+                            (when-not (string/blank? format)
+                              (config-handler/set-config! :date-formatter format))))}
+            (for [format (sort (date/journal-title-formatters))]
+              [:option (cond->
+                           {:key format}
+                         (= format custom-date-format)
+                         (assoc :selected "selected"))
+               format])]]]]
+
         [:div.it.sm:grid.sm:grid-cols-3.sm:gap-4.sm:items-start
          [:label.block.text-sm.font-medium.leading-5.opacity-70
           {:for "preferred_workflow"}

+ 2 - 0
src/main/frontend/dicts.cljs

@@ -287,6 +287,7 @@ title: How to take dummy notes?
         :content/click-to-edit "Click to edit"
         :settings-page/edit-config-edn "Edit config.edn (for current repo)"
         :settings-page/show-brackets "Show brackets"
+        :settings-page/custom-date-format "Preferred journal format"
         :settings-page/preferred-file-format "Preferred file format"
         :settings-page/preferred-workflow "Preferred workflow"
         :settings-page/enable-timetracking "Enable timetracking"
@@ -1011,6 +1012,7 @@ title: How to take dummy notes?
            :content/click-to-edit "点击以编辑"
            :settings-page/edit-config-edn "编辑 config.edn (当前库)"
            :settings-page/show-brackets "显示括号 [[]]"
+           :settings-page/custom-date-format "首选日期页面格式"
            :settings-page/preferred-file-format "首选文件格式"
            :settings-page/preferred-workflow "首选工作流"
            :settings-page/enable-timetracking "开启 timetracking"

+ 2 - 1
src/main/frontend/handler/repo.cljs

@@ -163,7 +163,8 @@
    (state/set-today! (date/today))
    (when-let [repo (state/get-current-repo)]
      (when (or (db/cloned? repo)
-               (and (config/local-db? repo)
+               (and (or (config/local-db? repo)
+                        (= "local" repo))
                     ;; config file exists
                     (let [path (config/get-config-path)]
                       (db/get-file path))))