136 lines
5.1 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
Парус 8 - Панели мониторинга - ТОиР - Гаражка
Дополнительная разметка и вёрстка клиентских элементов
*/
//---------------------
//Подключение библиотек
//---------------------
import React from "react"; //Классы React
import { Icon, Stack, Link, Typography } from "@mui/material"; //Интерфейсные компоненты
import { hasValue, formatDateRF } from "../../core/utils"; //Вспомогательные функции
//---------
//Константы
//---------
//Маска разделителя
const SMASK_SEPARATE = "<|>";
//-----------
//Тело модуля
//-----------
//Формирование значения для колонки "Состояние"
const formatStateValue = (value, addText = false) => {
const [text, icon] =
value == 0
? ["На линии", "done"]
: value == 1
? ["Ремонт", "build"]
: value == 2
? ["Есть повреждения", "construction"]
: ["Не определен", "question_mark"];
return (
<Stack direction="row" gap={0.5} alignItems="center" justifyContent="center">
<Icon title={text}>{icon}</Icon>
{addText == true ? text : null}
</Stack>
);
};
//Формирование списка значений
const formatListValue = value => {
//Считываем массив значений
const listValues = hasValue(value) ? value.split(SMASK_SEPARATE) : [];
//Формируем список значений
return (
<>
{listValues.length !== 0 ? (
<Stack direction="column" gap={0.5} alignItems="flex-start" justifyContent="center">
{listValues.map((el, index) => {
return <Typography variant="body2" key={index}>{`${el}`}</Typography>;
})}
</Stack>
) : null}
</>
);
};
//Формирование значения для колонки "Документ ремонта"
const formatRepairDocValue = (value, onRepairSheetOpen) => {
//Считываем массив документов
const listDocs = hasValue(value) ? value.split(SMASK_SEPARATE) : [];
//Формируем список документов с ссылкой
return (
<>
{listDocs.length !== 0 ? (
<Stack direction="column" gap={0.5} alignItems="flex-start" justifyContent="center">
{listDocs.map((el, index) => {
//Считываем рег. номер
const rn = el.match(/<(.*?)>/)[1];
//Считываем информацию о документе
const docInfo = el.replace(`<${rn}>`, "");
//Формируем ссылку на документ
return (
<Link
component="button"
align="left"
variant="body2"
underline="hover"
onClick={() => onRepairSheetOpen({ nRn: rn })}
key={index}
>
{docInfo}
</Link>
);
})}
</Stack>
) : null}
</>
);
};
//Формирование значения для колонки "Гос. Номер Тягача"
const formatStateNumbTGValue = (row, columnDef, showHaulerUnitsCards) => {
return (
<Link component="button" variant="body2" align="left" underline="hover" onClick={() => showHaulerUnitsCards({ nRn: row["NRN"] })}>
{row[columnDef.name]}
</Link>
);
};
//Генерация представления ячейки c данными
export const dataCellRender = ({ row, columnDef, showHaulerUnitsCards }) => {
switch (columnDef.name) {
case "SSTATE_NUMB_TG":
return { data: formatStateNumbTGValue(row, columnDef, showHaulerUnitsCards) };
}
};
//Форматирование значений колонок
export const valueFormatter = ({ value, columnDef, onRepairSheetOpen }) => {
switch (columnDef.name) {
case "NSTATE":
return formatStateValue(value, false);
case "SDAMTYPE_NAME":
return formatListValue(value);
case "SEQDAMCTRL_NOTE":
return formatListValue(value);
case "SDRIVER":
return formatListValue(value);
case "SREPAIR_DOC":
return formatRepairDocValue(value, onRepairSheetOpen);
}
return value;
};
//Форматирование фильтров панелей для фильтров таблицы
export const formatFilterValues = filter => {
return [
{ name: "DDATE", from: formatDateRF(filter.dDate), to: formatDateRF(filter.dDate) },
{ name: "SCUSTOMERDEPT_FILTER", from: filter.sCustomerDept, to: "" }
];
};