Les feuilles de cibles marquées fournies apparaissent aux côtés des classements de division, comptes X, pourcentages et positions de tir enregistrées de la carte mise en vedette. Les classements partagent la hauteur de l’écran : quelques cartes sont grandes, de nombreuses divisions paginent en groupes qui suivent la carte mise en vedette, et chaque division conserve ses premières rangées. Les feuilles au-delà de 25 taureaux dessinent chaque taureau sur une grille, et en Primetime paginent à travers des tuiles de jusqu’à 25 taureaux qui conservent chaque tir enregistré, score et total de rangée. Pendant Primetime, le titre et les classements s’animent, les scores normaux apparaissent en cyan, les crochets marquent les cartes fraîches, et des confettis discrets célèbrent les feuilles parfaites complètes. Le mouvement réduit présente une image fixe composée.
Carte en direct
Catégorie : Sports. Étiquettes : Tableaux de scores, Classements et positions, Sports individuels.
Mises en page
Cette carte plein écran occupe tout l’écran en mode paysage ou portrait et n’est pas placée en coin, puce ou bande.
Mises en page : pleine. Formes : paysage, portrait.
Mises en page, thèmes et publication des cartes. Parcourir les cartes.
Données et confidentialité
Cette carte utilise ses propriétés configurées et les données de carte en direct.
Propriétés
Pour le thème, l’arrière-plan, l’accent et la position, voir Propriétés communes.
Définissez les propriétés statiques dans les params de la carte lorsque vous la créez. Son document de données ne contient que des propriétés dynamiques. Les lignes imbriquées décrivent le contenu de leur propriété parente.
Propriétés statiques
| Nom | Type | Par défaut | Valeurs et limites | Description |
|---|---|---|---|---|
title | string | "Match standings" | maxLength : 60 | L’étiquette au-dessus du nom du match ; le titre lui-même quand les données ne nomment aucun match. |
subtitle | string | "" | maxLength : 120 | Une ligne sous le titre, avant la date du match et le nombre de tireurs. |
target | object | additionalProperties : false | La feuille cible sur laquelle chaque carte est tirée. | |
target.bulls | integer | 25 | minimum : 1 ; maximum : 100 | Consigner les taureaux sur une seule feuille. |
target.rows | integer | 5 | minimum : 1 ; maximum : 20 | Lignes où les taureaux sont assis, lecture de gauche à droite, de haut en bas. |
target.rings | array | [10,9,8,7,6,5] | minItems : 1 ; maxItems : 12 | Valeurs des anneaux de score de l’anneau intérieur vers l’extérieur. Le premier est le score le plus élevé du taureau. |
target.xRing | boolean | true | Un anneau X à l’intérieur de l’anneau intérieur ; X compte pour départager. | |
target.radii | array | [] | maxItems : 12 | Rayons des anneaux à partir de l’anneau intérieur vers l’extérieur, un par valeur d’anneau, dans n’importe quelle unité (la carte ajuste l’anneau extérieur à 1). Les espaces vides répartissent les anneaux de façon égale. |
target.xRadius | number | 0 | minimum : 0 | Le rayon de l’anneau X en unité de rayons, ou en fraction de l’anneau extérieur lorsque rayons est vide. 0 correspond à la moitié de l’anneau intérieur. |
target.black | integer | 4 | minimum : 0 ; maximum : 12 | Combien d’anneaux, de l’anneau intérieur vers l’extérieur, la cible noire couvre. |
target.shotSize | number | 0.22 | minimum : 0 ; maximum : 1 | Le diamètre d’un trou de tir en fraction du rayon de l’anneau de pointage extérieur. |
showPercent | boolean | true | Afficher le score de chaque carte en pourcentage du maximum de la feuille. | |
ranking | string | "best" | "best", "every" | best classe chaque tireur une fois par division, sur sa meilleure carte ; every classe chaque carte. |
rotateSeconds | integer | 12 | minimum : 0 ; maximum : 600 | Secondes pendant lesquelles chaque carte classée est mise en avant dans la rotation de l’horloge murale. 0 conserve la dernière carte mise en avant. |
freshMinutes | integer | 3 | minimum : 0 ; maximum : 60 | Une carte soumise récemment est fraîche : mise en avant avant la rotation et marquée Juste arrivée. 0 désactive cette fonction. |
backgroundColor | chaîne, nul | null | motif : "^#[0-9A-Fa-f]{6}([0-9A-Fa-f]{2})?$" | Remplace le fond et la plaque de la carte par une couleur plate ordonnée en CSS. #RRGGBBAA fournit l’opacité. background none a la priorité. |
textColor | chaîne, nul | null | motif : "^#[0-9A-Fa-f]{6}([0-9A-Fa-f]{2})?$" | Remplace les couleurs du texte principal et secondaire. Les couleurs d’accentuation et de statut sémantique conservent leur rôle. |
Propriétés dynamiques
| Nom | Type | Par défaut | Valeurs et limites | Description |
|---|---|---|---|---|
match | object | additionalProperties : false | Le match. | |
match.name | string | "" | maxLength : 60 | |
match.date | string | "" | maxLength : 10 | YYYY-MM-DD. |
divisions | array | [] | maxItems : 8 | Divisions dans l’ordre d’affichage. Une division nommée par une entrée mais absente de cette liste est ajoutée après celles-ci. |
divisions[].id | string | minLength : 1 ; maxLength : 40 ; Obligatoire | ||
divisions[].name | string | maxLength : 40 ; Obligatoire | ||
entries | array | [] | maxItems : 200 | Cartes notées, une par prise de vue. Les scores sont définitifs : la carte totalise et classe, et place chaque touche là où elle est tombée, sans recalculer à partir des touches. |
entries[].id | string | minLength : 1 ; maxLength : 60 ; Obligatoire | Stable et unique : l’agent réécrit le même identifiant lorsqu’il corrige une carte. | |
entries[].shooter | string | minLength : 1 ; maxLength : 40 ; Obligatoire | Le nom d’affichage du tireur ; les cartes avec le même nom (sans tenir compte de la casse) sont un seul tireur. | |
entries[].division | string | maxLength : 40 | Un divisions[].id. | |
entries[].label | string | maxLength : 80 | Ce qu’est cette carte, par exemple 25 m · Feuille 2. | |
entries[].submittedAt | string | maxLength : 40 | Instant ISO 8601 où la carte a été notée. Détermine la fraîcheur et départage les égalités (le plus ancien gagne). | |
entries[].bulls | array | maxItems : 100 ; Obligatoire | Une par enregistrement, taureau dans l’ordre de la feuille, de gauche à droite par rangée. Les taureaux au-delà de target.bulls sont ignorés ; les absents sont considérés comme non marqués. | |
entries[].bulls[].score | nombre, nul | minimum : 0 ; maximum : 100 ; Obligatoire | Le score du taureau ; null signifie pas encore noté. | |
entries[].bulls[].x | boolean | Le tir est dans l’anneau X (son score est la valeur de l’anneau intérieur). | ||
entries[].bulls[].hits | array | maxItems : 10 | Centres des tirs en unités du rayon de l’anneau de score extérieur du taureau : 0,0 est le centre, +x à droite, +y vers le haut. | |
entries[].bulls[].hits[].dx | number | minimum : -2 ; maximum : 2 ; Obligatoire | ||
entries[].bulls[].hits[].dy | number | minimum : -2 ; maximum : 2 ; Obligatoire | ||
entries[].photo | string | maxLength : 512 | Une URL média résolue par l’hôte de la photo de la carte. | |
featured | string | "" | maxLength : 60 | Un identifiant d’entrée à garder en vedette. Vide affiche une carte neuve, sinon fait tourner. |
Exemple de canevas
Enregistrez les propriétés statiques comme params.json et créez la carte. Le résultat contient son identifiant crd_.
{
"theme": "neomustard"
}
screenrig card create --type shooting-match --major 1 --file params.json
Ajoutez cet élément aux primitives d’une page de liste de lecture, en remplaçant l’identifiant de l’exemple par celui de votre carte. Publiez la liste de lecture et assignez un écran.
{
"id": "shooting-match",
"primitive": "card",
"card": "crd_01EXAMPLECARD000000000",
"layout": "full",
"content_fit": "fill"
}
Écrire des données en direct
Écrivez le document dans la carte après l’avoir créée, puis remplacez-le pour mettre à jour l’écran sans republier. La carte vérifie chaque écriture par rapport à ses propriétés dynamiques et refuse un document qu’elle rejette. Utilisez le même projet que la liste de lecture.
Enregistrez le document sous card-data.json. La CLI lit le document lui-même, sans enveloppe :
{
"match": {},
"divisions": [],
"entries": [],
"featured": ""
}
screenrig card data put crd_01EXAMPLECARD000000000 --file card-data.json
Ou appelez directement l’API. L’API enveloppe le même document dans un champ document. Un jeton agent nomme déjà son projet, donc aucun en-tête de projet n’est envoyé ; si vous envoyez ScreenRig-Project, il doit correspondre au projet du jeton. Fournissez votre autorisation API via l’environnement ; voir Authentification 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":""}}'