/*
    Парус 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 };
