Data Flow Interactions
Overview of the Data Flow Interactions Feature


${fullname}
${source_image_url}

${source_name}

| onClick | onDonorClick | onDonorShift | onListEnd | onMouseDown | onMouseUp | onHide | onShow | |
| App | ||||||||
| Clock | ||||||||
| Donor List | X | X | X | |||||
| Image | X | X | X | |||||
| Pager | ||||||||
| Playlist | X | |||||||
| Pop Up | X | X | ||||||
| QR Code | ||||||||
| RSS Feed | ||||||||
| Search | X | |||||||
| Text | X | X | X | |||||
| Thermometer | ||||||||
| Weather |
For example, if you selected an External Widget that is an Image widget with an onClick event then when that image is clicked it will do the action defined in the Associated Internal Input.
onClick
When the external widget is clicked the DFI will trigger.
onDonorClick
When a entry is clicked (i.e. a name in a donor list) it will trigger the DFI.
onDonorShift
When a single list completes its rotation through all names it will trigger the DFI. For instance, if each list has a different Image or Text you want to apply (to the image or text widget) based on what's showing then you would use this widget.
onListEnd
When all lists in the widget have completed it will trigger this DFI.
onMouseDown
When the mouse is pressed down this DFI will trigger. For touchscreens, this is when a finger presses down.
onMouseUp
When the mouse's button is released this DFI will trigger. For touchscreens, this is when a finger comes off the screen.
onHide
When the widget hides this DFI will trigger.
onShow
When the widget shows it will trigger the DFI.
Local API Triggers
Aside from in-Canvas triggers, the Device API can send variables to the Canvas so that custom programs (custom modules, control system interfaces, etc) can control the in-screen content. This gives incredible flexibility to integrate with third party hardware and software.

For example, if you had a control system interface with two buttons, one said "Hi" and the other says "World", you could go to a text widget, add an external widget of Local API to the DFI, look for "button1" and another that has the output of "button2" (respectively). Then the text widget would have ${local_api} in its text to know that it needs to wait for a value from the local API.
When the "Hi" button is pressed it sends "button1" to the Device API with a value of "Hi", which triggers the DFI and exposes the variables to the text widget's "${local_api} value, making the text say "Hi". The same could be done with the "world" button, sending "button2" and an argument of "World".
Select Associated Internal Input
This tells the system what you want to happen to the selected widget when the chosen external widget does the "Output" chosen.
Available Input Actions
Not all widgets have the same input actions available.
| Widget Name |
Input 1 |
Input 2 |
Input 3 |
Input 4 |
Input 5 |
| App | |||||
| Clock | |||||
| Donor List | shuffleToNextList | shuffleToPreviousList | setAnchor | setWord | |
| Image | apply_exposed_variables | ||||
| Pager | |||||
| Playlist | forcePreviousItem | forceNextItem | |||
| Pop Up | apply_exposed_variables | toggleShow | show | hide | changePage |
| QR Code | |||||
| RSS Feed | apply_exposed_variables | ||||
| Search | addCharacter | backspace | clear | startSearch | |
| Text | apply_exposed_variables | scrollUp | scrollDown | scrollStop | |
| Thermometer | updateProgress | ||||
| Weather |
shuffleToNextList
shuffleToPreviousList
setAnchor

setWord
apply_exposed_variables

hide
changePage
apply_exposed_variables

${local_api | <BACKUP URL IN CASE NOTHING FROM THE LOCAL API}${local_api | http://rss.cnn.com/rss/money_latest.rss} addCharacter
backspace
clear
startSearch
apply_exposed_variables
${local_api} to pull in the text from the local API, for example. Similarly, if you want a backup text if there is no value yet then you can use a pipe to indicate the alternative option, in the format of ${local_api | This is the backup text}.scrollUp
Note: that if the text is not overflowing then this feature will not doing anything.
Note: To stop it scrolling you'll need to use the scrollStop DFI. This is tied to an image or text widget's "onMouseUp", typically.
Note: The most common widget DFI to trigger this is on the image or text widget's onMouseDown. Tied with the onMouseUp DFI to stop scrolling this provides an optimal experience for continuous scrolling.
Note: Use the "transition" feed to trigger a fixed-rate of scrolling per button click. i.e., onClick of an image set two DFIs - one for scrollUp w/ 0 transition & another for scrollStop w/ 500ms transition for it to scroll down for half a second.
scrollDown
Note: that if the text is not overflowing then this feature will not doing anything.
Note: To stop it scrolling you'll need to use the scrollStop DFI. This is tied to an image or text widget's "onMouseUp", typically.
Note: Use the "transition" feed to trigger a fixed-rate of scrolling per button click. i.e., onClick of an image set two DFIs - one for scrollDown w/ 0 transition & another for scrollStop w/ 500ms transition for it to scroll down for half a second.
scrollStop
updateProgress
When a DFI is sent through the LocalAPI its value can update the progress %. This is most useful with custom modules created to track and summarize the current total from a third party system.
