universalIdentifier sabiti yoktur. Bunun yerine, sunucu her tanımlayıcıyı deterministik olarak türetir ve twenty-sdk, bildirim dosyanızın sunucunun kullandığı kesin değeri çözümleyebilmesi için aynı türetmeyi dışa açar.
Sistem Alanları
Her nesnede bulunan, hiçbirinidefineField() ile bildirmediğiniz skaler alanlar:
id, createdAt, updatedAt, deletedAt, createdBy, updatedBy, position, searchVector
Peki bir görünümde createdAt alanına sütun olarak nasıl referans verirsiniz?
Sorun
Twenty 2.19’dan beri, bir sistem alanının evrensel tanımlayıcısı, sunucu tarafından üç girdiden deterministik olarak türetilir: uygulama evrensel tanımlayıcısı, nesne evrensel tanımlayıcısı ve alan adı. Rastgele bir id uydurup onu hardcode etmek işe yaramaz: sunucudaki hiçbir şeyle eşleşmez ve senkronizasyon, askıda kalan referansı reddeder:Çözüm
getFieldUniversalIdentifier, twenty-sdk 2.21 sürümünden itibaren kullanılabilir.getFieldUniversalIdentifier kullanın. Üç girdiyi alır ve alanın evrensel tanımlayıcısını döndürür:
applicationUniversalIdentifier, uygulamanızın tanımlayıcısıdır;defineApplication()çağrısına aktardığınız tanımlayıcı.objectUniversalIdentifier, alanın ait olduğu nesnenin tanımlayıcısıdır.name, sistem alan adıdır; yukarıda listelenen değerlerden biridir.
Örnek: bir görünümde createdAt sütunu
Tipik durum, özel nesnelerinizden birinin görünümüne bircreatedAt sütunu eklemektir. Alan id’sini çözümleyin ve ona, herhangi bir fieldMetadataUniversalIdentifier gibi referans verin:
src/views/example-view.ts
fieldMetadataUniversalIdentifier beklendiği her yerde çalışır: görünüm alanları, filtreler, sıralamalar, gruplar ve sayfa düzeni bileşenleri.
Id’yi çözümleyin, hardcode etmeyin. Sunucu değeri uygulama id’si, nesne id’si ve alan adından
türettiği için,
getFieldUniversalIdentifier çağrısı, bu girdiler değişse bile referansınızı doğru tutar ve türetme zaman içinde gelişirse sapmayı önler.Sistem ilişki alanları
getSystemRelationFieldUniversalIdentifier 2.23 sürümünden itibaren twenty-sdk içinde kullanılabilir ve Twenty sunucusunun 2.23 veya daha yeni bir sürümünü gerektirir.timelineActivities, attachments, noteTargets ve taskTargets. Bunların her biri, karşılık gelen standart ilişki nesnesini işaret eder.
Bu alanlar getFieldUniversalIdentifier ile çözümlenmez: tanımlayıcıları, alanı barındıran nesne ve alanın işaret ettiği nesneden isimden bağımsız olarak türetilir. Bu sayede bir nesnenin adını değiştirmek, ilişki alanlarının tanımlayıcılarını asla değiştirmez.
Bunları çözümlemek için getSystemRelationFieldUniversalIdentifier kullanın:
objectUniversalIdentifier, alanın barındırıldığı nesnedir.relationTargetObjectUniversalIdentifier, alanın işaret ettiği nesnedir.
attachment.targetRocket, sunucunun standart ilişki nesnesi üzerinde oluşturduğu morph alanı), ikisini değiştirin:
fieldMetadataUniversalIdentifier beklendiği her yerde çalışır.
Sistem görünümleri
getSystemViewUniversalIdentifier ve getSystemViewFieldUniversalIdentifier, twenty-sdk 2.26 sürümünden itibaren kullanılabilir ve Twenty sunucusunun 2.26 veya daha yeni bir sürümünü gerektirir.All {objectLabelPlural}, ViewKey.INDEX anahtarıyla), gösterilebilir her alan için bir sütunla. Sistem ilişki alanlarında olduğu gibi, tanımlayıcıları isimden bağımsız olarak türetilir; bu nedenle bir nesnenin veya alanın adını değiştirmeniz onları asla değiştirmez.
Görünümü çözümlemek için getSystemViewUniversalIdentifier kullanın:
objectMetadataApplicationUniversalIdentifier, görünümün ad alanını belirleyen, nesneye sahip olan uygulamadır.objectUniversalIdentifier, görünümün listelediği nesnedir.viewKey, bugün içinViewKey.INDEXolan sistem görünüm anahtarıdır.
viewUniversalIdentifier beklendiği her yerde, örneğin bir NavigationMenuItemType.VIEW kenar çubuğu girdisinde çalışır. Sadece bir nesnenin ana listesini açmak için, targetObjectUniversalIdentifier ile NavigationMenuItemType.OBJECT kullanmayı tercih edin: hiçbir türetmeye ihtiyaç duymaz.
getSystemViewFieldUniversalIdentifier, bir sistem görünümündeki tek bir sütunu, görünümden ve görüntülediği alandan yola çıkarak çözümler:
Standart Twenty nesneleri
Standart bir Twenty nesnesi (Person, Company, Opportunity, …) için hiçbir şey türetmeniz gerekmez: hem alanlar hem de görünümler için, doğrudan içe aktarabileceğiniz önceden hesaplanmış sabit tanımlayıcılar vardır.defineObject() ile uygulamanızın tanımladığı ve böyle bir sabitin bulunmadığı nesneler için başvurun.
name, bir sistem alanı değil, bir varsayılan alandır. Kendi hardcode edilmiş
evrensel tanımlayıcısını korur ve
getFieldUniversalIdentifier ile çözülmez. Tanımladığınız nesnelerde, name alanına defineObject() içinde ona verdiğiniz tanımlayıcı ile referans verin.