Вызов клиенткой процедуры формирования карточки класса оборудования, кнопки вызова процедур загрузки и передачи файлов выгрузки
This commit is contained in:
parent
acd2b6978e
commit
1cb78fc446
@ -22,6 +22,7 @@ import {
|
|||||||
DS_RN_DEFAULT,
|
DS_RN_DEFAULT,
|
||||||
useEquipDataSelectionList,
|
useEquipDataSelectionList,
|
||||||
useEquipDataSelectionClassMachineList,
|
useEquipDataSelectionClassMachineList,
|
||||||
|
useEquipDataSelectionClassMachineCard,
|
||||||
useEquipDataSelectionClassMachineFilesList,
|
useEquipDataSelectionClassMachineFilesList,
|
||||||
useEquipDataSelectionClassMachineModelsList
|
useEquipDataSelectionClassMachineModelsList
|
||||||
} from "./admin_tab_hooks"; //Вспомогательные хуки
|
} from "./admin_tab_hooks"; //Вспомогательные хуки
|
||||||
@ -31,7 +32,13 @@ import {
|
|||||||
//---------
|
//---------
|
||||||
|
|
||||||
//Начальное состояние флагов обновления
|
//Начальное состояние флагов обновления
|
||||||
const REFRESH_INITIAL = { action: null, dataSelection: null, dataSelectionClassMachine: null, dataSelectionClassMachineFilesList: 0 };
|
const REFRESH_INITIAL = {
|
||||||
|
action: null,
|
||||||
|
dataSelection: null,
|
||||||
|
dataSelectionClassMachine: null,
|
||||||
|
dataSelectionClassMachineCard: 0,
|
||||||
|
dataSelectionClassMachineFilesList: 0
|
||||||
|
};
|
||||||
|
|
||||||
//Стили
|
//Стили
|
||||||
const STYLES = {
|
const STYLES = {
|
||||||
@ -69,6 +76,12 @@ const AdminTab = () => {
|
|||||||
//Загрузка классов оборудования выбранной выборки данных
|
//Загрузка классов оборудования выбранной выборки данных
|
||||||
const { equipDataSelectionClassMachineList } = useEquipDataSelectionClassMachineList(equipDataSelection, refresh.dataSelectionClassMachine);
|
const { equipDataSelectionClassMachineList } = useEquipDataSelectionClassMachineList(equipDataSelection, refresh.dataSelectionClassMachine);
|
||||||
|
|
||||||
|
//Загрузка карточки класса оборудования
|
||||||
|
const { equipDataSelectionClassMachineCard } = useEquipDataSelectionClassMachineCard(
|
||||||
|
equipDataSelectionClassMachine,
|
||||||
|
refresh.dataSelectionClassMachineCard
|
||||||
|
);
|
||||||
|
|
||||||
//Загрузка файлов класса оборудования
|
//Загрузка файлов класса оборудования
|
||||||
const { equipDataSelectionClassMachineFilesList } = useEquipDataSelectionClassMachineFilesList(
|
const { equipDataSelectionClassMachineFilesList } = useEquipDataSelectionClassMachineFilesList(
|
||||||
equipDataSelectionClassMachine,
|
equipDataSelectionClassMachine,
|
||||||
@ -112,9 +125,9 @@ const AdminTab = () => {
|
|||||||
const handleAddEquipDataSelectionClassMachine = () => setDialogs(pv => ({ ...pv, dataSelectionClassMachineIU: true }));
|
const handleAddEquipDataSelectionClassMachine = () => setDialogs(pv => ({ ...pv, dataSelectionClassMachineIU: true }));
|
||||||
|
|
||||||
//При нажатии на "Удалить класс оборудования"
|
//При нажатии на "Удалить класс оборудования"
|
||||||
const handleDeleteEquipDataSelectionClassMachine = async rn => {
|
const handleDeleteEquipDataSelectionClassMachine = async equipDSCM => {
|
||||||
await executeStored({ stored: "UDO_PKG_EQUIPDS.CM_DEL", args: { NRN: rn } });
|
await executeStored({ stored: "UDO_PKG_EQUIPDS.CM_DEL", args: { NRN: equipDSCM } });
|
||||||
setRefresh(pv => ({ ...pv, dataSelectionClassMachine: rn * 2, action: "DEL" }));
|
setRefresh(pv => ({ ...pv, dataSelectionClassMachine: equipDSCM * 2, action: "DEL" }));
|
||||||
setDataSelectionClassMachine(null);
|
setDataSelectionClassMachine(null);
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -142,15 +155,37 @@ const AdminTab = () => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
//При нажатии "Сформировать" в списке файлов карточки класса оборудования
|
//При нажатии "Сформировать" в списке файлов карточки класса оборудования
|
||||||
const handleMakeEquipDataSelectionClassMachineFiles = (rn, procedure) => {
|
const handleMakeEquipDataSelectionClassMachineFiles = (equipDSCM, procedure) => {
|
||||||
pOnlineUserProcedure({
|
pOnlineUserProcedure({
|
||||||
code: procedure,
|
code: procedure,
|
||||||
inputParameters: [{ name: "NEQUIPDSCM", value: rn }],
|
inputParameters: [{ name: "NEQUIPDSCM", value: equipDSCM }],
|
||||||
callBack: res =>
|
callBack: res =>
|
||||||
res.success ? setRefresh(pv => ({ ...pv, dataSelectionClassMachineFilesList: pv.dataSelectionClassMachineFilesList + 1 })) : null
|
res.success ? setRefresh(pv => ({ ...pv, dataSelectionClassMachineFilesList: pv.dataSelectionClassMachineFilesList + 1 })) : null
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
//При нажатии "Загрузить на сервер" в списке файлов карточки класса оборудования
|
||||||
|
const handleUploadEquipDataSelectionClassMachineFiles = async equipDSCM => {
|
||||||
|
await executeStored({
|
||||||
|
stored: "UDO_PKG_EQUIPDS.CMFL_UPLOAD",
|
||||||
|
args: {
|
||||||
|
NEQUIPDSCM: equipDSCM
|
||||||
|
}
|
||||||
|
});
|
||||||
|
setRefresh(pv => ({ ...pv, dataSelectionClassMachineFilesList: pv.dataSelectionClassMachineFilesList + 1 }));
|
||||||
|
};
|
||||||
|
|
||||||
|
//При нажатии "Передать внешней системе" в списке файлов карточки класса оборудования
|
||||||
|
const handleSendMdEquipDataSelectionClassMachineFiles = async equipDSCM => {
|
||||||
|
await executeStored({
|
||||||
|
stored: "UDO_PKG_EQUIPDS.CMFL_SEND_MD",
|
||||||
|
args: {
|
||||||
|
NEQUIPDSCM: equipDSCM
|
||||||
|
}
|
||||||
|
});
|
||||||
|
setRefresh(pv => ({ ...pv, dataSelectionClassMachineFilesList: pv.dataSelectionClassMachineFilesList + 1 }));
|
||||||
|
};
|
||||||
|
|
||||||
//При изменении списка выборок данных
|
//При изменении списка выборок данных
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (refresh.action == "INS" && refresh.dataSelection) {
|
if (refresh.action == "INS" && refresh.dataSelection) {
|
||||||
@ -209,11 +244,13 @@ const AdminTab = () => {
|
|||||||
</Grid>
|
</Grid>
|
||||||
<Grid item xs={10} hidden={equipDataSelectionClassMachine == null}>
|
<Grid item xs={10} hidden={equipDataSelectionClassMachine == null}>
|
||||||
<EquipDataSelectionClassMachineCard
|
<EquipDataSelectionClassMachineCard
|
||||||
card={{ NRN: equipDataSelectionClassMachine, SUSERPROCS_DATA: "ФормДанВыгрОбучМод" }}
|
card={equipDataSelectionClassMachineCard}
|
||||||
filesList={equipDataSelectionClassMachineFilesList}
|
filesList={equipDataSelectionClassMachineFilesList}
|
||||||
modelsList={equipDataSelectionClassMachineModelsList}
|
modelsList={equipDataSelectionClassMachineModelsList}
|
||||||
onCardDelete={handleDeleteEquipDataSelectionClassMachine}
|
onCardDelete={handleDeleteEquipDataSelectionClassMachine}
|
||||||
onClassMachineFilesMake={handleMakeEquipDataSelectionClassMachineFiles}
|
onClassMachineFilesMake={handleMakeEquipDataSelectionClassMachineFiles}
|
||||||
|
onClassMachineFilesUpload={handleUploadEquipDataSelectionClassMachineFiles}
|
||||||
|
onClassMachineFilesSendMd={handleSendMdEquipDataSelectionClassMachineFiles}
|
||||||
/>
|
/>
|
||||||
</Grid>
|
</Grid>
|
||||||
</Grid>
|
</Grid>
|
||||||
|
@ -98,6 +98,40 @@ const useEquipDataSelectionClassMachineList = (dataSelection, refresh) => {
|
|||||||
return { equipDataSelectionClassMachineList: data, equipDataSelectionClassMachineListIsLoading: isLoading };
|
return { equipDataSelectionClassMachineList: data, equipDataSelectionClassMachineListIsLoading: isLoading };
|
||||||
};
|
};
|
||||||
|
|
||||||
|
//Загрузка карточки класса оборудования
|
||||||
|
const useEquipDataSelectionClassMachineCard = (classMachine, refresh) => {
|
||||||
|
//Собственное состояние - флаг загрузки
|
||||||
|
const [isLoading, setLoading] = useState(false);
|
||||||
|
|
||||||
|
//Собственное состояние - данные карточки
|
||||||
|
const [data, setData] = useState({});
|
||||||
|
|
||||||
|
//Подключение к контексту взаимодействия с сервером
|
||||||
|
const { executeStored } = useContext(BackEndСtx);
|
||||||
|
|
||||||
|
//Загрузка данных при изменении зависимостей
|
||||||
|
useEffect(() => {
|
||||||
|
const loadData = async () => {
|
||||||
|
try {
|
||||||
|
setLoading(true);
|
||||||
|
const data = await executeStored({
|
||||||
|
stored: "UDO_PKG_EQUIPDS.CM_CARD",
|
||||||
|
args: { NEQUIPDSCM: classMachine },
|
||||||
|
respArg: "COUT",
|
||||||
|
loader: false
|
||||||
|
});
|
||||||
|
setData(data.XEQUIPDSCM);
|
||||||
|
} finally {
|
||||||
|
setLoading(false);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
if (classMachine) loadData();
|
||||||
|
}, [classMachine, refresh, executeStored]);
|
||||||
|
|
||||||
|
//Вернём данные
|
||||||
|
return { equipDataSelectionClassMachineCard: data, equipDataSelectionClassMachineCardIsLoading: isLoading };
|
||||||
|
};
|
||||||
|
|
||||||
//Загрузка списка файлов класса оборудования
|
//Загрузка списка файлов класса оборудования
|
||||||
const useEquipDataSelectionClassMachineFilesList = (classMachine, refresh) => {
|
const useEquipDataSelectionClassMachineFilesList = (classMachine, refresh) => {
|
||||||
//Собственное состояние - флаг загрузки
|
//Собственное состояние - флаг загрузки
|
||||||
@ -192,6 +226,7 @@ export {
|
|||||||
DS_RN_DEFAULT,
|
DS_RN_DEFAULT,
|
||||||
useEquipDataSelectionList,
|
useEquipDataSelectionList,
|
||||||
useEquipDataSelectionClassMachineList,
|
useEquipDataSelectionClassMachineList,
|
||||||
|
useEquipDataSelectionClassMachineCard,
|
||||||
useEquipDataSelectionClassMachineFilesList,
|
useEquipDataSelectionClassMachineFilesList,
|
||||||
useEquipDataSelectionClassMachineModelsList
|
useEquipDataSelectionClassMachineModelsList
|
||||||
};
|
};
|
||||||
|
@ -84,7 +84,19 @@ const STYLES = {
|
|||||||
FL_ML_TABLE: {
|
FL_ML_TABLE: {
|
||||||
height: `200px`,
|
height: `200px`,
|
||||||
...SCROLL_STYLES
|
...SCROLL_STYLES
|
||||||
}
|
},
|
||||||
|
EXTRA_CAPTION_BUTTON_CONTAINER: (theme, maxWidth) => ({
|
||||||
|
borderWidth: "1px",
|
||||||
|
borderStyle: "solid",
|
||||||
|
borderColor: theme.palette.grey[400],
|
||||||
|
maxWidth,
|
||||||
|
borderRadius: theme.shape.borderRadius,
|
||||||
|
paddingLeft: "10px",
|
||||||
|
paddingRight: "10px",
|
||||||
|
paddingTop: "2px",
|
||||||
|
paddingBottom: "2px"
|
||||||
|
}),
|
||||||
|
EXTRA_CAPTION_BUTTON_TITLE: { whiteSpace: "nowrap", textOverflow: "ellipsis", overflow: "hidden" }
|
||||||
};
|
};
|
||||||
|
|
||||||
//------------------------------------
|
//------------------------------------
|
||||||
@ -145,6 +157,78 @@ IUDFormTextField.propTypes = {
|
|||||||
dictionary: PropTypes.func
|
dictionary: PropTypes.func
|
||||||
};
|
};
|
||||||
|
|
||||||
|
//Кнопка с дополнительной подписью
|
||||||
|
const ExtraCaptionButton = ({ caption, title, subtitle, maxWidth, onClick, theme }) => {
|
||||||
|
//При нажатии на кнопку
|
||||||
|
const handleClick = () => (onClick ? onClick() : null);
|
||||||
|
|
||||||
|
//Генерация содержимого
|
||||||
|
return (
|
||||||
|
<Stack sx={STYLES.EXTRA_CAPTION_BUTTON_CONTAINER(theme, maxWidth)}>
|
||||||
|
<Button onClick={handleClick}>{caption}</Button>
|
||||||
|
<Typography variant="caption" color="text.secondary" sx={STYLES.EXTRA_CAPTION_BUTTON_TITLE} title={subtitle}>
|
||||||
|
<b>{title}</b> {subtitle}
|
||||||
|
</Typography>
|
||||||
|
</Stack>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
//Контроль свойств - Кнопка с дополнительной подписью
|
||||||
|
ExtraCaptionButton.propTypes = {
|
||||||
|
caption: PropTypes.string.isRequired,
|
||||||
|
title: PropTypes.string.isRequired,
|
||||||
|
subtitle: PropTypes.string.isRequired,
|
||||||
|
maxWidth: PropTypes.string,
|
||||||
|
onClick: PropTypes.func,
|
||||||
|
theme: PropTypes.object.isRequired
|
||||||
|
};
|
||||||
|
|
||||||
|
//Формирование значения для колонки "Состояние" файла класса оборудования выборки данных
|
||||||
|
const formatFileStateValue = (theme, value, err) => {
|
||||||
|
const [text, icon, color] =
|
||||||
|
value == 0
|
||||||
|
? ["Зарегистрирован", "app_registration", null]
|
||||||
|
: value == 1
|
||||||
|
? ["Загружается на сервер", "file_upload", theme.palette.warning.main]
|
||||||
|
: value == 2
|
||||||
|
? ["Успешно загружен на сервер", "dns", theme.palette.primary.main]
|
||||||
|
: value == 3
|
||||||
|
? [`Ошибка загрузки на сервер: ${err}`, "error", theme.palette.error.main]
|
||||||
|
: value == 4
|
||||||
|
? ["Загружается во внешнюю систему", "cloud_upload", theme.palette.warning.main]
|
||||||
|
: value == 5
|
||||||
|
? ["Успешно передан внешней системе", "cloud_done", theme.palette.success.main]
|
||||||
|
: [`Ошибка передачи внешней системе: ${err}`, "error", theme.palette.error.main];
|
||||||
|
return (
|
||||||
|
<Stack direction="row" gap={0.5} alignItems="center" justifyContent="left" color={color}>
|
||||||
|
<Icon title={text}>{icon}</Icon>
|
||||||
|
{text}
|
||||||
|
</Stack>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
//Форматирование колонок таблицы файлов класса оборудования выборки данных
|
||||||
|
const filesListDataCellRender = ({ row, columnDef, theme }) => {
|
||||||
|
switch (columnDef.name) {
|
||||||
|
case "NSTATUS":
|
||||||
|
return {
|
||||||
|
cellProps: { align: "left" },
|
||||||
|
data: formatFileStateValue(theme, row.NSTATUS, row.SERR)
|
||||||
|
};
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
//Форматирование ячеек заголовка таблиц файлов и моделей класса оборудования выборки данных
|
||||||
|
const classMachineCardTableHeadCellRender = ({ columnDef }) => {
|
||||||
|
switch (columnDef.name) {
|
||||||
|
case "NSTATUS":
|
||||||
|
return {
|
||||||
|
stackProps: { justifyContent: "left" },
|
||||||
|
cellProps: { align: "left" }
|
||||||
|
};
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
//-----------
|
//-----------
|
||||||
//Тело модуля
|
//Тело модуля
|
||||||
//-----------
|
//-----------
|
||||||
@ -371,7 +455,15 @@ EquipDataSelectionClassMachineList.propTypes = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
//Карточка класса оборудования выборки данных
|
//Карточка класса оборудования выборки данных
|
||||||
const EquipDataSelectionClassMachineCard = ({ card, filesList, modelsList, onCardDelete, onClassMachineFilesMake }) => {
|
const EquipDataSelectionClassMachineCard = ({
|
||||||
|
card,
|
||||||
|
filesList,
|
||||||
|
modelsList,
|
||||||
|
onCardDelete,
|
||||||
|
onClassMachineFilesMake,
|
||||||
|
onClassMachineFilesUpload,
|
||||||
|
onClassMachineFilesSendMd
|
||||||
|
}) => {
|
||||||
//Подключаемся к теме
|
//Подключаемся к теме
|
||||||
const theme = useTheme();
|
const theme = useTheme();
|
||||||
|
|
||||||
@ -381,72 +473,98 @@ const EquipDataSelectionClassMachineCard = ({ card, filesList, modelsList, onCar
|
|||||||
//При нажатии на "Сформировать" для файлов данных
|
//При нажатии на "Сформировать" для файлов данных
|
||||||
const handleClassMachineFilesMakeClick = () => (onClassMachineFilesMake ? onClassMachineFilesMake(card.NRN, card.SUSERPROCS_DATA) : null);
|
const handleClassMachineFilesMakeClick = () => (onClassMachineFilesMake ? onClassMachineFilesMake(card.NRN, card.SUSERPROCS_DATA) : null);
|
||||||
|
|
||||||
|
//При нажатии на "Загрузить на сервер" для файлов данных
|
||||||
|
const handleClassMachineFilesUploadClick = () => (onClassMachineFilesUpload ? onClassMachineFilesUpload(card.NRN) : null);
|
||||||
|
|
||||||
|
//При нажатии на "Загрузить на сервер" для файлов данных
|
||||||
|
const handleClassMachineFilesSendMdClick = () => (onClassMachineFilesSendMd ? onClassMachineFilesSendMd(card.NRN) : null);
|
||||||
|
|
||||||
//Генерация содержимого
|
//Генерация содержимого
|
||||||
return (
|
return (
|
||||||
<Box p={2} sx={STYLES.EQUIP_DSCM_CARD}>
|
<Box p={2} sx={STYLES.EQUIP_DSCM_CARD}>
|
||||||
<Stack spacing={2}>
|
{card.NRN ? (
|
||||||
<Card>
|
<Stack spacing={2}>
|
||||||
<CardContent>
|
<Stack spacing={2} direction={"row"} alignItems={"center"}>
|
||||||
<Stack spacing={2} direction={"row"} alignItems={"center"}>
|
<Typography variant="h5" component="div">
|
||||||
<Typography variant="h5" component="div">
|
{card.SNAME}
|
||||||
Наименование технического объекта
|
|
||||||
</Typography>
|
|
||||||
<IconButton onClick={handleCardDeleteClick}>
|
|
||||||
<Icon>delete</Icon>
|
|
||||||
</IconButton>
|
|
||||||
</Stack>
|
|
||||||
<Typography sx={{ mb: 1.5 }} color="text.secondary">
|
|
||||||
Состояние: готов к ...
|
|
||||||
</Typography>
|
</Typography>
|
||||||
<Typography variant="body2">фывафывафва</Typography>
|
<IconButton onClick={handleCardDeleteClick}>
|
||||||
</CardContent>
|
<Icon>delete</Icon>
|
||||||
</Card>
|
</IconButton>
|
||||||
<Card>
|
</Stack>
|
||||||
<CardContent>
|
<Card elevation={6}>
|
||||||
<Stack spacing={2} direction={"row"} alignItems={"center"}>
|
<CardContent>
|
||||||
<Typography variant="h6" component="div">
|
<Stack spacing={2} direction={"row"} alignItems={"center"}>
|
||||||
Файлы данных
|
<Typography variant="h6" component="div">
|
||||||
</Typography>
|
Файлы данных
|
||||||
<Button onClick={handleClassMachineFilesMakeClick}>Сформировать</Button>
|
</Typography>
|
||||||
</Stack>
|
<ExtraCaptionButton
|
||||||
<P8PDataGrid
|
caption="Сформировать"
|
||||||
{...{ ...P8P_DATA_GRID_CONFIG_PROPS }}
|
title="ПП:"
|
||||||
containerComponentProps={{
|
subtitle={card.SUSERPROCS_DATA}
|
||||||
sx: STYLES.FL_ML_TABLE,
|
maxWidth="150px"
|
||||||
elevation: 0
|
onClick={handleClassMachineFilesMakeClick}
|
||||||
}}
|
theme={theme}
|
||||||
columnsDef={filesList.columnsDef}
|
/>
|
||||||
rows={filesList.rows}
|
<ExtraCaptionButton
|
||||||
size={P8P_DATA_GRID_SIZE.SMALL}
|
caption="Загрузить на сервер"
|
||||||
morePages={false}
|
title="СО:"
|
||||||
fixedHeader={true}
|
subtitle={card.SEXSSERVICE_UPLOAD}
|
||||||
reloading={false}
|
maxWidth="210px"
|
||||||
headCellRender={filesListHeadCellRender}
|
onClick={handleClassMachineFilesUploadClick}
|
||||||
dataCellRender={prms => filesListDataCellRender({ ...prms, theme })}
|
theme={theme}
|
||||||
/>
|
/>
|
||||||
</CardContent>
|
<ExtraCaptionButton
|
||||||
</Card>
|
caption="Передать внешней системе"
|
||||||
<Card>
|
title="СО:"
|
||||||
<CardContent>
|
subtitle={card.SEXSSERVICE_SEND_MD}
|
||||||
<Typography variant="h6" component="div">
|
maxWidth="260px"
|
||||||
Модели
|
onClick={handleClassMachineFilesSendMdClick}
|
||||||
</Typography>
|
theme={theme}
|
||||||
<P8PDataGrid
|
/>
|
||||||
{...{ ...P8P_DATA_GRID_CONFIG_PROPS }}
|
</Stack>
|
||||||
containerComponentProps={{
|
<P8PDataGrid
|
||||||
sx: STYLES.FL_ML_TABLE,
|
{...{ ...P8P_DATA_GRID_CONFIG_PROPS }}
|
||||||
elevation: 0
|
containerComponentProps={{
|
||||||
}}
|
sx: STYLES.FL_ML_TABLE,
|
||||||
columnsDef={modelsList.columnsDef}
|
elevation: 0
|
||||||
rows={modelsList.rows}
|
}}
|
||||||
size={P8P_DATA_GRID_SIZE.SMALL}
|
columnsDef={filesList.columnsDef}
|
||||||
morePages={false}
|
rows={filesList.rows}
|
||||||
fixedHeader={true}
|
size={P8P_DATA_GRID_SIZE.SMALL}
|
||||||
reloading={false}
|
morePages={false}
|
||||||
/>
|
fixedHeader={true}
|
||||||
</CardContent>
|
reloading={false}
|
||||||
</Card>
|
headCellRender={classMachineCardTableHeadCellRender}
|
||||||
</Stack>
|
dataCellRender={prms => filesListDataCellRender({ ...prms, theme })}
|
||||||
|
/>
|
||||||
|
</CardContent>
|
||||||
|
</Card>
|
||||||
|
<Card elevation={6}>
|
||||||
|
<CardContent>
|
||||||
|
<Stack spacing={2} direction={"row"} alignItems={"center"}>
|
||||||
|
<Typography variant="h6" component="div">
|
||||||
|
Модели
|
||||||
|
</Typography>
|
||||||
|
</Stack>
|
||||||
|
<P8PDataGrid
|
||||||
|
{...{ ...P8P_DATA_GRID_CONFIG_PROPS }}
|
||||||
|
containerComponentProps={{
|
||||||
|
sx: STYLES.FL_ML_TABLE,
|
||||||
|
elevation: 0
|
||||||
|
}}
|
||||||
|
columnsDef={modelsList.columnsDef}
|
||||||
|
rows={modelsList.rows}
|
||||||
|
size={P8P_DATA_GRID_SIZE.SMALL}
|
||||||
|
morePages={false}
|
||||||
|
fixedHeader={true}
|
||||||
|
reloading={false}
|
||||||
|
headCellRender={classMachineCardTableHeadCellRender}
|
||||||
|
/>
|
||||||
|
</CardContent>
|
||||||
|
</Card>
|
||||||
|
</Stack>
|
||||||
|
) : null}
|
||||||
</Box>
|
</Box>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
@ -457,53 +575,9 @@ EquipDataSelectionClassMachineCard.propTypes = {
|
|||||||
filesList: PropTypes.object.isRequired,
|
filesList: PropTypes.object.isRequired,
|
||||||
modelsList: PropTypes.object.isRequired,
|
modelsList: PropTypes.object.isRequired,
|
||||||
onCardDelete: PropTypes.func,
|
onCardDelete: PropTypes.func,
|
||||||
onClassMachineFilesMake: PropTypes.func
|
onClassMachineFilesMake: PropTypes.func,
|
||||||
};
|
onClassMachineFilesUpload: PropTypes.func,
|
||||||
|
onClassMachineFilesSendMd: PropTypes.func
|
||||||
//Формирование значения для колонки "Состояние" проекта
|
|
||||||
const formatFileStateValue = (theme, value, err) => {
|
|
||||||
const [text, icon, color] =
|
|
||||||
value == 0
|
|
||||||
? ["Зарегистрирован", "app_registration", null]
|
|
||||||
: value == 1
|
|
||||||
? ["Загружается на сервер", "file_upload", theme.palette.warning.main]
|
|
||||||
: value == 2
|
|
||||||
? ["Успешно загружен на сервер", "dns", theme.palette.primary.main]
|
|
||||||
: value == 3
|
|
||||||
? [`Ошибка загрузки на сервер: ${err}`, "error", theme.palette.error.main]
|
|
||||||
: value == 4
|
|
||||||
? ["Загружается во внешнюю систему", "cloud_upload", theme.palette.warning.main]
|
|
||||||
: value == 5
|
|
||||||
? ["Успешно загружен во внешнюю систему", "cloud_done", theme.palette.success.main]
|
|
||||||
: [`Ошибка загрузки во внешнюю систему: ${err}`, "error", theme.palette.error.main];
|
|
||||||
return (
|
|
||||||
<Stack direction="row" gap={0.5} alignItems="center" justifyContent="left" color={color}>
|
|
||||||
<Icon title={text}>{icon}</Icon>
|
|
||||||
{text}
|
|
||||||
</Stack>
|
|
||||||
);
|
|
||||||
};
|
|
||||||
|
|
||||||
//Форматирование колонок таблицы файлов класса оборудования выборки данных
|
|
||||||
const filesListDataCellRender = ({ row, columnDef, theme }) => {
|
|
||||||
switch (columnDef.name) {
|
|
||||||
case "NSTATUS":
|
|
||||||
return {
|
|
||||||
cellProps: { align: "left" },
|
|
||||||
data: formatFileStateValue(theme, row.NSTATUS, row.SERR)
|
|
||||||
};
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
//Генерация представления ячейки заголовка
|
|
||||||
const filesListHeadCellRender = ({ columnDef }) => {
|
|
||||||
switch (columnDef.name) {
|
|
||||||
case "NSTATUS":
|
|
||||||
return {
|
|
||||||
stackProps: { justifyContent: "left" },
|
|
||||||
cellProps: { align: "left" }
|
|
||||||
};
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
//----------------
|
//----------------
|
||||||
|
Loading…
x
Reference in New Issue
Block a user