mirror of
https://github.com/logseq/logseq.git
synced 2026-05-20 02:42:49 +00:00
fix(markdown): include time in datetime export
This commit is contained in:
37
deps/cli/src/logseq/cli/common/file.cljs
vendored
37
deps/cli/src/logseq/cli/common/file.cljs
vendored
@@ -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)
|
||||
|
||||
@@ -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 {} " " {}))))))
|
||||
|
||||
@@ -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)))))
|
||||
|
||||
Reference in New Issue
Block a user