Commit Graph

278 Commits

Author SHA1 Message Date
Stephen C. Gilardi ceafa00483 update/minimize ns form for new impl 2015-11-04 08:07:33 -05:00
mike-thompson-day8 075af4bee2 rename action function, plus use 'case' for performance 2015-11-04 17:11:42 +11:00
Stephen C. Gilardi 4be6227b02 revise fsm terminology around resuming 2015-11-04 00:14:11 -05:00
Stephen C. Gilardi b32aeab413 fix [:do-paused :add-event] state transition 2015-11-04 00:10:28 -05:00
mike-thompson-day8 46c627430f Wording changes in docs 2015-11-04 13:33:50 +11:00
mike-thompson-day8 e9a3b1ebeb Improve wording of comments 2015-11-02 23:43:19 +11:00
mike-thompson-day8 420e42aacc Introduce a router loop, not based on core-async 2015-11-02 22:37:46 +11:00
Daniel Compton a2e8c09775 Use yield instead of (timeout 0)
(timeout 0) resolves to using js/setTimeout which will actually take 4+
msecs in browsers. This is an eternity. The nextTick approach was
proposed by Patrick O'Brien and implemented here.

Docs on nextTick from Closure library:

Fires the provided callbacks as soon as possible after the current JS
execution context. setTimeout(…, 0) takes at least 4ms when called from
within another setTimeout(…, 0) for legacy reasons.

This will not schedule the callback as a microtask (i.e. a task that can
preempt user input or networking callbacks). It is meant to emulate what
setTimeout(_, 0) would do if it were not throttled. If you desire
microtask behavior, use goog.Promise instead.
2015-10-16 14:49:10 +13:00
Daniel Compton 3e8f1e1dfa Log warning when non reactive parameters are passed to dynamic subscriptions
Closes #115
2015-10-16 14:47:15 +13:00
Daniel Compton 518ff995dc Remove extra level of indirection when creating dynamic subscription
Instead of creating a RAtom and resetting into it on a seperate side
chain of our dependency graph, we can instead return a reaction which is
the result of @@sub, achieving the same goals but with less code and
complexity.
2015-10-16 14:47:15 +13:00
Daniel Compton 7e492930e3 Add dynamic subscriptions to re-frame
Dynamic subscriptions allow the user to specify subscriptions that
depend on Ratoms/Reactions and will be rerun when they change. Users
will subscribe with v and a vector of dynamic values. The dynamic values
are dereffed and passed to the handler-fn. Dynamic subscriptions need to
pass a fn which takes app-db, v, and the dereffed dynamic values.

Every time a dynamic value changes, handler-fn will be rerun. This is in
contrast to standard subscriptions where handler-fn will only be run
once, although the reaction that it produces will change over time.

A concrete example of the need for this is:
1. You want to subscribe to a query on a remote server which will return
a Reaction which changes in response to server changes.
2. You want this subscription to be able to be rerun when you change one
of the query parameters.

In the current system, all views need to be aware of the possibility of
changing parameters and provide them in their subscriptions.

Example usage code:

(register-sub
  :todo-dynamic
  (fn todo-dynamic [_ _ [active-list]]
    (let [q (q/get-query active-list)]
      q)))

(register-sub
  :todos
  (fn todos [db _]
    (let [active-list (subscribe [:active-list])
          todos       (subscribe [:todo-dynamic] [active-list])]
      (make-reaction (fn todo-vals [] (update @todos :result #(vals (:list %))))))))
2015-10-16 14:46:54 +13:00
Daniel Compton 2720b27e4c Merge pull request #100 from thenonameguy/patch-2
Use if-not instead of (if (not))
2015-09-12 20:27:35 +12:00
Daniel Compton 915ad9a351 Merge branch 'master' into develop
Conflicts:
	README.md
	examples/todomvc/src/todomvc/db.cljs
2015-07-27 16:51:22 +12:00
Szabó Krisztián e0c816859f Use if-not instead of (if (not)) 2015-07-26 19:57:17 +02:00
Daniel Compton b566c08f40 Merge pull request #84 from ducky427/patch-1
Minor code cleanup
2015-07-25 07:44:22 +12:00
Szabó Krisztián 72b2889f94 Fix spelling of 'weird'
https://en.wiktionary.org/wiki/wierd
2015-07-24 15:43:40 +02:00
Stuart Mitchell 62251dfe2b fixed issue with log groupings 2015-07-17 14:16:56 +12:00
Stuart Mitchell 8caee1115b fixes bug introduced by 8af8c6840f 2015-07-17 11:51:34 +12:00
Ducky fc9da0d13a Minor code cleanup 2015-07-16 17:25:54 +01:00
Earl St Sauver 9326a411e7 Simplify implementation of Middleware Compose
The implementation of middleware compose is duplicating behavior already
in compose.

`(apply comp [])` returns identity.
2015-07-11 11:52:23 +07:00
mike-thompson-day8 78dacf5ca1 Fix #65 2015-05-28 23:15:47 +10:00
mike-thompson-day8 16242cc2c4 Merge branch 'master' into develop 2015-05-26 21:53:16 +10:00
Daniel Compton 409b001e26 Clean up spelling, tense, and docstrings 2015-05-26 09:37:10 +12:00
mike-thompson-day8 0aee218689 Improve comments on router. 2015-05-08 15:49:48 +10:00
mike-thompson-day8 25ed816603 When an exception bubbles out of the router loop, it now restarts itself.
Previously the  the router loop was permanently broken by an exception.
This change makes figwheel debugging work much more nicely in some circumstances.
Plus it means that in production, apps have a chance at recovery from UHE
2015-05-02 10:52:11 +10:00
mike-thompson-day8 b921fa497d More "error" use instead of "warn" 2015-05-02 10:49:27 +10:00
mike-thompson-day8 7ebfc2a9ba Start using "error" instead of "warn" for bad things 2015-05-02 10:48:31 +10:00
mike-thompson-day8 36b88a7378 Get logging working 2015-05-02 10:47:37 +10:00
mike-thompson-day8 be8f5b1cc5 Improve comments around logging 2015-05-02 10:46:05 +10:00
mike-thompson-day8 7d85dbca48 Remove unneeded require 2015-04-27 07:39:17 +10:00
mike-thompson-day8 5a32049452 Improve comment 2015-04-27 07:38:48 +10:00
mike-thompson-day8 65c93cd4d1 Implement #53 2015-04-27 07:38:37 +10:00
mike-thompson-day8 87b3572baa Correct comment 2015-04-27 06:05:06 +10:00
mike-thompson-day8 c1fe51ddfd Partially fix #43 by adding ability to clear both kinds of handlers. 2015-04-25 09:50:46 +10:00
mike-thompson-day8 82b3c87f80 Introduce reaction-like middleware. Closes #50 2015-04-25 00:06:51 +10:00
mike-thompson-day8 e80c6c94b3 Improve comment 2015-04-24 23:46:27 +10:00
hipitihop 2571cb5e0b undo
- change undo to support separate event :purge-redos
- bump to [org.clojure/clojurescript "0.0-3211"]
2015-04-24 16:12:14 +10:00
hipitihop 06f7a29583 undo
- add optional parameter clear-redos? to :undo handler. Defaults to false so this is backward compatible.
2015-04-23 15:44:57 +10:00
mike-thompson-day8 72b605340e Bump various for a v0.3.2 release 2015-04-22 00:18:31 +10:00
mike-thompson-day8 6ed3ba1e1f Fix #42 2015-04-22 00:16:55 +10:00
mike-thompson-day8 f5ed759767 Incorporate changes from #46 2015-04-18 21:15:53 +10:00
mike-thompson-day8 76ee67de10 Improve comments and warnings.
Continue process of nicely naming of anon fns, so as to get better stack traces.
2015-04-18 17:59:40 +10:00
mike-thompson-day8 5602bffc6b WIP on subs 2015-04-17 23:51:29 +10:00
mike-thompson-day8 769723c069 add log-ex to core API 2015-04-17 22:51:03 +10:00
mike-thompson-day8 fa954e5d9f Give middleware anonymous handler functions better names, so they are more meaningful in stack traces 2015-04-16 16:02:19 +10:00
mike-thompson-day8 89f5344a86 Correct wiki links 2015-04-08 09:12:47 +10:00
mike-thompson-day8 f5ee682487 Follow suggestion from @whodidthis and include "v" into after and enrich 2015-03-17 22:03:21 +11:00
mike-thompson-day8 ef9dad529a Correct stack access 2015-03-15 20:10:54 +11:00
mike-thompson-day8 a5b1ccdb16 Add log-ex middleware. 2015-03-14 09:47:16 +11:00
Stuart Mitchell 6cb43207ec better printing of errors from re-frame 2015-03-11 16:46:16 +13:00
hipitihop 4426ed278b undo
- correct clear-history! to reset app-explain
- fix subscription :undo-explanations to only con app-explain when there are undos
2015-03-10 15:57:26 +10:00
mike-thompson-day8 0c000f0094 wording in warning 2015-03-06 19:04:27 +11:00
mike-thompson-day8 6a140f9241 Undo tweaks 2015-03-06 19:04:02 +11:00
mike-thompson-day8 ce6a04f68a Merge branch 'develop' of https://github.com/Day8/re-frame into develop 2015-03-06 18:10:27 +11:00
mike-thompson-day8 13840ed9a1 make path easier to use. Note new usage docs. Modify other docs in the process. 2015-03-06 18:06:25 +11:00
hipitihop ecda398c5a undo
- conj app-explain to :undo-explanations subscription
- add optional argument to :undo :redo handlers to specify number of undos/redos. Default 1 when not specified.
- correct comment and event name typos
2015-03-06 16:23:33 +10:00
mike-thompson-day8 a180df85c8 core.sync completely trashes the stack in an exception. Print any exception to the console before that happens. 2015-03-06 12:44:22 +11:00
mike-thompson-day8 f0fbea41a9 Various 2015-03-06 11:40:30 +11:00
mike-thompson-day8 b5ec3c6db5 Reimpliment undo so as to handle explanations 2015-03-06 10:48:20 +11:00
mike-thompson-day8 0ebb46cb91 undoable is now a middleware factory 2015-03-06 10:48:00 +11:00
mike-thompson-day8 a48f55ff79 With pure much more firmly embedded as mandatory middleware, remove a couple of checks 2015-03-05 14:43:11 +11:00
mike-thompson-day8 94afb7a7a1 Switch to renames. 2015-03-05 11:57:00 +11:00
mike-thompson-day8 de9e492bdc derive -> enrich 2015-03-05 11:32:36 +11:00
mike-thompson-day8 816f79f81e Sadly can't use derive. There's a function call that in the standard library apparently. Use enrich instead. 2015-03-05 11:31:46 +11:00
mike-thompson-day8 3b8643cc01 Use the new low level API for non-pure handlers. 2015-03-05 11:31:02 +11:00
mike-thompson-day8 6c55235160 Better explanation of router's handling of exceptions. 2015-03-05 10:41:50 +11:00
mike-thompson-day8 a7f5aca490 improve comment 2015-03-05 10:40:21 +11:00
mike-thompson-day8 d49bb49fd3 Rename register-pure-handler 2015-03-05 10:40:02 +11:00
mike-thompson-day8 e028034f48 Work on explaining the importance if derive 2015-03-05 10:39:09 +11:00
mike-thompson-day8 c6c6bfebf1 Give better names in middleware to improve stack traces 2015-03-05 00:47:03 +11:00
mike-thompson-day8 94e7a35c5f Add and remove comments 2015-03-05 00:45:58 +11:00
mike-thompson-day8 6c63ad315c Various improvements to middleware, mostly comments 2015-03-05 00:01:44 +11:00
mike-thompson-day8 ee5ba0ae01 Better comment 2015-03-05 00:01:03 +11:00
mike-thompson-day8 3540d7da9d Split handlers.cljs in two, creating router.cljs 2015-03-05 00:00:36 +11:00
mike-thompson-day8 470da75c48 WIP 2015-03-04 17:13:02 +11:00
mike-thompson-day8 ecead71638 Merge branch 'develop' of https://github.com/Day8/re-frame into develop 2015-03-03 16:33:46 +11:00
hipitihop 0ebc84f72b Undo
- correct bug in undo
- use pos? and reuse undo? redo? in handlers
2015-03-03 14:13:06 +10:00
mike-thompson-day8 989c67a4cc Merge branch 'develop' of https://github.com/Day8/re-frame into develop 2015-03-03 13:16:34 +11:00
mike-thompson-day8 f1684d5db1 Improve comments 2015-03-03 13:16:23 +11:00
hipitihop 459e265c9d Undo
- merge changes incorrectly pushed to master.
- reinstate use of ratoms.
- correct extracted undo/redo counts.
2015-03-03 12:09:19 +10:00
hipitihop c8bd955c63 Merge branch 'master' into develop 2015-03-03 09:10:32 +10:00
mike-thompson-day8 48e058f6dc improve comments 2015-03-03 01:06:45 +11:00
mike-thompson-day8 e5a4e9b525 Improve debug output 2015-03-03 01:06:32 +11:00
mike-thompson-day8 95de45a252 WIP 2015-03-03 01:03:09 +11:00
mike-thompson-day8 f5df77163b Middleware can now be supplied as a vector (containing nils, which are ignored). This is going to make generating middleware much easier.
For example, Debug middleware can now more easily be conditionally added and removed.
2015-03-03 00:10:05 +11:00
mike-thompson-day8 6ff74a112b Improve comments. And debug output 2015-03-02 23:55:05 +11:00
mike-thompson-day8 66191655c9 Improve comments. Improve debug middleware 2015-03-02 23:06:34 +11:00
mike-thompson-day8 fe29846660 Add other round of console API methods. Not very happy about this. But will sort it out later. 2015-03-02 23:06:02 +11:00
mike-thompson-day8 7b0799c80f Split function. 2015-03-02 23:03:49 +11:00
mike-thompson-day8 f3bb482591 Add new API
- a noop middleware
   - a comp-middleware
2015-03-02 23:02:56 +11:00
hipitihop 76068c2cb9 - remove usage of historian & dependency
- update dependency to [re-frame "0.1.8"]
- use new register-pure-handler in all steps
NOTE: functional but daypart unit tests failing + history not yet working
2015-03-02 17:49:03 +10:00
mike-thompson-day8 dc74e017df No need to use ratoms, can use normal atoms. 2015-03-02 15:46:46 +11:00
mike-thompson-day8 406cbe261c Improve the output of debug middleware 2015-03-02 10:07:48 +11:00
mike-thompson-day8 3e7ed53f34 Expose debug middleware through API 2015-03-02 07:58:34 +11:00
mike-thompson-day8 6a3f2e4b74 Improve comments on handlers 2015-03-02 07:57:11 +11:00
mike-thompson-day8 56aecc0866 Add new debug middleware 2015-03-02 07:55:17 +11:00
mike-thompson-day8 3c43bd3cf4 Fix typo pointed out by @btheado cond -> conp 2015-03-01 09:06:54 +11:00
mike-thompson-day8 1d2ffb0d4f Rename apply-event to trim-v, allow handler to get vector of middleware 2015-02-27 02:07:35 +11:00
mike-thompson-day8 42d1d9e0e6 Further iteration on todomvc 2015-02-27 02:06:23 +11:00
Stuart Mitchell 6e430b0ca7 reverted middleware order 2015-02-26 16:24:50 +13:00
Stuart Mitchell 6a776faa82 fixes 2015-02-26 15:41:50 +13:00
mike-thompson-day8 0039cd651e Clarify Licence 2015-02-26 08:26:08 +11:00
mike-thompson-day8 00ba238b74 New middleware, mostly untested. 2015-02-25 22:03:47 +11:00
mike-thompson-day8 e548759fe6 new core 2015-02-25 22:03:25 +11:00
mike-thompson-day8 faf340573f Create a core which carries the API 2015-02-25 22:03:02 +11:00
mike-thompson-day8 16b4efa3fd New middleware, largely untested 2015-02-25 21:51:38 +11:00
mike-thompson-day8 44b50e4feb Tweaks and cleanup 2015-02-25 12:51:30 +11:00
mike-thompson-day8 474b2e4bac Middleware now working. Bump to version 0.1.6 2015-02-25 11:43:10 +11:00
mike-thompson-day8 947de41d02 Back to compiling (removed namespace cycle) 2015-02-25 09:53:04 +11:00
mike-thompson-day8 ab7e613cbb Introduce new middleware DO NOT USE YET. THIS PUSH DOES NOT EVEN COMPILE 2015-02-25 08:58:55 +11:00
mike-thompson-day8 9f233f07b7 Change warning 2015-02-25 08:26:47 +11:00
mike-thompson-day8 031e9fde53 renaming and word fiddling 2015-02-25 00:26:49 +11:00
mike-thompson-day8 a8a1dcd890 Remove use of historian. An atom-watcher based approach complicates our life. Via middleware we will not explicitly snapshot. 2015-02-25 00:24:31 +11:00
mike-thompson-day8 a9c8d76e1e Tweaks mostly. 2015-02-22 22:28:40 +11:00
mike-thompson-day8 a3c88750e5 Re-work handlers, routers and dispatchers. More comments 2015-02-21 00:47:01 +11:00
mike-thompson-day8 7c1b48e3a6 Add ability to (dispatch [:flush-reagent]) 2015-02-20 16:46:40 +11:00
mike-thompson-day8 1fadc82700 Introduce a timeout into the router, so that the GUI gets a look in, if we have one event after another. 2015-02-18 19:43:50 +11:00
hipitihop 94748ad0dc - correct rgression off-the-record! caused by healdess git push fuffle
- move load-mwi subscriptions to subs.cljs
2015-01-06 16:50:50 +10:00
hipitihop 3a977a0242 Merge remote-tracking branch 'origin/master' 2015-01-06 16:06:00 +10:00
hipitihop 79e3f08d96 - convert :no-history-while from dispatch to direct call off-the-record! 2015-01-06 16:05:39 +10:00
Stuart Mitchell f442460905 added a dispatch-sync 2015-01-06 10:49:20 +13:00
mike-thompson-day8 d733c9c6b1 Make dispatch async.
WARNING: not tested.
2014-12-20 13:12:40 +11:00
hipitihop a46ab9b345 - remove handlers/get-in-db
- switch project back to [lein-cljsbuild "1.0.3"]
2014-12-16 12:34:27 +10:00
hipitihop bac24cfd37 - typo and temporary re-instate of get-in-db to get refactors and unit tests running 2014-12-16 11:48:41 +10:00
mike-thompson-day8 8654613087 Split handlers from subscriptions 2014-12-15 22:56:32 +11:00
mike-thompson-day8 84b25cab64 README WIP 2014-12-12 07:20:55 +11:00
hipitihop d37f86989a - add re-frame as a project dependency
- move model/db , handlers & history from dj-scratchpad to re-frame
- introduce priviliged protocol history/reset-history! and call from bootstrap
- convert all requires to use new re-frame/handlers
- introduce demo.bootstrap to init system and trigger handler registrations (removed redundant requires elsewhere).
- call bootsrap from main.cljs
- update unit tests
2014-12-11 18:24:19 +10:00
mike-thompson-day8 5692a6f485 WIP 2014-12-08 14:48:59 +11:00