/*
Парус 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 (
{icon}
{addText == true ? text : null}
);
};
//Формирование списка значений
const formatListValue = value => {
//Считываем массив значений
const listValues = hasValue(value) ? value.split(SMASK_SEPARATE) : [];
//Формируем список значений
return (
<>
{listValues.length !== 0 ? (
{listValues.map((el, index) => {
return {`${el}`};
})}
) : null}
>
);
};
//Формирование значения для колонки "Документ ремонта"
const formatRepairDocValue = (value, onRepairSheetOpen) => {
//Считываем массив документов
const listDocs = hasValue(value) ? value.split(SMASK_SEPARATE) : [];
//Формируем список документов с ссылкой
return (
<>
{listDocs.length !== 0 ? (
{listDocs.map((el, index) => {
//Считываем рег. номер
const rn = el.match(/<(.*?)>/)[1];
//Считываем информацию о документе
const docInfo = el.replace(`<${rn}>`, "");
//Формируем ссылку на документ
return (
onRepairSheetOpen({ nRn: rn })}
key={index}
>
{docInfo}
);
})}
) : null}
>
);
};
//Формирование значения для колонки "Гос. Номер Тягача"
const formatStateNumbTGValue = (row, columnDef, showHaulerUnitsCards) => {
return (
showHaulerUnitsCards({ nRn: row["NRN"] })}>
{row[columnDef.name]}
);
};
//Генерация представления ячейки 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: "" }
];
};