Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit 788bbd8

Browse files
committedDec 7, 2023
Control when to trace with a new setting
Fixes #264
1 parent d19a51d commit 788bbd8

File tree

8 files changed

+64
-10
lines changed

8 files changed

+64
-10
lines changed
 

‎CHANGELOG.md

+4
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,10 @@ All notable changes to this project will be documented in this file. This change
88
- Fixed empty trace information when first opening the 10x panel after the first event was a dispatch-sync.
99
Requires re-frame 1.4.1 or higher. See #263.
1010

11+
#### Added
12+
13+
- New setting: trace epochs always, never, or just when panel is open. See #264
14+
1115
## 1.9.2 (2023-12-6)
1216

1317
#### Fixed

‎README.md

+1
Original file line numberDiff line numberDiff line change
@@ -279,6 +279,7 @@ name | description | type | example
279279
...`time-travel?` | selecting an event reverts your app-db | boolean | `true`
280280
...`ignored-libs` | ignore low-level trace | seq of keywords | `"[:reagent :re-frame]"`
281281
...`ns-aliases` | display aliased keywords in data inspectors | map of symbol->symbol | `"{long-namespace ln}"`
282+
...`trace-when` | trace your app's events always, never, or only when the panel is open (default) | `:panel`, `:always` or `:never` | `:always`
282283
283284
284285

‎deps.edn

+2-1
Original file line numberDiff line numberDiff line change
@@ -9,4 +9,5 @@
99
zprint/zprint {:mvn/version "1.2.7"}
1010
superstructor/re-highlight {:mvn/version "2.0.2"}
1111
cljsjs/highlight {:mvn/version "10.3.1-0"}
12-
org.clojure/tools.logging {:mvn/version "1.2.4"}}}
12+
org.clojure/tools.logging {:mvn/version "1.2.4"}
13+
mvxcvi/arrangement {:mvn/version "2.1.0"}}}

‎src/day8/re_frame_10x.cljs

+3-1
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,7 @@
151151
(goog-define time-travel? true)
152152
(goog-define ignored-libs "[:reagent :re-frame]")
153153
(goog-define ns-aliases "{long-namespace ln}")
154+
(goog-define trace-when ":panel")
154155

155156
(def project-config
156157
(let [read reader.edn/read-string-maybe
@@ -163,5 +164,6 @@
163164
:filtered-view-trace (some->> hidden-namespaces read (map view) sortable-uuid-map)
164165
:app-db-follows-events? time-travel?
165166
:low-level-trace (some-> ignored-libs read (pred-map #{:re-frame :reagent}))
166-
:ns-aliases (some->> ns-aliases read (map alias) sortable-uuid-map)}
167+
:ns-aliases (some->> ns-aliases read (map alias) sortable-uuid-map)
168+
:trace-when (some->> trace-when read keyword)}
167169
(into {} keep-vals))))

‎src/day8/re_frame_10x/events.cljs

+4-2
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
:or {:width 800 :height 800 :top 0 :left 0}})
2727
(rf/inject-cofx ::local-storage/load {:key "show-epoch-traces?" :or true})
2828
(rf/inject-cofx ::local-storage/load {:key "using-trace?" :or true})
29+
(rf/inject-cofx ::local-storage/load {:key "trace-when" :or :panel})
2930
(rf/inject-cofx ::local-storage/load {:key "ignored-events" :or {}})
3031
(rf/inject-cofx ::local-storage/load {:key "low-level-trace" :or {:reagent true :re-frame true}})
3132
(rf/inject-cofx ::local-storage/load {:key "filtered-view-trace"
@@ -60,16 +61,17 @@
6061
ignored-events low-level-trace filtered-view-trace retained-epochs app-db-paths
6162
app-db-follows-events? ambiance syntax-color-scheme categories data-path-annotations?
6263
show-event-history open-new-inspectors? handle-keys? key-bindings log-outputs log-pretty?
63-
expansion-limit ns-aliases alias-namespaces?
64+
expansion-limit ns-aliases alias-namespaces? trace-when
6465
debug?]}
6566
(merge fallback project-config stored)]
66-
{:fx [(when using-trace?
67+
{:fx [(when (or using-trace? (= :always trace-when))
6768
[:dispatch [::settings.events/enable-tracing]])
6869
[:dispatch [::settings.events/panel-width% panel-width-ratio]]
6970
[:dispatch [::settings.events/show-panel? show-panel]]
7071
[:dispatch [::settings.events/selected-tab selected-tab]]
7172
[:dispatch [::settings.events/set-ignored-events ignored-events]]
7273
[:dispatch [::settings.events/set-filtered-view-trace filtered-view-trace]]
74+
[:dispatch [::settings.events/trace-when trace-when]]
7375
[:dispatch [::settings.events/set-low-level-trace low-level-trace]]
7476
[:dispatch [::settings.events/set-number-of-retained-epochs retained-epochs]]
7577
[:dispatch [::settings.events/app-db-follows-events? app-db-follows-events?]]

‎src/day8/re_frame_10x/panels/settings/events.cljs

+18-6
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@
33
[day8.re-frame-10x.inlined-deps.re-frame.v1v3v0.re-frame.core :as rf]
44
[day8.re-frame-10x.fx.local-storage :as local-storage]
55
[day8.re-frame-10x.fx.trace :as trace]
6-
[day8.re-frame-10x.tools.reader.edn :as reader.edn]))
6+
[day8.re-frame-10x.tools.reader.edn :as reader.edn]
7+
[day8.re-frame-10x.panels.settings.subs :as settings.subs]))
78

89
(rf/reg-event-db
910
::panel-width%
@@ -193,15 +194,17 @@
193194
(fn [{settings :db} _]
194195
(let [now-showing? (not (get settings :show-panel?))
195196
external-panel? (get settings :external-window?)
196-
using-trace? (or external-panel? now-showing?)]
197+
trace-when (get settings :trace-when)
198+
using-trace? (or external-panel? now-showing? (= :always trace-when))]
197199
(merge
198200
{:db (-> settings
199201
(assoc :using-trace? using-trace?)
200202
(assoc :show-panel? now-showing?))}
201-
(if now-showing?
202-
{::trace/enable {:key ::cb}}
203-
(when-not external-panel?
204-
{::trace/disable {:key ::cb}}))))))
203+
(when (= :panel trace-when)
204+
(if now-showing?
205+
{::trace/enable {:key ::cb}}
206+
(when-not external-panel?
207+
{::trace/disable {:key ::cb}})))))))
205208

206209
(rf/reg-event-fx
207210
::enable-tracing
@@ -310,3 +313,12 @@
310313
::expansion-limit
311314
[(rf/path [:settings :expansion-limit]) rf/trim-v (local-storage/save "expansion-limit")]
312315
(fn [_ [limit]] limit))
316+
317+
(rf/reg-event-fx
318+
::trace-when
319+
[(rf/path [:settings :trace-when]) rf/trim-v (local-storage/save "trace-when")]
320+
(fn [{trace-when :db} [k]]
321+
(into {:db k}
322+
(cond
323+
(and (not= :never trace-when) (= :never k)) {::trace/disable {:key ::cb}}
324+
(and (= :never trace-when) (not= :never k)) {::trace/enable {:key ::cb}}))))

‎src/day8/re_frame_10x/panels/settings/subs.cljs

+5
Original file line numberDiff line numberDiff line change
@@ -188,3 +188,8 @@
188188
::expansion-limit
189189
:<- [::root]
190190
:-> :expansion-limit)
191+
192+
(rf/reg-sub
193+
::trace-when
194+
:<- [::root]
195+
:-> :trace-when)

‎src/day8/re_frame_10x/panels/settings/views.cljs

+27
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
[day8.re-frame-10x.inlined-deps.garden.v1v3v10.garden.compiler :refer [render-css]]
66
[day8.re-frame-10x.components.buttons :as buttons]
77
[day8.re-frame-10x.components.re-com :as rc :refer [css-join]]
8+
[day8.re-frame-10x.components.inputs :as inputs]
89
[day8.re-frame-10x.navigation.epochs.events :as epochs.events]
910
[day8.re-frame-10x.navigation.epochs.subs :as epochs.subs]
1011
[day8.re-frame-10x.panels.settings.events :as settings.events]
@@ -118,6 +119,32 @@
118119
[[:p "When you navigate to an epoch, update app-db to match. Causes UI to \"time travel\"."]]
119120
settings-box-81])
120121

122+
[rc/line]
123+
124+
(let [trace-when @(rf/subscribe [::settings.subs/trace-when])
125+
set-trace-when #(rf/dispatch [::settings.events/trace-when %])]
126+
[settings-box
127+
[[rc/v-box
128+
:children
129+
[[rc/label :label "Enable trace:"]
130+
[inputs/radio-button
131+
{:label "when the re-frame-10x panel is open"
132+
:model trace-when
133+
:value :panel
134+
:on-change set-trace-when}]
135+
[inputs/radio-button
136+
{:label "always"
137+
:model trace-when
138+
:value :always
139+
:on-change set-trace-when}]
140+
[inputs/radio-button
141+
{:label "never"
142+
:model trace-when
143+
:value :never
144+
:on-change set-trace-when}]]]]
145+
[[:p "10x can turn off tracing, letting your app run at close to full speed."]]
146+
settings-box-81])
147+
121148
[rc/line]
122149
(let [ambiance @(rf/subscribe [::settings.subs/ambiance])]
123150
[settings-box

0 commit comments

Comments
 (0)
Please sign in to comment.