import { DownOutlined, PlusOutlined, ReloadOutlined } from "@ant-design/icons"; import { Badge, Button, Divider, Dropdown, Popconfirm, Popover, Space, Table, Tooltip, } from "antd"; import { Link } from "react-router-dom"; import { Constants, FormatDatetime, GetDuration, MyAvatar, SentMessagesCommands, WebSocketContext, hasOneXYPermission, hasXYPermission, } from "../../../utils"; import { useContext } from "react"; import { useTranslation } from "react-i18next"; export default function GroupTaskTableList({ categoryGroup, showGroupTypeSelectionModal, groupTasks, }) { const webSocketContext = useContext(WebSocketContext); const { t } = useTranslation(); const getTableColumns = () => { return [ { title: t("groupTasks.groupTasksTableList.column.creator"), dataIndex: "creator", key: "creator", }, { title: t("groupTasks.groupTasksTableList.column.groupName"), dataIndex: "groupName", key: "groupName", }, { title: t("groupTasks.groupTasksTableList.column.description"), dataIndex: "description", key: "description", ellipsis: { showTitle: false, }, render: (description) => ( {description} ), }, { title: t("groupTasks.groupTasksTableList.column.step"), dataIndex: "step", key: "step", }, { title: t("groupTasks.groupTasksTableList.column.status"), dataIndex: "status", key: "status", }, { title: t("groupTasks.groupTasksTableList.column.startedAt"), dataIndex: "startedAt", key: "startedAt", }, { title: t("groupTasks.groupTasksTableList.column.endedAt"), dataIndex: "endedAt", key: "endedAt", }, { title: t("groupTasks.groupTasksTableList.column.duration"), dataIndex: "duration", key: "duration", }, { title: t("groupTasks.groupTasksTableList.column.action.title"), dataIndex: "action", key: "action", render: (_, record) => ( {t("groupTasks.groupTasksTableList.column.action.link")} ), }, ]; }; const getStatusBadge = (status) => { switch (status) { case Constants.GROUP_TASKS_STATUS.FINISHED: return ( ); case Constants.GROUP_TASKS_STATUS.RUNNING: return ( ); case Constants.GROUP_TASKS_STATUS.CANCELED: return ( ); case Constants.GROUP_TASKS_STATUS.FAILED: return ( ); case Constants.GROUP_TASKS_STATUS.INPUT_REQUIRED: return ( ); case Constants.GROUP_TASKS_STATUS.PAUSED: return ( ); case Constants.GROUP_TASKS_STATUS.UNDO_ENDED: return ( ); default: return ; } }; const getTableItems = () => { let items = []; groupTasks.sort((a, b) => new Date(b.StartedAt) - new Date(a.StartedAt)); groupTasks.forEach((groupTask) => { if (groupTask.Category === categoryGroup.category) { const user = webSocketContext.AllUsers.find( (user) => user.Id === groupTask.CreatorUserId ); items.push({ key: groupTask.Id, creator: ( <> } > <> {user?.Username} ), groupName: groupTask.GroupName, description: groupTask.Description, step: `${groupTask.CurrentTasksStep} / ${groupTask.NumberOfSteps}`, status: getStatusBadge(groupTask.Status), startedAt: FormatDatetime(groupTask.StartedAt), duration: GetDuration(groupTask.StartedAt, groupTask.EndedAt), endedAt: FormatDatetime(groupTask.EndedAt), }); } }); return items; }; const handleOnReloadGroupTasksConfirm = (category) => { webSocketContext.SendSocketMessage(SentMessagesCommands.ReloadGroupTasks, { category: category, }); }; const handleOnInstallPythonDependenciesConfirm = (category, groupId) => { webSocketContext.SendSocketMessage( SentMessagesCommands.GroupTasksInstallPythonDependencies, { category: category, groupId: groupId, } ); }; const dropDownItems = categoryGroup.groups !== undefined ? categoryGroup.groups.map((group, index) => { return { key: index, label: group.name, category: group.category, groupid: group.id, }; }) : []; return ( <> {categoryGroup.category} {hasOneXYPermission( webSocketContext.User.Permissions, categoryGroup.category, Constants.PERMISSIONS.GROUP_TASKS.OVERVIEW.XYNewTask, Constants.PERMISSIONS.GROUP_TASKS.OVERVIEW.XYReloadGroupConfig ) && (
{hasXYPermission( webSocketContext.User.Permissions, Constants.PERMISSIONS.GROUP_TASKS.OVERVIEW.XYNewTask, categoryGroup.category ) && ( )} {hasXYPermission( webSocketContext.User.Permissions, Constants.PERMISSIONS.GROUP_TASKS.OVERVIEW .XYInstallPythonDependencies, categoryGroup.category ) && ( handleOnInstallPythonDependenciesConfirm( dropDownItems[key].category, dropDownItems[key].groupid ), }} arrow trigger="click" > )} {hasXYPermission( webSocketContext.User.Permissions, Constants.PERMISSIONS.GROUP_TASKS.OVERVIEW.XYReloadGroupConfig, categoryGroup.category ) && ( handleOnReloadGroupTasksConfirm(categoryGroup.category) } > )}
)} ); } /* handleOnInstallPythonDependenciesConfirm( categoryGroup.category ) } > */