forked from CITKParus/P8-Panels
68 lines
2.3 KiB
JavaScript
68 lines
2.3 KiB
JavaScript
/*
|
|
Парус 8 - Панели мониторинга - Редактор панелей
|
|
Общие компоненты представлений элементов панели
|
|
*/
|
|
|
|
//---------------------
|
|
//Подключение библиотек
|
|
//---------------------
|
|
|
|
import React from "react"; //Классы React
|
|
import PropTypes from "prop-types"; //Контроль свойств компонента
|
|
import { Stack, Icon, Typography } from "@mui/material"; //Интерфейсные элементы
|
|
import { TEXTS } from "../../../../app.text"; //Общие текстовые ресурсы
|
|
|
|
//---------
|
|
//Константы
|
|
//---------
|
|
|
|
//Типы сообщений
|
|
const COMPONENT_MESSAGE_TYPE = {
|
|
COMMON: "COMMON",
|
|
ERROR: "ERROR"
|
|
};
|
|
|
|
//Типовые сообщения
|
|
const COMPONENT_MESSAGES = {
|
|
NO_DATA_FOUND: TEXTS.NO_DATA_FOUND,
|
|
NO_SETTINGS: "Настройте компонент"
|
|
};
|
|
|
|
//-----------
|
|
//Тело модуля
|
|
//-----------
|
|
|
|
//Информационное сообщение внутри компонента
|
|
const ComponentInlineMessage = ({ icon, name, message, type = COMPONENT_MESSAGE_TYPE.COMMON }) => {
|
|
//Формирование представления
|
|
return (
|
|
<Stack direction={"column"}>
|
|
<Stack direction={"row"} justifyContent={"center"} alignItems={"center"}>
|
|
{icon && <Icon color={"disabled"}>{icon}</Icon>}
|
|
{name && (
|
|
<Typography align={"center"} color={"text.secondary"} variant={"button"}>
|
|
{name}
|
|
</Typography>
|
|
)}
|
|
</Stack>
|
|
<Typography align={"center"} color={type != COMPONENT_MESSAGE_TYPE.ERROR ? "text.secondary" : "error.dark"} variant={"caption"}>
|
|
{message}
|
|
</Typography>
|
|
</Stack>
|
|
);
|
|
};
|
|
|
|
//Контроль свойств - Информационное сообщение внутри компонента
|
|
ComponentInlineMessage.propTypes = {
|
|
icon: PropTypes.string,
|
|
name: PropTypes.string,
|
|
message: PropTypes.string.isRequired,
|
|
type: PropTypes.oneOf(Object.values(COMPONENT_MESSAGE_TYPE))
|
|
};
|
|
|
|
//----------------
|
|
//Интерфейс модуля
|
|
//----------------
|
|
|
|
export { COMPONENT_MESSAGE_TYPE, COMPONENT_MESSAGES, ComponentInlineMessage };
|