/*
Парус 8 - Панели мониторинга
Компонент: Сообщение
*/
//---------------------
//Подключение библиотек
//---------------------
import React from "react"; //Классы React
import PropTypes from "prop-types"; //Контроль свойств компонента
import Dialog from "@mui/material/Dialog"; //базовый класс диалога Material UI
import DialogTitle from "@mui/material/DialogTitle"; //Заголовок диалога
import DialogContent from "@mui/material/DialogContent"; //Содержимое диалога
import DialogContentText from "@mui/material/DialogContentText"; //Текст содержимого диалога
import DialogActions from "@mui/material/DialogActions"; //Область действий диалога
import Typography from "@mui/material/Typography"; //Текст
import Button from "@mui/material/Button"; //Кнопки
import Container from "@mui/material/Container"; //Контейнер
import Box from "@mui/material/Box"; //Обёртка
//---------
//Константы
//---------
//Варианты исполнения
const P8P_APP_MESSAGE_VARIANT = {
INFO: "information",
WARN: "warning",
ERR: "error"
};
//Стили
const STYLES = {
DEFAULT: {
wordBreak: "break-word"
},
INFO: {
titleText: {},
bodyText: {}
},
WARN: {
titleText: {
color: "orange"
},
bodyText: {
color: "orange"
}
},
ERR: {
titleText: {
color: "red"
},
bodyText: {
color: "red"
}
},
INLINE_MESSAGE: {
with: "100%",
textAlign: "center"
}
};
//-----------
//Тело модуля
//-----------
//Сообщение
const P8PAppMessage = ({ variant, title, titleText, cancelBtn, onCancel, cancelBtnCaption, okBtn, onOk, okBtnCaption, open, text }) => {
//Подбор стиля и ресурсов
let style = STYLES.INFO;
switch (variant) {
case P8P_APP_MESSAGE_VARIANT.INFO: {
style = STYLES.INFO;
break;
}
case P8P_APP_MESSAGE_VARIANT.WARN: {
style = STYLES.WARN;
break;
}
case P8P_APP_MESSAGE_VARIANT.ERR: {
style = STYLES.ERR;
break;
}
}
//Заголовок
let titlePart;
if (title && titleText)
titlePart = (
{titleText}
);
//Кнопка Отмена
let cancelBtnPart;
if (cancelBtn && cancelBtnCaption && variant === P8P_APP_MESSAGE_VARIANT.WARN)
cancelBtnPart = ;
//Кнопка OK
let okBtnPart;
if (okBtn && okBtnCaption)
okBtnPart = (
);
//Все действия
let actionsPart;
if (cancelBtnPart || okBtnPart)
actionsPart = (
{okBtnPart}
{cancelBtnPart}
);
//Генерация содержимого
return (
);
};
//Контроль свойств - Сообщение
P8PAppMessage.propTypes = {
variant: PropTypes.string.isRequired,
title: PropTypes.bool,
titleText: PropTypes.string,
cancelBtn: PropTypes.bool,
onCancel: PropTypes.func,
cancelBtnCaption: PropTypes.string,
okBtn: PropTypes.bool,
onOk: PropTypes.func,
okBtnCaption: PropTypes.string,
open: PropTypes.bool,
text: PropTypes.string
};
//Встроенное сообщение
const P8PAppInlineMessage = ({ variant, text, okBtn, onOk, okBtnCaption }) => {
//Генерация содержимого
return (
{text}
{okBtn && okBtnCaption ? (
) : null}
);
};
//Контроль свойств - Встроенное сообщение
P8PAppInlineMessage.propTypes = {
variant: PropTypes.string.isRequired,
text: PropTypes.string.isRequired,
okBtn: PropTypes.bool,
onOk: PropTypes.func,
okBtnCaption: PropTypes.string
};
//Формирование типового сообщения
const buildVariantMessage = (props, variant) => {
//Извлекаем необходимые свойства
let { open, titleText } = props;
//Генерация содержимого
return ;
};
//Формирование типового встроенного сообщения
const buildVariantInlineMessage = (props, variant) => {
//Генерация содержимого
return ;
};
//Сообщение об ошибке
const P8PAppMessageErr = props => buildVariantMessage(props, P8P_APP_MESSAGE_VARIANT.ERR);
//Сообщение предупреждения
const P8PAppMessageWarn = props => buildVariantMessage(props, P8P_APP_MESSAGE_VARIANT.WARN);
//Сообщение информации
const P8PAppMessageInfo = props => buildVariantMessage(props, P8P_APP_MESSAGE_VARIANT.INFO);
//Встраиваемое сообщение об ошибке
const P8PAppInlineError = props => buildVariantInlineMessage(props, P8P_APP_MESSAGE_VARIANT.ERR);
//Встраиваемое cообщение предупреждения
const P8PAppInlineWarn = props => buildVariantInlineMessage(props, P8P_APP_MESSAGE_VARIANT.WARN);
//Встраиваемое сообщение информации
const P8PAppInlineInfo = props => buildVariantInlineMessage(props, P8P_APP_MESSAGE_VARIANT.INFO);
//----------------
//Интерфейс модуля
//----------------
export {
P8P_APP_MESSAGE_VARIANT,
P8PAppMessage,
P8PAppMessageErr,
P8PAppMessageWarn,
P8PAppMessageInfo,
P8PAppInlineMessage,
P8PAppInlineError,
P8PAppInlineWarn,
P8PAppInlineInfo
};