/* * @Author: 赵伟 * @Date: 2024-10-10 08:51:41 * @Description: 资源规格 hook */ // import { getComputingResourceReq } from '@/services/pipeline'; // import { ComputingResource } from '@/types'; // import { to } from '@/utils/promise'; // import { type SelectProps } from 'antd'; // import { useCallback, useEffect, useState } from 'react'; // const computingResource: ComputingResource[] = []; // /** 过滤资源规格 */ // export const filterResourceStandard: SelectProps['filterOption'] = ( // input: string, // option?: ComputingResource, // ) => { // return ( // option?.computing_resource?.toLocaleLowerCase()?.includes(input.toLocaleLowerCase()) ?? false // ); // }; // /** 资源规格字段 */ // export const resourceFieldNames = { // label: 'description', // value: 'id', // }; // /** 获取资源规格 */ // export function useComputingResource() { // const [resourceStandardList, setResourceStandardList] = useState([]); // useEffect(() => { // // 获取资源规格列表数据 // const getComputingResource = async () => { // const params = { // page: 0, // size: 1000, // resource_type: '', // }; // const [res] = await to(getComputingResourceReq(params)); // if (res && res.data && Array.isArray(res.data.content)) { // setResourceStandardList(res.data.content); // computingResource.splice(0, computingResource.length, ...res.data.content); // } // }; // if (computingResource.length > 0) { // setResourceStandardList(computingResource); // } else { // getComputingResource(); // } // }, []); // // 根据 standard 获取 description // const getDescription = useCallback( // (id?: string | number) => { // if (!id) { // return undefined; // } // return resourceStandardList.find((item) => Number(item.id) === Number(id))?.description; // }, // [resourceStandardList], // ); // return [resourceStandardList, getDescription] as const; // } import state, { getSystemResources } from '@/state/systemResource'; import { useSnapshot } from '@umijs/max'; import { useCallback, useEffect } from 'react'; export const useSystemResource = () => { useEffect(() => { getSystemResources(); }, []); const snap = useSnapshot(state); /* 根据 standard 获取 description */ const getDescription = useCallback( (id?: string | number) => { if (!id) { return undefined; } return snap.resources.find((item) => Number(item.id) === Number(id))?.description; }, [snap.resources], ); return getDescription; };