Browse Source

fix: optimize untitled whiteboard page name display

Peng Xiao 2 years ago
parent
commit
923eaf602a

+ 12 - 5
src/main/frontend/components/block.cljs

@@ -564,12 +564,14 @@
    All page-names are sanitized except page-name-in-block"
   [config page-name-in-block page-name redirect-page-name page-entity contents-page? children html-export? label whiteboard-page?]
   (let [tag? (:tag? config)
-        config (assoc config :whiteboard-page? whiteboard-page?)]
+        config (assoc config :whiteboard-page? whiteboard-page?)
+        untitled? (model/untitled-page? page-name)]
     [:a
      {:tabIndex "0"
       :class (cond-> (if tag? "tag" "page-ref")
                (:property? config)
-               (str " page-property-key block-property"))
+               (str " page-property-key block-property")
+               untitled? (str " opacity-50"))
       :data-ref page-name
       :on-mouse-down (fn [e] (open-page-ref e page-name redirect-page-name page-name-in-block contents-page? whiteboard-page?))
       :on-key-up (fn [e] (when (and e (= (.-key e) "Enter"))
@@ -593,9 +595,14 @@
 
          :else
          (let [original-name (util/get-page-original-name page-entity)
-               s (if (not= (util/safe-page-name-sanity-lc original-name) page-name-in-block)
-                   page-name-in-block ;; page-name-in-block might be overrided (legacy)
-                   (pdf-assets/human-page-name original-name))
+               s (cond untitled? 
+                       (t :untitled)
+
+                       (not= (util/safe-page-name-sanity-lc original-name) page-name-in-block)
+                       page-name-in-block ;; page-name-in-block might be overrided (legacy))
+                       
+                       :else
+                       (pdf-assets/human-page-name original-name))
                _ (when-not page-entity (js/console.warn "page-inner's page-entity is nil, given page-name: " page-name
                                                         " page-name-in-block: " page-name-in-block))]
            (if tag? (str "#" s) s))))]))

+ 5 - 2
src/main/frontend/components/sidebar.cljs

@@ -71,7 +71,8 @@
 (rum/defc page-name
   [name icon recent?]
   (let [original-name (db-model/get-page-original-name name)
-        whiteboard-page? (db-model/whiteboard-page? name)]
+        whiteboard-page? (db-model/whiteboard-page? name)
+        untitiled? (db-model/untitled-page? name)]
     [:a.flex.items-center
      {:on-click
       (fn [e]
@@ -88,7 +89,9 @@
               (route-handler/redirect-to-whiteboard! name)
               (route-handler/redirect-to-page! name {:click-from-recent? recent?})))))}
      [:span.page-icon (if whiteboard-page? (ui/icon "whiteboard" {:extension? true}) icon)]
-     [:span.page-title (pdf-utils/fix-local-asset-pagename original-name)]]))
+     [:span.page-title {:class (when untitiled? "opacity-50")}
+      (if untitiled? (t :untitled)
+          (pdf-utils/fix-local-asset-pagename original-name))]]))
 
 (defn get-page-icon [page-entity]
   (let [default-icon (ui/icon "page" {:extension? true})

+ 1 - 1
src/main/frontend/components/whiteboard.cljs

@@ -163,7 +163,7 @@
    [:div.dashboard-card-title
     [:div.flex.w-full.items-center
      [:div.dashboard-card-title-name.font-bold
-      (if (parse-uuid page-name)
+      (if (model/untitled-page? page-name)
         [:span.opacity-50 (t :untitled)]
         (get-page-display-name page-name))]
      [:div.flex-1]

+ 5 - 0
src/main/frontend/db/model.cljs

@@ -1680,6 +1680,11 @@
 
     :else false))
 
+(defn untitled-page?
+  [page-name]
+  (when-let [entity (db-utils/entity [:block/name (util/page-name-sanity-lc page-name)])]
+    (some? (parse-uuid page-name))))
+
 (defn get-all-whiteboards
   [repo]
   (->> (d/q

+ 1 - 0
tldraw/demo/src/App.jsx

@@ -232,6 +232,7 @@ export default function App() {
           isWhiteboardPage: () => false,
           saveAsset: fileToBase64,
           makeAssetUrl: a => a,
+          getBlockPageName: a => a + '_page'
         }}
         model={model}
         onPersist={app => {

+ 6 - 3
tldraw/packages/core/src/utils/BoundsUtils.ts

@@ -64,13 +64,16 @@ export class BoundsUtils {
   }
 
   /**
-   * Get whether the bounds of A contain the bounds of B. A perfect match will return true.
+   * Get whether the bounds of A contain the bounds/point of B. A perfect match will return true.
    *
    * @param a Bounds
-   * @param b Bounds
+   * @param b Bounds|point
    * @returns
    */
-  static boundsContain(a: TLBounds, b: TLBounds): boolean {
+  static boundsContain(a: TLBounds, b: TLBounds | number[]): boolean {
+    if (Array.isArray(b)) {
+      return a.minX < b[0] && a.minY < b[1] && a.maxY > b[1] && a.maxX > b[0]
+    }
     return a.minX < b.minX && a.minY < b.minY && a.maxY > b.maxY && a.maxX > b.maxX
   }