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

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

import React from "react"; //Классы React
import { Icon, Stack, Link, IconButton } from "@mui/material"; //Интерфейсные компоненты
import { formatDateRF } from "../../core/utils"; //Вспомогательные функции

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

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

//Формирование значения для колонки "Состояние"
const formatStateValue = (value, addText = false) => {
    const [text, icon] =
        value == 0
            ? ["Не утвержден", "clear"]
            : value == 2
              ? ["Утвержден", "done"]
              : value == 3
                ? ["Закрыт", "lock_outlined"]
                : ["Не определен", "question_mark"];
    return (
        <Stack direction="row" gap={0.5} alignItems="center" justifyContent="center">
            <Icon title={text}>{icon}</Icon>
            {addText == true ? text : null}
        </Stack>
    );
};

//Формирование значения для колонки "Номер документа"
const formatNumbValue = (row, columnDef, showEquipRepairSheets) => {
    return (
        <Link component="button" variant="body2" align="left" underline="hover" onClick={() => showEquipRepairSheets({ nRn: row["NRN"] })}>
            {row[columnDef.name]}
        </Link>
    );
};

//Формирование значения для колонки "Присоединенные документы"
const formatFileLinksValue = (row, columnDef, showFileLinks) => {
    return (
        <>
            {row["NFILELINKS"] == 1 ? (
                <Stack direction="row" gap={0.5} alignItems="center" justifyContent="center">
                    <IconButton onClick={() => showFileLinks({ nRn: row["NRN"] })}>
                        <Icon>launch</Icon>
                    </IconButton>
                </Stack>
            ) : null}
        </>
    );
};

//Генерация представления ячейки c данными
export const dataCellRender = ({ row, columnDef, showEquipRepairSheets, showFileLinks }) => {
    switch (columnDef.name) {
        case "SNUMB":
            return { data: formatNumbValue(row, columnDef, showEquipRepairSheets) };
        case "NFILELINKS":
            return { data: formatFileLinksValue(row, columnDef, showFileLinks) };
    }
};

//Форматирование значений колонок
export const valueFormatter = ({ value, columnDef }) => {
    switch (columnDef.name) {
        case "NSTATE":
            return formatStateValue(value, false);
    }
    return value;
};

//Форматирование фильтров панелей для фильтров таблицы
export const formatFilterValues = filter => {
    return [
        { name: "DDATEBEGIN_FILTER", from: formatDateRF(filter.dDateBegin), to: formatDateRF(filter.dDateEnd) },
        { name: "SCUSTOMERDEPT_FILTER", from: filter.sCustomerDept, to: "" },
        { name: "SWORKTYPE_FILTER", from: filter.sWorkType, to: "" },
        { name: "SWORKKIND_FILTER", from: filter.sWorkKind, to: "" },
        { name: "SEQCONFIG_FILTER", from: filter.sEqconfig, to: "" },
        { name: "NSTATE_FILTER", from: filter.nState, to: "" },
        { name: "NTYPESPEND_FILTER", from: filter.nType, to: "" }
    ];
};
