/* Парус 8 - Панели мониторинга - Циклограмма Компонент: Редактор задачи */ //--------------------- //Подключение библиотек //--------------------- import React, { useState } from "react"; //Классы React import PropTypes from "prop-types"; //Контроль свойств компонента import { Dialog, DialogActions, DialogContent, Button, List, ListItem, ListItemText, Divider } from "@mui/material"; //Интерфейсные компоненты import { hasValue } from "../../core/utils"; //Вспомогательный функции import { P8P_DIALOG_CONTENT_VARIANT } from "../../theme/variants/p8p_dialog_content_variants"; //Варианты диалогов (содержимое) import { P8P_LIST_VARIANT } from "../../theme/variants/p8p_list_variants"; //Варианты списков import { P8P_LIST_ITEM_TEXT_VARIANT } from "../../theme/variants/p8p_list_item_text_variants"; //Варианты значений списков import { P8P_BUTTON_VARIANT } from "../../theme/variants/p8p_button_variants"; //Варианты кнопок import { P8P_CYCLOGRAM_TASK_SHAPE, P8P_CYCLOGRAM_TASK_ATTRIBUTE_SHAPE } from "./p8p_cyclogram_constants"; //Константы циклограммы //----------- //Тело модуля //----------- //Редактор задачи const P8PCyclogramTaskEditor = ({ task, taskAttributes, onOk, onCancel, taskAttributeRenderer, taskDialogRenderer, nameCaption, okBtnCaption, cancelBtnCaption }) => { //Собственное состояние const [state] = useState({ start: task.start, end: task.end }); //Отображаемые атрибуты const dispTaskAttributes = Array.isArray(taskAttributes) && taskAttributes.length > 0 ? taskAttributes.filter(attr => attr.visible && hasValue(task[attr.name])) : []; //При сохранении const handleOk = () => (onOk && state.start && state.end ? onOk() : null); //При отмене const handleCancel = () => (onCancel ? onCancel() : null); //Генерация содержимого return ( {taskDialogRenderer ? ( taskDialogRenderer({ task, taskAttributes, close: handleCancel }) ) : ( <> {dispTaskAttributes.length > 0 ? : null} {dispTaskAttributes.length > 0 ? dispTaskAttributes.map((attr, i) => { const defaultView = task[attr.name]; const customView = taskAttributeRenderer ? taskAttributeRenderer({ task, attribute: attr }) : null; return ( {i < dispTaskAttributes.length - 1 ? : null} ); }) : null} )} ); }; //Контроль свойств - Редактор задачи P8PCyclogramTaskEditor.propTypes = { task: P8P_CYCLOGRAM_TASK_SHAPE, taskAttributes: PropTypes.arrayOf(P8P_CYCLOGRAM_TASK_ATTRIBUTE_SHAPE), onOk: PropTypes.func, onCancel: PropTypes.func, taskAttributeRenderer: PropTypes.func, taskDialogRenderer: PropTypes.func, nameCaption: PropTypes.string.isRequired, okBtnCaption: PropTypes.string.isRequired, cancelBtnCaption: PropTypes.string.isRequired }; //---------------- //Интерфейс модуля //---------------- export { P8PCyclogramTaskEditor };