Browse Source

feat: 选择模型添加版本描述

dev-zw-temp
zhaowei 7 months ago
parent
commit
3518879e12
4 changed files with 60 additions and 15 deletions
  1. +19
    -6
      react-ui/src/components/ResourceSelectorModal/config.tsx
  2. +16
    -1
      react-ui/src/components/ResourceSelectorModal/index.less
  3. +24
    -8
      react-ui/src/components/ResourceSelectorModal/index.tsx
  4. +1
    -0
      react-ui/src/pages/Mirror/Info/index.tsx

+ 19
- 6
react-ui/src/components/ResourceSelectorModal/config.tsx View File

@@ -2,7 +2,7 @@ import datasetImg from '@/assets/img/modal-select-dataset.png';
import mirrorImg from '@/assets/img/modal-select-mirror.png'; import mirrorImg from '@/assets/img/modal-select-mirror.png';
import modelImg from '@/assets/img/modal-select-model.png'; import modelImg from '@/assets/img/modal-select-model.png';
import { AvailableRange, CommonTabKeys, MirrorVersionStatus } from '@/enums'; import { AvailableRange, CommonTabKeys, MirrorVersionStatus } from '@/enums';
import { ResourceData, ResourceVersionData } from '@/pages/Dataset/config';
import { DatasetData, ModelData, ResourceData, ResourceVersionData } from '@/pages/Dataset/config';
import { MirrorVersionData } from '@/pages/Mirror/Info'; import { MirrorVersionData } from '@/pages/Mirror/Info';
import { MirrorData } from '@/pages/Mirror/List'; import { MirrorData } from '@/pages/Mirror/List';
import { import {
@@ -71,6 +71,7 @@ const convertMirrorVersionToTreeData = (
key: `${parentId}-${item.id}`, key: `${parentId}-${item.id}`,
isLeaf: true, isLeaf: true,
checkable: true, checkable: true,
description: item.description,
})); }));
}; };


@@ -125,11 +126,16 @@ export class DatasetSelector implements SelectorTypeInfo {
const params = pick(parentNode, ['owner', 'identifier', 'id', 'name', 'version', 'is_public']); const params = pick(parentNode, ['owner', 'identifier', 'id', 'name', 'version', 'is_public']);
const res = await getDatasetInfo(params); const res = await getDatasetInfo(params);
if (res && res.data) { if (res && res.data) {
const path = res.data.relative_paths || '';
const list = res.data.dataset_version_vos || [];
const dataset = res.data as DatasetData;
const {
relative_paths: path = '',
dataset_version_vos: list = [],
version_desc: versionDesc = '',
} = dataset;
return { return {
path, path,
content: list, content: list,
versionDesc,
}; };
} else { } else {
return Promise.reject('获取数据集文件列表失败'); return Promise.reject('获取数据集文件列表失败');
@@ -177,11 +183,17 @@ export class ModelSelector implements SelectorTypeInfo {
const params = pick(parentNode, ['owner', 'identifier', 'id', 'name', 'version', 'is_public']); const params = pick(parentNode, ['owner', 'identifier', 'id', 'name', 'version', 'is_public']);
const res = await getModelInfo(params); const res = await getModelInfo(params);
if (res && res.data) { if (res && res.data) {
const path = res.data.relative_paths || '';
const list = res.data.model_version_vos || [];
const model = res.data as ModelData;
const {
relative_paths: path = '',
model_version_vos: list = [],
version_desc: versionDesc = '',
} = model;

return { return {
path, path,
content: list, content: list,
versionDesc,
}; };
} else { } else {
return Promise.reject('获取模型文件列表失败'); return Promise.reject('获取模型文件列表失败');
@@ -235,7 +247,7 @@ export class MirrorSelector implements SelectorTypeInfo {
} }


async getFiles(_parentKey: string, parentNode: MirrorVersionData) { async getFiles(_parentKey: string, parentNode: MirrorVersionData) {
const { url } = parentNode;
const { url, description } = parentNode;
return { return {
path: url, path: url,
content: [ content: [
@@ -244,6 +256,7 @@ export class MirrorSelector implements SelectorTypeInfo {
file_name: `${url}`, file_name: `${url}`,
}, },
], ],
versionDesc: description,
}; };
} }
} }


+ 16
- 1
react-ui/src/components/ResourceSelectorModal/index.less View File

@@ -65,7 +65,7 @@
border-bottom: 1px solid rgba(22, 100, 255, 0.1); border-bottom: 1px solid rgba(22, 100, 255, 0.1);
} }
&__files { &__files {
height: calc(100% - 75px);
height: calc(100% - 61px);
overflow-y: auto; overflow-y: auto;


&__file { &__file {
@@ -76,7 +76,22 @@
word-break: break-all; word-break: break-all;
background: rgba(4, 3, 3, 0.06); background: rgba(4, 3, 3, 0.06);
border-radius: 4px; border-radius: 4px;

&:last-child {
margin-bottom: 0;
}
} }
} }
&__desc {
margin-bottom: 10px;
padding: 10px;
overflow-y: auto;
color: @text-color-secondary;
font-size: 13px;
word-break: break-all;
background: rgba(4, 3, 3, 0.06);
border-radius: 4px;
max-height: calc(100% - 61px);
}
} }
} }

+ 24
- 8
react-ui/src/components/ResourceSelectorModal/index.tsx View File

@@ -84,6 +84,7 @@ function ResourceSelectorModal({
const [loadedKeys, setLoadedKeys] = useState<React.Key[]>([]); const [loadedKeys, setLoadedKeys] = useState<React.Key[]>([]);
const [originTreeData, setOriginTreeData] = useState<TreeDataNode[]>([]); const [originTreeData, setOriginTreeData] = useState<TreeDataNode[]>([]);
const [files, setFiles] = useState<ResourceFileData[]>([]); const [files, setFiles] = useState<ResourceFileData[]>([]);
const [versionDesc, setVersionDesc] = useState<string | undefined>(undefined);
const [versionPath, setVersionPath] = useState(''); const [versionPath, setVersionPath] = useState('');
const [searchText, setSearchText] = useState(''); const [searchText, setSearchText] = useState('');
const [firstLoadList, setFirstLoadList] = useState(false); const [firstLoadList, setFirstLoadList] = useState(false);
@@ -119,6 +120,7 @@ function ResourceSelectorModal({
setCheckedKeys([]); setCheckedKeys([]);
setLoadedKeys([]); setLoadedKeys([]);
setFiles([]); setFiles([]);
setVersionDesc(undefined);
setVersionPath(''); setVersionPath('');
setSearchText(''); setSearchText('');
getTreeData(); getTreeData();
@@ -169,9 +171,11 @@ function ResourceSelectorModal({
if (res) { if (res) {
setVersionPath(res.path); setVersionPath(res.path);
setFiles(res.content); setFiles(res.content);
setVersionDesc(res.versionDesc);
} else { } else {
setVersionPath(''); setVersionPath('');
setFiles([]); setFiles([]);
setVersionDesc(undefined);
} }
}; };


@@ -201,6 +205,7 @@ function ResourceSelectorModal({
} else { } else {
setVersionPath(''); setVersionPath('');
setFiles([]); setFiles([]);
setVersionDesc(undefined);
} }
}; };


@@ -253,8 +258,9 @@ function ResourceSelectorModal({


const title = `选择${config.name}`; const title = `选择${config.name}`;
const palceholder = `请输入${config.name}名称`; const palceholder = `请输入${config.name}名称`;
const fileLen = files.length > 0 ? `(${files.length})` : '';
const fileTitle = const fileTitle =
type === ResourceSelectorType.Mirror ? '已选镜像' : `已选${config.name}文件(${files.length})`;
type === ResourceSelectorType.Mirror ? '镜像地址' : `${config.name}版本文件${fileLen}`;
const tabItems = config.tabItems; const tabItems = config.tabItems;
const titleImg = config.modalIcon; const titleImg = config.modalIcon;


@@ -312,14 +318,24 @@ function ResourceSelectorModal({
/> />
</div> </div>
<div className={styles['model-selector__right']}> <div className={styles['model-selector__right']}>
<div className={styles['model-selector__right__title']}>{fileTitle}</div>
<div className={styles['model-selector__right__files']}>
{files.map((v) => (
<div key={v.url} className={styles['model-selector__right__files__file']}>
{v.file_name}
</div>
))}
<div style={{ height: '50%' }}>
<div className={styles['model-selector__right__title']}>{fileTitle}</div>
<div className={styles['model-selector__right__files']}>
{files.map((v) => (
<div key={v.url} className={styles['model-selector__right__files__file']}>
{v.file_name}
</div>
))}
</div>
</div> </div>
{versionDesc && (
<div style={{ height: '50%' }}>
<div
className={styles['model-selector__right__title']}
>{`${config.name}版本描述`}</div>
<div className={styles['model-selector__right__desc']}>{versionDesc}</div>
</div>
)}
</div> </div>
</div> </div>
</div> </div>


+ 1
- 0
react-ui/src/pages/Mirror/Info/index.tsx View File

@@ -53,6 +53,7 @@ export type MirrorVersionData = {
file_size: string; file_size: string;
create_time: string; create_time: string;
tag_name: string; tag_name: string;
description: string;
}; };


function MirrorInfo() { function MirrorInfo() {


Loading…
Cancel
Save