Přejít na hlavní obsah
Zobrazení je uložená konfigurace toho, jak se zobrazují záznamy objektu: která pole se zobrazují, v jakém pořadí, zda jsou viditelná a jaké filtry nebo seskupení jsou použity. Pomocí defineView() můžete s aplikací dodávat předem nakonfigurovaná zobrazení – obvykle výchozí indexové zobrazení pro každý vlastní objekt, který vytvoříte.
src/views/example-view.ts
import { defineView, ViewKey } from 'twenty-sdk/define';
import { EXAMPLE_OBJECT_UNIVERSAL_IDENTIFIER } from '../objects/example-object';
import { NAME_FIELD_UNIVERSAL_IDENTIFIER } from '../objects/example-object';

export default defineView({
  universalIdentifier: 'a1b2c3d4-e5f6-7890-abcd-ef1234567890',
  name: 'All example items',
  objectUniversalIdentifier: EXAMPLE_OBJECT_UNIVERSAL_IDENTIFIER,
  icon: 'IconList',
  key: ViewKey.INDEX,
  position: 0,
  fields: [
    {
      universalIdentifier: 'f926bdb7-6af7-4683-9a09-adbca56c29f0',
      fieldMetadataUniversalIdentifier: NAME_FIELD_UNIVERSAL_IDENTIFIER,
      position: 0,
      isVisible: true,
      size: 200,
    },
  ],
});

Hlavní body

  • objectUniversalIdentifier určuje, na který objekt se toto zobrazení vztahuje. Může to být vlastní objekt, který jste definovali, nebo standardní objekt Twenty.
  • key určuje typ zobrazení — ViewKey.INDEX je hlavní seznamové zobrazení pro daný objekt.
  • fields určuje, které sloupce se zobrazí a v jakém pořadí. Každé pole odkazuje na fieldMetadataUniversalIdentifier.
  • Pro pokročilé konfigurace můžete také deklarovat filters, filterGroups, groups a fieldGroups.
  • position určuje pořadí, pokud pro stejný objekt existuje více zobrazení.

Filtry

Zobrazení může být dodáno s předem aplikovanými filtry. Každý filtr má tři souřadnice: pole, které se filtruje, operand (jak porovnávat) a hodnotu (proti čemu porovnávat). Všechny tři musí být v souladu — použití operandu, který se nehodí k typu pole, bude při synchronizaci odmítnuto.
import { ViewFilterOperand } from 'twenty-shared/types';

filters: [
  {
    universalIdentifier: '...',
    fieldMetadataUniversalIdentifier: STATUS_FIELD_UNIVERSAL_IDENTIFIER,
    operand: ViewFilterOperand.IS,
    value: ['ACTIVE'],
  },
],

Podporované operandy podle typu pole

Typ polePodporované operandy
TEXT, EMAILS, FULL_NAME, ADDRESS, LINKS, PHONES, RAW_JSON, FILES, ACTOR, ARRAYCONTAINS, DOES_NOT_CONTAIN, IS_EMPTY, IS_NOT_EMPTY
ACTOR.source, ACTOR.workspaceMemberIdIS, IS_NOT, IS_EMPTY, IS_NOT_EMPTY
SELECTIS, IS_NOT, IS_EMPTY, IS_NOT_EMPTY
MULTI_SELECTCONTAINS, DOES_NOT_CONTAIN, IS_EMPTY, IS_NOT_EMPTY
RELATIONIS, IS_NOT, IS_EMPTY, IS_NOT_EMPTY
NUMBERIS, IS_NOT, GREATER_THAN_OR_EQUAL, LESS_THAN_OR_EQUAL, IS_EMPTY, IS_NOT_EMPTY
RATINGIS, GREATER_THAN_OR_EQUAL, LESS_THAN_OR_EQUAL, IS_EMPTY, IS_NOT_EMPTY
CURRENCY, CURRENCY.amountMicrosGREATER_THAN_OR_EQUAL, LESS_THAN_OR_EQUAL, IS, IS_NOT, IS_EMPTY, IS_NOT_EMPTY
CURRENCY.currencyCodeIS, IS_NOT, IS_EMPTY, IS_NOT_EMPTY
DATE, DATE_TIMEIS, IS_RELATIVE, IS_IN_PAST, IS_IN_FUTURE, IS_TODAY, IS_BEFORE, IS_AFTER, IS_EMPTY, IS_NOT_EMPTY
BOOLEANIS
UUIDIS, IS_NOT, IS_EMPTY, IS_NOT_EMPTY
TS_VECTORVECTOR_SEARCH
Typy polí s podobnými názvy mohou používat zcela odlišné operandy — běžným případem jsou SELECT a MULTI_SELECT.

Tvar hodnoty podle operandu

Pole value je vždy hodnota serializovatelná do JSON, ale její očekávaný tvar závisí na operandu:
Skupina operandůTvar hodnotyPříklad
IS, IS_NOT na SELECTpole klíčů možností (řetězce)['ACTIVE', 'PENDING']
CONTAINS, DOES_NOT_CONTAIN na MULTI_SELECTpole klíčů možností (řetězce)['TAG_A']
IS, IS_NOT na RELATIONpole ID záznamů (uuid)['c5a1...']
CONTAINS, DOES_NOT_CONTAIN na textových polích a podobných typechtextový řetězec'acme'
IS, IS_NOT na NUMBERřetězec (hodnota)'5'
IS na RATING / UUIDřetězec (hodnota)'5'
GREATER_THAN_OR_EQUAL, LESS_THAN_OR_EQUALřetězec (mezní hodnota)'10'
IS, IS_BEFORE, IS_AFTER na DATE / DATE_TIMEřetězec ve formátu ISO 8601'2025-01-01T00:00:00Z'
IS_EMPTY, IS_NOT_EMPTYprázdný řetězec''
IS na BOOLEAN'true' nebo 'false''true'

Jak se zobrazení objevují v uživatelském rozhraní

Samotné zobrazení není z postranního panelu dostupné. Aby se tam zobrazilo, spárujte ho s položkou navigačního menu typu VIEW, která odkazuje na universalIdentifier daného zobrazení. To je kanonický vzor: každý vlastní objekt obvykle dodává výchozí zobrazení + položku v postranním panelu, která ho otevírá.