/*
Парус 8 - Панели мониторинга - РО - Редактор настройки регламентированного отчёта
Компонент панели: Карточка показателя
*/
//---------------------
//Подключение библиотек
//---------------------
import React, { useState } from "react"; //Классы React
import PropTypes from "prop-types"; //Контроль свойств компонента
import { Box, Card, CardContent, Typography, Link, Divider } from "@mui/material"; //Интерфейсные компоненты
import { APP_STYLES } from "../../../../app.styles"; //Общие стили приложения
import { MarkCnList } from "./mark_cn_list"; //Состав показателя
import { MarkCardToolbar } from "./mark_card_toolbar"; //Панель инструментов карточки
import { STYLES as COMMON_STYLES } from "../common"; //Общие стили и константы
//---------
//Константы
//---------
//Стили
const STYLES = {
CARD: hovered => ({
padding: "0px 0px 0px 0px",
border: "1px solid lightgrey",
position: "relative",
...(hovered ? COMMON_STYLES.BG_MARK_CARD : null)
}),
CARD_CONTENT_MARK_TITLE: { padding: "0px 0px 0px 0px" },
CARD_CONTENT_MARK_CONSTITUTION: constitutionExists => ({
padding: "8px",
height: "105px",
"&:last-child": { paddingBottom: "10px" },
...COMMON_STYLES.FONT_MARK_CARD_BODY,
...(!constitutionExists ? { display: "flex", justifyContent: "center", alignItems: "center" } : null)
}),
BOX_MARK_CONSTITUTION: {
height: "100%",
width: "100%",
overflowY: "auto",
...APP_STYLES.SCROLL
}
};
//-----------
//Тело модуля
//-----------
//Карточка показателя
const MarkCard = ({ mark, code, name, constitution = [], onMarkAdd, onMarkUpdate, onMarkDelete, onMarkOpen, onMarkCnOpen, onMarkCnAdd }) => {
//Флаг нахождения указателя мыши в карточке
const [hovered, setHovered] = useState(false);
//При попадании мыши на закладку раздела
const handleCardMouseIn = () => setHovered(true);
//При выходе мыши из закладки раздела
const handleCardMouseOut = () => setHovered(false);
//Флаг наличия данных в составе показателя
const constitutionExists = constitution?.length > 0;
//Формирование представления
return mark ? (
{constitutionExists ? (
onMarkCnOpen && onMarkCnOpen(constitutionRn)} />
) : (
Показатель не имеет состава
Добавить
)}
) : (
Показатель отсутствует
Добавить
);
};
//Контроль свойств - Карточка показателя
MarkCard.propTypes = {
mark: PropTypes.number,
code: PropTypes.string,
name: PropTypes.string,
constitution: PropTypes.arrayOf(PropTypes.object),
onMarkAdd: PropTypes.func.isRequired,
onMarkUpdate: PropTypes.func.isRequired,
onMarkDelete: PropTypes.func.isRequired,
onMarkOpen: PropTypes.func.isRequired,
onMarkCnOpen: PropTypes.func.isRequired,
onMarkCnAdd: PropTypes.func.isRequired
};
//----------------
//Интерфейс модуля
//----------------
export { MarkCard };