Comments (6)
@tkachenko1503 Hi. Thanks! Current architecture doesn't provide core capabilities for integrating development tooling, but you can always hook into state atom with add-watch function. This enables watching state changes over time and building time-traveling debugger, but you can't log actual events. This is temporary solution. I'm considering to work on interceptors as in re-frame, which will allow this kind of tooling. But this is future work.
from citrus.
I'll drop an example later here
from citrus.
OK! Thanks
from citrus.
I just published a package with very basic tooling https://clojars.org/org.roman01la/scrum.devtools
It provides console logger and time-traveling UI with state diffs and current state visualization.
Add to project dependencies: [org.roman01la/scrum.devtools "0.1.0-SNAPSHOT"]
In your code, where you create state
atom, do the following to setup devtools:
Require [scrum.devtools.logger :as logger]
and [scrum.devtools.ui :as dui]
;; this is your app state
(def state (atom {}))
(when ^boolean goog.DEBUG ;; <= only in dev mode
(logger/attach! state) ;; <= setup logger
(dui/mount! state (dom/getElement "debug"))) ;; <= mount devtools UI into the DOM
;; setup reconciler, etc.
;; ...
from citrus.
The repo your clojars link points to is gone.
Is the scrum.devtools repo available elsewhere?
from citrus.
@escherize no, it's not public. TBH there's nothing super exciting, you can easily hook into atom state and log state changes :)
from citrus.
Related Issues (20)
- Rename to strum? HOT 8
- Project renaming
- `nil` is not a valid state for `dispatch!` not `dispatch-sync!` HOT 6
- Re-frame side-causes (aka coeffect) as data? HOT 10
- State changes not picked up HOT 6
- `update-in`-style state updates? HOT 5
- Cannot use custom scheduling function HOT 14
- keep state of reconciler when recompiling/reloading namespace HOT 1
- js/setTimeout for function using dispatch-sync! HOT 4
- Updating state with same values does not trigger render HOT 2
- Better state-handling in citrus ? HOT 24
- Behaviour When Mixing Dispatch and Dispatch Sync HOT 3
- Controller/control function will fail unless it is a multimethod HOT 2
- 3.2.1 not available in repos HOT 1
- Difference in subscriptions with reducers between CLJ and CLJS HOT 1
- Modifying the state backend-side HOT 1
- Implement default-handler option to allow full customization of event-handling HOT 4
- [FEEDBACK WANTED] Are you using co-effects? HOT 3
- Add @martinklepsch as a collaborator HOT 1
- adding `clj-commons/citrus` overrules `resources/public/index.html` script[src] HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from citrus.