/* Парус 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 { CustomInputField } from "./custom_input_field.js"; //Кастомное поле ввода import { sortAttrs, sortDest } from "../layouts.js"; //Допустимые значение поля и направления сортировки import { hasValue } from "../../../core/utils.js"; //Проверка наличия значения import { COMMON_STYLES } from "../styles"; //Общие стили //--------- //Константы //--------- //Стили const STYLES = { SELECT: { width: "100%" } }; //--------------- //Тело компонента //--------------- //Диалог дополнительных настроек const SettingsDialog = ({ initial, onSettingsChange, onClose, ...other }) => { //Состояние дополнительных настроек const [colorRules, seColorRules] = useState(initial.colorRules); //Состояние статусов const [statusesState, setStatusesState] = useState(initial.statusesState); //Изменение поля сортировки const handleSortAttrChange = (item, value) => setStatusesState(pv => ({ ...pv, [item]: value })); //Изменение направления сортировки const handleSortDestChange = newDirection => setStatusesState(pv => ({ ...pv, direction: newDirection })); //При изменении правила заливки событий const handleColorRuleChange = (item, value) => { //Определяем новое правило заливки let newColorRule = colorRules.rules[value]; //Обновляем в основных настройках seColorRules(pv => ({ ...pv, selectedColorRule: newColorRule ? newColorRule : {} })); }; //Генерация содержимого return (
Настройки close [...prev, { id: cur.id, caption: cur.SDP_NAME }], [])} emptyItem={{ key: -1, id: -1, caption: "-" }} onChange={handleColorRuleChange} sx={STYLES.SELECT} /> [...prev, { id: cur.id, caption: cur.descr }], [])} onChange={handleSortAttrChange} sx={STYLES.SELECT} /> handleSortDestChange(sortDest[sortDest.indexOf(statusesState.direction) * -1])} > {statusesState.direction === "asc" ? "arrow_upward" : "arrow_downward"}
); }; //Контроль свойств компонента - Диалог дополнительных настроек SettingsDialog.propTypes = { initial: PropTypes.object.isRequired, onSettingsChange: PropTypes.func.isRequired, onClose: PropTypes.func.isRequired }; //-------------------- //Интерфейс компонента //-------------------- export { SettingsDialog };