130 Commits

Author SHA1 Message Date
Stephen C. Gilardi
4533d51fbe regularize fsm code formatting
- full align vectors on the left side within a group
- one space between left and right side
- align # marks in vectors on the right side within a group
- also arg1 -> arg
2015-11-04 09:15:52 -05:00
Stephen C. Gilardi
08e8b450ee optimize and DRY up pause-run handling 2015-11-04 09:15:52 -05:00
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 8af8c6840f3e7df8596bb55d1f2f71f3153932e0 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