File tree 3 files changed +19
-11
lines changed
3 files changed +19
-11
lines changed Original file line number Diff line number Diff line change 5
5
:result :hide }}
6
6
(:require [clojure.math :as math]
7
7
[nextjournal.clerk :as clerk]
8
- [nextjournal.clerk.viewer :as viewer]
9
8
[nextjournal.clerk-table-stats :as clerk-table-stats]))
10
9
11
10
(def cities
58
57
(defonce data
59
58
(mapv row-fn (range 10000 )))
60
59
61
- ^{:nextjournal.clerk/visibility {:result :show }}
62
- @viewer/!sync-state
63
-
64
- #_(reset! viewer/!sync-state {:active-filters {}})
65
-
66
60
^{:nextjournal.clerk/visibility {:result :show }}
67
61
(clerk/with-viewer clerk-table-stats/viewer
68
62
{::clerk/render-opts {:filters {[:location :country ] :multiselect
Original file line number Diff line number Diff line change 493
493
(assoc viewer/table-viewer
494
494
:transform-fn
495
495
(fn transform-fn [{:as wrapped-value :nextjournal/keys [applied-viewer render-opts]}]
496
- (let [table-state @(:!sync-state wrapped-value)]
496
+ (let [#?@(:clj [id (or (:id wrapped-value)
497
+ (symbol (str (ns-name *ns*)) (str (gensym ))))
498
+ var-name (symbol (namespace id) (str (name id) " -table" ))])
499
+ _ #?(:clj (when-not (resolve var-name)
500
+ (when-some [ns' (find-ns (symbol (namespace var-name)))]
501
+ (intern ns' (symbol (name var-name)) (doto (atom {:active-filters {}})
502
+ (add-watch ::recompute
503
+ (fn [_ _ _ _]
504
+ (nextjournal.clerk/recompute! )))))))
505
+ :cljs nil )
506
+ table-state #?(:clj @@(resolve var-name)
507
+ :cljs nil )]
497
508
498
509
(if-let [{:keys [head rows summary filter-data autocomplete-data state]}
499
510
(normalize-table-data (merge render-opts table-state)
502
513
(assoc :nextjournal/viewer table-markup-viewer)
503
514
(update :nextjournal/width #(or % :wide ))
504
515
(update :nextjournal/render-opts merge {:num-cols (count (or head (first rows)))
516
+ #?@(:clj [:sync-var (viewer/->viewer-eval
517
+ (list 'nextjournal.clerk.render/intern-atom!
518
+ (list 'quote var-name) table-state))])
505
519
:number-col? (into #{}
506
520
(comp (map-indexed vector)
507
521
(keep #(when (number? (second %)) (first %))))
Original file line number Diff line number Diff line change 834
834
label])]])
835
835
js/document.body))])))
836
836
837
- (defn table-markup-viewer [head+body {:as opts :keys [! sync-state ]}]
838
- (r/with-let [table-state (if ! sync-state
839
- ! sync-state
840
- #?(:clj (throw (js/Error. (str " no sync var: " ! sync-state )))
837
+ (defn table-markup-viewer [head+body {:as opts :keys [sync-var ]}]
838
+ (r/with-let [table-state (if sync-var
839
+ ( deref sync-var)
840
+ #?(:clj (throw (js/Error. (str " no sync var: " sync-var )))
841
841
:cljs nil ))]
842
842
[:div
843
843
[table-search head+body table-state opts]
You can’t perform that action at this time.
0 commit comments