/*
    Парус 8 - Панели мониторинга - ПУП - Информация о проектах
    Список проектов: дополнительная разметка и вёрстка клиентских элементов
*/

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

import React from "react"; //Классы React
import { Icon, Stack, Paper, Link } from "@mui/material"; //Интерфейсные элементы
import { P8P_DATA_GRID_MORE_HEIGHT } from "../../components/p8p_data_grid"; //Таблица данных
import { APP_BAR_HEIGHT } from "../../components/p8p_app_workspace"; //Заголовок страницы
import { APP_STYLES } from "../../../app.styles"; //Типовые стили
import { COMMON_STYLES, formatCostStatusValue, formatCostReadyValue } from "./layouts"; //Общие стили и разметка панели
import { Stages } from "./stages"; //Компонент "Этапы проекта"

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

//Высота фильтра (пиксели)
const FILTER_HEIGHT = "60px";

//Стили
const STYLES = {
    DATA_GRID_CONTAINER: morePages => ({
        height: `calc(100vh - ${APP_BAR_HEIGHT} - ${FILTER_HEIGHT} - ${morePages ? P8P_DATA_GRID_MORE_HEIGHT : "0px"} - 8px)`,
        ...APP_STYLES.SCROLL
    })
};

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

//Формирование значения для колонки "Состояние" проекта
const formatPrjStateValue = value => {
    const [text, icon] =
        value == 0
            ? ["Зарегистрирован", "app_registration"]
            : value == 1
            ? ["Открыт", "lock_open"]
            : value == 2
            ? ["Остановлен", "do_not_disturb_on"]
            : value == 3
            ? ["Закрыт", "lock_outline"]
            : value == 4
            ? ["Согласован", "thumb_up_alt"]
            : ["Исполнение прекращено", "block"];
    return (
        <Stack direction="row" gap={0.5} alignItems="center" justifyContent="center">
            <Icon title={text} sx={COMMON_STYLES.STATE(value)}>
                {icon}
            </Icon>
        </Stack>
    );
};

//Форматирование ячеек таблицы "Проекты"
const projectDataCellRender = ({ row, columnDef, showProject }) => {
    //Формирование представлений
    switch (columnDef.name) {
        case "NCOST_STATUS":
            return { cellProps: { align: "center" }, data: formatCostStatusValue({ value: row[columnDef.name] }) };
        case "NCOST_READY":
            return { cellProps: { align: "center" }, data: formatCostReadyValue(row[columnDef.name]) };
        case "NSTATE":
            return { cellProps: { align: "center" }, data: formatPrjStateValue(row[columnDef.name]) };
        case "SCODE":
            return {
                data: (
                    <Link component="button" align="left" underline="hover" onClick={() => showProject(row["NRN"])}>
                        {row[columnDef.name]}
                    </Link>
                )
            };
        default:
            return { data: row[columnDef.name] };
    }
};

//Генерация представления расширения строки таблицы "Проектов"
const projectRowExpandRender = ({ row }) => {
    return (
        <Paper elevation={6}>
            <Stages projectRn={row.NRN} projectCode={row.SCODE} />
        </Paper>
    );
};

//----------------
//Интерфейс модуля
//----------------

export { STYLES as PROJECTS_STYLES, projectDataCellRender, projectRowExpandRender };
