Vovó Aide

action.json et pad.json

Chaque clé des deux fichiers que Vovó lit dans un dossier ou un zip, générée à partir du code de Vovó, donc toujours conforme à cette version. Vovó vérifie chaque fichier à son arrivée et le refuse avec une phrase qui dit ce qui ne va pas ; une clé qu'elle ne connaît pas est ignorée sans un mot, et un éditeur qui lit le schéma la souligne.

Une clé est faite de lettres minuscules, de chiffres et de _, et un nom peut aussi avoir -, chacun de 32 caractères au plus.

Pour qu'un éditeur complète les clés et souligne les erreurs, nommez le schéma en tête du fichier, comme le font les exemples. vovo dev écrit action.schema.json à côté des parties d'une action ; le code source de Vovó contient les deux dans son dossier api.

action.json

Le manifeste d'une action : son nom, ce qu'elle écoute, ce qu'elle demande et ce qu'elle offre à la personne qui mène le live. Il se trouve à côté de index.html, style.css, script.js et files/, dans un paquet ou un dossier.

{
    "$schema": "./action.schema.json",
    "name": "Raffle",
    "id": "example.raffle",
    "version": "1.2.0",
    "api": 1,
    "author": "A maker",
    "site": "https://example.com/raffle",
    "description": "!join in chat joins the wheel; the panel draws the winner.",
    "license": "MIT",
    "triggers": ["chat", "timer"],
    "bindings": [
        { "event": "chat", "filter": [{ "field": "text", "op": "starts", "value": "!join" }] },
        { "event": "timer", "filter": [{ "field": "every", "op": "is", "value": 300 }] }
    ],
    "permissions": ["chat.send"],
    "controls": [
        { "key": "open", "label": "Entries open", "kind": "toggle" },
        { "key": "prize", "label": "Prize", "kind": "text" }
    ],
    "settings": [
        { "key": "color", "label": "Wheel colour", "kind": "color", "default": "#840926" },
        { "key": "size", "label": "Size", "kind": "number", "min": 200, "max": 800, "step": 10, "unit": "px", "default": 420 },
        { "key": "side", "label": "Side", "kind": "choice", "options": ["Left", "Right"], "default": "Right" }
    ],
    "panel": [
        { "kind": "control", "key": "open" },
        { "kind": "control", "key": "prize" },
        { "kind": "form", "name": "add", "label": "Put someone in", "button": "Put", "fields": [{ "key": "who", "label": "Name" }] },
        { "kind": "button", "name": "draw", "label": "Draw", "confirm": true },
        { "kind": "list", "key": "names", "label": "In the wheel", "empty": "Nobody yet", "buttons": [{ "name": "out", "label": "Take out", "confirm": true }] }
    ]
}

Conditions

Chaque déclencheur à nouveau, avec les conditions qui doivent toutes être remplies pour qu'il active l'action, tel que l'éditeur les enregistre. Un pour chaque nom de triggers, dans n'importe quel ordre : s'ils ne correspondent pas un à un, toutes les conditions sont laissées de côté sans un mot et chaque déclencheur se déclenche sur tout.

Une condition

L'un des champs de l'événement comparé à une valeur. Les textes sont comparés sans tenir compte de la casse ; un nombre écrit comme texte est lu comme un nombre.

Contrôles

Ce que le pad change pendant que l'action tourne : chacun gardé dans vovo.state sous sa clé et signalé à l'action par l'événement control, qu'elle écoute sans le lister.

Réglages

Ce que la personne qui utilise l'action peut changer sans son code, dans Personnaliser : lu comme vovo.settings.<key>, comme --vovo-<key> dans son CSS et, pour activé ou désactivé et un choix, comme data-vovo-<key> sur son document. Ce qui est choisi reste avec l'action, et un paquet n'emporte que les valeurs par défaut. Huit d'entre eux au plus sont des textes.

Réglages: color

Une couleur ; le bordeaux de Vovó, #840926, sauf si l'action en dit une autre.

Réglages: number

Un nombre d'un minimum à un maximum, par pas ; le minimum sauf si l'action en dit un autre.

Réglages: toggle

Activé ou désactivé ; désactivé sauf si l'action dit autre chose.

Réglages: choice

L'une de ses options ; la première sauf si l'action en dit une autre.

Réglages: text

Une ligne de texte ; vide sauf si l'action en dit une autre.

Réglages: file

Une image, un son ou une vidéo que choisit la personne qui l'utilise, de 50 Mo au plus ; tel que l'action arrive, l'un de ses propres fichiers, par son chemin, ou aucun.

Réglages: font

L'une des polices de l'ordinateur, par sa famille ; Segoe UI sauf si l'action en dit une autre.

Réglages: camera

L'une des caméras de l'ordinateur, que choisit dans Personnaliser qui utilise l'action, montrée là où l'action la place (vovo.camera.place, avec l'autorisation camera.show) ; quatre au maximum. Elle vient sans caméra, elle n'a donc pas de valeur par défaut.

Panneau

Ce que l'action montre à la personne qui mène le live dans Panneaux, dans la barre latérale : des pièces dans l'ordre, chacune désignée par son kind, dessinées par Vovó. Ce qui y est fait parvient à l'action par l'événement panel, qu'elle écoute sans le lister. Une pièce panel commence un autre panneau, avec les pièces qui suivent jusqu'au prochain, et les pièces avant le premier apparaissent sur chacun ; un tab découpe un panneau en sections de la même façon. Les noms des boutons, des formulaires et des boutons d'une liste sont uniques dans l'action. Une action déclare 24 panneaux au plus, chacun avec 40 pièces et 12 onglets au plus.

Panneau: panel

Un autre panneau commence ici, avec sa propre entrée dans Panneaux.

Panneau: tab

Une section du panneau : les pièces qui suivent, jusqu'au prochain onglet.

Panneau: heading

Un titre au-dessus des pièces qui suivent, qui partagent une carte.

Panneau: note

Une ligne qui dit quelque chose.

Panneau: control

L'un des contrôles de l'action, manié ici comme sur le pad.

Panneau: button

Un bouton.

Panneau: form

Quelques champs et un bouton : ce qui est saisi part avec la pression, dans les values de l'événement. Un formulaire d'un seul champ se remplit dans le panneau même.

Champs d'un formulaire

Chacun une ligne saisie dans le panneau, envoyée avec le formulaire sous sa clé.

Panneau: list

Une liste lue dans l'état de l'action, une ligne par élément, qui peuvent être des milliers ; une liste de plus de huit lignes a sa propre recherche.

Boutons d'une liste

Des boutons sur chaque ligne de la liste.

pad.json

Un paquet de boutons pour le pad : un zip ou un dossier de sons et de vidéos, avec pad.json à la racine indiquant les groupes et leurs boutons ; sans lui, chaque dossier est un groupe et chaque son ou vidéo un bouton au nom de son fichier. Importé de nouveau, il met à jour ce qu'il nomme et laisse le reste tel quel.

{
    "$schema": "./pad.schema.json",
    "groups": [
        {
            "name": "Sounds",
            "color": "#2F6FDB",
            "buttons": [
                { "label": "Applause", "icon": "👏", "sound": "sounds/applause.mp3", "favorite": true, "hotkey": "F13" },
                { "label": "Drum roll", "sound": "sounds/drums.ogg", "volume": 130 },
                { "label": "Rain", "video": "videos/rain.mp4", "key": "luma", "loop": true }
            ]
        },
        {
            "name": "Live",
            "buttons": [
                { "label": "Raffle", "action": "Raffle" },
                { "label": "Entries", "action": "Raffle", "control": "open" },
                { "label": "Starting", "scene": "Starting soon" },
                { "label": "Camera", "scene": "Game", "source": "Camera" },
                { "label": "Blur", "source": "Camera", "filter": "Blur" },
                { "label": "One minute", "team": "One minute, then I'm back." }
            ]
        }
    ]
}

Groupes

Un groupe du pad et ses boutons, dans l'ordre.

Boutons

Un bouton et ce qu'il fait : Vovó lit le premier de ceux-ci qu'elle trouve, dans cet ordre : sound ; video ; action avec control ; action ; source avec filter, ou scene avec source ; scene. Un paquet apporte 2 000 boutons au plus.