Skip to content

presentation ​

Tipo
Referência
Para
Desenvolvedor, Analista

Uma presentation é uma Apresentação: uma sequência de Dashboards e Decks que roda num telão, em kiosk, publicada num link público /p/<código>. O arquivo fica em presentations/<slug>--<id>.yaml. Apresentações pela tela estão em Apresentações.

bash
lumo new presentation --name "Telão da loja"

Campos ​

  • fileName
    string · opcional · valores: regex ^[a-z0-9-]+--\d+\.yaml$
  • header
    object · obrigatório
  • header.id
    integer · obrigatório · valores: ≥ 1
  • header.kind
    string · obrigatório · valores: presentation (fixo)
  • header.lumo
    string · obrigatório · valores: v2 (fixo)
  • header.tenantId
    integer · obrigatório · valores: ≥ 1
  • header.appId
    integer · opcional · valores: ≥ 1
  • header.dashboardId
    integer · opcional · valores: ≥ 1
  • body
    object · obrigatório
  • body.criado_em
    string ou null · opcional · valores: regex ^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?Z$
    Somente leitura: o servidor preenche.
  • body.criado_por
    string ou integer ou null · opcional
    Somente leitura: o servidor preenche.
  • body.publicado_em
    string ou null · opcional · valores: regex ^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?Z$
    Somente leitura: o servidor preenche.
  • body.publicado_por
    string ou integer ou null · opcional
    Somente leitura: o servidor preenche.
  • body.nome
    string · obrigatório · valores: não vazio
  • body.descricao
    string ou null · opcional
  • body.dark_mode
    boolean · opcional
  • body.mode
    string · opcional · valores: automatic, manual
  • body.base_width
    integer · opcional · valores: ≥ 1
  • body.items
    array de object · obrigatório
  • body.items[].type
    string · obrigatório · valores: dashboard, deck
  • body.items[].dashboardId
    integer ou null · obrigatório: sim, se type: dashboard · valores: ≥ 1
  • body.items[].deckId
    integer ou null · obrigatório: sim, se type: deck · valores: ≥ 1
  • body.items[].order
    integer · obrigatório · valores: ≥ 0
  • body.items[].duration
    integer · obrigatório · valores: ≥ 0
  • body.items[].title
    string ou null · opcional
  • body.items[].filters
    qualquer valor · opcional

Exemplo ​

Uma Apresentação que alterna um Dashboard e um Deck.

yaml
# presentations/telao-loja--8131.yaml
# yaml-language-server: $schema=https://docs.horusbi.com.br/schemas/v2/presentation.schema.json
id: 8131
kind: presentation
lumo: v2
tenantId: 1200
---
nome: Telão da loja
dark_mode: true
mode: automatic                  # automatic avança sozinho; manual espera navegação
base_width: 1920                 # largura da tela de destino, em pixels
items:
  - type: dashboard
    dashboardId: 9101            # obrigatório em type: dashboard
    order: 0
    duration: 15                 # segundos na tela, para o Dashboard inteiro
    title: Vendas
  - type: deck
    deckId: 8120                 # obrigatório em type: deck
    order: 1
    duration: 20                 # segundos POR SLIDE do Deck

Publicar e conferir ​

bash
lumo push presentation:8131
lumo presentation publish presentation:8131   # imprime o link público
lumo presentation check presentation:8131     # o link responde?
lumo presentation unpublish presentation:8131

O check só lê o link e sai com código diferente de 0 se ele não responder. Por isso serve de portão em CI com um usuário sem permissão de publicar. lumo presentation open abre o editor, que é outro endereço.

Limites ​

  • O arquivo tem dois documentos YAML separados por ---. Um arquivo com header: e body: aninhados é recusado com o erro missing body document.
  • Item type: dashboard exige dashboardId; item type: deck exige deckId. O lint recusa o item sem o campo, ou com ele nulo.
  • duration está sempre em segundos, mas mede coisas diferentes: num Dashboard é o tempo do item inteiro; num Deck é o tempo de cada slide. Um Deck de 4 slides com duration: 20 fica 80 s na tela. Com mode: manual, duration é ignorado.
  • A ordem de exibição vem de order, não da posição na lista.
  • publicado e url são do servidor e não se mudam por push: use publish e unpublish.
  • Para um link público de um Dashboard só, crie uma Apresentação com um item. Para um Deck só, lumo deck publish basta.