From 4cc37fc24da6774c299a935d2b14b457ac321bd4 Mon Sep 17 00:00:00 2001 From: Thomas Heller Date: Sun, 19 May 2024 17:31:56 +0200 Subject: [PATCH] handle disconnect runtime in inspect --- src/main/shadow/cljs/ui/components/build.cljs | 1 + src/main/shadow/cljs/ui/components/inspect.cljs | 11 +++++++---- src/main/shadow/cljs/ui/components/runtimes.cljs | 1 + src/main/shadow/cljs/ui/db/explorer.cljs | 4 ++-- src/main/shadow/cljs/ui/db/inspect.cljs | 6 ++++-- src/main/shadow/cljs/ui/main.cljs | 3 +++ 6 files changed, 18 insertions(+), 8 deletions(-) diff --git a/src/main/shadow/cljs/ui/components/build.cljs b/src/main/shadow/cljs/ui/components/build.cljs index 205c0933..890427dc 100644 --- a/src/main/shadow/cljs/ui/components/build.cljs +++ b/src/main/shadow/cljs/ui/components/build.cljs @@ -21,6 +21,7 @@ [env build-id] (->> (::m/runtime env) (vals) + (remove :disconnected) (filter (fn [{:keys [runtime-info]}] (and (= :cljs (:lang runtime-info)) (= build-id (:build-id runtime-info))))) diff --git a/src/main/shadow/cljs/ui/components/inspect.cljs b/src/main/shadow/cljs/ui/components/inspect.cljs index b26d4b05..7db26cbc 100644 --- a/src/main/shadow/cljs/ui/components/inspect.cljs +++ b/src/main/shadow/cljs/ui/components/inspect.cljs @@ -248,7 +248,7 @@ (event ::code-eval! [env {:keys [code]}] (sg/run-tx env {:e ::m/inspect-code-eval! - :runtime-ident (:runtime object) + :runtime-id (:runtime-id object) :ref-oid (:oid object) :panel-idx panel-idx :code code})) @@ -367,19 +367,22 @@ (render (let [{:keys [ns line column label]} summary - {:keys [runtime-info runtime-id]} runtime + {:keys [runtime-info runtime-id disconnected]} runtime $row (css :font-mono :border-b :px-2 :py-1 :cursor-pointer [:hover :bg-gray-100] + ["&.disconnected" :cursor-not-allowed {:opacity "0.5"}] ["&.focus" :bg-gray-200] ["& > .header" :text-xs :text-gray-500] ["& > .val" :truncate])] (<< [:div - {:class (str $row (when focus " focus")) - :on-click {:e ::inspect-object! :oid oid}} + {:class (str $row (when focus " focus") (when disconnected " disconnected")) + :title (when disconnected "runtime disconnected") + :on-click (when-not disconnected + {:e ::inspect-object! :oid oid})} [:div.header (str (:added-at-ts summary) diff --git a/src/main/shadow/cljs/ui/components/runtimes.cljs b/src/main/shadow/cljs/ui/components/runtimes.cljs index 11a11555..ac61d776 100644 --- a/src/main/shadow/cljs/ui/components/runtimes.cljs +++ b/src/main/shadow/cljs/ui/components/runtimes.cljs @@ -91,6 +91,7 @@ (defn q-runtimes-sorted [env] (->> (::m/runtime env) (vals) + (remove :disconnected) (sort-by #(get-in % [:runtime-info :since])) (mapv :runtime-id))) diff --git a/src/main/shadow/cljs/ui/db/explorer.cljs b/src/main/shadow/cljs/ui/db/explorer.cljs index 1d3c6b82..960d0940 100644 --- a/src/main/shadow/cljs/ui/db/explorer.cljs +++ b/src/main/shadow/cljs/ui/db/explorer.cljs @@ -121,5 +121,5 @@ (defn runtime-deselect-var! {::ev/handle ::m/runtime-deselect-var!} - [tx {:keys [runtime-ident] :as msg}] - (update-in tx [::m/ui runtime-ident] dissoc ::m/explore-var ::m/explore-var-object)) \ No newline at end of file + [tx {:keys [runtime-id] :as msg}] + (update-in tx [::m/runtime runtime-id] dissoc ::m/explore-var ::m/explore-var-object)) \ No newline at end of file diff --git a/src/main/shadow/cljs/ui/db/inspect.cljs b/src/main/shadow/cljs/ui/db/inspect.cljs index a8b28786..b2080557 100644 --- a/src/main/shadow/cljs/ui/db/inspect.cljs +++ b/src/main/shadow/cljs/ui/db/inspect.cljs @@ -53,7 +53,7 @@ (ev/queue-fx :relay-send [{:op :request-supported-ops :to client-id}]))) :client-disconnect - (update env ::m/runtime dissoc client-id))) + (assoc-in env [::m/runtime client-id :disconnected] true))) (defn relay-supported-ops {::ev/handle ::relay-ws/supported-ops} @@ -442,7 +442,9 @@ (defn inspect-code-eval! {::ev/handle ::m/inspect-code-eval!} [tx {:keys [code runtime-id runtime-ns ref-oid panel-idx] :as msg}] - (let [{:keys [supported-ops]} (get-in tx [::m/runtime runtime-id]) + (let [supported-ops (get-in tx [::m/runtime runtime-id :supported-ops]) + + _ (js/console.log "code-eval" tx msg supported-ops) ;; FIXME: ns and eval mode should come from UI [eval-mode ns] diff --git a/src/main/shadow/cljs/ui/main.cljs b/src/main/shadow/cljs/ui/main.cljs index 19b18af4..ad69114a 100644 --- a/src/main/shadow/cljs/ui/main.cljs +++ b/src/main/shadow/cljs/ui/main.cljs @@ -2,6 +2,7 @@ {:dev/always true :shadow.css/include ["shadow/cljs/ui/main.css"]} (:require + [clojure.core.protocols :as cp] [shadow.grove :as sg :refer (<< defc)] [shadow.css :refer (css)] [shadow.grove.history :as history] @@ -224,6 +225,8 @@ (sg/add-kv-table rt-ref ::m/object {:primary-key :oid + :attrs + {:runtime-id {:references ::m/runtime}} ;; :oid number ;; :runtime-id number ;; :display-type keyword