Cartão Shooting Match

Classificação ao vivo para uma competição de tiro ao alvo com anéis em rimfire, rifle de ar e pequeno calibre. As divisões são classificadas por pontuação e contagem de X ao lado da ficha do cartão em destaque, com cada touro desenhado mostrando os acertos onde caíram, totais por linha e total do cartão. Cartões pontuados escritos pelo agente do anotador são destacados e celebrados quando recentes.

Folhas de alvo pontuadas fornecidas aparecem ao lado das classificações da divisão, contagens X, percentuais e posições de acerto registradas no cartão em destaque. As classificações compartilham a altura da tela: alguns cartões ficam grandes, muitas divisões paginam em grupos que seguem o cartão em destaque, e cada divisão mantém suas linhas superiores. Folhas com mais de 25 touros desenham todos os touros em uma grade, e no Primetime paginam por blocos de até 25 touros que mantêm cada acerto registrado, pontuação e total da linha. Durante o Primetime, o cabeçalho e as classificações animam, pontuações normais aparecem em ciano, chaves marcam cartões novos, e confetes contidos celebram folhas perfeitas completas. Movimento reduzido apresenta uma imagem composta.

Cartão ao vivo

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

Categoria: Esportes. Tags: Placar, Classificações e rankings, Esportes individuais.

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"Match standings"maxLength: 60O rótulo acima do nome da partida; o próprio título quando os dados não nomeiam uma partida.
subtitlestring""maxLength: 120Uma linha sob o título, antes da data da partida e da contagem de atiradores.
targetobjectadditionalProperties: falseA folha alvo em que cada cartão é lançado.
target.bullsinteger25mínimo: 1; máximo: 100Registre touros em uma folha.
target.rowsinteger5mínimo: 1; máximo: 20Linhas onde os touros ficam sentados, lidas da esquerda para a direita, de cima para baixo.
target.ringsarray[10,9,8,7,6,5]minItems: 1; maxItems: 12Valores dos anéis de pontuação do anel interno para o externo. O primeiro é a maior pontuação do centro.
target.xRingbooleantrueUm anel X dentro do anel interno; X conta para desempatar.
target.radiiarray[]maxItems: 12Raios dos anéis de dentro para fora, um por valor do anel, em qualquer unidade (o cartão escala o anel externo para 1). Espaços vazios distribuem os anéis uniformemente.
target.xRadiusnumber0mínimo: 0O raio do anel X na unidade de raios, ou como fração do anel externo quando raios está vazio. 0 é metade do anel interno.
target.blackinteger4mínimo: 0; máximo: 12Quantos anéis, do anel interno para fora, o alvo preto cobre.
target.shotSizenumber0.22mínimo: 0; máximo: 1O diâmetro de um furo de tiro como uma fração do raio do anel externo de pontuação.
showPercentbooleantrueMostrar a pontuação de cada cartão como uma porcentagem do máximo da folha.
rankingstring"best""best", "every"best classifica cada atirador uma vez por divisão, em sua melhor ficha; every classifica todas as fichas.
rotateSecondsinteger12mínimo: 0; máximo: 600Segundos que cada cartão classificado é exibido na rotação do relógio de parede. 0 mantém o cartão mais recente.
freshMinutesinteger3mínimo: 0; máximo: 60Um cartão enviado recentemente é novo: destacado antes da rotação e marcado como Acabou de chegar. 0 desativa.
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
matchobjectadditionalProperties: falseA partida.
match.namestring""maxLength: 60
match.datestring""maxLength: 10YYYY-MM-DD.
divisionsarray[]maxItems: 8Divisões na ordem de exibição. Uma divisão que uma entrada nomeia, mas que esta lista não tem, é adicionada depois delas.
divisions[].idstringminLength: 1; maxLength: 40; Obrigatório
divisions[].namestringmaxLength: 40; Obrigatório
entriesarray[]maxItems: 200Cartões pontuados, um por foto da folha. As pontuações são definitivas: o cartão totaliza e classifica, e marca cada acerto onde caiu, mas nunca recalcula a pontuação a partir dos acertos.
entries[].idstringminLength: 1; maxLength: 60; ObrigatórioEstável e único: o agente reescreve o mesmo id quando corrige um cartão.
entries[].shooterstringminLength: 1; maxLength: 40; ObrigatórioO nome de exibição do atirador; cartões com o mesmo nome (ignorando maiúsculas) são um atirador.
entries[].divisionstringmaxLength: 40Um divisions[].id.
entries[].labelstringmaxLength: 80O que este cartão é, por exemplo 25 m · Folha 2.
entries[].submittedAtstringmaxLength: 40Instante ISO 8601 em que o cartão foi pontuado. Determina a atualidade e desempata (quem for mais antigo vence).
entries[].bullsarraymaxItems: 100; ObrigatórioUm por registro, touro na ordem da planilha, da esquerda para a direita por linha. Touro acima de target.bulls é ignorado; os ausentes são considerados não pontuados.
entries[].bulls[].scorenúmero, nulomínimo: 0; máximo: 100; ObrigatórioA pontuação do touro; null significa que ainda não foi pontuado.
entries[].bulls[].xbooleanO tiro está no anel X (sua pontuação é o valor do anel interno).
entries[].bulls[].hitsarraymaxItems: 10Centros dos disparos em unidades do raio do anel externo do alvo: 0,0 é o centro, +x à direita, +y para cima.
entries[].bulls[].hits[].dxnumbermínimo: -2; máximo: 2; Obrigatório
entries[].bulls[].hits[].dynumbermínimo: -2; máximo: 2; Obrigatório
entries[].photostringmaxLength: 512Uma URL de mídia resolvida pelo host da foto do cartão.
featuredstring""maxLength: 60Um ID de entrada para manter em destaque. Vazio exibe um cartão novo, caso contrário gira.

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 shooting-match --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": "shooting-match",
  "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:

{
  "match": {},
  "divisions": [],
  "entries": [],
  "featured": ""
}
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":{"match":{},"divisions":[],"entries":[],"featured":""}}'