From aee9566bbb3ce40fa2e541b46115a0421a1b36e1 Mon Sep 17 00:00:00 2001 From: jialin Date: Thu, 13 Nov 2025 16:50:49 +0800 Subject: [PATCH] fix: yaml editor do not update when upload same file --- src/global.less | 44 ------------------- src/layouts/extraRender.tsx | 24 +++++++++- src/layouts/index.tsx | 1 - src/pages/backends/components/add-modal.tsx | 10 +---- src/pages/backends/components/import-yaml.tsx | 9 ++-- src/pages/backends/components/yaml-editor.tsx | 1 - src/pages/backends/config/schema/create.json | 2 +- .../cluster-management/cluster-create.tsx | 1 - src/pages/llmodels/apis/index.ts | 3 +- .../llmodels/components/api-access-info.tsx | 1 + .../llmodels/components/catalog-item.tsx | 40 +++-------------- src/pages/llmodels/index.tsx | 1 + src/pages/llmodels/style/catalog-item.less | 3 ++ 13 files changed, 42 insertions(+), 98 deletions(-) diff --git a/src/global.less b/src/global.less index a9f606e4..e8bf87f6 100644 --- a/src/global.less +++ b/src/global.less @@ -259,7 +259,6 @@ body { } .ant-pro-sider .ant-layout-sider-children { - // background-color: var(--color-fill-sider); border-right: 1px solid var(--ant-color-split); } } @@ -330,20 +329,7 @@ body { } .ant-menu { - .ant-menu-item { - // color: var(--ant-color-text) !important; - - &:active { - // background-color: var(--ant-menu-item-selected-bg); - } - } - - .ant-menu-item:not(.ant-menu-item-selected) { - // color: var(--ant-color-text); - } - .ant-menu-item.ant-menu-item-selected { - // color: var(--ant-color-primary) !important; font-weight: 400; } @@ -361,38 +347,11 @@ body { .ant-menu-item-only-child { height: 40px; line-height: 40px; - // color: var(--ant-color-text); .anticon { font-size: var(--font-size-middle); } } - - .new-icon { - position: relative; - bottom: 3px; - display: flex; - color: #fff; - width: 36px; - height: 15px; - margin-left: 5px; - justify-content: center; - align-items: center; - background-color: var(--ant-orange-5); - border-radius: 8px 8px 8px 0; - transform: scale(0.9); - - .text { - transform: scale(0.8); - line-height: 1em; - } - } - } -} - -.ant-menu { - .ant-menu-submenu-title { - // color: var(--ant-color-text) !important; } } @@ -400,7 +359,6 @@ body { .user-avatar.ant-menu-submenu { .ant-menu-submenu-title { padding-left: 10px; - // color: var(--ant-color-text) !important; } } @@ -409,7 +367,6 @@ body { display: flex; justify-content: center; align-items: center; - // color: var(--ant-color-text) !important; padding-inline: unset !important; width: 100%; margin-inline: 0 !important; @@ -436,7 +393,6 @@ body { display: flex; justify-content: flex-start; align-items: center; - // color: var(--ant-color-text) !important; } } diff --git a/src/layouts/extraRender.tsx b/src/layouts/extraRender.tsx index 81dbed43..497e7834 100644 --- a/src/layouts/extraRender.tsx +++ b/src/layouts/extraRender.tsx @@ -22,6 +22,26 @@ import { useMemo } from 'react'; import styled from 'styled-components'; import { DEFAULT_ENTER_PAGE } from '../config/settings'; +const NewLabel = styled.span` + position: relative; + bottom: 3px; + display: flex; + color: #fff; + width: 36px; + height: 15px; + margin-left: 5px; + justify-content: center; + align-items: center; + background-color: var(--ant-orange-5); + border-radius: 8px 8px 8px 0; + transform: scale(0.9); + + .text { + transform: scale(0.8); + line-height: 1em; + } +`; + const IconWrapper = styled.span` cursor: pointer; display: flex; @@ -173,11 +193,11 @@ export const ExtraContent = () => { <> {item.label} {showUpgrade && ( - + {intl.formatMessage({ id: 'common.text.new' })} - + )} ) : ( diff --git a/src/layouts/index.tsx b/src/layouts/index.tsx index a087401a..e57e1eb6 100644 --- a/src/layouts/index.tsx +++ b/src/layouts/index.tsx @@ -339,7 +339,6 @@ export default (props: any) => { }; const menuItemRender = (menuItemProps, defaultDom) => { - console.log('defaultdom==========', menuItemProps, defaultDom); if (menuItemProps.isUrl || menuItemProps.children) { return defaultDom; } diff --git a/src/pages/backends/components/add-modal.tsx b/src/pages/backends/components/add-modal.tsx index 58e0a5a1..d5e75ca3 100644 --- a/src/pages/backends/components/add-modal.tsx +++ b/src/pages/backends/components/add-modal.tsx @@ -5,7 +5,7 @@ import SegmentLine from '@/components/segment-line'; import { PageAction } from '@/config'; import { PageActionType } from '@/config/types'; import { useIntl } from '@umijs/max'; -import { Segmented, Tabs } from 'antd'; +import { Tabs } from 'antd'; import _ from 'lodash'; import React, { useEffect, useId, useRef, useState } from 'react'; import styled from 'styled-components'; @@ -25,14 +25,6 @@ const ModalFooterStyle = { justifyContent: 'flex-end' }; -const SegmentedInner = styled(Segmented)` - width: 100%; - border-radius: 0; - .ant-segmented-item { - flex: 1; - } -`; - const SegmentedHeader = styled.div` margin: 16px 24px; border-bottom: 1px solid var(--ant-color-split); diff --git a/src/pages/backends/components/import-yaml.tsx b/src/pages/backends/components/import-yaml.tsx index 6d177450..b0e9e166 100644 --- a/src/pages/backends/components/import-yaml.tsx +++ b/src/pages/backends/components/import-yaml.tsx @@ -67,6 +67,10 @@ const ImportYAML: React.FC = forwardRef( ); const [error, setError] = useState(''); + const setContent = (val: string) => { + editorRef.current?.setValue?.(val); + }; + const beforeUpload = (file: RcFile) => { const isYaml = file.type === 'application/x-yaml' || @@ -81,6 +85,7 @@ const ImportYAML: React.FC = forwardRef( const content = e.target?.result; if (typeof content === 'string') { setFileContent(content); + setContent(content); } else { message.error('Failed to read file content!'); } @@ -150,9 +155,7 @@ const ImportYAML: React.FC = forwardRef( getContent: () => { return getContent(); }, - setContent: (val: string) => { - editorRef.current?.setValue?.(val); - }, + setContent: setContent, validate() { return validate(); } diff --git a/src/pages/backends/components/yaml-editor.tsx b/src/pages/backends/components/yaml-editor.tsx index 4d5601fc..a08f15d3 100644 --- a/src/pages/backends/components/yaml-editor.tsx +++ b/src/pages/backends/components/yaml-editor.tsx @@ -73,7 +73,6 @@ const ViewerEditor: React.FC = forwardRef((props, ref) => { const handleEditorDidMount = (editor: any, monaco: any) => { editorRef.current = editor; monacoRef.current = monaco; - const uri = monaco.Uri.parse(path); }; const formatCode = () => { diff --git a/src/pages/backends/config/schema/create.json b/src/pages/backends/config/schema/create.json index d667e07c..911bb59a 100644 --- a/src/pages/backends/config/schema/create.json +++ b/src/pages/backends/config/schema/create.json @@ -3,7 +3,7 @@ "properties": { "backend_name": { "type": "string", - "pattern": "^-custom$", + "pattern": "^.+-custom$", "description": "backend name", "severity": "error" }, diff --git a/src/pages/cluster-management/cluster-create.tsx b/src/pages/cluster-management/cluster-create.tsx index cb2c750d..5c819bfe 100644 --- a/src/pages/cluster-management/cluster-create.tsx +++ b/src/pages/cluster-management/cluster-create.tsx @@ -184,7 +184,6 @@ const ClusterCreate = () => { } return formKeys.map((key) => { - console.log('renderForms key========', key, formValues); const FormComponent = moduleRegistry[key]; return FormComponent ? ( { const handleClose = () => { onClose(); }; + return ( = (props) => { onClick(data); }, [data, onClick]); - const handleOnError = (e: any) => { - e.target.src = fallbackImg; - }; - - const renderTag = useCallback((sItem: any) => { - return ( - - {sItem.label} - - ); - }, []); - const description = useMemo(() => { return ( = (props) => { >
-
- -
+
{data.name}
diff --git a/src/pages/llmodels/index.tsx b/src/pages/llmodels/index.tsx index a49db2e3..41dd468d 100644 --- a/src/pages/llmodels/index.tsx +++ b/src/pages/llmodels/index.tsx @@ -116,6 +116,7 @@ const Models: React.FC = () => { cancelToken: axiosToken.token }); + // if the current page is beyond total page, fetch again if ( !res.items.length && params.page > res.pagination.totalPage && diff --git a/src/pages/llmodels/style/catalog-item.less b/src/pages/llmodels/style/catalog-item.less index dafbbdbd..1f08cd39 100644 --- a/src/pages/llmodels/style/catalog-item.less +++ b/src/pages/llmodels/style/catalog-item.less @@ -19,6 +19,9 @@ height: 32px; border-radius: var(--ant-border-radius); overflow: hidden; + background-size: contain; + background-position: center; + background-repeat: no-repeat; img { height: 32px;