/*
    Парус 8 - Панели мониторинга - РО - Редактор настройки регламентированного отчёта
    Дополнительная разметка и вёрстка клиентских элементов
*/

//---------------------
//Подключение библиотек
//---------------------

import React from "react"; //Классы React
import { MarksToolbar } from "./components/marks_toolbar"; //Панель инструментов показателей
import { MarkCard } from "./components/mark_card"; //Карточка показателя
import { STYLES as COMMON_STYLES } from "./common"; //Общие стили и константы

//---------
//Константы
//---------

//Стили
export const STYLES = {
    HEAD_CELL: {
        textAlign: "center",
        fontWeight: "bold",
        lineHeight: "unset",
        ...COMMON_STYLES.FONT_DATA_GRID,
        ...COMMON_STYLES.BG_DATA_GRID_HEAD_CELL,
        ...COMMON_STYLES.BORDER_DATA_GRID_HEAD_CELL
    },
    HEAD_CELL_STACK: { justifyContent: "center" },
    DATA_CELL: isMarkRowHead => ({
        padding: "5px 5px",
        textAlign: "center",
        ...COMMON_STYLES.FONT_DATA_GRID,
        ...(isMarkRowHead
            ? { ...COMMON_STYLES.BG_DATA_GRID_DATA_CELL, ...COMMON_STYLES.BORDER_DATA_GRID_HEAD_CELL, fontWeight: "bold" }
            : COMMON_STYLES.BORDER_DATA_GRID_DATA_CELL)
    })
};

//-----------
//Тело модуля
//-----------

//Генерация представления ячейки c данными показателя раздела регламентированного отчета
export const confSctnMrkCellRender = ({ row, columnDef, onMarkAdd, onMarkUpdate, onMarkDelete, onMarkOpen, onMarkCnOpen, onMarkCnAdd }) => {
    //Считываем информацию о показателе
    const mark = {
        rn: row[columnDef.name]?.NRN,
        code: row[columnDef.name]?.SCODE,
        name: row[columnDef.name]?.SNAME,
        row: row[columnDef.name]?.NRRPROW,
        rowCode: row[columnDef.name]?.SRRPROW,
        rowVersion: row[columnDef.name]?.SRRPVERSION_ROW,
        column: row[columnDef.name]?.NRRPCOLUMN,
        columnCode: row[columnDef.name]?.SRRPCOLUMN,
        columnVersion: row[columnDef.name]?.SRRPVERSION_COLUMN,
        constitution: row[columnDef.name]?.CONSTITUTION
    };
    //Вернём представление ячейки
    return {
        cellStyle: STYLES.DATA_CELL(columnDef.name === "SROW_NAME"),
        data: columnDef.name != "SROW_NAME" && (
            <MarkCard
                mark={mark.rn}
                code={mark.code}
                name={mark.name}
                constitution={mark.constitution}
                onMarkAdd={() => onMarkAdd && onMarkAdd(mark.row, mark.column)}
                onMarkUpdate={() => onMarkUpdate && onMarkUpdate({ ...mark })}
                onMarkDelete={() => onMarkDelete && onMarkDelete(mark.rn)}
                onMarkOpen={() => onMarkOpen && onMarkOpen(mark.rn)}
                onMarkCnOpen={constitutionRn => onMarkCnOpen && onMarkCnOpen(mark.rn, constitutionRn)}
                onMarkCnAdd={() => onMarkCnAdd && onMarkCnAdd(mark.rn)}
            />
        )
    };
};

//Генерация представления ячейки заголовка таблицы показателей
export const confSctnMrkHeadCellRender = ({ columnDef, onAdd, onRefresh, onOrder, onHelp }) => {
    return {
        cellStyle: STYLES.HEAD_CELL,
        stackStyle: STYLES.HEAD_CELL_STACK,
        data:
            columnDef.name === "SROW_NAME" ? (
                <MarksToolbar onAdd={onAdd} onRefresh={onRefresh} onOrder={onOrder} onHelp={onHelp} />
            ) : (
                columnDef.caption
            )
    };
};
