|
- import InfoGroup from '@/components/InfoGroup';
- import { getFileReq } from '@/services/file';
- import { to } from '@/utils/promise';
- import { Button, Image } from 'antd';
- import { useEffect, useMemo, useState } from 'react';
- import styles from './index.less';
-
- type ExperimentResultProps = {
- fileUrl?: string;
- imageUrl?: string;
- modelPath?: string;
- };
-
- function ExperimentResult({ fileUrl, imageUrl, modelPath }: ExperimentResultProps) {
- const [result, setResult] = useState<string | undefined>('');
-
- const images = useMemo(() => {
- if (imageUrl) {
- return imageUrl.split(',').map((item) => item.trim());
- }
- return [];
- }, [imageUrl]);
-
- useEffect(() => {
- // 获取实验运行历史记录
- const getResultFile = async () => {
- const [res] = await to(getFileReq(fileUrl));
- if (res) {
- setResult(res as any as string);
- }
- };
-
- if (fileUrl) {
- getResultFile();
- }
- }, [fileUrl]);
-
- return (
- <div className={styles['experiment-result']}>
- <InfoGroup title="实验结果" height={420} width="100%">
- <div className={styles['experiment-result__text']}>{result}</div>
- </InfoGroup>
- <InfoGroup title="可视化结果" style={{ margin: '16px 0' }}>
- <div className={styles['experiment-result__images']}>
- <Image.PreviewGroup
- preview={{
- onChange: (current, prev) =>
- console.log(`current index: ${current}, prev index: ${prev}`),
- }}
- >
- {images.map((item) => (
- <Image
- key={item}
- className={styles['experiment-result__images__item']}
- src={item}
- height={248}
- draggable={false}
- alt=""
- />
- ))}
- </Image.PreviewGroup>
- </div>
- </InfoGroup>
- {modelPath && (
- <div className={styles['experiment-result__download']}>
- <span style={{ marginRight: '12px', color: '#606b7a' }}>文件名</span>
- <span>save_model.joblib</span>
- <Button
- type="primary"
- className={styles['experiment-result__download__btn']}
- onClick={() => {
- window.location.href = modelPath;
- }}
- >
- 模型下载
- </Button>
- </div>
- )}
- </div>
- );
- }
-
- export default ExperimentResult;
|