Skip to main content
Un tipo di attività della timeline definisce il vocabolario stabile per un evento mostrato nella timeline di un record. Oggetti standard e oggetti app utilizzano lo stesso contratto: un tipo ha un’etichetta e un’icona, può opzionalmente dichiarare quando viene emesso, e può opzionalmente renderizzare attraverso uno dei componenti anteriori.
I tipi di attività temporali sono in beta e stanno arrivando presto a Twenty 2.34. L’API può evolvere mentre impariamo dai casi d’uso degli sviluppatori di app.
Creane uno con il ponteggio:
O definirlo direttamente:

Eventi automatici ed espliciti

Aggiungi emit quando Twenty dovrebbe creare questo tipo automaticamente. emit.on supporta created, updated, deleted, restored, linked, e unlinked, mentre emit.objectUniversalIdentifier identifica l’oggetto sorgente. Solo un tipo efficace può gestire la stessa chiave di emissione — on, oggetto e opzionale attraverso la relazione — in uno spazio di lavoro. Senza emit.through, l’evento è scritto sulla timeline del record di origine. Per adattarlo ai record correlati, imposta emit.through. elationFieldUniversalIdentifier o a una relazione diretta tra molti o a una relazione di giunzione uno-a-molto sull’oggetto sorgente. Amante delle relazioni morph ad ogni membro del loro gruppo morph, in modo da una singola dichiarazione può colpire diversi tipi di oggetti. Per una relazione diretta, la creazione o il ripristino del record di origine produce linked, eliminando produce unlinked, e ripuntando la relazione produce unlinked sul target precedente più linked sul nuovo obiettivo. Altri aggiornamenti di origine non producono eventi di collegamento. Questo è il contratto utilizzato dagli allegati, il cui obiettivo è una relazione diretta morfologica. Per una relazione di giunzione, universalSettings.junctionTargetFieldUniversalIdentifier identifica la relazione dall’oggetto di giunzione al bersaglio. La creazione o l’eliminazione di una riga di giunzione produce linked o unlinked. Il riorientamento di entrambi i lati di una riga di giunzione produce anche un evento di collegamento; gli aggiornamenti di campi di giunzione non correlati non. linked e unlinked gli eventi richiedono emit.through, perché il loro trigger è una modifica al rapporto diretto o di giunzione configurato. Ad esempio, questo è lo stesso contratto generico utilizzato da note, compiti, messaggi e eventi di calendario:
Per impostazione predefinita, viene emesso un evento updated through per ogni aggiornamento della sorgente. Imposta emit.through.triggerFieldUniversalIdentifiers quando solo le modifiche ai campi sorgente selezionati devono apparire nelle timeline di destinazione. Ometti emit per un evento di dominio esplicito creato dalla tua funzione logica. In questo modo si evita di produrre sia una riga di audit automatica sia una riga esplicita per la stessa operazione.
Crea eventi espliciti con createTimelineActivity(). Il codice dell’app usa identificatori universali stabili; Twenty risolve gli ID dei metadati specifici dell’installazione.

Rendering personalizzato

Senza un componente front, Twenty esegue il rendering di una riga generica nativa a partire dall’etichetta del tipo, dall’icona e dai metadati dell’oggetto collegato. Questo funziona per oggetti standard e personalizzati senza un renderer specifico dell’oggetto. Per dettagli personalizzati, imposta frontComponentUniversalIdentifier su un componente front appartenente alla stessa app:
La riga nativa rimane la presentazione compressa. Twenty monta il componente front solo dopo che l’utente espande quella riga, evitando una sandbox e un worker per ogni evento visibile. All’interno del componente, chiama useTimelineActivityId() da twenty-sdk/front-component per leggere l’ID della riga e recuperare tutti i dati necessari alla presentazione. Restituisce null quando il componente viene sottoposto a rendering al di fuori di una riga della timeline.

Sovrascrivere la presentazione di un’altra applicazione

Un’app possiede contratti automatici della timeline per i propri oggetti. Per personalizzare un evento su un oggetto posseduto da un’altra app, dichiara esplicitamente il tipo esistente con replacesTimelineActivityTypeUniversalIdentifier:
Una sostituzione deve includere emit, perché sostituisce uno slot di emissione automatica esistente anziché un tipo solo esplicito. Il tipo a cui viene fatto riferimento deve appartenere all’applicazione dell’oggetto di destinazione e descrivere la stessa azione e lo stesso percorso. La rimozione dell’app che effettua la sostituzione ripristina il tipo di base; la rimozione del tipo di base disabilita la sostituzione.

Sostituzioni e disattivazione dell’area di lavoro

Gli amministratori dell’area di lavoro possono modificare la presentazione di un tipo o disattivare i relativi eventi automatici ed espliciti senza effettuare un fork dell’applicazione. Usa la mutazione updateTimelineActivityType dell’API dei metadati con l’ID del tipo specifico dell’installazione:
label e icon vengono archiviati come sostituzioni dell’area di lavoro, pertanto gli aggiornamenti successivi dell’applicazione non sovrascrivono le scelte dell’amministratore. Imposta isActive su false per interrompere l’emissione automatica e rifiutare nuovi eventi espliciti di quel tipo. Le righe esistenti rimangono visibili. Ripristina le impostazioni predefinite dell’applicazione, incluso lo stato attivo, con:

Campi di configurazione

Venti istantanee identità semantica e fallback durevoli della presentazione quando viene creato un evento. Le righe storiche mantengono la loro azione originale e il significato dell’oggetto. Mentre il tipo è installato, la sua attuale etichetta, icona e componente frontale rendono live; dopo la disinstallazione, lo snapshot fallback mantiene la riga leggibile. La risoluzione utilizza l’identificatore universale, quindi la presentazione sopravvive anche reinstallando l’app.