Browse Source

fix: can't remove alias

Tienson Qin 6 months ago
parent
commit
68eeb7424e

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

@@ -613,7 +613,8 @@
 (defn open-page-ref
   [config page-entity e page-name contents-page?]
   (when (not (util/right-click? e))
-    (let [page (or (first (:block/_alias page-entity)) page-entity)]
+    (let [ignore-alias? (:ignore-alias? config)
+          page (or (and (not ignore-alias?) (first (:block/_alias page-entity))) page-entity)]
       (cond
         (gobj/get e "shiftKey")
         (when page
@@ -635,8 +636,9 @@
         ((:on-pointer-down config) e)
 
         :else
-        (-> (or (:on-redirect-to-page config) route-handler/redirect-to-page!)
-            (apply [(or (:block/uuid page) (:block/name page))])))))
+        (let [f (or (:on-redirect-to-page config) route-handler/redirect-to-page!)]
+          (f (or (:block/uuid page) (:block/name page))
+             {:ignore-alias? ignore-alias?})))))
   (when (and contents-page?
              (util/mobile?)
              (state/get-left-sidebar-open?))

+ 41 - 42
src/main/frontend/components/page.cljs

@@ -751,14 +751,13 @@
 
 (rum/defcs page-cp
   [state option]
-  (rum/with-key
-    (page-aux option)
-    (str
-     (state/get-current-repo)
-     "-"
-     (or (:db/id option)
-         (:page-name option)
-         (get-page-name state)))))
+  (let [page-name (or (:page-name option) (get-page-name state))]
+    (rum/with-key
+      (page-aux (assoc option :page-name page-name))
+      (str
+       (state/get-current-repo)
+       "-"
+       (or (:db/id option) page-name)))))
 
 (defonce layout (atom [js/window.innerWidth js/window.innerHeight]))
 
@@ -918,25 +917,25 @@
                  (ui/tooltip
                    ;; Slider keeps track off the range from min created-at to max created-at
                    ;; because there were bugs with setting min and max directly
-                   (ui/slider created-at-filter
-                     {:min 0
-                      :max (- (get-in graph [:all-pages :created-at-max])
-                             (get-in graph [:all-pages :created-at-min]))
-                      :on-change #(do
-                                    (reset! *created-at-filter (int %))
-                                    (set-setting! :created-at-filter (int %)))})
-                   [:div.px-1 (str (js/Date. (+ created-at-filter (get-in graph [:all-pages :created-at-min]))))])])
+                  (ui/slider created-at-filter
+                             {:min 0
+                              :max (- (get-in graph [:all-pages :created-at-max])
+                                      (get-in graph [:all-pages :created-at-min]))
+                              :on-change #(do
+                                            (reset! *created-at-filter (int %))
+                                            (set-setting! :created-at-filter (int %)))})
+                  [:div.px-1 (str (js/Date. (+ created-at-filter (get-in graph [:all-pages :created-at-min]))))])])
 
               (when (seq focus-nodes)
                 [:div.flex.flex-col.mb-2
                  [:p {:title "N hops from selected nodes"}
                   "N hops from selected nodes"]
                  (ui/tooltip
-                   (ui/slider (or n-hops 10)
-                     {:min 1
-                      :max 10
-                      :on-change #(reset! *n-hops (int %))})
-                   [:div n-hops])])
+                  (ui/slider (or n-hops 10)
+                             {:min 1
+                              :max 10
+                              :on-change #(reset! *n-hops (int %))})
+                  [:div n-hops])])
 
               [:a.opacity-70.opacity-100 {:on-click (fn []
                                                       (swap! *graph-reset? not)
@@ -983,37 +982,37 @@
                [:p {:title "Link Distance"}
                 "Link Distance"]
                (ui/tooltip
-                 (ui/slider (/ link-dist 10)
-                   {:min 1                                  ;; 10
-                    :max 18                                 ;; 180
-                    :on-change #(let [value (int %)]
-                                  (reset! *link-dist (* value 10))
-                                  (set-forcesetting! :link-dist (* value 10)))})
-                 [:div link-dist])]
+                (ui/slider (/ link-dist 10)
+                           {:min 1                                  ;; 10
+                            :max 18                                 ;; 180
+                            :on-change #(let [value (int %)]
+                                          (reset! *link-dist (* value 10))
+                                          (set-forcesetting! :link-dist (* value 10)))})
+                [:div link-dist])]
 
               [:div.flex.flex-col.mb-2
                [:p {:title "Charge Strength"}
                 "Charge Strength"]
                (ui/tooltip
-                 (ui/slider (/ charge-strength 100)
-                   {:min -10                                ;;-1000
-                    :max 10                                 ;;1000
-                    :on-change #(let [value (int %)]
-                                  (reset! *charge-strength (* value 100))
-                                  (set-forcesetting! :charge-strength (* value 100)))})
-                 [:div charge-strength])]
+                (ui/slider (/ charge-strength 100)
+                           {:min -10                                ;;-1000
+                            :max 10                                 ;;1000
+                            :on-change #(let [value (int %)]
+                                          (reset! *charge-strength (* value 100))
+                                          (set-forcesetting! :charge-strength (* value 100)))})
+                [:div charge-strength])]
 
               [:div.flex.flex-col.mb-2
                [:p {:title "Charge Range"}
                 "Charge Range"]
                (ui/tooltip
-                 (ui/slider (/ charge-range 100)
-                   {:min 5                                  ;;500
-                    :max 40                                 ;;4000
-                    :on-change #(let [value (int %)]
-                                  (reset! *charge-range (* value 100))
-                                  (set-forcesetting! :charge-range (* value 100)))})
-                 [:div charge-range])]
+                (ui/slider (/ charge-range 100)
+                           {:min 5                                  ;;500
+                            :max 40                                 ;;4000
+                            :on-change #(let [value (int %)]
+                                          (reset! *charge-range (* value 100))
+                                          (set-forcesetting! :charge-range (* value 100)))})
+                [:div charge-range])]
 
               [:a
                {:on-click (fn []

+ 22 - 17
src/main/frontend/components/property/value.cljs

@@ -703,22 +703,26 @@
                     (remove #(= :logseq.property/empty-placeholder (:db/ident %))
                             (if (every? entity-map? v) v [v])))
                   (remove (fn [node]
-                            (or (= (:db/id block) (:db/id node))
-                             ;; A page's alias can't be itself
-                                (and alias? (= (or (:db/id (:block/page block))
-                                                   (:db/id block))
-                                               (:db/id node)))
-                                (cond
-                                  (= property-type :class)
-                                  (ldb/private-tags (:db/ident node))
-
-                                  (and property-type (not= property-type :node))
-                                  (if (= property-type :page)
-                                    (not (db/page? node))
-                                    (not (contains? (ldb/get-entity-types node) property-type)))
-
-                                  :else
-                                  false)))
+                            (let [node' (if (:value node)
+                                          (assoc (:value node) :block/title (:label node))
+                                          node)
+                                  node (or (some-> (:db/id node') db/entity) node)]
+                              (or (= (:db/id block) (:db/id node))
+                                  ;; A page's alias can't be itself
+                                  (and alias? (= (or (:db/id (:block/page block))
+                                                     (:db/id block))
+                                                 (:db/id node)))
+                                  (cond
+                                    (= property-type :class)
+                                    (ldb/private-tags (:db/ident node))
+
+                                    (and property-type (not= property-type :node))
+                                    (if (= property-type :page)
+                                      (not (db/page? node))
+                                      (not (contains? (ldb/get-entity-types node) property-type)))
+
+                                    :else
+                                    false))))
                           result)))
 
         options (map (fn [node]
@@ -1071,7 +1075,8 @@
                      :tag? tag?
                      :property-position property-position
                      :meta-click? other-position?
-                     :table-view? table-view?} value)
+                     :table-view? table-view?
+                     :ignore-alias? (= :block/alias (:db/ident property))} value)
            (:db/id value)))
 
        (contains? #{:node :class :property :page} type)

+ 2 - 2
src/main/frontend/handler/route.cljs

@@ -74,7 +74,7 @@
   "`page-name` can be a block uuid or name, prefer to use uuid than name when possible"
   ([page-name]
    (redirect-to-page! page-name {}))
-  ([page-name {:keys [anchor push click-from-recent? block-id new-whiteboard?]
+  ([page-name {:keys [anchor push click-from-recent? block-id new-whiteboard? ignore-alias?]
                :or {click-from-recent? false}
                :as opts}]
    (when (or (uuid? page-name)
@@ -85,7 +85,7 @@
                 (or (ldb/hidden? page)
                     (and (ldb/built-in? page) (ldb/private-built-in-page? page))))
          (notification/show! "Cannot go to an internal page." :warning)
-         (if-let [source (db/get-alias-source-page (state/get-current-repo) (:db/id page))]
+         (if-let [source (and (not ignore-alias?) (db/get-alias-source-page (state/get-current-repo) (:db/id page)))]
            (redirect-to-page! (:block/uuid source) opts)
            (do
            ;; Always skip onboarding when loading an existing whiteboard