import { type FC, useRef } from 'react'; import { useNavigate, useParams } from 'react-router-dom'; import { Layout, Tabs, Dropdown, Button, Flex } from 'antd'; import type { MenuProps } from 'antd'; import { useTranslation } from 'react-i18next'; import styles from '../index.module.css' import logoutIcon from '@/assets/images/logout.svg' import editIcon from '@/assets/images/edit_hover.svg' import copyIcon from '@/assets/images/copy_hover.svg' import exportIcon from '@/assets/images/export_hover.svg' import deleteIcon from '@/assets/images/delete_hover.svg' import type { Application, ApplicationModalRef } from '@/views/ApplicationManagement/types'; import ApplicationModal from '@/views/ApplicationManagement/components/ApplicationModal' import type { CopyModalRef, AgentRef, ClusterRef, WorkflowRef } from '../types' import { deleteApplication } from '@/api/application' import CopyModal from './CopyModal' const { Header } = Layout; const tabKeys = ['arrangement', 'api', 'release'] const menuIcons: Record = { edit: editIcon, copy: copyIcon, export: exportIcon, delete: deleteIcon } interface ConfigHeaderProps { application?: Application; activeTab: string; handleChangeTab: (key: string) => void; refresh: () => void; workflowRef: React.RefObject appRef?: React.RefObject } const ConfigHeader: FC = ({ application, activeTab, handleChangeTab, refresh, workflowRef, }) => { const { t } = useTranslation(); const navigate = useNavigate(); const { id } = useParams(); const applicationModalRef = useRef(null); const copyModalRef = useRef(null); const formatTabItems = () => { return tabKeys.map(key => ({ key, label: t(`application.${key}`), })) } const formatMenuItems = () => { const items = ['edit', 'copy', 'export', 'delete'].map(key => ({ key, icon: , label: t(`common.${key}`), })) return { items, onClick: handleClick } } const handleClick: MenuProps['onClick'] = ({ key }) => { switch (key) { case 'edit': applicationModalRef.current?.handleOpen(application as Application) break; case 'copy': copyModalRef.current?.handleOpen() break; case 'export': break; case 'delete': handleDelete() break; } } const handleDelete = () => { if (!id) { return } deleteApplication(id as string) .then(() => { goToApplication() }) .catch(() => { console.error('Failed to delete application'); }); } const goToApplication = () => { navigate('/application', { replace: true }) } const save = () => { workflowRef.current?.handleSave() } const run = () => { workflowRef.current?.handleSave(false) .then(() => { workflowRef.current?.handleRun() }) } const clear = () => { workflowRef?.current?.graphRef?.current?.clearCells() } const addvariable = () => { workflowRef?.current?.addVariable() } return ( <>
{application?.name[0]}
{application?.name}
{application?.type === 'workflow' ?
{/* */}
:
{t('application.returnToApplicationList')}
}
); }; export default ConfigHeader;