/* Парус 8 - Панели мониторинга - УДП - Доски задач Компонент: Диалог дополнительных настроек */ //--------------------- //Подключение библиотек //--------------------- import React, { useState } from "react"; //Классы React import PropTypes from "prop-types"; //Контроль свойств компонента import { Dialog, DialogTitle, DialogContent, DialogActions, IconButton, Icon, Button, Box, Stack } from "@mui/material"; //Интерфейсные компоненты import { RulesSelect } from "./rules_select.js"; //Выпадающий список выбора заливки событий import { FilterInputField } from "./filter_input_field.js"; //Поле ввода import { APP_STYLES } from "../../../../app.styles"; //Типовые стили import { sortAttrs, sortDest } from "../layouts.js"; //Допустимые значение поля и направления сортировки //--------- //Константы //--------- //Стили const STYLES = { FILTERS_SCROLL: { overflowY: "auto", ...APP_STYLES.SCROLL }, DIALOG_ACTIONS: { justifyContent: "end", paddingRight: "24px", paddingLeft: "24px" }, CLOSE_BUTTON: { position: "absolute", right: 8, top: 8, color: theme => theme.palette.grey[500] }, DOCLINK_STACK: { alignItems: "baseline" }, SELECT: { width: "100%" }, BOX_WITH_LEGEND: { border: "1px solid #939393" }, LEGEND: { textAlign: "left" }, SELECT_MENU: w => { return { overflowY: "auto", ...APP_STYLES.SCROLL, width: w ? w : null }; } }; //--------------- //Тело компонента //--------------- //Диалог дополнительных настроек const SettingsDialog = ({ initial, onSettingsChange, onOpen, ...other }) => { //Состояние дополнительных настроек const [settings, setSettings] = useState( initial.statusesSort.attr ? { ...initial } : { ...initial, statusesSort: { sorted: true, attr: "name", dest: "asc" } } ); //Изменение заливки событий const handleColorRuleChange = cr => setSettings(pv => ({ ...pv, colorRule: cr })); //Изменение поля сортировки const handleSortAttrChange = (item, value) => setSettings(pv => ({ ...pv, statusesSort: { ...pv.statusesSort, [item]: value } })); //Изменение направления сортировки const handleSortDestChange = d => setSettings(pv => ({ ...pv, statusesSort: { ...pv.statusesSort, dest: d } })); //Генерация содержимого return (