Federated wiki encourages client-side cooperation between plugins residing on pages from various sources. We've adopted a mechanism of automatic, placement sensitive, binding that we call "magnetic".
We've implemented variations on magnetic binding. All favor finding inputs above and to the left. Outputs then would be available down and to the right.
We've shown that plugins can be evaluated in a variety of contexts using these interfaces. See About Rollup Plugin.
Data Plugin
All of the data within a Data plugin is sourced into downstream calculations.
The Method plugin, by convention, retrieves only the first row of data which assumes is bound to column names.
Aside: It would make more sense to source a column average rather than the value in the first row since it is the column averages that are displayed when scrubbing.
Method Plugin
A Method can source, sink or transform data.
As a source, the method would specify or compute a value to be bound to a name.
As a sink, the method would use a name as a value without first specifying or computing it.
As a transformer, the method would produce a new value by the same name as a value that it has consumed. An asterisk indicates when transformation has occurred.
# we can draw an analogy with computer programs: # here statements source, sink and transform value = 42 print(value) value = value * 2
Prior values of a name are not easily retrieved once a transformation has taken place. One could bind a value to another name before transforming the value.
42 Value SUM Old Value 2 Times PRODUCT Value
A transformation can be repeatedly applied by, say, retrieving multiple copies of a page that performs the transformation.
A transformation cannot be evaluated in in a feedback loop unless that calculation takes place under the supervision of some other plugin.