Колонка JS
Введение
Колонка JS используется для пользовательских столбцов в таблицах: она отображает содержимое ячейки каждой строки с помощью JavaScript. Колонка не привязана к конкретному полю и подходит для таких сценариев, как вычисляемые столбцы, сводное отображение данных из нескольких полей, индикаторы статусов, кнопки действий и агрегация данных вне интерфейса таблицы.

API контекста выполнения
При отрисовке каждой ячейк и колонка JS предоставляет следующие возможности контекста:
ctx.element: контейнер DOM текущей ячейки (ElementProxy), поддерживаетinnerHTML,querySelector,addEventListenerи т.д.ctx.record: объект текущей записи строки (только для чтения).ctx.recordIndex: индекс строки на текущей странице (начинается с 0, может зависеть от пагинации).ctx.collection: метаданные коллекции, привязанной к таблице (только для чтения).ctx.requireAsync(url): асинхронная загрузка библиотеки в формате AMD или UMD по URL.ctx.importAsync(url): динамический импорт модуля в формате ES-модулей по URL.ctx.openView(options): открывает настроенный элемент просмотра (модальное окно, выдвижной блок или страницу).ctx.i18n.t()/ctx.t(): интернационализация.ctx.onRefReady(ctx.ref, cb): вызывает отрисовку после готовности контейнера.ctx.libs.React/ctx.libs.ReactDOM/ctx.libs.antd/ctx.libs.antdIcons/ctx.libs.dayjs/ctx.libs.lodash/ctx.libs.math/ctx.libs.formula: встроенные библиотеки React, ReactDOM, Ant Design, иконки Ant Design, dayjs, lodash, math.js и formula.js для разметки на JSX, работы с датой и временем, обработки данных и вычислений. (ctx.React/ctx.ReactDOM/ctx.antdсохранены для совместимости.)ctx.render(vnode): отрисовывает элемент на React, разметку HTML или узел дерева документа в контейнер по умолчаниюctx.element(текущая ячейка). При нескольких вызовах создаётся новый корень и перезаписывается содержимое контейнера.
Редактор и сниппеты
Редактор сценариев для колонки JS поддерживает подсветку синтаксиса, подсказки по ошибкам и встроенные сниппеты кода.
- Сниппеты: открывает список встроенных сниппетов — можно искать и вставлять их в позицию курсора одним щелчком.
- Запуск: выполняет текущий код напрямую. Вывод выполнения показывается на панели Журнал внизу; поддерживаются вызовы
console.log,console.info,console.warn,console.errorи подсветка ошибок.

Также можно использовать ИИ-сотрудника для генерации кода:
Типовое использование
1) Базовый рендеринг (чтение текущей записи строки)
2) Использование JSX для рендеринга React-компонентов
3) Открыть модальное окно или выдвижной блок из ячейки (просмотр или редактирование)
4) Загрузка сторонних библиотек (AMD, UMD или ES-модули)
Примечания
- Рекомендуется использовать доверенную сеть доставки контента для загрузки внешних библиотек и предусмотреть запасной сценарий на случай ошибок (например,
if (!lib) return;). - Рекомендуется использовать селекторы по атрибуту
classили[name=...]вместо фиксированныхid, чтобы избежать дублирования идентификаторов в разных блоках или модальных окнах. - Очистка событий: строки таблицы могут динамически меняться при постраничном выводе или обновлении, из-за чего ячейки могут перерисовываться несколько раз. Перед привязкой обработчиков событий очистите их или исключите дубликаты, чтобы избежать повторных срабатываний.
- Совет по производительности: избегайте повторной загрузки крупных библиотек в каждой ячейке. Лучше кэшировать библиотеку на более высоком уровне (например, с помощью глобальной или табличной переменной) и переиспользовать её.

