Dollerino 261f2cf490 init
2026-04-02 13:44:02 +03:00

112 lines
4.3 KiB
JavaScript
Raw 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"] : ["Не определен", "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}
</>
);
};
//Форматирование значений колонок
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: "" }
];
};