Cartão de refeições combinadas

Os combos numerados de uma lousa de serviço rápido: foto, o que tem em cada combo, o preço com a economia, o passo de aumento e as calorias.

Cartão ao vivo

Este cartão é desenhado no seu navegador pelo mesmo código que os Players executam, com dados de exemplo.

Categoria: Alimentação e bebida. Etiquetas: Restaurantes e cafés, Lojas, Preços e tarifas.

Layouts

Este cartão em tela cheia preenche toda a tela em paisagem ou retrato e não é colocado como canto, chip ou faixa.

Layouts: cheio. Formas: paisagem, retrato.

Layouts, temas e publicação de cartões. Veja os cartões.

Dados e privacidade

Este cartão usa suas propriedades configuradas e dados ao vivo do cartão.

Propriedades

Para tema, fundo, destaque e posição, veja Propriedades comuns.

Defina as propriedades estáticas nos params do cartão ao criá-lo. O documento de dados dele contém apenas propriedades dinâmicas. Linhas aninhadas descrevem o conteúdo da propriedade pai.

Propriedades estáticas

NomeTipoPadrãoValores e limitesDescrição
titlestring"Combo meals"maxLength: 40
currencystring"$"maxLength: 3
decimalsnúmero, string"auto""auto", 0, 1, 2auto usa números inteiros quando todos os preços são inteiros.
perPageinteger0mínimo: 0; máximo: 8Combos em uma página. 0 define-se: quatro na horizontal em paisagem, uma coluna em retrato.
pageSecondsnumber10mínimo: 5; máximo: 120Quanto tempo uma página permanece quando as combinações não cabem em uma página.
footnotestring""maxLength: 120Uma linha ao longo do rodapé, por exemplo Preços incluem impostos.
backgroundColorstring, nulonullpadrão: "^#[0-9A-Fa-f]{6}([0-9A-Fa-f]{2})?$"Substitui o fundo e a placa do cartão por uma cor plana ordenada por CSS. #RRGGBBAA fornece opacidade. background none tem precedência.
textColorstring, nulonullpadrão: "^#[0-9A-Fa-f]{6}([0-9A-Fa-f]{2})?$"Substitui as cores do texto principal e secundário. As cores de destaque e status semântico mantêm seus papéis.

Propriedades dinâmicas

NomeTipoPadrãoValores e limitesDescrição
combosarray[{"name":"Smoky stack","items":["Double smoky burger","Large fries","Drink"],"price":10.99,"was":13.47,"upsize":{"label":"Large","add":1.2},"kcal":1240,"badge":"Popular"},{"name":"Crispy chicken","items":["Crispy chicken sandwich","Fries","Drink"],"price":9.49,"was":11.97,"upsize":{"label":"Large","add":1.2},"kcal":1080},{"name":"Garden bowl","items":["Grain bowl","Fruit cup","Drink"],"price":11.25,"was":13.5,"upsize":{"label":"Large","add":1.5},"kcal":760},{"name":"Little one","items":["Mini burger","Apple slices","Juice box"],"price":6.25,"was":7.75,"kcal":520}]maxItems: 24Os combos, na ordem do quadro.
combos[].numberstringmaxLength: 4O número no placar. Vazio conta 1, 2, 3.
combos[].namestringminLength: 1; maxLength: 120; Obrigatório
combos[].itemsarraymaxItems: 6O que está no combo, uma linha para cada item.
combos[].pricenúmero, nulomínimo: 0O preço do combo.
combos[].wasnúmero, nulomínimo: 0Os mesmos itens comprados um a um; a economia é calculada.
combos[].upsizeobjeto, nuloadditionalProperties: falseO passo de aumento, por exemplo Grande +1,20.
combos[].upsize.labelstringmaxLength: 24
combos[].upsize.addnúmero, nulomínimo: 0
combos[].kcalnúmero, nulomínimo: 0
combos[].imagestringmaxLength: 200Uma referência de mídia do projeto (media:<id>). Vazio exibe o bloco do tema com um ícone de comida.
combos[].badgestringmaxLength: 16Uma marca curta na foto, por exemplo, Popular.
combos[].soldOutbooleanfalse

Exemplo de tela

Salve as propriedades estáticas como params.json e crie o cartão. O resultado traz o id crd_ dele.

{
  "theme": "neomustard"
}
screenrig card create --type combo-meals --major 1 --file params.json

Adicione este item aos primitives de uma página da playlist, com esse id no lugar do id do exemplo. Publique a playlist e atribua uma tela.

{
  "id": "combo-meals",
  "primitive": "card",
  "card": "crd_01EXAMPLECARD000000000",
  "layout": "full",
  "content_fit": "fill"
}

Escrever dados ao vivo

Escreva o documento no cartão depois de criá-lo e depois substitua-o para atualizar a tela sem republicar. O cartão verifica cada gravação contra suas propriedades dinâmicas e recusa um documento que ele rejeita. Use o mesmo projeto da playlist.

Salve o documento como card-data.json. O CLI lê o documento em si, sem invólucro:

{
  "combos": [
    {
      "name": "Smoky stack",
      "items": [
        "Double smoky burger",
        "Large fries",
        "Drink"
      ],
      "price": 10.99,
      "was": 13.47,
      "upsize": {
        "label": "Large",
        "add": 1.2
      },
      "kcal": 1240,
      "badge": "Popular"
    },
    {
      "name": "Crispy chicken",
      "items": [
        "Crispy chicken sandwich",
        "Fries",
        "Drink"
      ],
      "price": 9.49,
      "was": 11.97,
      "upsize": {
        "label": "Large",
        "add": 1.2
      },
      "kcal": 1080
    },
    {
      "name": "Garden bowl",
      "items": [
        "Grain bowl",
        "Fruit cup",
        "Drink"
      ],
      "price": 11.25,
      "was": 13.5,
      "upsize": {
        "label": "Large",
        "add": 1.5
      },
      "kcal": 760
    },
    {
      "name": "Little one",
      "items": [
        "Mini burger",
        "Apple slices",
        "Juice box"
      ],
      "price": 6.25,
      "was": 7.75,
      "kcal": 520
    }
  ]
}
screenrig card data put crd_01EXAMPLECARD000000000 --file card-data.json

Ou chame a API diretamente. A API envolve o mesmo documento em um campo document. Um token de agente já nomeia seu projeto, então nenhum cabeçalho de projeto é enviado; se você enviar ScreenRig-Project, ele deve corresponder ao projeto do token. Forneça sua autorização de API pelo ambiente; veja Autenticação da API.

curl --request PUT "https://api.screenrig.ai/api/cards/crd_01EXAMPLECARD000000000/data" \
  --header "Authorization: Bearer $SCREENRIG_TOKEN" \
  --header "Content-Type: application/json" \
  --data '{"document":{"combos":[{"name":"Smoky stack","items":["Double smoky burger","Large fries","Drink"],"price":10.99,"was":13.47,"upsize":{"label":"Large","add":1.2},"kcal":1240,"badge":"Popular"},{"name":"Crispy chicken","items":["Crispy chicken sandwich","Fries","Drink"],"price":9.49,"was":11.97,"upsize":{"label":"Large","add":1.2},"kcal":1080},{"name":"Garden bowl","items":["Grain bowl","Fruit cup","Drink"],"price":11.25,"was":13.5,"upsize":{"label":"Large","add":1.5},"kcal":760},{"name":"Little one","items":["Mini burger","Apple slices","Juice box"],"price":6.25,"was":7.75,"kcal":520}]}}'