/* Парус 8 - Панели мониторинга - РО - Редактор настройки регламентированного отчёта Компонент панели: Раздел настройки */ //--------------------- //Подключение библиотек //--------------------- import React, { useState } from "react"; //Классы React import PropTypes from "prop-types"; //Контроль свойств компонента import { Box, IconButton, Icon, Dialog, DialogTitle, DialogContent, Typography, List, ListItem } from "@mui/material"; //Интерфейсные элементы import { P8PDataGrid, P8P_DATA_GRID_SIZE } from "../../../components/p8p_data_grid"; //Таблица данных import { P8P_DATA_GRID_CONFIG_PROPS } from "../../../config_wrapper"; //Подключение компонентов к настройкам приложения import { SectionTabPanel } from "./section_tab_panel"; //Компонент вкладки раздела import { confSctnMrkCellRender, confSctnMrkHeadCellRender } from "./layouts"; //Дополнительная разметка и вёрстка клиентских элементов //--------- //Константы //--------- //Стили const STYLES = { GRID_SIZES: (height, pxOuterMenuH, pxPanelHeaderH, pxTabsH) => ({ padding: 0, minWidth: "98vw", minHeight: (height - pxOuterMenuH - pxPanelHeaderH - pxTabsH) * 0.93, maxWidth: "98vw", maxHeight: (height - pxOuterMenuH - pxPanelHeaderH - pxTabsH) * 0.93 }), TABLE_CONTAINER: { display: "flex", justifyContent: "center", alignItems: "center", paddingTop: 1, paddingBottom: 1 }, SECTION_ACTIONS: { display: "flex", justifyContent: "space-between", padding: "0px 5px" }, TABLE_SCROLL: { "&::-webkit-scrollbar": { width: "12px", height: "12px" }, "&::-webkit-scrollbar-track": { borderRadius: "88px", backgroundColor: "#EBEBEB" }, "&::-webkit-scrollbar-thumb": { borderRadius: "88px", backgroundColor: "#b4b4b4", backgroundClip: "padding-box", border: "3px solid #EBEBEB" }, "&::-webkit-scrollbar-thumb:hover": { backgroundColor: "#808080" } }, HELP_LIST_ITEM: { padding: "0px 0px 0px 5px", whiteSpace: "pre", fontSize: "0.95rem" }, HELP_LIST_ITEM_NAME: { fontWeight: "bold", fontSize: "inherit", minWidth: "45px" }, HELP_LIST_ITEM_DESC: { fontSize: "inherit" } }; //--------------------------------------------- //Вспомогательные функции и компоненты //--------------------------------------------- //Элемент списка расшифровки состава const HelpListItem = ({ name, desc }) => { return ( {name} {` - ${desc}`} ); }; //Контроль свойств - Элемент списка расшифровки состава HelpListItem.propTypes = { name: PropTypes.string.isRequired, desc: PropTypes.string.isRequired }; //Диалог дополнительной информации const HelpDialog = ({ handleOpenHelpChange }) => { //Генерация содержимого return ( Информация close Карточки показателей содержат сокращенную информацию о типе состава показателя. Список сокращений: ); }; //Контроль свойств - Диалог дополнительной информации HelpDialog.propTypes = { handleOpenHelpChange: PropTypes.func.isRequired }; //----------- //Тело модуля //----------- //Раздел настройки const SectionTab = ({ section, tabValue, index, containerProps, handleMarkAdd, handleReload, handleMarkOpen, handleMarkCnOpen, handleMarkCnInsert, menuItems }) => { //Состояние - диалог информации const [openHelp, setOpenHelp] = useState(false); //Изменение состояния диалога информации const handleOpenHelpChange = () => { setOpenHelp(!openHelp); }; //Генерация содержимого return ( <> handleMarkAdd(section.rn)}> add handleReload()}> refresh handleOpenHelpChange()}> help {section.dataLoaded && section.columnsDef.length > 3 ? ( confSctnMrkCellRender({ ...prms, sectionRn: section.rn, handleMarkAdd: handleMarkAdd, handleMarkOpen: handleMarkOpen, handleMarkCnOpen: handleMarkCnOpen, handleMarkCnInsert: handleMarkCnInsert, menuItems: menuItems }) } headCellRender={confSctnMrkHeadCellRender} /> ) : null} {openHelp ? : null} ); }; //Контроль свойств - Раздел настройки SectionTab.propTypes = { section: PropTypes.object.isRequired, tabValue: PropTypes.number, index: PropTypes.number, containerProps: PropTypes.object, handleMarkAdd: PropTypes.func, handleReload: PropTypes.func, handleMarkOpen: PropTypes.func, handleMarkCnOpen: PropTypes.func, handleMarkCnInsert: PropTypes.func, menuItems: PropTypes.array }; //---------------- //Интерфейс модуля //---------------- export { SectionTab };