Browse Source

wip whiteboard page

Peng Xiao 3 years ago
parent
commit
4de59c6d63

+ 3 - 0
deps/db/src/logseq/db/schema.cljs

@@ -88,6 +88,9 @@
    ;; block's file
    :block/file {:db/valueType :db.type/ref}
 
+   ;; whether page is a whiteboard
+   :block/whiteboard? {}
+
    ;; file
    :file/path {:db/unique :db.unique/identity}
    ;; only store the content of logseq's files

+ 5 - 0
src/main/frontend/config.cljs

@@ -232,6 +232,7 @@
 
 (defonce default-journals-directory "journals")
 (defonce default-pages-directory "pages")
+(defonce default-whiteboards-directory "whiteboards")
 
 (defn get-pages-directory
   []
@@ -241,6 +242,10 @@
   []
   (or (state/get-journals-directory) default-journals-directory))
 
+(defn get-whiteboards-directory
+  []
+  (or (state/get-whiteboards-directory) default-whiteboards-directory))
+
 (defonce local-repo "local")
 
 (defn demo-graph?

+ 7 - 4
src/main/frontend/handler/page.cljs

@@ -38,6 +38,7 @@
             [frontend.format.block :as block]
             [goog.functions :refer [debounce]]))
 
+;; FIXME: add whiteboard
 (defn- get-directory
   [journal?]
   (if journal?
@@ -98,7 +99,9 @@
                                                 (or
                                                  (:block/original-name page)
                                                  (:block/name page)))
-          page (if (seq properties) (assoc page :block/properties properties) page)
+          page (merge page
+                      (when (seq properties) {:block/properties properties})
+                      (when whiteboard? {:block/whiteboard? whiteboard?}))
           page-empty? (db/page-empty? (state/get-current-repo) (:block/name page))]
       (cond
         (not page-empty?)
@@ -123,7 +126,7 @@
    :uuid                - when set, use this uuid instead of generating a new one."
   ([title]
    (create! title {}))
-  ([title {:keys [redirect? create-first-block? format properties split-namespace? journal? whiteboard? uuid]
+  ([title {:keys [redirect? create-first-block? format properties split-namespace? journal? uuid whiteboard?]
            :or   {redirect?           true
                   create-first-block? true
                   format              nil
@@ -148,11 +151,11 @@
              txs      (->> pages
                            ;; for namespace pages, only last page need properties
                            drop-last
-                           (mapcat #(build-page-tx format nil % journal?))
+                           (mapcat #(build-page-tx format nil % journal? whiteboard?))
                            (remove nil?)
                            (remove (fn [m]
                                      (some? (db/entity [:block/name (:block/name m)])))))
-             last-txs (build-page-tx format properties (last pages) journal?)
+             last-txs (build-page-tx format properties (last pages) journal? whiteboard?)
              txs      (concat txs last-txs)]
          (when (seq txs)
            (db/transact! txs)))

+ 1 - 0
src/main/frontend/handler/web/nfs.cljs

@@ -159,6 +159,7 @@
                                                              (let [last-part (last (string/split path "/"))]
                                                                (contains? #{config/app-name
                                                                             gp-config/default-draw-directory
+                                                                            (config/get-whiteboards-directory)
                                                                             (config/get-journals-directory)
                                                                             (config/get-pages-directory)}
                                                                           last-part)))))

+ 6 - 3
src/main/frontend/modules/file/core.cljs

@@ -113,20 +113,23 @@
 
 (defn- transact-file-tx-if-not-exists!
   [page ok-handler]
+  (println page)
   (when-let [repo (state/get-current-repo)]
     (when (:block/name page)
       (let [format (name (get page :block/format
                               (state/get-preferred-format)))
             title (string/capitalize (:block/name page))
+            whiteboard-page? (:block/whiteboard? page)
             journal-page? (date/valid-journal-title? title)
             filename (if journal-page?
                        (date/date->file-name journal-page?)
                        (-> (or (:block/original-name page) (:block/name page))
                            (util/file-name-sanity)))
             path (str
-                  (if journal-page?
-                    (config/get-journals-directory)
-                    (config/get-pages-directory))
+                  (cond
+                    journal-page?    (config/get-journals-directory)
+                    whiteboard-page? (config/get-whiteboards-directory)
+                    :else            (config/get-pages-directory))
                   "/"
                   filename
                   "."

+ 7 - 0
src/main/frontend/state.cljs

@@ -457,6 +457,13 @@
       (:journals-directory (get-config repo)))
     "journals"))
 
+(defn get-whiteboards-directory
+  []
+  (or
+   (when-let [repo (get-current-repo)]
+     (:whiteboards-directory (get-config repo)))
+   "whiteboards"))
+
 (defn org-mode-file-link?
   [repo]
   (:org-mode/insert-file-link? (get-config repo)))