/* Парус 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 };