defineView() pour livrer des vues préconfigurées avec votre application — généralement une vue d’index par défaut pour chaque objet personnalisé que vous créez.
src/views/example-view.ts
Points clés
objectUniversalIdentifierspécifie à quel objet cette vue s’applique. Il peut s’agir d’un objet personnalisé que vous avez défini ou d’un objet Twenty standard.keydétermine le type de vue —ViewKey.INDEXest la vue de liste principale pour l’objet.fieldscontrôle les colonnes affichées et leur ordre. Chaque champ référence unfieldMetadataUniversalIdentifier.- Vous pouvez également définir
filters,filterGroups,groupsetfieldGroupspour des configurations plus avancées. positioncontrôle l’ordre lorsqu’il existe plusieurs vues pour le même objet.
Filtres
Une vue peut être livrée avec des filtres préappliqués. Chaque filtre possède trois coordonnées : le champ faisant l’objet du filtrage, l’opérateur (comment comparer) et la valeur (par rapport à quoi comparer). Les trois doivent être alignées : l’utilisation d’un opérateur qui ne s’applique pas à un type de champ sera rejetée au moment de la synchronisation.Opérateurs pris en charge par type de champ
| Type de champ | Opérandes pris en charge |
|---|---|
TEXT, EMAILS, FULL_NAME, ADDRESS, LINKS, PHONES, RAW_JSON, FILES, ACTOR, ARRAY | CONTAINS, DOES_NOT_CONTAIN, IS_EMPTY, IS_NOT_EMPTY |
ACTOR.source, ACTOR.workspaceMemberId | IS, IS_NOT, IS_EMPTY, IS_NOT_EMPTY |
SELECT | IS, IS_NOT, IS_EMPTY, IS_NOT_EMPTY |
MULTI_SELECT | CONTAINS, DOES_NOT_CONTAIN, IS_EMPTY, IS_NOT_EMPTY |
RELATION | IS, IS_NOT, IS_EMPTY, IS_NOT_EMPTY |
NUMBER | IS, IS_NOT, GREATER_THAN_OR_EQUAL, LESS_THAN_OR_EQUAL, IS_EMPTY, IS_NOT_EMPTY |
RATING | IS, GREATER_THAN_OR_EQUAL, LESS_THAN_OR_EQUAL, IS_EMPTY, IS_NOT_EMPTY |
CURRENCY, CURRENCY.amountMicros | GREATER_THAN_OR_EQUAL, LESS_THAN_OR_EQUAL, IS, IS_NOT, IS_EMPTY, IS_NOT_EMPTY |
CURRENCY.currencyCode | IS, IS_NOT, IS_EMPTY, IS_NOT_EMPTY |
DATE, DATE_TIME | IS, IS_RELATIVE, IS_IN_PAST, IS_IN_FUTURE, IS_TODAY, IS_BEFORE, IS_AFTER, IS_EMPTY, IS_NOT_EMPTY |
BOOLEAN | IS |
UUID | IS, IS_NOT, IS_EMPTY, IS_NOT_EMPTY |
TS_VECTOR | VECTOR_SEARCH |
Les types de champs avec des noms similaires peuvent utiliser des opérandes complètement différents —SELECTetMULTI_SELECTétant un cas courant.
Forme de valeur par opérande
Le champvalue est toujours une valeur sérialisable en JSON, mais sa forme attendue dépend de l’opérande :
| Famille d’opérandes | Forme de la valeur | Exemple |
|---|---|---|
IS, IS_NOT sur SELECT | tableau de clés d’option (chaînes) | ['ACTIVE', 'PENDING'] |
CONTAINS, DOES_NOT_CONTAIN sur MULTI_SELECT | tableau de clés d’option (chaînes) | ['TAG_A'] |
IS, IS_NOT sur RELATION | tableau d’ID d’enregistrement (UUID) | ['c5a1...'] |
CONTAINS, DOES_NOT_CONTAIN sur les champs de type texte | chaîne | 'acme' |
IS, IS_NOT sur NUMBER | chaîne (la valeur) | '5' |
IS sur RATING / UUID | chaîne (la valeur) | '5' |
GREATER_THAN_OR_EQUAL, LESS_THAN_OR_EQUAL | chaîne (la borne) | '10' |
IS, IS_BEFORE, IS_AFTER sur DATE / DATE_TIME | chaîne ISO 8601 | '2025-01-01T00:00:00Z' |
IS_EMPTY, IS_NOT_EMPTY | chaîne vide | '' |
IS sur BOOLEAN | 'true' ou 'false' | 'true' |
Comment les vues apparaissent dans l’interface utilisateur
Une vue seule n’est pas accessible à partir de la barre latérale. Pour la faire apparaître là, associez-la à un élément de menu de navigation de typeVIEW qui pointe vers le universalIdentifier de la vue. C’est le modèle canonique : chaque objet personnalisé livre généralement une vue par défaut + une entrée de barre latérale qui l’ouvre.