English Documentation
Event Augmentation for Timeline & Calendar Views
1. Overview
The Event Augmentation feature provides a flexible and standardized way to attach time-based events to resources displayed in theTreeResourceEditor and CalendarView components. This system is configuration-driven from your AdminController and supports three main data structures: flat lists, simple_tree hierarchies, and compound_tree hierarchies.
The core principle is to fetch a primary collection of resources (e.g., documents, projects, employees) and then “augment” each item in that collection with its related events from a different data source. This ensures a single source of truth and efficient data loading.
2. Configuration & Setup
Event augmentation is configured in your child controller (e.g.,DocumentController.php) by defining specific properties. The system automatically detects the configuration and fetches the corresponding events.
Configuration Parameters:
model(string): The fully qualified class name of the Event model (e.g.,App\Models\DocumentEvent::class).resource_id_field(string): The “foreign key” column in the event model’s table that links back to the resource’s primary key (e.g.,documentId).event_fields(array): A key-value map to transform your event model’s database columns into the standard format expected by the frontend components.- Key: The standard field name (
id,title,start,end). - Value: The actual column name in your event database table (e.g.,
revisionDate).
3. Implementation Examples
Here are examples for each of the three supported data structures.Case 1: Flat List
Scenario: You have a simple, non-hierarchical list ofProjects. Each project’s tasks are stored in a separate ProjectTasks model.
Controller Setup (ProjectController.php):
Case 2: Simple Tree (Self-Referencing)
Scenario: You have a hierarchicalDocuments model where each document can have a parentId that points to another document. The timeline events for each document are stored in a DocumentEvents model.
Controller Setup (DocumentController.php):
Case 3: Compound Tree (Multi-Model & Self-Referencing)
Scenario: A complex hierarchy whereDepartments can contain sub-departments (self-referencing) and also contain Employees. Departments have their events stored in DepartmentMeetings, while Employees have their events in EmployeeTasks.
Controller Setup (OrganizationController.php):
4. Final Data Format
Regardless of the structure, theAdminController will process the data and produce a JSON response where each resource node contains an events array.
Data Format for a Flat List:
The response data will be a simple array of resource objects.
data will be an array of root-level resource objects, with children and events nested inside.
Dokumentasi Bahasa Indonesia
Augmentasi Event untuk Tampilan Timeline & Kalender
1. Gambaran Umum
Fitur Augmentasi Event menyediakan cara yang fleksibel dan terstandarisasi untuk melampirkan event berbasis waktu ke sumber daya (resources) yang ditampilkan dalam komponenTreeResourceEditor dan CalendarView. Sistem ini digerakkan oleh konfigurasi dari AdminController Anda dan mendukung tiga struktur data utama: daftar flat (datar), hierarki simple_tree (pohon sederhana), dan hierarki compound_tree (pohon majemuk).
Prinsip utamanya adalah mengambil koleksi data sumber daya utama (misalnya: dokumen, proyek, karyawan) dan kemudian “menambah” (augment) setiap item dalam koleksi tersebut dengan event terkait dari sumber data yang berbeda. Hal ini memastikan sumber data tunggal yang valid dan pemuatan data yang efisien.
2. Konfigurasi & Pengaturan
Augmentasi Event dikonfigurasi di dalam controller turunan Anda (contoh:DocumentController.php) dengan mendefinisikan properti spesifik. Sistem akan secara otomatis mendeteksi konfigurasi dan mengambil event yang sesuai.
Parameter Konfigurasi:
model(string): Nama kelas Model Event yang memenuhi syarat (contoh:App\Models\DocumentEvent::class).resource_id_field(string): Nama kolom “foreign key” di tabel model event yang menghubungkan kembali ke primary key dari sumber daya (contoh:documentId).event_fields(array): Sebuah pemetaan (map) key-value untuk mengubah kolom dari database model event Anda menjadi format standar yang diharapkan oleh komponen frontend.- Key: Nama field standar (
id,title,start,end). - Value: Nama kolom sebenarnya di tabel database event Anda (contoh:
revisionDate).
3. Contoh Implementasi
Berikut adalah contoh untuk setiap struktur data yang didukung.Kasus 1: Daftar Datar (Flat List)
Skenario: Anda memiliki daftarProjects yang sederhana dan tidak hierarkis. Setiap tugas (task) dari sebuah proyek disimpan dalam Model ProjectTasks yang terpisah.
Pengaturan Controller (ProjectController.php):
Kasus 2: Pohon Sederhana (Simple Tree / Self-Referencing)
Skenario: Anda memiliki ModelDocuments hierarkis di mana setiap dokumen dapat memiliki parentId yang menunjuk ke dokumen lain. Event timeline untuk setiap dokumen disimpan dalam Model DocumentEvents.
Pengaturan Controller (DocumentController.php):
Kasus 3: Pohon Majemuk (Compound Tree / Multi-Model & Self-Referencing)
Skenario: Hierarki kompleks di manaDepartments dapat berisi sub-departemen (self-referencing) dan juga berisi Employees. Departments memiliki event yang disimpan di DepartmentMeetings, sementara Employees memiliki event di EmployeeTasks.
Pengaturan Controller (OrganizationController.php):
4. Format Data Final
Terlepas dari strukturnya,AdminController akan memproses data dan menghasilkan respons JSON di mana setiap node sumber daya berisi sebuah array events.
Format Data untuk Daftar Datar (Flat List):
Respons data akan berupa array sederhana berisi objek-objek sumber daya.
data akan berupa array berisi objek sumber daya level-akar, dengan children dan events bersarang di dalamnya.
