import { apiInterceptors, getResource } from '@/client/api'; import { DeleteFilled } from '@ant-design/icons'; import { Card, Input, Select, Switch } from 'antd'; import React, { useEffect, useState } from 'react'; import { useTranslation } from 'react-i18next'; interface IProps { resourceTypeOptions: any[]; updateResourcesByIndex: (data: any, index: number) => void; index: number; resource: any; } export default function ResourceCard(props: IProps) { const { resourceTypeOptions, updateResourcesByIndex, index, resource: editResource } = props; const { t } = useTranslation(); const [resourceType, setResourceType] = useState(editResource.type || resourceTypeOptions?.[0].label); const [resourceValueOptions, setResourceValueOptions] = useState([]); const [resource, setResource] = useState({ name: editResource.name, type: editResource.type, value: editResource.value, is_dynamic: editResource.is_dynamic || false, }); const fetchResource = async () => { const [_, data] = await apiInterceptors(getResource({ type: resourceType })); if (data) { setResourceValueOptions( data?.map(item => { return { label: item.label, value: item.key + '' }; }), ); } else { setResourceValueOptions([]); } }; const handleChange = (value: string) => { setResourceType(value); }; const updateResource = (value: any, type: string) => { const tempResource = resource; tempResource[type] = value; setResource(tempResource); updateResourcesByIndex(tempResource, index); }; const handleDeleteResource = () => { updateResourcesByIndex(null, index); }; useEffect(() => { fetchResource(); updateResource(resource.type || resourceType, 'type'); }, [resourceType]); useEffect(() => { // fix bug :Resolve the issue of incorrect parameter echo for resources under app editing updateResource(editResource.value || resourceValueOptions[0]?.label, 'value'); setResource({ ...resource, value: editResource.value || resourceValueOptions[0]?.label }); }, [resourceValueOptions]); return ( { handleDeleteResource(); }} /> } >
* {t('resource_name')}:
) => { updateResource(e.target.value, 'name'); }} />
{t('resource_dynamic')}
{ updateResource(value, 'is_dynamic'); }} />
{t('resource_type')}:
{ updateResource(value, 'value'); }} /> ) : ( ) => { updateResource(e.target.value, 'value'); }} /> )}
); }