Skip to main content
Un type d’activité de la timeline définit le vocabulaire stable pour un événement affiché dans la timeline d’un enregistrement. Les objets standards et les objets d’application utilisent le même contrat : un type a une étiquette et une icône, peut éventuellement déclarer lorsqu’il est émis, et peut éventuellement être rendu à travers l’un des [composants frontaux] de votre application (/developers/extend/apps/layout/front-components).
Les types d’activité de la chronologie sont en bêta et arrivent bientôt dans Vingt 2.34. L’API peut évoluer pendant que nous apprenons des cas d’utilisation des développeurs d’applications.
En créer un avec l’échafaudage :
Ou définissez-le directement :

Événements automatiques et explicites

Ajoute emit quand Vingt devrait créer ce type automatiquement. emit.on supporte created, updated, deleted, restored, linked, et unlinked, tandis que emit.objectUniversalIdentifier identifie l’objet source. Un seul type efficace peut gérer la même clé d’émission dans un espace de travail : on, object et optionnel via une relation. Sans emit.through, l’événement est écrit sur la timeline de l’enregistrement source. Pour l’encourager aux enregistrements liés, définissez emit.through. elationFieldUniversalIdentifier à une relation directe de plusieurs à un ou à une relation de jonction [un à plusieurs] (/developers/extend/apps/data/relations#junction-relations) sur l’objet source. Les relations de morphe se répandent vers chaque membre de leur groupe de morphes, donc une seule déclaration peut cibler plusieurs types d’objets. Pour une relation directe, créer ou restaurer l’enregistrement source produit linked, supprimer cela produit unlinked, et repointant la relation produit unlinked sur la cible précédente plus linked sur la nouvelle cible. Les autres mises à jour de sources ne produisent pas d’événements de liens. Il s’agit du contrat utilisé par les pièces jointes, dont la cible est une relation de morphe directe. Pour une relation de jonction, universalSettings.junctionTargetFieldUniversalIdentifier identifie la relation de l’objet de la jonction à la cible. Créer ou supprimer une ligne de jonction produit linked ou unlinked. Repointer de chaque côté d’une ligne de jonction produit également un événement de lien; les mises à jour des champs de jonction non liés ne le font pas. Les événements linked et unlinked nécessitent emit.through, car leur déclenchement est un changement de la relation directe ou de la jonction configurée. Par exemple, il s’agit du même contrat générique utilisé par les notes, les tâches, les messages et les événements du calendrier :
Une mise à jour à travers un événement est émise pour chaque mise à jour source par défaut. Définissez emit.through.triggerFieldUniversalIdentifiers lorsque seuls les changements aux champs source sélectionnés devraient apparaître sur les fils cibles. Omettre emit pour un événement de domaine explicite que votre fonction logique se crée. Cela évite de produire à la fois une ligne d’audit automatique et une ligne explicite pour la même opération.
Créez des événements explicites avec createTimelineActivity(). Le code d’application utilise des identifiants universels stables ; vingt résolvent les identifiants de métadonnées spécifiques à l’installation.

Rendu personnalisé

Sans composant frontal, Twenty affiche une ligne générique native à partir de l’étiquette de type, de l’icône et des métadonnées de l’objet lié. Cela fonctionne pour les objets standards et personnalisés sans moteur de rendu spécifique à l’objet. Pour des détails personnalisés, définissez frontComponentUniversalIdentifier à un composant frontal appartenant à la même application:
La ligne native reste la présentation réduite. Vingt montent le composant avant seulement après que l’utilisateur ait agrandi cette rangée, en évitant un bac à sable et un travailleur pour chaque événement visible. À l’intérieur du composant, appelez useTimelineActivityId() à partir de vingt-sdk/front-component pour lire l’ID de ligne et récupérer toutes les données dont votre présentation a besoin. Il retourne null lorsque le composant est rendu en dehors d’une ligne de timeline.

Remplacer la présentation d’une autre application

Une application possède des contrats automatiques de timeline pour ses propres objets. Pour personnaliser un événement sur un objet appartenant à une autre application, déclarer explicitement le type existant avec replacesTimelineActivityTypeUniversalIdentifier:
Une substitution doit inclure emit, car elle remplace un emplacement d’émission automatique existant plutôt qu’un type explicite. Le type référencé doit appartenir à l’application de l’objet cible et décrire la même action et la même route. La suppression de l’application écrasante restaure le type de base ; la suppression du type de base désactive la substitution.

Outrepasser et rendre muet l’espace de travail

Les administrateurs de l’espace de travail peuvent modifier la présentation d’un type ou couper en sourdine ses événements automatiques et explicites sans avoir à creuser l’application. Utilisez la mutation updateTimelineActivityType de l’API de métadonnées avec l’ID de type spécifique à l’installation :
label et icon sont stockés en tant que substituts d’espace de travail, donc les mises à jour ultérieures des applications n’écrasent pas les choix de l’administrateur. Définissez isActive à false pour arrêter l’émission automatique et rejeter les nouveaux événements explicites de ce type. Les lignes existantes restent visibles. Restaurer les valeurs par défaut de l’application, y compris l’état actif, avec:

Champs de configuration

Vingt instantanés instantanés d’identité sémantique et présentation durable se replient quand un événement est créé. Les lignes historiques conservent leur action originale et leur signification d’objet. Pendant que le type est installé, son étiquette traduite en cours, son icône et son composant frontal sont rendus en direct. Après désinstallation, la clé de secours de l’instantané conserve la ligne lisible. La résolution utilise l’identifiant universel, donc la présentation survit également à la réinstallation de l’application.