59 lines
2.4 KiB
JavaScript

/*
Парус 8 - Панели мониторинга - Редактор панелей
Компоненты: Таблица (общие ресурсы действия)
*/
//---------------------
//Подключение библиотек
//---------------------
//---------
//Константы
//---------
//Собственные значения типа действия
const P8P_CA_TABLE_TYPE_VALUE = {
COLUMN_VALUE: "Значение графы"
};
//Типы значений действий таблицы
const P8P_CA_TABLE_VALUE_TYPES = [...Object.values(P8P_CA_TABLE_TYPE_VALUE)];
//Доступные области действий таблицы
const P8P_CA_TABLE_ACTION_AREAS = [
{ name: "Компонент", area: "component", hasElement: false },
{ name: "Графа таблицы", area: "column", hasElement: true },
{ name: "Строка таблицы", area: "row", hasElement: false }
];
//------------------------------------
//Вспомогательные функции и компоненты
//------------------------------------
//Получение значения собственного типа действия
const getDataGridCustomTypeValue = ({ type, value, prms }) => {
//Если это значение графы - возвращаем нужное значение, иначе - null
return type === P8P_CA_TABLE_TYPE_VALUE.COLUMN_VALUE ? prms.row[value] : null;
};
//Считывание обработчиков таблицы
const getDataGridHandlers = (handlers, element = null) => {
//Возвращаем объект хэндлеров (имеют формат "[Область].[Сегмент]", где [Сегмент] - необязательный)
return {
onComponentClick: handlers["component."]?.fn,
onRowClick: handlers["row."]?.fn,
onColumnClick: element ? handlers[`column.${element}`]?.fn : null
};
};
//Проверка наличия обработчиков ячеек
const isHasCellRender = (handlers, conditions) => {
return Object.keys(handlers).some(handler => handler.startsWith("column.") || handler === "row.") || conditions.length !== 0;
};
//----------------
//Интерфейс модуля
//----------------
export { P8P_CA_TABLE_VALUE_TYPES, P8P_CA_TABLE_ACTION_AREAS, getDataGridCustomTypeValue, getDataGridHandlers, isHasCellRender };