« return to the patterns overview
Flag Patterns
LaxarJS widgets use flags to communicate boolean application state (true/false), usually to control parts of the user interface. For example, a flag might be used by an activity to indicate that some resource is currently in a dirty state, or that a popup layer is currently open. Consumers of flags respond to the state changes: a "save" button should be active while a resource is in the dirty state, and an animation on the main page should be paused while a popup is open.
As with resources and actions, flags are defined by the page configuration.
The didChangeFlag Event
Widgets that publish boolean state may do so by publishing a didChangeFlag
event.
To avoid race conditions, only one widget should be configured to publish state for a given flag on any single page.
Consumers of the didChangeFlag
event react simply by adapting to the modified state.
Usually, flag consumers take an arbitrary number of flag topics (configurable as an array in their features).
Consumers should consider the overall flag state to be true if any of their subscribed flags is true.
If no state as been received yet for a single flag, consumers should consider it to be false.
Event name | Payload Attribute | Type | Description |
---|---|---|---|
didChangeFlag.{flag}.{state} |
published by any widget to communicate a boolean state | ||
flag |
string | the topic through which flag consumer and producers are connected (used in the payload as well as in the event name) | |
state |
boolean | the new state for the flag |
Because the flag state
is encoded in the event name as "true"
or "false"
, subscribers can use pattern matching to create two different subscriptions.