{image && (
diff --git a/react-ui/src/enums/index.ts b/react-ui/src/enums/index.ts
index 34d5b51b..bdfe9e00 100644
--- a/react-ui/src/enums/index.ts
+++ b/react-ui/src/enums/index.ts
@@ -118,3 +118,14 @@ export const autoMLResamplingStrategyOptions = [
{ label: 'holdout', value: AutoMLResamplingStrategy.Holdout },
{ label: 'crossValid', value: AutoMLResamplingStrategy.CrossValid },
];
+
+// 超参数自动寻优优化方向
+export enum hyperParameterOptimizedMode {
+ Min = 'min',
+ Max = 'max',
+}
+
+export const hyperParameterOptimizedModeOptions = [
+ { label: '越大越好', value: hyperParameterOptimizedMode.Max },
+ { label: '越小越好', value: hyperParameterOptimizedMode.Min },
+];
diff --git a/react-ui/src/global.less b/react-ui/src/global.less
index fbbfa34d..9944c70e 100644
--- a/react-ui/src/global.less
+++ b/react-ui/src/global.less
@@ -5,7 +5,7 @@ body,
height: 100%;
margin: 0;
padding: 0;
- overflow-y: hidden;
+ overflow-y: visible;
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial,
'Noto Sans', sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol',
'Noto Color Emoji';
diff --git a/react-ui/src/iconfont/iconfont-menu.json b/react-ui/src/iconfont/iconfont-menu.json
index 297c7837..15215226 100644
--- a/react-ui/src/iconfont/iconfont-menu.json
+++ b/react-ui/src/iconfont/iconfont-menu.json
@@ -1,6 +1,6 @@
{
"id": "4511326",
- "name": "复杂智能软件-导航",
+ "name": "智能材料科研平台-导航",
"font_family": "iconfont",
"css_prefix_text": "icon-",
"description": "",
diff --git a/react-ui/src/iconfont/iconfont.js b/react-ui/src/iconfont/iconfont.js
index d7576e9c..75c1b755 100644
--- a/react-ui/src/iconfont/iconfont.js
+++ b/react-ui/src/iconfont/iconfont.js
@@ -1 +1 @@
-window._iconfont_svg_string_4511447='
',(t=>{var a=(h=(h=document.getElementsByTagName("script"))[h.length-1]).getAttribute("data-injectcss"),h=h.getAttribute("data-disable-injectsvg");if(!h){var l,z,v,i,o,m=function(a,h){h.parentNode.insertBefore(a,h)};if(a&&!t.__iconfont__svg__cssinject__){t.__iconfont__svg__cssinject__=!0;try{document.write("")}catch(a){console&&console.log(a)}}l=function(){var a,h=document.createElement("div");h.innerHTML=t._iconfont_svg_string_4511447,(h=h.getElementsByTagName("svg")[0])&&(h.setAttribute("aria-hidden","true"),h.style.position="absolute",h.style.width=0,h.style.height=0,h.style.overflow="hidden",h=h,(a=document.body).firstChild?m(h,a.firstChild):a.appendChild(h))},document.addEventListener?~["complete","loaded","interactive"].indexOf(document.readyState)?setTimeout(l,0):(z=function(){document.removeEventListener("DOMContentLoaded",z,!1),l()},document.addEventListener("DOMContentLoaded",z,!1)):document.attachEvent&&(v=l,i=t.document,o=!1,d(),i.onreadystatechange=function(){"complete"==i.readyState&&(i.onreadystatechange=null,p())})}function p(){o||(o=!0,v())}function d(){try{i.documentElement.doScroll("left")}catch(a){return void setTimeout(d,50)}p()}})(window);
\ No newline at end of file
+window._iconfont_svg_string_4511447='
',(t=>{var a=(h=(h=document.getElementsByTagName("script"))[h.length-1]).getAttribute("data-injectcss"),h=h.getAttribute("data-disable-injectsvg");if(!h){var l,z,v,i,o,m=function(a,h){h.parentNode.insertBefore(a,h)};if(a&&!t.__iconfont__svg__cssinject__){t.__iconfont__svg__cssinject__=!0;try{document.write("")}catch(a){console&&console.log(a)}}l=function(){var a,h=document.createElement("div");h.innerHTML=t._iconfont_svg_string_4511447,(h=h.getElementsByTagName("svg")[0])&&(h.setAttribute("aria-hidden","true"),h.style.position="absolute",h.style.width=0,h.style.height=0,h.style.overflow="hidden",h=h,(a=document.body).firstChild?m(h,a.firstChild):a.appendChild(h))},document.addEventListener?~["complete","loaded","interactive"].indexOf(document.readyState)?setTimeout(l,0):(z=function(){document.removeEventListener("DOMContentLoaded",z,!1),l()},document.addEventListener("DOMContentLoaded",z,!1)):document.attachEvent&&(v=l,i=t.document,o=!1,d(),i.onreadystatechange=function(){"complete"==i.readyState&&(i.onreadystatechange=null,p())})}function p(){o||(o=!0,v())}function d(){try{i.documentElement.doScroll("left")}catch(a){return void setTimeout(d,50)}p()}})(window);
\ No newline at end of file
diff --git a/react-ui/src/overrides.less b/react-ui/src/overrides.less
index e129b4a7..4709a97c 100644
--- a/react-ui/src/overrides.less
+++ b/react-ui/src/overrides.less
@@ -261,3 +261,8 @@
}
}
}
+
+.ant-typography {
+ color: inherit;
+ font-size: inherit;
+}
diff --git a/react-ui/src/pages/404.tsx b/react-ui/src/pages/404.tsx
index dbacba53..d6f45451 100644
--- a/react-ui/src/pages/404.tsx
+++ b/react-ui/src/pages/404.tsx
@@ -12,7 +12,7 @@ const NoFoundPage = () => {
content={'很抱歉,您访问的页面地址有误,\n或者该页面不存在。'}
hasFooter={true}
buttonTitle="返回首页"
- onRefresh={() => navigate('/')}
+ onButtonClick={() => navigate('/')}
>
);
};
diff --git a/react-ui/src/pages/AutoML/Create/index.less b/react-ui/src/pages/AutoML/Create/index.less
index f8d15d2e..46c1f603 100644
--- a/react-ui/src/pages/AutoML/Create/index.less
+++ b/react-ui/src/pages/AutoML/Create/index.less
@@ -33,7 +33,7 @@
}
.ant-btn-variant-text:disabled {
- color: rgba(0, 0, 0, 0.25);
+ color: @text-disabled-color;
}
.ant-btn-variant-text {
diff --git a/react-ui/src/pages/AutoML/Create/index.tsx b/react-ui/src/pages/AutoML/Create/index.tsx
index 19fedd19..ec016c3c 100644
--- a/react-ui/src/pages/AutoML/Create/index.tsx
+++ b/react-ui/src/pages/AutoML/Create/index.tsx
@@ -1,7 +1,7 @@
/*
* @Author: 赵伟
* @Date: 2024-04-16 13:58:08
- * @Description: 创建服务版本
+ * @Description: 创建实验
*/
import PageTitle from '@/components/PageTitle';
import { AutoMLEnsembleClass, AutoMLTaskType } from '@/enums';
@@ -11,7 +11,6 @@ import { safeInvoke } from '@/utils/functional';
import { to } from '@/utils/promise';
import { useLocation, useNavigate, useParams } from '@umijs/max';
import { App, Button, Form } from 'antd';
-import { omit } from 'lodash';
import { useEffect } from 'react';
import BasicConfig from '../components/CreateForm/BasicConfig';
import DatasetConfig from '../components/CreateForm/DatasetConfig';
@@ -106,7 +105,7 @@ function CreateAutoML() {
// 根据后台要求,修改表单数据
const object = {
- ...omit(formData),
+ ...formData,
include_classifier: convertEmptyStringToUndefined(include_classifier),
include_feature_preprocessor: convertEmptyStringToUndefined(include_feature_preprocessor),
include_regressor: convertEmptyStringToUndefined(include_regressor),
@@ -191,7 +190,7 @@ function CreateAutoML() {
-
+
diff --git a/react-ui/src/pages/AutoML/Info/index.tsx b/react-ui/src/pages/AutoML/Info/index.tsx
index cc5247e2..0d0ec460 100644
--- a/react-ui/src/pages/AutoML/Info/index.tsx
+++ b/react-ui/src/pages/AutoML/Info/index.tsx
@@ -3,9 +3,7 @@
* @Date: 2024-04-16 13:58:08
* @Description: 自主机器学习详情
*/
-import KFIcon from '@/components/KFIcon';
import PageTitle from '@/components/PageTitle';
-import { CommonTabKeys } from '@/enums';
import { getAutoMLInfoReq } from '@/services/autoML';
import { safeInvoke } from '@/utils/functional';
import { to } from '@/utils/promise';
@@ -16,24 +14,10 @@ import { AutoMLData } from '../types';
import styles from './index.less';
function AutoMLInfo() {
- const [activeTab, setActiveTab] = useState(CommonTabKeys.Public);
const params = useParams();
const autoMLId = safeInvoke(Number)(params.id);
const [autoMLInfo, setAutoMLInfo] = useState(undefined);
- const tabItems = [
- {
- key: CommonTabKeys.Public,
- label: '基本信息',
- icon: ,
- },
- {
- key: CommonTabKeys.Private,
- label: 'Trial列表',
- icon: ,
- },
- ];
-
useEffect(() => {
if (autoMLId) {
getAutoMLInfo();
diff --git a/react-ui/src/pages/AutoML/List/index.tsx b/react-ui/src/pages/AutoML/List/index.tsx
index 13e3dcbe..a4488e4d 100644
--- a/react-ui/src/pages/AutoML/List/index.tsx
+++ b/react-ui/src/pages/AutoML/List/index.tsx
@@ -3,419 +3,11 @@
* @Date: 2024-04-16 13:58:08
* @Description: 自主机器学习列表
*/
-import KFIcon from '@/components/KFIcon';
-import PageTitle from '@/components/PageTitle';
-import { ExperimentStatus } from '@/enums';
-import { useCacheState } from '@/hooks/pageCacheState';
-import { experimentStatusInfo } from '@/pages/Experiment/status';
-import {
- deleteAutoMLReq,
- getAutoMLListReq,
- getExperimentInsListReq,
- runAutoMLReq,
-} from '@/services/autoML';
-import themes from '@/styles/theme.less';
-import { type ExperimentInstance as ExperimentInstanceData } from '@/types';
-import { to } from '@/utils/promise';
-import tableCellRender, { TableCellValueType } from '@/utils/table';
-import { modalConfirm } from '@/utils/ui';
-import { useNavigate } from '@umijs/max';
-import {
- App,
- Button,
- ConfigProvider,
- Input,
- Table,
- Tooltip,
- type TablePaginationConfig,
- type TableProps,
-} from 'antd';
-import { type SearchProps } from 'antd/es/input';
-import classNames from 'classnames';
-import { useEffect, useState } from 'react';
-import ExperimentInstance from '../components/ExperimentInstance';
-import { AutoMLData } from '../types';
-import styles from './index.less';
-function AutoMLList() {
- const navigate = useNavigate();
- const { message } = App.useApp();
- const [cacheState, setCacheState] = useCacheState();
- const [searchText, setSearchText] = useState(cacheState?.searchText);
- const [inputText, setInputText] = useState(cacheState?.searchText);
- const [tableData, setTableData] = useState([]);
- const [total, setTotal] = useState(0);
- const [experimentInsList, setExperimentInsList] = useState([]);
- const [expandedRowKeys, setExpandedRowKeys] = useState([]);
- const [experimentInsTotal, setExperimentInsTotal] = useState(0);
- const [pagination, setPagination] = useState(
- cacheState?.pagination ?? {
- current: 1,
- pageSize: 10,
- },
- );
-
- useEffect(() => {
- getAutoMLList();
- }, [pagination, searchText]);
-
- // 获取自主机器学习列表
- const getAutoMLList = async () => {
- const params: Record = {
- page: pagination.current! - 1,
- size: pagination.pageSize,
- ml_name: searchText || undefined,
- };
- const [res] = await to(getAutoMLListReq(params));
- if (res && res.data) {
- const { content = [], totalElements = 0 } = res.data;
- setTableData(content);
- setTotal(totalElements);
- }
- };
-
- // 搜索
- const onSearch: SearchProps['onSearch'] = (value) => {
- setSearchText(value);
- setPagination((prev) => ({
- ...prev,
- current: 1,
- }));
- };
-
- // 删除模型部署
- const deleteAutoML = async (record: AutoMLData) => {
- const [res] = await to(deleteAutoMLReq(record.id));
- if (res) {
- message.success('删除成功');
- // 如果是一页的唯一数据,删除时,请求第一页的数据
- // 否则直接刷新这一页的数据
- // 避免回到第一页
- if (tableData.length > 1) {
- setPagination((prev) => ({
- ...prev,
- current: 1,
- }));
- } else {
- getAutoMLList();
- }
- }
- };
-
- // 处理删除
- const handleAutoMLDelete = (record: AutoMLData) => {
- modalConfirm({
- title: '删除后,该实验将不可恢复',
- content: '是否确认删除?',
- onOk: () => {
- deleteAutoML(record);
- },
- });
- };
-
- // 创建、编辑、复制自动机器学习
- const createAutoML = (record?: AutoMLData, isCopy: boolean = false) => {
- setCacheState({
- pagination,
- searchText,
- });
-
- if (record) {
- if (isCopy) {
- navigate(`/pipeline/autoML/copy/${record.id}`);
- } else {
- navigate(`/pipeline/autoML/edit/${record.id}`);
- }
- } else {
- navigate(`/pipeline/autoML/create`);
- }
- };
-
- // 查看自动机器学习详情
- const gotoDetail = (record: AutoMLData) => {
- setCacheState({
- pagination,
- searchText,
- });
-
- navigate(`/pipeline/autoML/info/${record.id}`);
- };
-
- // 启动自动机器学习
- const startAutoML = async (record: AutoMLData) => {
- const [res] = await to(runAutoMLReq(record.id));
- if (res) {
- message.success('运行成功');
- setExpandedRowKeys([record.id]);
- refreshExperimentList();
- refreshExperimentIns(record.id);
- }
- };
+import ExperimentList, { ExperimentListType } from '../components/ExperimentList';
- // --------------------------- 实验实例 ---------------------------
- // 获取实验实例列表
- const getExperimentInsList = async (autoMLId: number, page: number) => {
- const params = {
- autoMlId: autoMLId,
- page: page,
- size: 5,
- };
- const [res] = await to(getExperimentInsListReq(params));
- if (res && res.data) {
- const { content = [], totalElements = 0 } = res.data;
- try {
- if (page === 0) {
- setExperimentInsList(content);
- } else {
- setExperimentInsList((prev) => [...prev, ...content]);
- }
- setExperimentInsTotal(totalElements);
- } catch (error) {
- console.error('JSON parse error: ', error);
- }
- }
- };
- // 展开实例
- const handleExpandChange = (expanded: boolean, record: AutoMLData) => {
- setExperimentInsList([]);
- if (expanded) {
- setExpandedRowKeys([record.id]);
- getExperimentInsList(record.id, 0);
- } else {
- setExpandedRowKeys([]);
- }
- };
-
- // 跳转到实验实例详情
- const gotoInstanceInfo = (autoML: AutoMLData, record: ExperimentInstanceData) => {
- navigate({ pathname: `/pipeline/automl/instance/${autoML.id}/${record.id}` });
- };
-
- // 刷新实验实例列表
- const refreshExperimentIns = (experimentId: number) => {
- getExperimentInsList(experimentId, 0);
- };
-
- // 加载更多实验实例
- const loadMoreExperimentIns = () => {
- const page = Math.round(experimentInsList.length / 5);
- const autoMLId = expandedRowKeys[0];
- getExperimentInsList(autoMLId, page);
- };
-
- // 实验实例终止
- const handleInstanceTerminate = async (experimentIns: ExperimentInstanceData) => {
- // 刷新实验列表
- refreshExperimentList();
- setExperimentInsList((prevList) => {
- return prevList.map((item) => {
- if (item.id === experimentIns.id) {
- return {
- ...item,
- status: ExperimentStatus.Terminated,
- };
- }
- return item;
- });
- });
- };
-
- // 刷新实验列表状态,
- // 目前是直接刷新实验列表,后续需要优化,只刷新状态
- const refreshExperimentList = () => {
- getAutoMLList();
- };
-
- // --------------------------- Table ---------------------------
- // 分页切换
- const handleTableChange: TableProps['onChange'] = (
- pagination,
- _filters,
- _sorter,
- { action },
- ) => {
- if (action === 'paginate') {
- setPagination(pagination);
- }
- };
-
- const columns: TableProps['columns'] = [
- {
- title: '实验名称',
- dataIndex: 'ml_name',
- key: 'ml_name',
- width: '16%',
- render: tableCellRender(false, TableCellValueType.Link, {
- onClick: gotoDetail,
- }),
- },
- {
- title: '实验描述',
- dataIndex: 'ml_description',
- key: 'ml_description',
- render: tableCellRender(true),
- ellipsis: { showTitle: false },
- },
-
- {
- title: '创建时间',
- dataIndex: 'update_time',
- key: 'update_time',
- width: '20%',
- render: tableCellRender(true, TableCellValueType.Date),
- ellipsis: { showTitle: false },
- },
- {
- title: '最近五次运行状态',
- dataIndex: 'status_list',
- key: 'status_list',
- width: 200,
- render: (text) => {
- const newText: string[] = text && text.replace(/\s+/g, '').split(',');
- return (
- <>
- {newText && newText.length > 0
- ? newText.map((item, index) => {
- return (
-
-
-
- );
- })
- : null}
- >
- );
- },
- },
- {
- title: '操作',
- dataIndex: 'operation',
- width: 360,
- key: 'operation',
- render: (_: any, record: AutoMLData) => (
-
- }
- onClick={() => startAutoML(record)}
- >
- 运行
-
- }
- onClick={() => createAutoML(record, false)}
- >
- 编辑
-
- }
- onClick={() => createAutoML(record, true)}
- >
- 复制
-
-
-
- }
- onClick={() => handleAutoMLDelete(record)}
- >
- 删除
-
-
-
- ),
- },
- ];
-
- return (
-
-
-
-
- setInputText(e.target.value)}
- style={{ width: 300 }}
- value={inputText}
- allowClear
- />
-
-
-
-
`共${total}条`,
- }}
- onChange={handleTableChange}
- expandable={{
- expandedRowRender: (record) => (
- gotoInstanceInfo(record, item)}
- onRemove={() => {
- refreshExperimentIns(record.id);
- refreshExperimentList();
- }}
- onTerminate={handleInstanceTerminate}
- onLoadMore={() => loadMoreExperimentIns()}
- >
- ),
- onExpand: (e, a) => {
- handleExpandChange(e, a);
- },
- expandedRowKeys: expandedRowKeys,
- rowExpandable: () => true,
- }}
- rowKey="id"
- />
-
-
-
- );
+function AutoMLList() {
+ return ;
}
export default AutoMLList;
diff --git a/react-ui/src/pages/AutoML/components/AutoMLBasic/index.tsx b/react-ui/src/pages/AutoML/components/AutoMLBasic/index.tsx
index 854c6035..5f207b7d 100644
--- a/react-ui/src/pages/AutoML/components/AutoMLBasic/index.tsx
+++ b/react-ui/src/pages/AutoML/components/AutoMLBasic/index.tsx
@@ -1,28 +1,16 @@
+import ConfigInfo, { type BasicInfoData } from '@/components/ConfigInfo';
import { AutoMLTaskType, autoMLEnsembleClassOptions, autoMLTaskTypeOptions } from '@/enums';
import { AutoMLData } from '@/pages/AutoML/types';
import { experimentStatusInfo } from '@/pages/Experiment/status';
import { type NodeStatus } from '@/types';
import { parseJsonText } from '@/utils';
import { elapsedTime } from '@/utils/date';
+import { formatBoolean, formatDataset, formatDate, formatEnum } from '@/utils/format';
import { Flex } from 'antd';
import classNames from 'classnames';
import { useMemo } from 'react';
-import ConfigInfo, {
- formatBoolean,
- formatDate,
- formatEnum,
- type BasicInfoData,
-} from '../ConfigInfo';
import styles from './index.less';
-// 格式化数据集
-const formatDataset = (dataset: { name: string; version: string }) => {
- if (!dataset || !dataset.name || !dataset.version) {
- return '--';
- }
- return `${dataset.name}:${dataset.version}`;
-};
-
// 格式化优化方向
const formatOptimizeMode = (value: boolean) => {
return value ? '越大越好' : '越小越好';
@@ -58,28 +46,23 @@ function AutoMLBasic({ info, className, runStatus, isInstance = false }: AutoMLB
{
label: '实验名称',
value: info.ml_name,
- ellipsis: true,
},
{
label: '实验描述',
value: info.ml_description,
- ellipsis: true,
},
{
label: '创建人',
value: info.create_by,
- ellipsis: true,
},
{
label: '创建时间',
value: info.create_time,
- ellipsis: true,
format: formatDate,
},
{
label: '更新时间',
value: info.update_time,
- ellipsis: true,
format: formatDate,
},
];
@@ -93,18 +76,15 @@ function AutoMLBasic({ info, className, runStatus, isInstance = false }: AutoMLB
{
label: '任务类型',
value: info.task_type,
- ellipsis: true,
format: formatEnum(autoMLTaskTypeOptions),
},
{
label: '特征预处理算法',
value: info.include_feature_preprocessor,
- ellipsis: true,
},
{
label: '排除的特征预处理算法',
value: info.exclude_feature_preprocessor,
- ellipsis: true,
},
{
label: info.task_type === AutoMLTaskType.Regression ? '回归算法' : '分类算法',
@@ -112,7 +92,6 @@ function AutoMLBasic({ info, className, runStatus, isInstance = false }: AutoMLB
info.task_type === AutoMLTaskType.Regression
? info.include_regressor
: info.include_classifier,
- ellipsis: true,
},
{
label: info.task_type === AutoMLTaskType.Regression ? '排除的回归算法' : '排除的分类算法',
@@ -120,91 +99,73 @@ function AutoMLBasic({ info, className, runStatus, isInstance = false }: AutoMLB
info.task_type === AutoMLTaskType.Regression
? info.exclude_regressor
: info.exclude_classifier,
- ellipsis: true,
},
{
label: '集成方式',
value: info.ensemble_class,
- ellipsis: true,
format: formatEnum(autoMLEnsembleClassOptions),
},
{
label: '集成模型数量',
value: info.ensemble_size,
- ellipsis: true,
},
{
label: '集成最佳模型数量',
value: info.ensemble_nbest,
- ellipsis: true,
},
{
label: '最大数量',
value: info.max_models_on_disc,
- ellipsis: true,
},
{
label: '内存限制(MB)',
value: info.memory_limit,
- ellipsis: true,
},
{
label: '单次时间限制(秒)',
value: info.per_run_time_limit,
- ellipsis: true,
},
{
label: '搜索时间限制(秒)',
value: info.time_left_for_this_task,
- ellipsis: true,
},
{
label: '重采样策略',
value: info.resampling_strategy,
- ellipsis: true,
},
{
label: '交叉验证折数',
value: info.folds,
- ellipsis: true,
},
{
label: '是否打乱',
value: info.shuffle,
- ellipsis: true,
format: formatBoolean,
},
{
label: '训练集比率',
value: info.train_size,
- ellipsis: true,
},
{
label: '测试集比率',
value: info.test_size,
- ellipsis: true,
},
{
label: '计算指标',
value: info.scoring_functions,
- ellipsis: true,
},
{
label: '随机种子',
value: info.seed,
- ellipsis: true,
},
-
{
label: '数据集',
value: info.dataset,
- ellipsis: true,
format: formatDataset,
},
{
label: '预测目标列',
value: info.target_columns,
- ellipsis: true,
},
];
}, [info]);
@@ -217,18 +178,15 @@ function AutoMLBasic({ info, className, runStatus, isInstance = false }: AutoMLB
{
label: '指标名称',
value: info.metric_name,
- ellipsis: true,
},
{
label: '优化方向',
value: info.greater_is_better,
- ellipsis: true,
format: formatOptimizeMode,
},
{
label: '指标权重',
value: info.metrics,
- ellipsis: true,
format: formatMetricsWeight,
},
];
@@ -243,12 +201,10 @@ function AutoMLBasic({ info, className, runStatus, isInstance = false }: AutoMLB
{
label: '启动时间',
value: formatDate(runStatus.startedAt),
- ellipsis: true,
},
{
label: '执行时长',
value: elapsedTime(runStatus.startedAt, runStatus.finishedAt),
- ellipsis: true,
},
{
label: '状态',
@@ -271,7 +227,6 @@ function AutoMLBasic({ info, className, runStatus, isInstance = false }: AutoMLB
),
- ellipsis: true,
},
];
}, [runStatus]);
@@ -281,7 +236,7 @@ function AutoMLBasic({ info, className, runStatus, isInstance = false }: AutoMLB
{isInstance && runStatus && (
@@ -289,18 +244,18 @@ function AutoMLBasic({ info, className, runStatus, isInstance = false }: AutoMLB
{!isInstance && (
)}
-
+
);
}
diff --git a/react-ui/src/pages/AutoML/components/ConfigInfo/index.less b/react-ui/src/pages/AutoML/components/ConfigInfo/index.less
deleted file mode 100644
index 33fb3314..00000000
--- a/react-ui/src/pages/AutoML/components/ConfigInfo/index.less
+++ /dev/null
@@ -1,20 +0,0 @@
-.config-info {
- :global {
- .kf-basic-info {
- width: 100%;
-
- &__item {
- width: calc((100% - 80px) / 3);
- &__label {
- font-size: @font-size;
- text-align: left;
- text-align-last: left;
- }
- &__value {
- min-width: 0;
- font-size: @font-size;
- }
- }
- }
- }
-}
diff --git a/react-ui/src/pages/AutoML/components/ConfigInfo/index.tsx b/react-ui/src/pages/AutoML/components/ConfigInfo/index.tsx
deleted file mode 100644
index 10e042e4..00000000
--- a/react-ui/src/pages/AutoML/components/ConfigInfo/index.tsx
+++ /dev/null
@@ -1,26 +0,0 @@
-import BasicInfo, { type BasicInfoData } from '@/components/BasicInfo';
-import InfoGroup from '@/components/InfoGroup';
-import classNames from 'classnames';
-import styles from './index.less';
-export * from '@/components/BasicInfo/format';
-export type { BasicInfoData };
-
-type ConfigInfoProps = {
- title: string;
- data: BasicInfoData[];
- labelWidth: number;
- className?: string;
- style?: React.CSSProperties;
-};
-
-function ConfigInfo({ title, data, labelWidth, className, style }: ConfigInfoProps) {
- return (
-
-
-
-
-
- );
-}
-
-export default ConfigInfo;
diff --git a/react-ui/src/pages/AutoML/components/CopyingText/index.tsx b/react-ui/src/pages/AutoML/components/CopyingText/index.tsx
index b4c56f4e..586de40b 100644
--- a/react-ui/src/pages/AutoML/components/CopyingText/index.tsx
+++ b/react-ui/src/pages/AutoML/components/CopyingText/index.tsx
@@ -9,11 +9,7 @@ export type CopyingTextProps = {
function CopyingText({ text }: CopyingTextProps) {
return (
-
+
{text}
-
+