/* Парус 8 - Панели мониторинга - УДП - Доски задач Компонент панели: Карточка задачи */ //--------------------- //Подключение библиотек //--------------------- import React from "react"; //Классы React import PropTypes from "prop-types"; //Контроль свойств компонента import { Draggable } from "react-beautiful-dnd"; import { Card, CardHeader, Typography, IconButton, Icon, Box, Menu, MenuItem } from "@mui/material"; //Интерфейсные компоненты import { useTaskCard } from "../hooks"; //Вспомогательные хуки import { TaskFormDialog } from "./task_form"; //Форма события //--------- //Константы //--------- //Стили const STYLES = { CONTAINER: { margin: "5px 0px", textAlign: "center" }, MENU_ITEM_DELIMITER: { borderBottom: "1px solid lightgrey" }, CARD_HEADER_TITLE: { padding: "2px" } }; //------------------------------------ //Вспомогательные функции и компоненты //------------------------------------ //Действия карточки события const DataCellCardActions = ({ taskRn, menuItems, cardActions, handleMethodsMenuButtonClick, handleMethodsMenuClose, handleReload }) => { return ( more_vert {menuItems.map(action => { return ( { //Выполняем действие action.func(taskRn, action.needReload ? handleReload : null); //Закрываем меню handleMethodsMenuClose(); }} > {action.icon} {action.name} ); })} ); }; //Контроль свойств - Действия карточки события DataCellCardActions.propTypes = { taskRn: PropTypes.number.isRequired, menuItems: PropTypes.array.isRequired, cardActions: PropTypes.object.isRequired, handleMethodsMenuButtonClick: PropTypes.func.isRequired, handleMethodsMenuClose: PropTypes.func.isRequired, handleReload: PropTypes.func }; //----------- //Тело модуля //----------- //Карточка события const TaskCard = ({ task, index, handleReload }) => { //Собственное состояние const [taskCard, setTaskCard, cardActions, handleMethodsMenuButtonClick, handleMethodsMenuClose, menuItems] = useTaskCard(); //Генерация содержимого return ( {provided => ( {task.id} {task.name} } sx={{ padding: 0 }} action={ } /> )} {taskCard.openEdit ? ( { setTaskCard(pv => ({ ...pv, openEdit: false })); }} /> ) : null} ); }; //Контроль свойств - Карточка события TaskCard.propTypes = { task: PropTypes.object.isRequired, index: PropTypes.number.isRequired, handleReload: PropTypes.func }; //---------------- //Интерфейс модуля //---------------- export { TaskCard };