export enum ParameterType { Uniform = 'uniform', QUniform = 'quniform', LogUniform = 'loguniform', QLogUniform = 'qloguniform', Randn = 'randn', QRandn = 'qrandn', RandInt = 'randint', QRandInt = 'qrandint', LogRandInt = 'lograndint', QLogRandInt = 'qlograndint', Choice = 'choice', Grid = 'grid', Range = 'range', Fixed = 'fixed', } export const parameterOptions = [ 'uniform', 'quniform', 'loguniform', 'qloguniform', 'randn', 'qrandn', 'randint', 'qrandint', 'lograndint', 'qlograndint', 'choice', 'grid', ].map((name) => ({ label: name, value: name, })); export const axParameterOptions = ['fixed', 'range', 'choice'].map((name) => ({ label: name, value: name, })); export type ParameterData = { label: string; name: string; value?: number; }; // 参数表单数据 export type FormParameter = { name: string; // 参数名称 type: ParameterType; // 参数类型 range: any; // 参数值 [key: string]: any; }; export const getFormOptions = (type?: ParameterType, value?: number[]): ParameterData[] => { const numbers = value?.map((item) => { const num = Number(item); if (isNaN(num)) { return undefined; } return num; }) ?? []; switch (type) { case ParameterType.Uniform: case ParameterType.LogUniform: case ParameterType.RandInt: case ParameterType.LogRandInt: case ParameterType.Range: return [ { name: 'min', label: '最小值', value: numbers?.[0], }, { name: 'max', label: '最大值', value: numbers?.[1], }, ]; case ParameterType.QUniform: case ParameterType.QLogUniform: case ParameterType.QRandInt: case ParameterType.QLogRandInt: return [ { name: 'min', label: '最小值', value: numbers?.[0], }, { name: 'max', label: '最大值', value: numbers?.[1], }, { name: 'q', label: '间隔', value: numbers?.[2], }, ]; case ParameterType.Randn: return [ { name: 'mean', label: '均值', value: numbers?.[0], }, { name: 'std', label: '方差', value: numbers?.[1], }, ]; case ParameterType.QRandn: return [ { name: 'mean', label: '均值', value: numbers?.[0], }, { name: 'std', label: '方差', value: numbers?.[1], }, { name: 'q', label: '间隔', value: numbers?.[2], }, ]; case ParameterType.Fixed: return [ { name: 'value', label: '值', value: numbers?.[0], }, ]; default: return []; } }; export const getReqParamName = (type: ParameterType) => { if (type === ParameterType.Fixed) { return 'value'; } else if (type === ParameterType.Choice || type === ParameterType.Grid) { return 'values'; } else { return 'bounds'; } };