Nova · Shells
Messages
Actions on different canvases do not reach into each other. One says something on a channel with emit; any action with a message trigger for that channel hears it.
{
canvases: [
{ id: 'messages.till', initial: 'messages.sell' },
{ id: 'messages.board', initial: 'messages.count' },
],
actions: {
messages.sell: {
id: 'messages.sell',
layout: {
component: 'Button',
ref: 'sell',
children: 'Sell a seat',
},
triggers: [
{
event: 'ui:click',
ref: 'sell',
do: [{ emit: { channel: 'messages.sold', payload: 1 } }],
},
],
},
messages.count: {
id: 'messages.count',
data: { sold: 0 },
layout: {
component: 'Text',
children: 'Sold tonight: {{$.sold}}',
},
triggers: [
{ message: 'messages.sold', do: [{ increment: 'sold' }] },
],
},
},
}Sold tonight: 0
press sell press sell
{
messages.till: ['messages.sell'],
messages.board: ['messages.count'],
}Sell a seat Sold tonight: 2
Left: the action as the package ships it. Right: the same action running in this page, rendered with this site’s components. Below: the action run as the example specifies, on the installed package.