From 9c8418ab40654744f46e1b26efdded6215cea12c Mon Sep 17 00:00:00 2001 From: maggieyyy <61950669+maggieyyy@users.noreply.github.com> Date: Wed, 28 Aug 2024 14:07:55 +0800 Subject: [PATCH] fix:intelligent plugin & browser lang & check monitor config --- .../src/components/aoplatform/BasicLayout.tsx | 14 +++--- .../components/aoplatform/LanguageSetting.tsx | 9 +++- .../aoplatform/UnUsedWordForTranslate.tsx | 6 +++ .../components/aoplatform/WithPermission.tsx | 1 - .../IntelligentPluginConfig.tsx | 12 +++-- .../IntelligentPluginList.tsx | 36 ++++++++------- .../common/src/locales/scan/en-GB.json | 27 +++++++++++- .../src/locales/scan/newJson/en-GB.json | 19 -------- .../src/locales/scan/newJson/zh-CN.json | 25 ----------- .../common/src/locales/scan/zh-CN.json | 8 +++- frontend/packages/core/src/App.tsx | 5 +-- .../src/pages/logsettings/LogSettings.tsx | 3 -- .../core/src/pages/member/MemberList.tsx | 5 +-- .../resourcesettings/ResourceSettings.tsx | 1 - .../approval/SystemInsideApprovalList.tsx | 1 - .../src/component/MonitorPieGraph.tsx | 1 - .../dashboard/src/pages/Dashboard.tsx | 44 +++++++++++++++++-- .../src/pages/DashboardInstruction.tsx | 20 ++++++--- 18 files changed, 137 insertions(+), 100 deletions(-) diff --git a/frontend/packages/common/src/components/aoplatform/BasicLayout.tsx b/frontend/packages/common/src/components/aoplatform/BasicLayout.tsx index 9717d219..51f44706 100644 --- a/frontend/packages/common/src/components/aoplatform/BasicLayout.tsx +++ b/frontend/packages/common/src/components/aoplatform/BasicLayout.tsx @@ -242,13 +242,13 @@ const themeToken = { ]; }} headerTitleRender={() => ( -
- navigator(mainPage)} - /> -
+
+ navigator(mainPage)} + /> +
)} logo={Logo} pageTitleRender={()=>$t('APIPark - 企业API数据开放平台')} diff --git a/frontend/packages/common/src/components/aoplatform/LanguageSetting.tsx b/frontend/packages/common/src/components/aoplatform/LanguageSetting.tsx index d4aaf4b5..33b0e915 100644 --- a/frontend/packages/common/src/components/aoplatform/LanguageSetting.tsx +++ b/frontend/packages/common/src/components/aoplatform/LanguageSetting.tsx @@ -27,7 +27,13 @@ const LanguageSetting = ({mode = 'light'}:{mode?:'dark'|'light'}) => { const langLabel = useMemo(()=>items.find((item) => item?.key === state.language)?.title,[state.language]) useEffect(()=>{ - sessionStorage.getItem('i18nextLng') && dispatch({ type: 'UPDATE_LANGUAGE', language: sessionStorage.getItem('i18nextLng') as 'en' | 'cn' }); + const savedLang = sessionStorage.getItem('i18nextLng') + const browserLang = navigator.language || navigator.userLanguage + if(savedLang){ + dispatch({ type: 'UPDATE_LANGUAGE', language: savedLang.startsWith('cn') ? 'cn' : 'en' }); + }else{ + dispatch({ type: 'UPDATE_LANGUAGE', language: browserLang.startsWith('zh') ? 'cn' : 'en' }); + } },[ ]) return ( @@ -40,7 +46,6 @@ const LanguageSetting = ({mode = 'light'}:{mode?:'dark'|'light'}) => { const { key } = e; dispatch({ type: 'UPDATE_LANGUAGE', language: key }); i18n.changeLanguage(key); - // window.location.reload() } }} > diff --git a/frontend/packages/common/src/components/aoplatform/UnUsedWordForTranslate.tsx b/frontend/packages/common/src/components/aoplatform/UnUsedWordForTranslate.tsx index af7d1ec3..9a91b6e3 100644 --- a/frontend/packages/common/src/components/aoplatform/UnUsedWordForTranslate.tsx +++ b/frontend/packages/common/src/components/aoplatform/UnUsedWordForTranslate.tsx @@ -38,6 +38,12 @@ export const TranslateWord = ()=>{ {$t('鉴权Secret')} {$t('网络协议')} {$t('日志等级')} + {$t('单行')} + {$t('小时')} + {$t('天')} + {$t('未发布')} + {$t('待发布')} + {$t('单位:s,最小值:1')} ) } \ No newline at end of file diff --git a/frontend/packages/common/src/components/aoplatform/WithPermission.tsx b/frontend/packages/common/src/components/aoplatform/WithPermission.tsx index db43f4f4..48b582d5 100644 --- a/frontend/packages/common/src/components/aoplatform/WithPermission.tsx +++ b/frontend/packages/common/src/components/aoplatform/WithPermission.tsx @@ -26,7 +26,6 @@ const WithPermission = ({access, tooltip, children,disabled, showDisabled = true useEffect(()=>{ // 先判断权限,无论权限是否为true,如果disabled为true时则必须为ture access && setEditAccess(lastAccess) - console.log('editAccess',editAccess, children,children?.type?.displayName,showDisabled, children?.type?.displayName !== 'Button' && showDisabled) },[lastAccess,disabled]) diff --git a/frontend/packages/common/src/components/aoplatform/intelligent-plugin/IntelligentPluginConfig.tsx b/frontend/packages/common/src/components/aoplatform/intelligent-plugin/IntelligentPluginConfig.tsx index 687d21f5..4b52bc89 100644 --- a/frontend/packages/common/src/components/aoplatform/intelligent-plugin/IntelligentPluginConfig.tsx +++ b/frontend/packages/common/src/components/aoplatform/intelligent-plugin/IntelligentPluginConfig.tsx @@ -48,6 +48,7 @@ import {useFetch} from "@common/hooks/http.ts"; import {App, Descriptions} from "antd"; import { $t } from "@common/locales"; import { useGlobalContext } from "@common/contexts/GlobalStateContext"; +import { setValidateLanguage } from '@formily/core' export const DynamicRender = (props) => { const {schema} = props @@ -68,14 +69,12 @@ export const DynamicRender = (props) => { const translateSchema = (render) =>{ - console.log(render) const res1 = { ...render, ...(render.title ? {title:$t(render.title)} : {}), ...(render.description) ? {description:$t(render.description)} : {}, ...(render.label ? {label:$t(render.label)} : {}), ...(render.properties ? {properties: Object.keys(render.properties).reduce((total, cur) => { - console.log(total, cur); // 可选:在生产环境中移除或注释掉 try { total[cur] = translateSchema(render.properties[cur]); } catch (error) { @@ -86,7 +85,7 @@ export const DynamicRender = (props) => { ...(render.items && Array.isArray(render.items) ? {items:render.items.map(x=>translateSchema(x))} : {}), ...(render.items && !Array.isArray(render.items) ? {items:translateSchema(render.items)} : {}), ...(render.additionalProperties ? {additionalProperties: translateSchema(render.additionalProperties)} : {}), - ...(render.enum ?render.enum.map(x=>({...x, label:$t(x.label)})) : {}), + ...(render.enum ? {enum: render.enum.map(x=>({...x, label:$t(x.label)}))} : {}), } return res1 @@ -174,6 +173,11 @@ export const IntelligentPluginConfig = forwardRef{ + setValidateLanguage(state.language === 'cn' ? 'zh-CN' : 'en-US') + },[state.language]) const pluginEditSchema = { type: 'object', @@ -313,7 +317,7 @@ export const IntelligentPluginConfig = forwardRef - + ([]); const [tableHttpReload, setTableHttpReload] = useState(true); - const [columns,setColumns] = useState[] >([]) + const [columns,setColumns] = useState([]) const {fetchData} = useFetch() const pageListRef = useRef(null); const [publishBtnLoading, setPublishBtnLoading] = useState(false) @@ -133,20 +133,7 @@ export default function IntelligentPluginList(){ message.destroy(); if(res.code === STATUS_CODE.SUCCESS){ getConfig(res.data) - setColumns(res.data.basic.fields.map((field:DynamicTableField, index:number)=>({ - title:field.title, - dataIndex:field.name, - fixed:field.name === 'title' ? 'left' : undefined, - ellipsis:true, - width:field.name === 'title' ? 150 : undefined, - ...(field.enum?.length > 0 ?{ - onFilter: (value: string, record: { [x: string]: string | string[]; }) => record[field.name].indexOf(value) === 0, - filters:field.enum?.map((x:string)=>{return {text:x, value:x}}), - render:(_: unknown, entity: { [x: string]: string; })=> { - return {(entity[field.name] as string)} - }, - }:{}), - }))) + setColumns(res.data.basic.fields) setTableListDataSource(res.data.list); return ({ data: res.data.list, success: true,total:res.data.total }); }else{ @@ -157,7 +144,22 @@ export default function IntelligentPluginList(){ return ({ data: [], success: false });}) } - const translatedCol = useMemo(()=>columns.map(x=>({...x, title:typeof x.title === 'string' ? $t(x.title as string) : x.title})),[columns,state.language]) + const translatedCol = useMemo(()=>columns.map((field:DynamicTableField, index:number)=>({ + title: typeof field.title === 'string' ? $t(field.title as string): field.title, + dataIndex:field.name, + fixed:field.name === 'title' ? 'left' : undefined, + ellipsis:true, + width:field.name === 'title' ? 150 : undefined, + ...(field.enum?.length > 0 ?{ + onFilter: (value: string, record: { [x: string]: string | string[]; }) => record[field.name].indexOf(value) === 0, + filters:field.enum?.map((x:string)=>{return {text:$t(x), value:x}}), + render:(_: unknown, entity: { [x: string]: string; })=> { + return {$t(entity[field.name] as string)} + }, + }:{}), + })),[state.language,columns]) + + const getConfig = (data:DynamicTableConfig)=>{ const {basic,list } = data @@ -331,7 +333,7 @@ export default function IntelligentPluginList(){ onSearchWordChange={(e)=>{setSearchWord(e.target.value);setTableHttpReload(true);setTableHttpReload(true)}} /> - {setCurDetail(undefined);setDrawerOpen(false)}} onSubmit={()=>drawerFormRef.current?.save()?.then((res)=>{res && manualReloadTable();return res})} submitAccess=''> + {setCurDetail(undefined);setDrawerOpen(false)}} onSubmit={()=>drawerFormRef.current?.save()?.then((res)=>{res && manualReloadTable();return res})} submitAccess=''> } spinning={drawerLoading}> (sessionStorage.getItem('i18nextLng') === 'cn'? zhCN : enUS); - dayjs.locale(sessionStorage.getItem('i18nextLng') || 'en'); + const [locale, setLocal] = useState(); useInitializeMonaco() const { state} = useGlobalContext() + useEffect(() => { dayjs.locale(state.language); setLocal(state.language === 'cn' ? zhCN : enUS); diff --git a/frontend/packages/core/src/pages/logsettings/LogSettings.tsx b/frontend/packages/core/src/pages/logsettings/LogSettings.tsx index ba07ce05..6bf464fd 100644 --- a/frontend/packages/core/src/pages/logsettings/LogSettings.tsx +++ b/frontend/packages/core/src/pages/logsettings/LogSettings.tsx @@ -39,8 +39,6 @@ const LogSettings = ()=>{ const menuData = useMemo(()=>{ const newMenu = menuItems?.map((x:DynamicMenuItem)=>{ - console.log(state.language, $t(x.title)) - return getItem( {$t(x.title)}, x.name, @@ -49,7 +47,6 @@ const LogSettings = ()=>{ undefined, 'system.devops.log_configuration.view') }) - console.log(newMenu) return newMenu },[state.language,menuItems]) diff --git a/frontend/packages/core/src/pages/member/MemberList.tsx b/frontend/packages/core/src/pages/member/MemberList.tsx index 9e812866..44dc2525 100644 --- a/frontend/packages/core/src/pages/member/MemberList.tsx +++ b/frontend/packages/core/src/pages/member/MemberList.tsx @@ -332,10 +332,7 @@ const MemberList = ()=>{ } }) } - - useEffect(()=>{ - console.log(roleSelectableList,roleSelectableList?.map((x:{id:string,name:string})=>({label:$t(x.name), value:x.id})) ) - },[state.language,roleSelectableList]) + const translatedCol = useMemo( ()=> MEMBER_TABLE_COLUMNS.map((x)=>({...x, ...(x.dataIndex === 'roles' ? { render:(_,entity)=>( diff --git a/frontend/packages/core/src/pages/resourcesettings/ResourceSettings.tsx b/frontend/packages/core/src/pages/resourcesettings/ResourceSettings.tsx index 7abd5cae..780bf549 100644 --- a/frontend/packages/core/src/pages/resourcesettings/ResourceSettings.tsx +++ b/frontend/packages/core/src/pages/resourcesettings/ResourceSettings.tsx @@ -49,7 +49,6 @@ const LogSettings = ()=>{ undefined, 'system.devops.log_configuration.view') }) - console.log(newMenu) return newMenu },[state.language,menuItems]) diff --git a/frontend/packages/core/src/pages/system/approval/SystemInsideApprovalList.tsx b/frontend/packages/core/src/pages/system/approval/SystemInsideApprovalList.tsx index 649cd5c3..d9d91049 100644 --- a/frontend/packages/core/src/pages/system/approval/SystemInsideApprovalList.tsx +++ b/frontend/packages/core/src/pages/system/approval/SystemInsideApprovalList.tsx @@ -165,7 +165,6 @@ const SystemInsideApprovalList:FC = ()=>{ return filteredCol.map(x=>{ if(x.filters &&((x.dataIndex as string[])?.indexOf('applier') !== -1 || (x.dataIndex as string[])?.indexOf('approver') !== -1) ){ const tmpValueEnum :Record= {} - console.log(memberValueEnum) memberValueEnum?.forEach((x:SimpleMemberItem)=>{ tmpValueEnum[x.name] = {text:$t(x.name)} }) diff --git a/frontend/packages/dashboard/src/component/MonitorPieGraph.tsx b/frontend/packages/dashboard/src/component/MonitorPieGraph.tsx index 58e74f50..70789c40 100644 --- a/frontend/packages/dashboard/src/component/MonitorPieGraph.tsx +++ b/frontend/packages/dashboard/src/component/MonitorPieGraph.tsx @@ -31,7 +31,6 @@ const MonitorPieGraph: FC = ({ className,title, pieData, labelNam tooltip: { trigger: 'item', formatter: (params:Array>) => { - console.log(params) const startHtml = '
' + $t(title) + '
' return startHtml + ($t(params.name || '-') + '    ' + params.value + '') } diff --git a/frontend/packages/dashboard/src/pages/Dashboard.tsx b/frontend/packages/dashboard/src/pages/Dashboard.tsx index 84a6b78a..410136fd 100644 --- a/frontend/packages/dashboard/src/pages/Dashboard.tsx +++ b/frontend/packages/dashboard/src/pages/Dashboard.tsx @@ -1,26 +1,62 @@ -import { useEffect } from "react"; +import { useEffect, useState } from "react"; import { useBreadcrumb } from "@common/contexts/BreadcrumbContext"; import DashboardPage from "./DashboardTabPage"; import { $t } from "@common/locales"; +import { useFetch } from "@common/hooks/http"; +import { BasicResponse, RESPONSE_TIPS, STATUS_CODE } from "@common/const/const"; +import { App, Spin } from "antd"; +import { reject } from "lodash-es"; +import { EntityItem } from "@common/const/type"; +import { LoadingOutlined } from "@ant-design/icons"; +import DashboardInstruction from "./DashboardInstruction"; +import cluster from "cluster"; export default function Dashboard(){ const { setBreadcrumb } = useBreadcrumb() + const {fetchData } = useFetch() + const { message } = App.useApp() + const [clusters, setClusters] = useState>([]) + const [enabledClusters, setEnabledClusters] = useState>([]) + const [loading, setLoading] = useState(false) + const getClusters = ()=>{ + setLoading(true) + fetchData}>>('simple/monitor/clusters',{ + method: 'GET'}).then(response=>{ + const {code,data,msg} = response + if(code === STATUS_CODE.SUCCESS){ + const filteredCluster = data?.clusters?.filter(x=>x.enable) + setClusters(data.cluster || []) + setEnabledClusters(filteredCluster) + }else{ + message.error(msg || $t(RESPONSE_TIPS.error)) + } + }).catch((errorInfo)=> reject(errorInfo)).finally(()=>setLoading(false)) + } useEffect(() => { + getClusters() setBreadcrumb([ { title:$t('运行视图') }, ]) + }, []); return ( <> -
- -
+ } spinning={loading}> + { + !loading && <> + { + enabledClusters.length > 0 ? + : + } + + } + ) } \ No newline at end of file diff --git a/frontend/packages/dashboard/src/pages/DashboardInstruction.tsx b/frontend/packages/dashboard/src/pages/DashboardInstruction.tsx index 4cd63261..4faf2ad7 100644 --- a/frontend/packages/dashboard/src/pages/DashboardInstruction.tsx +++ b/frontend/packages/dashboard/src/pages/DashboardInstruction.tsx @@ -1,7 +1,7 @@ import { Link } from "react-router-dom"; -export default function DashboardInstruction() { +export default function DashboardInstruction({showClusterIns, showMonitorIns}:{showClusterIns:boolean, showMonitorIns:boolean}) { return (
@@ -10,12 +10,20 @@ export default function DashboardInstruction() { {/*

更多配置问题,请点击帮助中心 {/* 查看更多 *

*/} -
-
+
+ {showClusterIns &&

集群配置

-

新增集群地址、描述和其他相关属性,以确保监控系统能够正确识别和连接到集群

-

添加集群信息

-
+

配置集群地址,以确保监控系统能够正确识别和连接到集群

+

配置集群信息

+
} + {showMonitorIns && +
+

监控设置

+

设置监控报表的数据来源,设置完成之后即可获得详细的API调用统计图表。

+

配置监控信息

+
+ } +
)