Stacks is a novel approach for building programmatic sequences of multimedia.
Using a combination of stacking, base sequences, and inner sequences, fully programmatic digital signage can be achieved and managed by multiple users for an unlimited number of screens.
When stacked, multiple display candidates are dynamically chosen by evaluating user defined conditions. Conditions can incorporate the date, time, geographic location, weather conditions, or any custom data added to the system.
You can simplify the administration of large numbers of sequences by creating shared base sequences. A base sequence enables defined users to modify sequences that are stacked above it. This means individual users or groups can be granted the ability to modify only a subset of items displayed on a screen.
A sequence item can refer to an inner sequence. Items from the inner sequence will be displayed and the outer sequence will resume when complete.
A sequence is presented as a horizontal row of items. Items display sequentially from left to right.
Stack items to define multiple display candidates. Items are stacked vertically. Only one display candidate will be displayed from a stack each time the sequence is displayed.
Each display candidate can have a condition defined. The first (top most) display candidate where the condition evaluates to true will be chosen for display.
In the example above, the item 1a has a condition that the date must be between 1st January 2020 7am and 3rd January 2020 9pm. Because it is not currently between this date range, the item is ignored and the item below is evaluated. The item below (1b) has no condition defined so it is chosen for display.
Many display candidates can be stacked with a variety of conditions to create dynamic sequences that vary based on time, geographic location, weather conditions or any custom data added to the system.
Note: The top most item with a valid condition in a stack is displayed and then the stack to the right is evaluated.
A sequence can use another sequence as a base. Items in the base sequence will be displayed if no valid items are stacked on top.
The base sequence can prevent the sequence above from using specific stacks. Typically the base sequence will be managed by another user who has delegated some (but not all) control to sequences above.
The example below shows how the base sequence can prevent using slot 2. This would ensure that an item in stack 2 of the base sequence will always be displayed.
Sequences can share a common base. A base sequence can also have its own base making complicated hierarchical control of the final sequence possible. Each sequence can be controlled by one or more users.
A base sequence can restrict the total number of items allowed in a sequence and restrict duration of items placed in specific stacks.
An item in a sequence can refer to another (inner) sequence. When the item is eligible for display, the inner sequence will be displayed.
If there is a duration configured for the outer item, the inner sequence may show only a subset of its items to fill the duration. The inner sequence will automatically progress to show remaining items when the outer sequence loops.
Inner sequences can be shared with many sequences, fully utilise the same stacking logic, and be managed by other users.
These basic building blocks act like LEGO to facilitate building complicated programmatic sequences managed by multiple users. A multi-level hierarchy of control can be achieved by stacking multiple sequences and using inner sequences which can refer to deeper inner sequences.
It is also possible to interrupt the regular flow and branch to other content by using the stacks event system.