RangeController source

Manages the selection and visible portion of given content, typically an Array for for a Repetition.

Specializes Montage

A RangeController is responsible for managing "ranged content", typically an array, but any collection that implements ranged content change dispatch, (plus, minus, index), would suffice. The controller manages selection and governs the filtering and ordering of the content. RangeController is not affiliated with a number range input.

A RangeController receives a content collection, manages what portition of that content is visible and the order of its appearance (organizedContent), and projects changes to the the organized content into an array of iteration controllers (iterations, containing instances of Iteration).

The RangeController provides a variety of knobs for how to project the content into the organized content, all of which are optional, and the default behavior is to preserve the content and its order. You can use the bindings path expression language (from FRB) to determine the sortPath and filterPath. There is a reversed flag to invert the order of appearance. The visibleIndexes property will pluck values from the sorted and filtered content by position, in arbitrary order. The start and length properties manage a sliding window into the content.

The RangeController is also responsible for managing which content is selected and provides a variety of knobs for that purpose.

Properties

avoidsEmptySelection :boolean source

Whether to automatically reselect a value if it is the last value removed from the selection.

Off by default.

clearSelectionOnOrderChange :boolean source

Whether to automatically clear the selection whenever the sortPath, filterPath, or reversed knobs change.

Off by default.

contentConstructor :function source

Creates a content value for this range controller. If the backing collection has an intrinsict type, uses its contentConstructor. Otherwise, creates and returns simple, empty objects.

This property can be set to an alternate content constructor, which will take precedence over either of the above defaults.

deselectInvisibleContent :boolean source

Whether to automatically deselect content that disappears from the organizedContent.

Off by default.

filterPath :string source

An FRB expression that determines how to filter content like "name.startsWith('A')" to see only names starting with 'A'. If the filterPath is null, all content is accepted.

iterations :Array.<Iteration> source

An array of iterations corresponding to each of the values in organizedContent, providing an interface for getting or setting whether each is selected.

length :number source

The length of a sliding window over the content, suitable for binding (indirectly) to the scroll height. If start or length is null, all content is accepted.

multiSelect :boolean source

Whether to automatically deselect all previously selected content when a new selection is made.

Off by default.

organizedContent :Array.<Object> source

An array incrementally projected from content through sort, reversed, filter, visibleIndexes, start, and length.

reversed :boolean source

Whether to reverse the order of the sorted content.

selectAddedContent :boolean source

Whether to select new content automatically.

Off by default.

selection :Array|Set|SortedSet source

A subset of the content that are selected. The user may safely reassign this property and all iterations will react to the change. The selection may be null. The selection may be any collection that supports range change events like Array or SortedSet.

sortPath :string source

An FRB expression that determines how to sort the content, like "name" to sort by name. If the sortPath is null, the content is not sorted.

start :number source

The first index of a sliding window over the content, suitable for binding (indirectly) to the scroll offset of a large list. If start or length is null, all content is accepted.

visibleIndexes :?Array.<number> source

An array of indexes to pluck from the ordered and filtered content. The output will be an array of the corresponding content. If the visibleIndexes is null, all content is accepted.

Methods

add(value) → {boolean} source

Proxies adding content to the underlying collection, accounting for selectAddedContent.

Parameters:
Name Type Description
value
Returns: boolean

whether the value was added

addBeforeOwnPropertyChangeListener(name, handler) → {function} source

Adds a listener that will be notified before a property changes. See addOwnPropertyChangeListener for details.

Parameters:
Name Type Description
name string
handler object | function
Inherited From:
See:
Returns: function

cancel

addBeforePathChangeListener(path, handlerMethodName) source

Establishes an observer such that the handler will receive a notification when the value of an FRB expression is about to change. See addPathChangeListener for details.

Parameters:
Name Type Description
path string
object | function
handlerMethodName string
Inherited From:
See:

addContent() source

Creates content and adds it to the controller and its backing collection. Uses add and contentConstructor.

Returns:

the value constructed and added

addEach(values) source

Proxies adding each value into the underlying collection.

Parameters:
Name Type Description
values object

addOwnPropertyChangeListener(name, handler, beforeChange) → {function} source

Adds a change listener for the named property of this instance. The handler may be a function or an object with a handler method. When the property changes on this object, the handler will be notified on the stack.

The dispatcher will try to dispatch to only the most specific handler method available, from handle + PropertyName (bactrian camel case) + Change, to handlePropertyChange, or if the beforeChange flag is set, handle + PropertyName + WillChange then handlePropertyWillChange. The arguments to the handler are value, name, and this.

Parameters:
Name Type Description
name string

The name of the property to observe.

handler object | function

On which to dispatch change notifications.

beforeChange boolean

Whether to observer changes before they occur. To avoid the boolean trap, try to use addBeforeOwnPropertyChangeListener instead, unless beforeChange is truly variable.

Inherited From:
See:
Returns: function

cancel, useful for removing the change listener without having to retain and reconstruct all of the arguments.

addPathChangeListener(path, handler, handlerMethodName, beforeChange) source

Creates an observer for the value of an FRB expression. The observer will immediately dispatch a notification to the handler of the initial value of the expression, before returning.

If the expression's value is an array, this will be the final notification and all subsequent changes will be reflected by the content of the array. Use addRangeAtPathChangeListener if you want discrete notifications for changes to the content of an expression that evaluates to an array.

Use removePathChangeListener to cancel all involved change listeners.

Parameters:
Name Type Description
path string

an FRB expression.

handler object | function

an object with a handler method, or a function. The handler will be called with value, path, and this as arguments.

handlerMethodName string

the method name on the handler on which to dispatch change notifications, if the handler is not a function.

beforeChange boolean

instructs the path change listener to dispatch before the change has occurred. Avoid using this boolean trap by making use of the named method addBeforePathChangeListener. Using this flag remains desireable only if beforeChange is indeed variable.

Inherited From:

addRangeAtPathChangeListener(path, handler, methodName) → {function} source

Observes changes to the content of the value for an FRB expression. The handler will receive “ranged content change” messages. When a change listener is added, the handler will be immediately invoked with the initial content added at index 0 for the expression.

Parameters:
Name Type Argument Description
path string

an FRB expression that produces content changes

handler

a function that accepts plus, minus, and index arguments, or a handler object with a designated method by that signature. plus and minus are arrays of values that were added or removed. index is the offset at which the minus was removed, then the plus was added.

methodName string <nullable>

the name of the method on the handler object that should receive change messages.

Inherited From:
Returns: function

cancel function for removing the range at path change listener. Until removeRangeAtPathChangeListener is implemented, this is the only way to disable this kind of observer.

callDelegateMethod(name) source

This method calls the method named with the identifier prefix if it exists. Example: If the name parameter is "shouldDoSomething" and the caller's identifier is "bob", then this method will try and call "bobShouldDoSomething"

Parameters:
Name Type Description
name string
Inherited From:

cancelBinding(targetPath) source

Cancels a binding and removes its descriptor from the object's binding descriptor index. This will in turn cause any change listeners needed on far reaching objects for the binding to be canceled. A component should call this if the binding reaches into objects it does not itself own to ensure that they are available for garbage collection.

Parameters:
Name Type Description
targetPath string

The target path used to establish the binding.

Inherited From:

cancelBindings() source

Cancels all registered bindings on this object.

Inherited From:

clear() source

Proxies clearing the underlying content collection.

clearSelection() source

A managed interface for clearing the selection, accounting for avoidsEmptySelection. You can however directly manipulate the selection, but that will update the selection asynchronously because the controller cannot change the selection while handling a selection change event.

defineBinding(targetPath, descriptor) source

Establishes a binding between two FRB expressions. See the FRB documentation for information about FRB paths/expressions. There can only be one binding per target path on an object.

Parameters:
Name Type Description
targetPath string
descriptor object

A descriptor has at least an arrow property, "<-", "<->". The corresponding string is the sourcePath for the binding and the type of arrow determines whether the binding is one way (from source to target) or if data flows both directions. The descriptor may contain a converter or reverter object, or directly provide convert and revert functions. Converters and reverters have convert and revert methods. The convert function or method transforms data from the source to the target. The revert function or method transforms data from the target to the source and is necessary if there is a converter on a two-way binding. A reverter is the same as a converter, but the polarity is reversed. This is useful for reusing converters that were designed for data flowing the “wrong” way. The descriptor may also provide a trace flag for console debugging.

Inherited From:

defineBindings(descriptors, commonDescriptor) source

Establishes multiple bindings.

Parameters:
Name Type Argument Description
descriptors object

an object for which every property is a source path and every value is a binding descriptor as described by defineBinding.

commonDescriptor object <nullable>

a partial binding descriptor with properties intended to be shared by all of the established bindings.

Inherited From:
See:

delete(value) → {boolean} source

Proxies deleting content from the underlying collection.

Parameters:
Name Type Description
value
Returns: boolean

whether the value was found and deleted successfully

deleteEach(values) source

Proxies deleting each value out from the underlying collection.

Parameters:
Name Type Description
values object

deselect(value) source

A managed interface for removing values from the selection, accounting for avoidsEmptySelection. You can however directly manipulate the selection, but that will update the selection asynchronously because the controller cannot change the selection while handling a selection change event.

Parameters:
Name Type Description
value

dispatchBeforeOwnPropertyChange(name, value) source

Manually dispatches a notification that a property is about to change. See dispatchOwnPropertyChange.

Parameters:
Name Type Description
name string
value
Inherited From:
See:

dispatchOwnPropertyChange(name, value, beforeChange) source

Manually dispatches a property change notification on this object. This can be useful if the property is a getter or setter and its value changes as a side effect of some other operation, like cache invalidation. It is unnecessary to dispatch a change notification in the setter of a property if it modifies its own value, but if changing celicius has a side effect on fahrenheit, they can manually dispatch changes to the other. Be sure to dispatch both the change and before the change.

Parameters:
Name Type Description
name string
value
beforeChange boolean

Avoid the boolean trap and use dispatchBeforeOwnPropertyChange. You are not likely to encounter a case where beforeChange is a named variable.

Inherited From:

equals(anObject) → {boolean} source

Returns true if two objects are equal, otherwise returns false.

Parameters:
Name Type Description
anObject Object

The object to compare for equality.

Inherited From:
Returns: boolean

Returns true if the calling object and anObject are identical and their uuid properties are also equal. Otherwise, returns false.

getBinding(targetPath) → {object} source

Gets the binding descriptor for a target path.

Parameters:
Name Type Description
targetPath string
Inherited From:
See:
Returns: object

the descriptor for the binding. See defineBinding for information on the descriptor type.

getBindings() → {object} source

Gets the binding descriptors for all target paths.

Inherited From:
See:
Returns: object

an object that maps traget paths to binding descriptors. See defineBinding for information on the descriptor type.

getOwnPropertyChangeDescriptor(name) source

Produces the descriptor for a property change listener. The descriptor is an object that will contain two arrays, willChangeListeners and changeListeners. Each listener will be the handler given to establish the change listener on addOwnPropertyChangeListener or addBeforeOwnPropertyChangeListener.

Parameters:
Name Type Description
name string
Inherited From:
See:
Returns:

the property change descriptor for this name, created if necessary.

getPath(path) source

Evaluates an FRB expression from this object and returns the value. The evaluator does not establish any change listeners.

Parameters:
Name Type Description
path string

an FRB expression

Inherited From:
Returns:

the current value of the expression

getPathChangeDescriptor(path, handler, beforeChange) source

Gets the path change descriptor object for an observer established previously by addPathChangeListener or addBeforePathChangeListener.

Parameters:
Name Type Description
path string

an FRB expression

handler

a function that will receive a value change notification, or an object with a method that will receive the change notifications

beforeChange boolean
Inherited From:
Returns:

a path change descriptor. Such objects have path, handler, beforeChange, and cancel properties. The cancel method is for internal use only. It cancels the observer, but does not perform any book keeping on the index of path change descriptors.

getPathChangeDescriptors() source

Returns an internal index of all of the path change descriptors associated with this instance.

Inherited From:
See:
Returns:

an object that maps property names to an object with two Maps, changeListeners and willChangeListeners. Each of these maps handler objects to path change descriptors. See getPathChangeDescriptor for a description of that type.

has(value) → {boolean} source

Does the value exist in the content?

Parameters:
Name Type Description
value object

the value to test for

Returns: boolean

hasOwnPropertyChangeDescriptor(name) source

Determines whether a property has ever been observed. Removing all property change listeners does not destroy this record.

Parameters:
Name Type Description
name string
Inherited From:

initWithContent(content) source

Initializes a range controller with a backing collection.

Parameters:
Name Type Description
content

Any collection that produces range change events, like an Array or SortedSet.

Returns:

this

makePropertyObservable(name) source

An overridable method for ensuring that changes to the named property dispatch notifications. The default behavior is to wrap the property with a getter and setter.

Parameters:
Name Type Description
name string
Inherited From:

observePath(path, emit) → {function} source

Observes changes to the value of an FRB expression. The content of the emitted value may react to changes, particularly if it is an array.

Parameters:
Name Type Description
path string

an FRB expression

emit function

a function that receives new values in response to changes. The emitter may return a cancel function if it manages event listeners that must be collected when the value changes.

Inherited From:
Returns: function

a canceler function that will remove all involved change listeners, prevent new values from being observed, and prevent previously emitted values from reacting to any further changes.

pop() source

Proxies popping content from the underlying collection.

Returns:

the popped value

push() → {boolean} source

Proxies pushing content to the underlying collection, accounting for selectAddedContent.

Parameters:
Name Type Description
...values
Returns: boolean

whether the value was added

removeBeforeOwnPropertyChangeListener(name, handler) source

Removes a change listener established by addBeforeOwnPropertyChangeListener or addOwnPropertyChangeListener with the beforeChange flag. Call with the same arguments used to set up the observer.

Parameters:
Name Type Description
name string
handler object | function
Inherited From:
See:

removeBeforePathChangeListener(path, handlerMethodName, beforeChange) source

Removes a path change listener previously established by a call to addBeforePathChangeListener. The given arguments must match the original. See addPathChangeListener for descriptions of their meaning.

Parameters:
Name Type Description
path string
object | function
handlerMethodName string
beforeChange boolean
Inherited From:
See:

removeOwnPropertyChangeListener(name, handler, beforeChange) source

Cancels a change listener established with the same given parameters. For the meanings of the parameters, see addOwnPropertyChangeListener.

Parameters:
Name Type Description
name string
handler object | function
beforeChange boolean
Inherited From:
See:

removePathChangeListener(path, handlerMethodName, beforeChange) source

Removes a path change listener previously established by a call to addPathChangeListener. The given arguments must match the original. See addPathChangeListener for descriptions of their meaning.

Parameters:
Name Type Description
path string
object | function
handlerMethodName string
beforeChange boolean
Inherited From:
See:

select(value) source

A managed interface for adding values to the selection, accounting for multiSelect. You can however directly manipulate the selection, but that will update the selection asynchronously because the controller cannot change the selection while handling a selection change event.

Parameters:
Name Type Description
value

set:selection(a) source

Parameters:
Name Type Description
a Collection

collection of values to be set as the selection.

setPath(path, value) source

Assigns a value to the FRB expression from this object. Not all expressions can be assigned to. Property chains will work, but will silently fail if the target object does not exist.

Parameters:
Name Type Description
path string

an FRB expression designating the value to replace

value

the new value

Inherited From:

shift() source

Proxies shifting content from the underlying collection.

Returns:

the shifted value

splice() source

Proxies splicing values into the underlying collection. Accounts for * selectAddedContent.

Returns:

the resulting content

swap(index, minusLength, plus) → {Array} source

Proxies swapping values in the underlying collection. Accounts for * selectAddedContent

Parameters:
Name Type Description
index number

the position at which to remove values

minusLength number

the number of values to remove

plus Array

the values to add

Returns: Array

minus, the removed values from the content

unshift() → {boolean} source

Proxies unshifting content to the underlying collection, accounting for selectAddedContent.

Parameters:
Name Type Description
...values
Returns: boolean

whether the value was added

Generated from v0.14.14

Need help?

Can't find what you are looking for? Please contact us, we're more than happy to help answer your questions.