-
Notifications
You must be signed in to change notification settings - Fork 12
Add usage examples for reactive operators #137
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add usage examples for reactive operators #137
Conversation
|
I updated this PR with the feedback from DCM and added another batch of reactive operators (operators that "combine" sequences). As such i changed the title of this PR and also added a chart in the top level comment to document which operators were included. Other changes that were made:
|
09a4de7 to
d12f524
Compare
Minor fix - added .layout to .gitignore in workflow folder
Separate application examples from basic examples Rename example filenames
Edit SkipUntil example and warning
Also added First operator example and clarified TakeUntil example description
glopesdev
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Huge work, thanks for pushing this!
Took me a while to go through everything, and left a bunch of notes for myself to help me figure out how best to organize and try not to forget everything. In the middle I stopped repeating the same comment over and over.
Will now go again and probably try to put together a PR that addresses the comments directly to make it easier to work with.
dab88a2 to
77b01be
Compare
- Ensure marble diagrams are shown before examples - Wording and terminology review - Update workflow for frame rate calculation
77b01be to
c6fc58f
Compare
glopesdev
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Great work, thank you so much for this contribution, it's been a long time coming!
Partially addresses bonsai-rx/roadmap#15
Progress
100/100
Bonsai.Reactiveoperators reviewedThe examples have been updated with the
VisualizerWindowfrom Bonsai 2.9.0Click on operator link for online preview - some might not be up yet till I update the demo branch.:
Operators covered with examples
SumElementIndexAccumulateAccumulateWithLatestFromMergeOnErrorResumeNextZipCombineLatestWithLatestFromConcatBackground Subtraction
CombineLatestCombine Related Events
Sample Preloaded Sequences
WithLatestFromCombineLatestGateIntervalWindowTriggerBufferTriggerSampleIntervalZipSubscribeWhenSkipUntilDistinctUntilChangedTakeFirstOrDefaultTakeTakeLastLastOrDefaultTakeLastGateIntervalSliceDelaySkipUntilConditionFirstLastTakeUntilConditionDelaySubscriptionDelaySampleIntervalSliceGateGateIntervalSliceSampleRepeatCountRepeatToListToArrayToLookupToDictionaryBufferTimeWindowCountBufferCountWindowTimeWindowTimeBufferCountWindowCountBufferTimeWindowTriggerBufferTriggerWindowWindowTriggerSwitchAmbRetryCountRetryRetryOnErrorResumeNextConcatCatchAppendPrependSelectManyCreateObservableComments (*)
Throttle, it was hard to build a basic example using justBonsai.Corereactive operators, since it relies on an input with a variable rate, so I usedKeyDownas an input.CreateTimestampedwas renamed fromCombineTimestamp, but the accompanying doc files were not updated yet; these files were renamed. In addition, the existing example (to carry forward the timestamp) was adopted as a basic example. While it is more like an application example, I could not figure out how to generate a basic example without copying much of that workflow. In addition, a true basic example for this operator would rely on timestamps coming from a different source.GroupBy,OrderBy), the basic examples are a little complicated because of the steps needed to set up the key/value collection. I grouped theKeyandValuemanipulations to somewhat hide them, as I think they're not essential for understanding how the operators work, but I am open to other suggestions on how to simplify them.Operators without examples
- Unsure how to create a basic or suitable application example.
- I listed
AsyncSubjectas an alternative due to prior confusion.ObserveOnSubscribeOn- Would
Timer->SubscribeOn (DefaultScheduler)->ObserveOn (NewThreadScheduler)->Accumulatework?CurrentThreadSchedulerDefaultSchedulerEventLoopSchedulerImmediateSchedulerNewThreadSchedulerTaskPoolSchedulerThreadPoolScheduler- Unsure as to when someone would use them given that they
also appear as property options for
ObserveOnandSubscribeOn.SynchronizePublishReplay- Can be used to unlock more complex functionality?
DeferI mainly use it as my default closed-scope node
Other Thoughts/Issues
Concat)ToList, etc), I thought it would be helpful to add some references to .NET documentation for the collection, in case they need to be manipulated further. These were added to the existing summaries for each operator and do not affect the examples directly.VisualizerWindowsto illustrate the elements before and after they have been processed by the operator, I have been wondering if that might be a good general strategy to apply to all the Reactive operators, even if it adds a bit of clutter.<seealso>tag for XML doc comments, there is an example of that in the existing documentation for the SubscribeOn operator.