fix(markdown): include time in datetime export

This commit is contained in:
Tienson Qin
2026-05-07 17:36:55 +08:00
parent c999ec5b4c
commit 8efaf109b5
3 changed files with 44 additions and 26 deletions

View File

@@ -1,6 +1,8 @@
(ns logseq.cli.common.file
"Convert blocks to file content. Used for frontend exports and CLI"
(:require [clojure.string :as string]
(:require [cljs-time.coerce :as tc]
[cljs-time.core :as t]
[clojure.string :as string]
[datascript.core :as d]
[datascript.impl.entity :as de]
[logseq.common.util.date-time :as date-time-util]
@@ -16,23 +18,26 @@
(let [lines (string/split-lines content)]
(string/join (str "\n" spaces-tabs) lines)))
(defn- datetime-journal-title
(defn- journal-day-title
[journal-day context]
(date-time-util/int->journal-title
journal-day
(or (:date-formatter context)
date-time-util/default-journal-title-formatter)))
(defn- datetime-value->string
[v context]
(when (integer? v)
(let [journal-day (cond
(<= 10000101 v 99991231)
v
(cond
(<= 10000101 v 99991231)
(journal-day-title v context)
(>= v 100000000000)
(date-time-util/ms->journal-day v)
:else
nil)]
(when journal-day
(date-time-util/int->journal-title
journal-day
(or (:date-formatter context)
date-time-util/default-journal-title-formatter))))))
(>= v 100000000000)
(date-time-util/format
(t/to-default-time-zone (tc/from-long v))
(str (or (:date-formatter context)
date-time-util/default-journal-title-formatter)
" HH:mm")))))
(defn- property-value->string
[db property v context]
@@ -80,7 +85,7 @@
(and (= :datetime (:logseq.property/type property))
(integer? v))
(or (datetime-journal-title v context)
(or (datetime-value->string v context)
(str v))
(some? v)

View File

@@ -1,15 +1,17 @@
(ns frontend.handler.export-property-test
(:require [cljs.test :refer [deftest is]]
(:require [cljs-time.coerce :as tc]
[cljs-time.core :as t]
[cljs.test :refer [deftest is]]
[datascript.core :as d]
[logseq.cli.common.file :as common-file]
[logseq.common.util.date-time :as date-time-util]
[logseq.db.frontend.property :as db-property]))
(deftest block-properties-content-uses-property-title-and-journal-title-for-datetime
(let [datetime-ms 1776441600000
expected-journal-title (date-time-util/int->journal-title
(date-time-util/ms->journal-day datetime-ms)
date-time-util/default-journal-title-formatter)
(deftest block-properties-content-uses-property-title-and-time-for-datetime
(let [datetime-ms (tc/to-long (t/date-time 2026 5 14 9 30))
expected-datetime (date-time-util/format
(t/to-default-time-zone (tc/from-long datetime-ms))
"MMM do, yyyy HH:mm")
properties (array-map
:logseq.property/deadline datetime-ms
:user.property/P1-MoCeM8Tf "hello")]
@@ -24,6 +26,6 @@
:block/title "P1"
:logseq.property/type :default}
nil))]
(is (= (str " deadline:: " expected-journal-title "\n"
(is (= (str " deadline:: " expected-datetime "\n"
" P1:: hello")
(@#'common-file/block-properties-content nil {} " " {}))))))

View File

@@ -1,10 +1,13 @@
(ns frontend.worker.markdown-mirror-test
(:require [clojure.string :as string]
(:require [cljs-time.coerce :as tc]
[cljs-time.core :as t]
[clojure.string :as string]
[cljs.test :refer [async deftest is testing]]
[datascript.core :as d]
[frontend.worker.db-listener :as db-listener]
[frontend.worker.markdown-mirror :as markdown-mirror]
[frontend.worker.platform :as worker-platform]
[logseq.common.util.date-time :as date-time-util]
[logseq.db :as ldb]
[logseq.db.test.helper :as db-test]
[promesa.core :as p]))
@@ -432,9 +435,15 @@
(let [{:keys [platform files]} (fake-platform)
page-uuid #uuid "22222222-2222-4222-8222-222222222221"
block-uuid #uuid "22222222-2222-4222-8222-222222222222"
datetime-ms (tc/to-long (t/date-time 2026 5 14 9 30))
expected-datetime (date-time-util/format
(t/to-default-time-zone (tc/from-long datetime-ms))
"MMM do, yyyy HH:mm")
conn (db-test/create-conn-with-blocks
{:properties {:user.property/reproducible-steps {:logseq.property/type :default}
:user.property/rating {:logseq.property/type :number}}
:user.property/rating {:logseq.property/type :number}
:user.property/date-time {:block/title "DateTime"
:logseq.property/type :datetime}}
:pages-and-blocks [{:page {:block/title "Issue"
:block/uuid page-uuid
:build/properties {:user.property/reproducible-steps "Open settings"
@@ -444,6 +453,7 @@
:build/properties {:logseq.property/status :logseq.property/status.todo
:user.property/reproducible-steps "Click mirror"
:user.property/rating 5
:user.property/date-time datetime-ms
:logseq.property/heading 2}}]}]})
page (db-test/find-page-by-title @conn "Issue")]
(-> (markdown-mirror/<mirror-page! test-repo @conn (:db/id page) {:platform platform})
@@ -455,7 +465,8 @@
"- TODO ## TODO body\n"
" * reproducible-steps::\n"
" - Click mirror\n"
" * rating:: 5")
" * rating:: 5\n"
" * DateTime:: " expected-datetime)
content)))))
(p/catch (fn [e] (is false (str "unexpected error: " e))))
(p/finally done)))))