JS Column
Pengantar
JS Column digunakan untuk "kolom kustom" di Table, merender konten cell setiap baris melalui JavaScript. Tidak terikat Field tertentu, cocok untuk skenario seperti kolom turunan, tampilan kombinasi cross-Field, badge status, Action tombol, agregasi data remote, dll.

API Konteks Runtime
Setiap cell JS Column dapat menggunakan kemampuan konteks berikut saat di-render:
ctx.element: container DOM cell saat ini (ElementProxy), mendukunginnerHTML,querySelector,addEventListener, dll.;ctx.record: objek record baris saat ini (read-only);ctx.recordIndex: index baris di halaman saat ini (mulai dari 0, mungkin dipengaruhi pagination);ctx.collection: meta info collection yang di-bind Table (read-only);ctx.requireAsync(url): load library AMD/UMD secara asynchronous berdasarkan URL;ctx.importAsync(url): import modul ESM secara dinamis berdasarkan URL;ctx.openView(options): membuka view yang sudah dikonfigurasi (Popup/drawer/page);ctx.i18n.t()/ctx.t(): internasionalisasi;ctx.onRefReady(ctx.ref, cb): render setelah container siap;ctx.libs.React/ctx.libs.ReactDOM/ctx.libs.antd/ctx.libs.antdIcons/ctx.libs.dayjs/ctx.libs.lodash/ctx.libs.math/ctx.libs.formula: library umum bawaan seperti React / ReactDOM / Ant Design / icon Ant Design / dayjs / lodash / math.js / formula.js, dll., digunakan untuk render JSX, pemrosesan waktu, operasi data, dan operasi matematika. (ctx.React/ctx.ReactDOM/ctx.antdmasih dipertahankan untuk kompatibilitas.)ctx.render(vnode): render React element/HTML/DOM ke container defaultctx.element(cell saat ini), render berulang akan menggunakan kembali Root, dan menimpa konten container yang ada.
Editor dan Snippet
Editor script JS Column mendukung syntax highlighting, error prompt, dan snippet kode bawaan (Snippets).
Snippets: Membuka daftar snippet kode bawaan, dapat dicari dan dengan satu klik menyisipkan ke posisi cursor saat ini.Run: Langsung menjalankan kode saat ini, log eksekusi output ke panelLogsdi bawah, mendukungconsole.log/info/warn/errordan highlight lokasi error.

Dapat dikombinasikan dengan AI Employee untuk generate kode:
Penggunaan Umum
1) Render Dasar (Membaca Record Baris Saat Ini)
2) Menggunakan JSX untuk Render Komponen React
3) Membuka Popup/Drawer di Cell (Lihat/Edit)
4) Load Library Pihak Ketiga (AMD/UMD atau ESM)
Perhatian
- Disarankan menggunakan CDN terpercaya untuk load library eksternal, dan siapkan fallback untuk skenario kegagalan (seperti
if (!lib) return;). - Saran selector prioritaskan menggunakan
classatau[name=...], hindari menggunakanidtetap, untuk mencegah duplikasiiddi beberapa Block/Popup. - Pembersihan event: baris Table mungkin berubah dinamis dengan pagination/refresh, cell akan di-render berulang kali. Sebelum bind event harus melakukan pembersihan atau dedup, hindari trigger berulang.
- Saran performa: hindari memuat library besar berulang di setiap cell; harus melakukan cache library di lapisan atas (seperti melalui variabel global atau variabel level table) kemudian digunakan kembali.

