universalIdentifier, kterou byste mohli importovat. Místo toho server každý identifikátor odvozuje deterministicky a twenty-sdk zpřístupňuje stejné odvozování, takže váš manifest může zjistit přesnou hodnotu, kterou server používá.
Systémová pole
Skalární pole přítomná na každém objektu, z nichž žádné nedefinujete pomocídefineField():
id, createdAt, updatedAt, deletedAt, createdBy, updatedBy, position, searchVector
Jak tedy odkážete na createdAt jako na sloupec ve zobrazení?
Problém
Od Twenty 2.19 je univerzální identifikátor systémového pole deterministicky odvozován serverem ze tří vstupů: univerzálního identifikátoru aplikace, univerzálního identifikátoru objektu a názvu pole. Vymyslet si id a natvrdo ho zapsat nebude fungovat: neshoduje se s ničím na serveru a synchronizace zamítne osiřelý odkaz:Řešení
getFieldUniversalIdentifier je k dispozici od twenty-sdk verze 2.21 a vyšší.getFieldUniversalIdentifier k odvození přesně stejné hodnoty, jakou používá server. Funkce přijímá tři vstupy a vrací univerzální identifikátor pole:
applicationUniversalIdentifierje identifikátor vaší aplikace, ten, který předáváte dodefineApplication().objectUniversalIdentifierje identifikátor objektu, ke kterému pole patří.nameje název systémového pole, jedna z výše uvedených hodnot.
Příklad: sloupec createdAt v zobrazení
Typickým případem je přidání sloupcecreatedAt do zobrazení některého z vašich vlastních objektů. Odvoďte identifikátor pole a odkažte na něj stejně jako na jakýkoli jiný fieldMetadataUniversalIdentifier:
src/views/example-view.ts
fieldMetadataUniversalIdentifier: pole zobrazení, filtry, řazení, seskupování a widgety rozložení stránky.
Identifikátor odvozujte, neukládejte ho natvrdo. Protože server odvozuje hodnotu z
ID aplikace, ID objektu a názvu pole, volání
getFieldUniversalIdentifier udržuje odkaz správný i v případě, že se tyto
vstupy změní, a předchází odchylkám, pokud se samotný způsob odvozování někdy změní.Systémová relační pole
getSystemRelationFieldUniversalIdentifier je k dispozici od verze twenty-sdk
2.23 a vyžaduje server Twenty ve verzi 2.23 nebo novější.timelineActivities, attachments, noteTargets a taskTargets, z nichž každé ukazuje na odpovídající standardní relační objekt.
Tato pole nejsou řešena pomocí getFieldUniversalIdentifier: jejich identifikátor je odvozen bez ohledu na název z objektu, který pole obsahuje, a z objektu, na který pole odkazuje. Tím pádem přejmenování objektu nikdy nezmění identifikátory jeho relačních polí.
Použijte getSystemRelationFieldUniversalIdentifier k jejich vyřešení:
objectUniversalIdentifierje objekt, který toto pole obsahuje.relationTargetObjectUniversalIdentifierje objekt, na který toto pole ukazuje.
attachment.targetRocket, morph pole, které server vytvoří na standardním relačním objektu), je prohoďte:
fieldMetadataUniversalIdentifier.
Systémová zobrazení
getSystemViewUniversalIdentifier a getSystemViewFieldUniversalIdentifier
jsou k dispozici od verze twenty-sdk 2.26 a vyžadují server Twenty ve
verzi 2.26 nebo novější.All {objectLabelPlural}, s klíčem ViewKey.INDEX) s jedním sloupcem pro každé zobrazitelné pole. Stejně jako u systémových relačních polí jsou jejich identifikátory odvozovány nezávisle na názvu, takže přejmenování objektu nebo pole je nikdy nezmění.
Použijte getSystemViewUniversalIdentifier k vyřešení zobrazení:
objectMetadataApplicationUniversalIdentifierje aplikace, která vlastní objekt, podle které je zobrazení namespacované.objectUniversalIdentifierje objekt, který zobrazení vypisuje.viewKeyje klíč systémového zobrazení, aktuálněViewKey.INDEX.
viewUniversalIdentifier, například u položky postranního panelu NavigationMenuItemType.VIEW. Pro pouhé otevření hlavního seznamu objektu preferujte NavigationMenuItemType.OBJECT s targetObjectUniversalIdentifier: nevyžaduje žádné odvozování.
getSystemViewFieldUniversalIdentifier vyhodnotí jeden konkrétní sloupec v systémovém zobrazení na základě zobrazení a pole, které zobrazuje:
Standardní objekty Twenty
U standardního objektu Twenty (Person, Company, Opportunity, …) nemusíte nic odvozovat: identifikátory jsou předpočítané konstanty, které můžete přímo importovat, a to jak pro pole, tak pro zobrazení.defineObject() a žádná taková konstanta neexistuje.
name je výchozí pole, nikoli systémové pole. Má svůj vlastní natvrdo daný
univerzální identifikátor a neodvozuje se pomocí
getFieldUniversalIdentifier. U objektů, které definujete, odkazujte na pole
name pomocí identifikátoru, který jste mu dali v defineObject().