/*
    Парус 8 - Панели мониторинга - ПУП - Экономика проектов
    Дополнительная разметка и вёрстка клиентских элементов
*/
//---------------------
//Подключение библиотек
//---------------------
import React from "react"; //Классы React
import { Icon, Stack, Link } from "@mui/material"; //Интерфейсные компоненты
import { formatDateRF } from "../../core/utils"; //Вспомогательные функции
//-----------
//Тело модуля
//-----------
//Формирование значения для колонки "Состояние" этапа
const formatStageStatusValue = value => {
    const [text, icon] =
        value == 0
            ? ["Зарегистрирован", "app_registration"]
            : value == 1
            ? ["Открыт", "lock_open"]
            : value == 2
            ? ["Закрыт", "lock_outline"]
            : value == 3
            ? ["Согласован", "thumb_up_alt"]
            : value == 4
            ? ["Исполнение прекращено", "block"]
            : ["Остановлен", "do_not_disturb_on"];
    return (
        
            {icon}
            {text}
        
    );
};
//Формирование значения для колонки "Состояние" работы
const formatJobStatusValue = (value, addText = false, justifyContent = null) => {
    const [text, icon] =
        value == 0
            ? ["Не начата", "not_started"]
            : value == 1
            ? ["Выполняется", "loop"]
            : value == 2
            ? ["Выполнена", "task_alt"]
            : value == 3
            ? ["Остановлена", "do_not_disturb_on"]
            : ["Отменена", "cancel"];
    return (
        
            {icon}
            {addText == true ? text : null}
        
    );
};
//Генерация кастомных представлений атрибутов задачи в редакторе
export const taskAttributeRenderer = ({ task, attribute }) => {
    switch (attribute.name) {
        case "type":
            return task.type === 1 ? "Этап проекта" : "Работа проекта";
        case "state":
            return task.type === 1 ? formatStageStatusValue(task[attribute.name]) : formatJobStatusValue(task[attribute.name], true);
        default:
            return null;
    }
};
//Форматирование значений колонок в таблице детализации трудоёмкости по графику
export const planJobsDtlValueFormatter = ({ value, columnDef }) => {
    switch (columnDef.name) {
        case "NJOB_STATE":
            return formatJobStatusValue(value, false, "center");
        case "DJOB_BEG":
        case "DJOB_END":
            return formatDateRF(value);
    }
    return value;
};
//Генерация представления ячейки заголовка в таблице детализации трудоёмкости по графику
export const planJobsDtlHeadCellRender = ({ columnDef }) => {
    switch (columnDef.name) {
        case "NJOB_STATE":
            return {
                stackProps: { justifyContent: "center" },
                cellProps: { align: "center" }
            };
    }
};
//Генерация представления ячейки c данными в таблице детализации трудоёмкости по графику
export const planJobsDtlDataCellRender = ({ row, columnDef, onProjectClick }) => {
    switch (columnDef.name) {
        case "SPRJ":
            return {
                data: row[columnDef.name] ? (
                     (onProjectClick ? onProjectClick({ sender: row }) : null)}
                    >
                        {row[columnDef.name]}
                    
                ) : (
                    row[columnDef.name]
                )
            };
    }
};
//Форматирование значений колонок в таблице детализации трудоёмкости по отчетам
export const factRptDtlValueFormatter = ({ value, columnDef }) => {
    switch (columnDef.name) {
        case "NJOB_STATE":
            return formatJobStatusValue(value, false, "center");
        case "DJOB_BEG":
        case "DJOB_END":
            return formatDateRF(value);
    }
    return value;
};
//Генерация представления ячейки заголовка в таблице детализации трудоёмкости по отчетам
export const factRptDtlHeadCellRender = ({ columnDef }) => {
    switch (columnDef.name) {
        case "NJOB_STATE":
            return {
                stackProps: { justifyContent: "center" },
                cellProps: { align: "center" }
            };
    }
};
//Генерация представления ячейки c данными в таблице периодов балансировки
export const periodsDataCellRender = ({ row, columnDef, onLabPlanFOTClick, onLabFactRptClick, onLabPlanJobsClick }) => {
    switch (columnDef.name) {
        case "NLAB_PLAN_FOT":
        case "NLAB_FACT_RPT":
        case "NLAB_PLAN_JOBS":
            return {
                data: row[columnDef.name] ? (
                    
                            columnDef.name === "NLAB_PLAN_FOT"
                                ? onLabPlanFOTClick
                                    ? onLabPlanFOTClick({ sender: row })
                                    : null
                                : columnDef.name === "NLAB_FACT_RPT"
                                ? onLabFactRptClick
                                    ? onLabFactRptClick({ sender: row })
                                    : null
                                : columnDef.name === "NLAB_PLAN_JOBS"
                                ? onLabPlanJobsClick
                                    ? onLabPlanJobsClick({ sender: row })
                                    : null
                                : null
                        }
                    >
                        {row[columnDef.name]}
                    
                ) : (
                    row[columnDef.name]
                )
            };
        case "NLAB_DIFF_RPT_FOT":
            return { data: 
{row[columnDef.name]}
 };
        case "NLAB_DIFF_JOBS_FOT":
            return {
                data: (
                    
                        {row[columnDef.name]}
                        {row[columnDef.name] <= 0 ? "done" : "error"}
                    
                )
            };
    }
};