import React, { useState, useRef } from 'react'; import { useTranslation } from 'react-i18next'; import { Button, Row, Col, App } from 'antd'; import clsx from 'clsx'; import { DeleteOutlined } from '@ant-design/icons'; import type { Application, ApplicationModalRef } from './types'; import ApplicationModal from './components/ApplicationModal'; import SearchInput from '@/components/SearchInput' import RbCard from '@/components/RbCard/Card' import { getApplicationListUrl, deleteApplication } from '@/api/application' import PageScrollList, { type PageScrollListRef } from '@/components/PageScrollList' import { formatDateTime } from '@/utils/format'; const ApplicationManagement: React.FC = () => { const { t } = useTranslation(); const { modal } = App.useApp(); const [query, setQuery] = useState({}); const applicationModalRef = useRef(null); const scrollListRef = useRef(null) const refresh = () => { scrollListRef.current?.refresh(); } const handleCreate = () => { applicationModalRef.current?.handleOpen(); } const handleEdit = (item: Application) => { window.open(`/#/application/config/${item.id}`); } const handleDelete = (item: Application) => { modal.confirm({ title: t('common.confirmDeleteDesc', { name: item.name }), okText: t('common.delete'), cancelText: t('common.cancel'), okType: 'danger', onOk: () => { deleteApplication(item.id) .then(() => { refresh(); }) .catch(() => { console.error('Failed to delete application'); }); } }) } return ( <> setQuery({ search: value })} style={{width: '100%'}} /> ( {item.name[0]} } > {['type', 'source', 'created_at'].map((key, index) => (
{t(`application.${key}`)} {key === 'source' && item.is_shared ? t('application.shared') : key === 'source' && !item.is_shared ? t('application.configuration') : key === 'created_at' ? formatDateTime(item[key as keyof Application], 'YYYY-MM-DD HH:mm:ss') : t(`application.${item[key as keyof Application]}`) }
))}
)} /> ); }; export default ApplicationManagement;