/_/\
( o.o )
^ <
Take full control of re-frame app
Home Page: https://flexsurfer.github.io/conduit-re-frisk-demo/
/_/\
( o.o )
^ <
Hi. I'm storing a datascript connection object in my app-db in a re-frame project, and when I try to expand the app-db key in re-frisk, I get the following console errors (see below).
A datascript connection is arguably not the sort of thing one should properly store in the app-db, since it's more of a stateful component than pure data. Nonetheless, it would be nice if re-frisk didn't throw an error when trying to display it. I could imagine two potential workarounds. The best behavior might be for the re-frisk bits that render a string for each key in the app-db to catch exceptions, log them to the browser, and emit like "##ERROR##"
as the value in the shell.
The quicker workaround would maybe be for the library user to pass in a list of keys to skip over in the app-db via the :re-frisk
config key or the config map passed to (enable-re-frisk!)
.
My project is in a bit of a messy state right now, but let me know if providing sample code to reproduce would be helpful. Thanks!
component.cljs?rel=1480015918251:123 Error rendering component (in re_frisk.ui.re_frisk_shell
> re_frisk.core.frisk_inline > datafrisk.core.FriskInline > datafrisk.core.Root
> datafrisk.core.DataFrisk > datafrisk.core.MapNode > datafrisk.core.KeyValNode
> datafrisk.core.DataFrisk > datafrisk.core.DataFrisk > datafrisk.core.MapNode
> datafrisk.core.KeyValNode > datafrisk.core.DataFrisk > datafrisk.core.DataFrisk
> datafrisk.core.MapNode > datafrisk.core.KeySet)
core.cljs:8199
Uncaught TypeError: me.cljs$core$IMapEntry$_key$arity$1 is not a function(…)cljs.core.KeySeq.cljs$core$ISeq$_first$arity$1 @ core.cljs:8199
cljs$core$first @ core.cljs:1133
(anonymous function) @ core.cljs:4190
cljs.core.map_indexed.cljs$core$IFn$_invoke$arity$2.mapi @ core.cljs:4190
cljs.core.LazySeq.sval @ core.cljs:3256
cljs.core.LazySeq.cljs$core$ISeqable$_seq$arity$1 @ core.cljs:3310
cljs$core$seq @ core.cljs:1112
cljs.core.interleave.cljs$core$IFn$_invoke$arity$2 @ core.cljs:4648
cljs.core.LazySeq.sval @ core.cljs:3256
cljs.core.LazySeq.cljs$core$ISeqable$_seq$arity$1 @ core.cljs:3310
cljs$core$seq @ core.cljs:1112
step @ core.cljs:4566
cljs.core.drop.cljs$core$IFn$_invoke$arity$2 @ core.cljs:4570
cljs.core.LazySeq.sval @ core.cljs:3256
cljs.core.LazySeq.cljs$core$ISeqable$_seq$arity$1 @ core.cljs:3310
cljs$core$seq @ core.cljs:1112
cljs.core.seq_reduce.cljs$core$IFn$_invoke$arity$3 @ core.cljs:2336
cljs.core.LazySeq.cljs$core$IReduce$_reduce$arity$3 @ core.cljs:3320
cljs.core.reduce.cljs$core$IFn$_invoke$arity$3 @ core.cljs:2382
cljs.core.into_array.cljs$core$IFn$_invoke$arity$2 @ core.cljs:430
cljs.core.into_array.cljs$core$IFn$_invoke$arity$1 @ core.cljs:428
cljs$core$into_array @ core.cljs:424
reagent$impl$template$expand_seq_dev @ template.cljs?rel=1480015918423:336
(anonymous function) @ template.cljs?rel=1480015918423:347
reagent$ratom$in_context @ ratom.cljs?rel=1480015918083:37
reagent$ratom$check_derefs @ ratom.cljs?rel=1480015918083:512
reagent$impl$template$expand_seq_check @ template.cljs?rel=1480015918423:347
reagent$impl$template$as_element @ template.cljs?rel=1480015918423:321
reagent$impl$template$make_element @ template.cljs?rel=1480015918423:388
reagent$impl$template$native_element @ template.cljs?rel=1480015918423:275
reagent$impl$template$vec_to_elem @ template.cljs?rel=1480015918423:298
reagent$impl$template$as_element @ template.cljs?rel=1480015918423:319
reagent$impl$component$wrap_render @ component.cljs?rel=1480015918251:101
reagent$impl$component$do_render @ component.cljs?rel=1480015918251:118
(anonymous function) @ component.cljs?rel=1480015918251:140
reagent$ratom$in_context @ ratom.cljs?rel=1480015918083:37
reagent$ratom$deref_capture @ ratom.cljs?rel=1480015918083:43
reagent$ratom$run_in_reaction @ ratom.cljs?rel=1480015918083:501
datafrisk.core.KeySet_render @ component.cljs?rel=1480015918251:140
_renderValidatedComponentWithoutOwnerOrContext @ react.inc.js:6466
_renderValidatedComponent @ react.inc.js:6492
performInitialMount @ react.inc.js:6034
mountComponent @ react.inc.js:5922
mountComponent @ react.inc.js:13488
mountChildren @ react.inc.js:12333
_createInitialChildren @ react.inc.js:7438
mountComponent @ react.inc.js:7263
mountComponent @ react.inc.js:13488
mountChildren @ react.inc.js:12333
_createInitialChildren @ react.inc.js:7438
mountComponent @ react.inc.js:7263
mountComponent @ react.inc.js:13488
performInitialMount @ react.inc.js:6048
mountComponent @ react.inc.js:5922
mountComponent @ react.inc.js:13488
performInitialMount @ react.inc.js:6048
mountComponent @ react.inc.js:5922
mountComponent @ react.inc.js:13488
performInitialMount @ react.inc.js:6048
mountComponent @ react.inc.js:5922
mountComponent @ react.inc.js:13488
mountChildren @ react.inc.js:12333
_createInitialChildren @ react.inc.js:7438
mountComponent @ react.inc.js:7263
mountComponent @ react.inc.js:13488
mountChildren @ react.inc.js:12333
_createInitialChildren @ react.inc.js:7438
mountComponent @ react.inc.js:7263
mountComponent @ react.inc.js:13488
performInitialMount @ react.inc.js:6048
mountComponent @ react.inc.js:5922
mountComponent @ react.inc.js:13488
_mountChildAtIndex @ react.inc.js:12518
_updateChildren @ react.inc.js:12434
updateChildren @ react.inc.js:12394
_updateDOMChildren @ react.inc.js:7672
updateComponent @ react.inc.js:7501
receiveComponent @ react.inc.js:7457
receiveComponent @ react.inc.js:13570
updateChildren @ react.inc.js:4290
_reconcilerUpdateChildren @ react.inc.js:12304
_updateChildren @ react.inc.js:12406
updateChildren @ react.inc.js:12394
_updateDOMChildren @ react.inc.js:7672
updateComponent @ react.inc.js:7501
receiveComponent @ react.inc.js:7457
receiveComponent @ react.inc.js:13570
_updateRenderedComponent @ react.inc.js:6418
_performComponentUpdate @ react.inc.js:6396
updateComponent @ react.inc.js:6315
receiveComponent @ react.inc.js:6215
receiveComponent @ react.inc.js:13570
_updateRenderedComponent @ react.inc.js:6418
_performComponentUpdate @ react.inc.js:6396
updateComponent @ react.inc.js:6315
receiveComponent @ react.inc.js:6215
receiveComponent @ react.inc.js:13570
_updateRenderedComponent @ react.inc.js:6418
_performComponentUpdate @ react.inc.js:6396
updateComponent @ react.inc.js:6315
receiveComponent @ react.inc.js:6215
receiveComponent @ react.inc.js:13570
updateChildren @ react.inc.js:4290
_reconcilerUpdateChildren @ react.inc.js:12304
_updateChildren @ react.inc.js:12406
updateChildren @ react.inc.js:12394
_updateDOMChildren @ react.inc.js:7672
updateComponent @ react.inc.js:7501
receiveComponent @ react.inc.js:7457
receiveComponent @ react.inc.js:13570
updateChildren @ react.inc.js:4290
_reconcilerUpdateChildren @ react.inc.js:12304
_updateChildren @ react.inc.js:12406
updateChildren @ react.inc.js:12394
_updateDOMChildren @ react.inc.js:7672
updateComponent @ react.inc.js:7501
receiveComponent @ react.inc.js:7457
receiveComponent @ react.inc.js:13570
_updateRenderedComponent @ react.inc.js:6418
_performComponentUpdate @ react.inc.js:6396
updateComponent @ react.inc.js:6315
receiveComponent @ react.inc.js:6215
receiveComponent @ react.inc.js:13570
updateChildren @ react.inc.js:4290
_reconcilerUpdateChildren @ react.inc.js:12304
_updateChildren @ react.inc.js:12406
updateChildren @ react.inc.js:12394
_updateDOMChildren @ react.inc.js:7672
updateComponent @ react.inc.js:7501
receiveComponent @ react.inc.js:7457
receiveComponent @ react.inc.js:13570
updateChildren @ react.inc.js:4290
_reconcilerUpdateChildren @ react.inc.js:12304
_updateChildren @ react.inc.js:12406
updateChildren @ react.inc.js:12394
_updateDOMChildren @ react.inc.js:7672
updateComponent @ react.inc.js:7501
receiveComponent @ react.inc.js:7457
receiveComponent @ react.inc.js:13570
_updateRenderedComponent @ react.inc.js:6418
_performComponentUpdate @ react.inc.js:6396
updateComponent @ react.inc.js:6315
receiveComponent @ react.inc.js:6215
receiveComponent @ react.inc.js:13570
_updateRenderedComponent @ react.inc.js:6418
_performComponentUpdate @ react.inc.js:6396
updateComponent @ react.inc.js:6315
receiveComponent @ react.inc.js:6215
receiveComponent @ react.inc.js:13570
updateChildren @ react.inc.js:4290
_reconcilerUpdateChildren @ react.inc.js:12304
_updateChildren @ react.inc.js:12406
updateChildren @ react.inc.js:12394
_updateDOMChildren @ react.inc.js:7672
updateComponent @ react.inc.js:7501
receiveComponent @ react.inc.js:7457
receiveComponent @ react.inc.js:13570
_updateRenderedComponent @ react.inc.js:6418
_performComponentUpdate @ react.inc.js:6396
updateComponent @ react.inc.js:6315
performUpdateIfNecessary @ react.inc.js:6229
performUpdateIfNecessary @ react.inc.js:13604
runBatchedUpdates @ react.inc.js:14438
perform @ react.inc.js:16668
perform @ react.inc.js:16668
perform @ react.inc.js:14377
flushBatchedUpdates @ react.inc.js:14460
closeAll @ react.inc.js:16734
perform @ react.inc.js:16681
batchedUpdates @ react.inc.js:10161
enqueueUpdate @ react.inc.js:14488
enqueueUpdate @ react.inc.js:14086
enqueueForceUpdate @ react.inc.js:14218
ReactComponent.forceUpdate @ react.inc.js:5334
reagent$impl$batching$run_queue @ batching.cljs?rel=1480015917617:39
reagent.impl.batching.RenderQueue.flush_queues @ batching.cljs?rel=1480015917617:86
reagent.impl.batching.RenderQueue.run_queues @ batching.cljs?rel=1480015917617:76
(anonymous function) @ batching.cljs?rel=1480015917617:63
when subs graph is shown only
[Error] Error thrown from trace cb (4) {ns: null, name: "re-frisk-trace", fqn: "re-frisk-trace", _hash: 912949928, cljs$lang$protocol_mask$partition0$: 2153775105, …} "while storing" {meta: null, cnt: 54, shift: 5, root: Object, tail: Array, …} Error: Cannot add item: item with id rx201 already exists — 127.0.0.1:61:141619 error (anonymous function) (cljs.core.js:13306) (anonymous function) (cljs.core.js:13288) (anonymous function) (cljs.core.js:13276) (anonymous function) (cljs.core.js:13264) (anonymous function) (cljs.core.js:13252) (anonymous function) (cljs.core.js:13534) (anonymous function) (re_frame.loggers.js:37) re_frame$trace$tracing_cb_debounced (re_frame.trace.js:111) (anonymous function) (goog.functions.functions.js:156)
unfortunately, I didn't find which special type of sub causes this
re-frame-10x lib should be incorporated into re-frisk-remote it should be possible to switch in re-frisk-shell between re-frisk and re-frame-trace
So the idea is to initialize re-frame-trace and patch reagent in re-frisk-remote, listen traces and send it via sockets to re-frisk-sidecar and render re-frame-trace form in re-frisk-shell
Changes should be done in next repos
https://github.com/flexsurfer/re-frisk-remote
https://github.com/flexsurfer/re-frisk-shell
https://github.com/flexsurfer/lein-re-frisk/tree/master/re-frisk-sidecar
https://github.com/status-im/re-frame
Bounty issue:
flexsurfer/re-frisk-remote#7
see #8 where I have moved to a namespaced subscription.
Is it possible to make the widget "scrollable"? I find that with larger app-dbs large parts of the tree is outside the visible area.
sandbags [11:01 AM]
one suggestion though, if you’ve a moment, if you can replace [Object Object]
(I’m going from memory here) with something shorter it would help (edited)
[11:02]
I have some cases where i have maps with a lot of keys that are Clojure records that end up being represented [Object Object]
and it takes up a lot of space visually when some short-hand would be better
It would be nice if the external-window version of re-frisk didn't fire a window.alert()
when the main window is refreshed - it winds up stealing focus and making the user click a button right when the user is trying to interact with the main window. I'd suggest maybe a (.warn js/console)
instead, or possibly changing the external window so that it displays a prominent message telling the user that the debugger is not connected to the main app.
I could probably slap together a PR for this in a few days if you agree. Thanks!
I use namespace-qualified keywords everywhere in my app-db
, and when re-frisk renders them completely, I have to make its window width very wide to be able to see anything. Do you think it would be possible to treat this somehow? I see one possible solution: allow to specify a prefix of your app when initializing re-frisk, like (enable-re-frisk! {:common-ns-prefix "com.example.myapp"})
, so that later the keywords are rendered like :.core/foo
.
This is advanced warning that we are planning to make two changes in re-frame, probably to be released in the next week to 10 days:
dispatch
can be given a map
, not just a vector
subscribe
can be given a map
, not just a vector
For further details, please see day8/re-frame#644
I add this to dev/dependencies and :require
it in core.cljs
,
then I lein uberjar
, it tells me No such namespace: re-frisk.core
,
I want re-frisk
not be used in production env when I lein uberjar
,
how should I do?
Thanks.
re-frisk
would be easier to develop if it weren't scattered through 4 (5 if one counts a test application) repositories.
Maybe a monorepo would be more convenient? lein-re-frisk
already contains two projects.
because re-frisk need some time to start server and establish connection, not all event captured on applications start
% lein re-frisk
Could not find artifact org.clojure:clojure:jar:1.8.0
This could be due to a typo in :dependencies or network issues.
If you are behind a proxy, try setting the 'http_proxy' environment variable.
command failed with status: 1
I confirmed it's not a network issue, I could install a number of other dependencies no problem.
show the list of all registered events and subs, and show the number of usage
I think there's an issue when adding new data with add-in-data
after expanding the re-frisk content to a separate browser window.
If I expand re-frisk to the separate window, then add more data to a new key using add-in-data
it doesn't update the re-frisk display with the new data. If I perform the same action without expanding to the separate window it updates properly, including if I have expanded the data the same way but kept it in the original window.
Update to app-db
are working fine for me in both situations. It also refreshes the data if I close the separate window and re-open it.
Don't know if I'm just missing this functionality or if it's not implemented. I would like to set the state of my re-frame app back to a previous state by clicking on an event. I see the events on the left hand side but clicking on them doesn't change my current state. Is this possible or planed for future versions?
I wish to use this library but could not find any license file/information in the repo.
Would it be possible to add some configuration to enable-re-frisk!
to allow users to turn off the Emit
logging?
Not sure if this should be put here, but re-frisk is possible the culprit for this metadata leak:
Also, note the very large compile time introduced by re-frisk.
The debugger window is just completely blank when it is triggered from electron (from the renderer process). Devtools in the window show that there's nothing; it's completely blank.
I am getting this error with your def-view macro
(def-view app-footer
^--- Don't know how to create ISeq from: clojure.lang.Keyword
You should change def-sub
and def-event
to make it compatible
(defn get-registry []
(let [registry @re-frame.registrar/kind->id->handler
registry-keys (keys registry)
fx (:fx registry)
cofx (:cofx registry)
subs (:subs registry)]
{:fx fx
:cofx cofx
:subs subs}))`
show the registered fx and cofx (doubt need the subs, unless it helps get rid of the macro)
it would be nice to see all the registered :fx and :cofx and possibly the chains of :before and :after.
Sometimes finding data buried in our ever growing app-db can be tedious. I think it would be great if we could filter the app state using free text search. We had something very similar in our app before we swapped in favour of re-frisk, and we found it very useful.
Happy to discuss further and/or submit a PR :)
Luke
For example
(dispatch [:re-frisk/debug [:test value]])
-> :app-db -> :re-frisk/debug -> :test
or
(dispatch [:re-frisk/log [:test value]])
-> :app-db -> :re-frisk/log -> time :test
The app-db is sorted, making it very easy to find keys.
However the active subscriptions are unsorted.
It would make finding subscriptions super easy if the active subscriptions were sorted too -
especially when there are lots of subscriptions.
Sorry for this rather scarce error report, I don't know where to gather further data.
When I click on "export" button I get this error
I've tried on Firefox 53.0a2 (2017-02-02) (64-bit) and Chrome Version 58.0.3011.0 (Official Build) canary (64-bit). I use [re-frisk "0.3.2"]
, [re-frame "0.9.1"]
, [org.clojure/clojurescript "1.9.293"]
and (ifneedsbe) [org.clojure/clojure "1.8.0"]
.
My platform is:
$ uname -a # (macOS)
Darwin … 16.3.0 Darwin Kernel Version 16.3.0
I just tried to use https://github.com/vimsical/subgraph and it appears to be working, but it creates keys like [:score/id 17]
. The in-app re-frisk window works fine:
But trying to invoke the pop-out window leads to
Error rendering component (in re_frisk_shell.re_com.views.main > re_com.box.v_box > re_frisk_shell.re_com.splits.h_split > re_frisk_shell.re_com.views.main_view > re_com.box.v_box > re_frisk_shell.re_com.splits.v_split > re_com.box.v_box > re_frisk_shell.re_com.splits.v_split > re_com.box.v_box > re_frisk_shell.re_com.ui.scroller > re_frisk_shell.frisk.main_frisk)
in the JS console.
if main app window will be closed or refreshed we re-frisk debugger should show the message that it stop working
Hi.
If I try and use re-frisk with re-frame-database then I get two errors (repeated) during enable-re-frisk!
It appears to relate to the re-frisk.help:47 somehow k
is unexpectedly ""
or nil
.
The re-frame-datatable code is doing some tricky subscribes so it could be that. But I didn't just want to patch in a test for nil
and ignore the error.
m/
core.cljs:3782 re-frame: expected a vector, but got: null
cljs.core.apply_to_simple.cljs$core$IFn$_invoke$arity$4 @ core.cljs:3782
cljs.core.apply_to_simple.cljs$core$IFn$_invoke$arity$3 @ core.cljs:3777
cljs.core.apply_to_simple.cljs$core$IFn$_invoke$arity$2 @ core.cljs:3771
cljs.core.apply.cljs$core$IFn$_invoke$arity$2 @ core.cljs:3806
cljs$core$apply @ core.cljs:3797
re_frame.loggers.console.cljs$core$IFn$_invoke$arity$variadic @ loggers.cljc?rel=1503182097748:38
re_frame$loggers$console @ loggers.cljc?rel=1503182097748:35
re_frame$utils$first_in_vector @ utils.cljc?rel=1503182097936:24
re_frame.subs.subscribe.cljs$core$IFn$_invoke$arity$1 @ subs.cljc?rel=1503182098502:81
re_frame$subs$subscribe @ subs.cljc?rel=1503182098502:69
re_frame.core.reg_sub.call.vec__45860 @ core.cljs?rel=1503182416807:234
re_frame$subs$subs_handler_fn__2 @ subs.cljc?rel=1503182098502:207
re_frame$subs$subs_handler_fn @ subs.cljc?rel=1503182098502:217
re_frame.subs.subscribe.cljs$core$IFn$_invoke$arity$1 @ subs.cljc?rel=1503182098502:87
re_frame$subs$subscribe @ subs.cljc?rel=1503182098502:69
(anonymous) @ help.cljs?rel=1503182111802:47
(anonymous) @ core.cljs:4567
cljs.core.map.cljs$core$IFn$_invoke$arity$2 @ core.cljs:4567
cljs.core.LazySeq.sval @ core.cljs:3308
cljs.core.LazySeq.cljs$core$ISeqable$_seq$arity$1 @ core.cljs:3362
cljs$core$seq @ core.cljs:1125
cljs.core.Cons.cljs$core$INext$_next$arity$1 @ core.cljs:3141
cljs$core$next @ core.cljs:1170
cljs.core.seq_reduce.cljs$core$IFn$_invoke$arity$3 @ core.cljs:2364
cljs.core.LazySeq.cljs$core$IReduce$_reduce$arity$3 @ core.cljs:3372
cljs.core.reduce.cljs$core$IFn$_invoke$arity$3 @ core.cljs:2431
cljs.core.into.cljs$core$IFn$_invoke$arity$2 @ core.cljs:4842
cljs$core$into @ core.cljs:4834
re_frisk$help$re_frame_sub @ help.cljs?rel=1503182111802:46
(anonymous) @ help.cljs?rel=1503182111802:59
reagent.ratom.Reaction.cljs$core$IDeref$_deref$arity$1 @ ratom.cljs?rel=1503182091618:447
cljs$core$deref @ core.cljs:588
cljs$core$deref @ core.cljs:1364
re_frisk$help$re_frame_handlers @ help.cljs?rel=1503182111802:61
re_frisk.core.enable_re_frisk_BANG.cljs$core$IFn$invoke$arity$variadic @ core.cljs?rel=1503182111856:30
re_frisk$core$enable_re_frisk_BANG @ core.cljs?rel=1503182111856:25
dtrh$core$dev_setup @ core.cljs?rel=1503182416902:34
dtrh$core$init @ core.cljs?rel=1503182416902:43
(anonymous) @ (index):17
followed by
core.cljs:3776 re-frame: no subscription handler registered for: "". Returning a nil subscription.
cljs.core.apply_to_simple.cljs$core$IFn$_invoke$arity$3 @ core.cljs:3776
cljs.core.apply_to_simple.cljs$core$IFn$_invoke$arity$2 @ core.cljs:3771
cljs.core.apply.cljs$core$IFn$_invoke$arity$2 @ core.cljs:3806
cljs$core$apply @ core.cljs:3797
re_frame.loggers.console.cljs$core$IFn$_invoke$arity$variadic @ loggers.cljc?rel=1503182097748:38
re_frame$loggers$console @ loggers.cljc?rel=1503182097748:35
re_frame.subs.subscribe.cljs$core$IFn$_invoke$arity$1 @ subs.cljc?rel=1503182098502:86
re_frame$subs$subscribe @ subs.cljc?rel=1503182098502:69
re_frame.core.reg_sub.call.vec__45860 @ core.cljs?rel=1503182416807:234
re_frame$subs$subs_handler_fn__2 @ subs.cljc?rel=1503182098502:207
re_frame$subs$subs_handler_fn @ subs.cljc?rel=1503182098502:217
re_frame.subs.subscribe.cljs$core$IFn$_invoke$arity$1 @ subs.cljc?rel=1503182098502:87
re_frame$subs$subscribe @ subs.cljc?rel=1503182098502:69
(anonymous) @ help.cljs?rel=1503182111802:47
(anonymous) @ core.cljs:4567
cljs.core.map.cljs$core$IFn$_invoke$arity$2 @ core.cljs:4567
cljs.core.LazySeq.sval @ core.cljs:3308
cljs.core.LazySeq.cljs$core$ISeqable$_seq$arity$1 @ core.cljs:3362
cljs$core$seq @ core.cljs:1125
cljs.core.Cons.cljs$core$INext$_next$arity$1 @ core.cljs:3141
cljs$core$next @ core.cljs:1170
cljs.core.seq_reduce.cljs$core$IFn$_invoke$arity$3 @ core.cljs:2364
cljs.core.LazySeq.cljs$core$IReduce$_reduce$arity$3 @ core.cljs:3372
cljs.core.reduce.cljs$core$IFn$_invoke$arity$3 @ core.cljs:2431
cljs.core.into.cljs$core$IFn$_invoke$arity$2 @ core.cljs:4842
cljs$core$into @ core.cljs:4834
re_frisk$help$re_frame_sub @ help.cljs?rel=1503182111802:46
(anonymous) @ help.cljs?rel=1503182111802:59
reagent.ratom.Reaction.cljs$core$IDeref$_deref$arity$1 @ ratom.cljs?rel=1503182091618:447
cljs$core$deref @ core.cljs:588
cljs$core$deref @ core.cljs:1364
re_frisk$help$re_frame_handlers @ help.cljs?rel=1503182111802:61
re_frisk.core.enable_re_frisk_BANG.cljs$core$IFn$invoke$arity$variadic @ core.cljs?rel=1503182111856:30
re_frisk$core$enable_re_frisk_BANG @ core.cljs?rel=1503182111856:25
dtrh$core$dev_setup @ core.cljs?rel=1503182416902:34
dtrh$core$init @ core.cljs?rel=1503182416902:43
(anonymous) @ (index):17
core.cljs:3782 re-frame: expected a vector, but got: null
cljs.core.apply_to_simple.cljs$core$IFn$_invoke$arity$4 @ core.cljs:3782
cljs.core.apply_to_simple.cljs$core$IFn$_invoke$arity$3 @ core.cljs:3777
cljs.core.apply_to_simple.cljs$core$IFn$_invoke$arity$2 @ core.cljs:3771
cljs.core.apply.cljs$core$IFn$_invoke$arity$2 @ core.cljs:3806
cljs$core$apply @ core.cljs:3797
re_frame.loggers.console.cljs$core$IFn$_invoke$arity$variadic @ loggers.cljc?rel=1503182097748:38
re_frame$loggers$console @ loggers.cljc?rel=1503182097748:35
re_frame$utils$first_in_vector @ utils.cljc?rel=1503182097936:24
re_frame.subs.subscribe.cljs$core$IFn$_invoke$arity$1 @ subs.cljc?rel=1503182098502:81
re_frame$subs$subscribe @ subs.cljc?rel=1503182098502:69
re_frame.core.reg_sub.call.vec__45848 @ core.cljs?rel=1503182416807:214
re_frame$subs$subs_handler_fn__2 @ subs.cljc?rel=1503182098502:207
re_frame$subs$subs_handler_fn @ subs.cljc?rel=1503182098502:217
re_frame.subs.subscribe.cljs$core$IFn$_invoke$arity$1 @ subs.cljc?rel=1503182098502:87
re_frame$subs$subscribe @ subs.cljc?rel=1503182098502:69
(anonymous) @ help.cljs?rel=1503182111802:47
(anonymous) @ core.cljs:4567
cljs.core.map.cljs$core$IFn$_invoke$arity$2 @ core.cljs:4567
cljs.core.LazySeq.sval @ core.cljs:3308
cljs.core.LazySeq.cljs$core$ISeqable$_seq$arity$1 @ core.cljs:3362
cljs$core$seq @ core.cljs:1125
cljs.core.Cons.cljs$core$INext$_next$arity$1 @ core.cljs:3141
cljs$core$next @ core.cljs:1170
cljs.core.seq_reduce.cljs$core$IFn$_invoke$arity$3 @ core.cljs:2364
cljs.core.LazySeq.cljs$core$IReduce$_reduce$arity$3 @ core.cljs:3372
cljs.core.reduce.cljs$core$IFn$_invoke$arity$3 @ core.cljs:2431
cljs.core.into.cljs$core$IFn$_invoke$arity$2 @ core.cljs:4842
cljs$core$into @ core.cljs:4834
re_frisk$help$re_frame_sub @ help.cljs?rel=1503182111802:46
(anonymous) @ help.cljs?rel=1503182111802:59
reagent.ratom.Reaction.cljs$core$IDeref$_deref$arity$1 @ ratom.cljs?rel=1503182091618:447
cljs$core$deref @ core.cljs:588
cljs$core$deref @ core.cljs:1364
re_frisk$help$re_frame_handlers @ help.cljs?rel=1503182111802:61
re_frisk.core.enable_re_frisk_BANG.cljs$core$IFn$invoke$arity$variadic @ core.cljs?rel=1503182111856:30
re_frisk$core$enable_re_frisk_BANG @ core.cljs?rel=1503182111856:25
dtrh$core$dev_setup @ core.cljs?rel=1503182416902:34
dtrh$core$init @ core.cljs?rel=1503182416902:43
(anonymous) @ (index):17
I'm working on a app where we receive WS event every 200 ms and these are handled in a re-frame event handler.
This pretty much breaks the Re-frisk event list, as it will have some many events it is impossible to navigate.
Re-frisk will also get quite slow when the event list grows.
In this case, I'd be happy to set up filter to skip these events. Not sure if this is possible to implement in Re-frisk or would this need support in Re-frame tracing?
Not sure if re-frisk keeps track of the app-db history, but if so, that will also probably grow quite big if old versions aren't dropped at some point.
Use re-frisk with reagent 1.0.0-alpha2
Get the following error
------ WARNING #1 - :fn-arity --------------------------------------------------
Resource: re_frisk/trace.cljs:27:11
--------------------------------------------------------------------------------
24 | {:op-type :render
25 | :operation (operation-name c)}
26 | (if util/*non-reactive*
27 | (reagent.impl.component/do-render c)
-----------------^--------------------------------------------------------------
Wrong number of args (1) passed to reagent.impl.component/do-render
--------------------------------------------------------------------------------
28 | (let [rat (gob/get c "cljsRatom")
29 | _ (batch/mark-rendered c)
30 | res (if (nil? rat)
31 | (ratom/run-in-reaction #(reagent.impl.component/do-render c) c "cljsRatom"
--------------------------------------------------------------------------------
------ WARNING #2 - :fn-arity --------------------------------------------------
Resource: re_frisk/trace.cljs:31:54
--------------------------------------------------------------------------------
28 | (let [rat (gob/get c "cljsRatom")
29 | _ (batch/mark-rendered c)
30 | res (if (nil? rat)
31 | (ratom/run-in-reaction #(reagent.impl.component/do-render c) c "cljsRatom"
------------------------------------------------------------^-------------------
Wrong number of args (1) passed to reagent.impl.component/do-render
--------------------------------------------------------------------------------
32 | batch/queue-render reagent.impl.component/rat-opts)
33 | (._run rat false))
34 | cljs-ratom (gob/get c "cljsRatom")] ;; actually a reaction
35 | (re-frame.trace/merge-trace!
--------------------------------------------------------------------------------
sandbags [11:14 AM]
@motor4ik i can think of one instance in which the panel approach could be very useful: if you could “focus” the panel on a specific sub-tree of db
and turn it into a kind of “watch"
[11:15]
then you just have the value you are interested in, right in your visual focus where you want it
motor4ik [11:19 AM]
@sandbags so , there are alot of data that changing, but you want only watch some current value?
sandbags [11:19 AM]
yes
motor4ik [11:19 AM]
ok, understand
new messages
sandbags [11:20 AM]
for example i track both date and a day delta. When I was testing the code that updated them together i would have loved to be able to focus on the matching part(s) of the data structure
Hi :-) I use re-frisk on a daily basis and find it utmost useful (many thanks for sorted-app-db btw)
I've been thinking a tiny yet useful feature may be missing:
https://github.com/clojure/clojurescript/wiki/Compiler-Options#preloads
It would be nice to have. Moreover preloads aren't included in advanced builds, which is on par with re-frisk readme advices.
It looks so very easy to do, I would volunteer to do it if you agree to.
use set instead vector
put this fn in your documentation as it seems a better way to get the app-db view, without changing your code
I try to add re-frisk-remote
to my re-frame project following re-frisk guide but for any reason isn't working, can someone help me to resolve that or re-frisk works just with shadow clsj
?
#dev.cljs.edn
...
:preloads [devtools.preload
re-frisk-remote.preload]
...
#project.clj
...
:profiles {:dev {:dependencies [[com.bhauman/figwheel-main "0.2.3"]
[re-frisk-remote "1.2.0"]]
...
When starting the application we got this error
We try to run re-frisk
but isn't work as well
In current implementation if you click on event in the left panel list, you can see event vector in separate panel, it would be good also to see the app-db data which was changed by this event, for example, if we had app-db
{:a 1 :b 3}
and selected event changed :b key on 4 we should see
{:b 4}
so it should be a difference of app-db before this event and after
This task should be done for both re-frisk and re-frisk-remote (flexsurfer/re-frisk-remote#4)
I get this warning enabling re-frisk
Warning: a `div` tag (owner: `re_frisk.ui.re_frisk_shell`) was passed a numeric string value for CSS property `borderBottomLeftRadius` (value: `0`) which will be treated as a unitless number in a future version of React.
Using:
[reagent "0.6.0-rc"]
[re-frame "0.8.0"]
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.