Carte de match de tir

Classements en direct pour un match de tir sur cible annulaire couvrant carabine à percussion annulaire, carabine à air et petit calibre. Les divisions sont classées par score et nombre de X à côté de la feuille de la carte mise en avant, chaque taureau dessiné montrant les impacts où ils sont tombés, les totaux par rangée et le total de la carte. Les cartes notées par l’agent du marqueur sont mises en avant et célébrées lorsqu’elles sont fraîches.

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

Cette carte est dessinée dans votre navigateur par le même code que les lecteurs, avec des données d’exemple.

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

NomTypePar défautValeurs et limitesDescription
titlestring"Match standings"maxLength : 60L’étiquette au-dessus du nom du match ; le titre lui-même quand les données ne nomment aucun match.
subtitlestring""maxLength : 120Une ligne sous le titre, avant la date du match et le nombre de tireurs.
targetobjectadditionalProperties : falseLa feuille cible sur laquelle chaque carte est tirée.
target.bullsinteger25minimum : 1 ; maximum : 100Consigner les taureaux sur une seule feuille.
target.rowsinteger5minimum : 1 ; maximum : 20Lignes où les taureaux sont assis, lecture de gauche à droite, de haut en bas.
target.ringsarray[10,9,8,7,6,5]minItems : 1 ; maxItems : 12Valeurs des anneaux de score de l’anneau intérieur vers l’extérieur. Le premier est le score le plus élevé du taureau.
target.xRingbooleantrueUn anneau X à l’intérieur de l’anneau intérieur ; X compte pour départager.
target.radiiarray[]maxItems : 12Rayons 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.xRadiusnumber0minimum : 0Le 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.blackinteger4minimum : 0 ; maximum : 12Combien d’anneaux, de l’anneau intérieur vers l’extérieur, la cible noire couvre.
target.shotSizenumber0.22minimum : 0 ; maximum : 1Le diamètre d’un trou de tir en fraction du rayon de l’anneau de pointage extérieur.
showPercentbooleantrueAfficher le score de chaque carte en pourcentage du maximum de la feuille.
rankingstring"best""best", "every"best classe chaque tireur une fois par division, sur sa meilleure carte ; every classe chaque carte.
rotateSecondsinteger12minimum : 0 ; maximum : 600Secondes 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.
freshMinutesinteger3minimum : 0 ; maximum : 60Une carte soumise récemment est fraîche : mise en avant avant la rotation et marquée Juste arrivée. 0 désactive cette fonction.
backgroundColorchaîne, nulnullmotif : "^#[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é.
textColorchaîne, nulnullmotif : "^#[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

NomTypePar défautValeurs et limitesDescription
matchobjectadditionalProperties : falseLe match.
match.namestring""maxLength : 60
match.datestring""maxLength : 10YYYY-MM-DD.
divisionsarray[]maxItems : 8Divisions 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[].idstringminLength : 1 ; maxLength : 40 ; Obligatoire
divisions[].namestringmaxLength : 40 ; Obligatoire
entriesarray[]maxItems : 200Cartes 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[].idstringminLength : 1 ; maxLength : 60 ; ObligatoireStable et unique : l’agent réécrit le même identifiant lorsqu’il corrige une carte.
entries[].shooterstringminLength : 1 ; maxLength : 40 ; ObligatoireLe nom d’affichage du tireur ; les cartes avec le même nom (sans tenir compte de la casse) sont un seul tireur.
entries[].divisionstringmaxLength : 40Un divisions[].id.
entries[].labelstringmaxLength : 80Ce qu’est cette carte, par exemple 25 m · Feuille 2.
entries[].submittedAtstringmaxLength : 40Instant 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[].bullsarraymaxItems : 100 ; ObligatoireUne 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[].scorenombre, nulminimum : 0 ; maximum : 100 ; ObligatoireLe score du taureau ; null signifie pas encore noté.
entries[].bulls[].xbooleanLe tir est dans l’anneau X (son score est la valeur de l’anneau intérieur).
entries[].bulls[].hitsarraymaxItems : 10Centres 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[].dxnumberminimum : -2 ; maximum : 2 ; Obligatoire
entries[].bulls[].hits[].dynumberminimum : -2 ; maximum : 2 ; Obligatoire
entries[].photostringmaxLength : 512Une URL média résolue par l’hôte de la photo de la carte.
featuredstring""maxLength : 60Un 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":""}}'