diff --git a/react-ui/package.json b/react-ui/package.json index 4b28d7cf..a4e0635c 100644 --- a/react-ui/package.json +++ b/react-ui/package.json @@ -8,7 +8,7 @@ "build": "max build", "deploy": "npm run build && npm run gh-pages", "dev": "npm run start:dev", - "dev-no-sso": "cross-env NO_SSO=true npm run start:mock", + "dev-no-sso": "cross-env NO_SSO=true PORT=8001 npm run start:mock", "docker-hub:build": "docker build -f Dockerfile.hub -t ant-design-pro ./", "docker-prod:build": "docker-compose -f ./docker/docker-compose.yml build", "docker-prod:dev": "docker-compose -f ./docker/docker-compose.yml up", @@ -75,6 +75,7 @@ "classnames": "^2.3.2", "crypto-js": "^4.2.0", "echarts": "^5.5.0", + "echarts-gl": "~2.0.9", "fabric": "^5.3.0", "highlight.js": "^11.7.0", "lodash": "^4.17.21", diff --git a/react-ui/src/assets/img/logo-ccc.png b/react-ui/src/assets/img/logo-ccc.png new file mode 100644 index 00000000..e2fbcfe5 Binary files /dev/null and b/react-ui/src/assets/img/logo-ccc.png differ diff --git a/react-ui/src/assets/img/logo.png b/react-ui/src/assets/img/logo.png index e2fbcfe5..865ecdf5 100644 Binary files a/react-ui/src/assets/img/logo.png and b/react-ui/src/assets/img/logo.png differ diff --git a/react-ui/src/assets/img/workspace/app.png b/react-ui/src/assets/img/workspace/app.png new file mode 100644 index 00000000..af6461f6 Binary files /dev/null and b/react-ui/src/assets/img/workspace/app.png differ diff --git a/react-ui/src/assets/img/workspace/banner1.png b/react-ui/src/assets/img/workspace/banner1.png new file mode 100644 index 00000000..21f23634 Binary files /dev/null and b/react-ui/src/assets/img/workspace/banner1.png differ diff --git a/react-ui/src/assets/img/workspace/banner2.png b/react-ui/src/assets/img/workspace/banner2.png new file mode 100644 index 00000000..a9f1e148 Binary files /dev/null and b/react-ui/src/assets/img/workspace/banner2.png differ diff --git a/react-ui/src/assets/img/workspace/block-title-bg.png b/react-ui/src/assets/img/workspace/block-title-bg.png new file mode 100644 index 00000000..dbdbf1f8 Binary files /dev/null and b/react-ui/src/assets/img/workspace/block-title-bg.png differ diff --git a/react-ui/src/assets/img/workspace/code.png b/react-ui/src/assets/img/workspace/code.png new file mode 100644 index 00000000..60b20ba6 Binary files /dev/null and b/react-ui/src/assets/img/workspace/code.png differ diff --git a/react-ui/src/assets/img/workspace/dataset.png b/react-ui/src/assets/img/workspace/dataset.png new file mode 100644 index 00000000..ac5f0d6e Binary files /dev/null and b/react-ui/src/assets/img/workspace/dataset.png differ diff --git a/react-ui/src/assets/img/workspace/echart-bg.png b/react-ui/src/assets/img/workspace/echart-bg.png new file mode 100644 index 00000000..55a53973 Binary files /dev/null and b/react-ui/src/assets/img/workspace/echart-bg.png differ diff --git a/react-ui/src/assets/img/workspace/experiment.png b/react-ui/src/assets/img/workspace/experiment.png new file mode 100644 index 00000000..3e5ae383 Binary files /dev/null and b/react-ui/src/assets/img/workspace/experiment.png differ diff --git a/react-ui/src/assets/img/workspace/hot-icon.png b/react-ui/src/assets/img/workspace/hot-icon.png new file mode 100644 index 00000000..dbad86bc Binary files /dev/null and b/react-ui/src/assets/img/workspace/hot-icon.png differ diff --git a/react-ui/src/assets/img/workspace/image.png b/react-ui/src/assets/img/workspace/image.png new file mode 100644 index 00000000..82f1c29f Binary files /dev/null and b/react-ui/src/assets/img/workspace/image.png differ diff --git a/react-ui/src/assets/img/workspace/model.png b/react-ui/src/assets/img/workspace/model.png new file mode 100644 index 00000000..b4fdf7b9 Binary files /dev/null and b/react-ui/src/assets/img/workspace/model.png differ diff --git a/react-ui/src/assets/img/workspace/notebook-icon.png b/react-ui/src/assets/img/workspace/notebook-icon.png new file mode 100644 index 00000000..ebc03e95 Binary files /dev/null and b/react-ui/src/assets/img/workspace/notebook-icon.png differ diff --git a/react-ui/src/assets/img/workspace/paper.png b/react-ui/src/assets/img/workspace/paper.png new file mode 100644 index 00000000..9b688f02 Binary files /dev/null and b/react-ui/src/assets/img/workspace/paper.png differ diff --git a/react-ui/src/assets/img/workspace/points-bg.png b/react-ui/src/assets/img/workspace/points-bg.png new file mode 100644 index 00000000..0778dce8 Binary files /dev/null and b/react-ui/src/assets/img/workspace/points-bg.png differ diff --git a/react-ui/src/assets/img/workspace/prompt-pilot.png b/react-ui/src/assets/img/workspace/prompt-pilot.png new file mode 100644 index 00000000..865ecdf5 Binary files /dev/null and b/react-ui/src/assets/img/workspace/prompt-pilot.png differ diff --git a/react-ui/src/assets/img/workspace/search-icon.png b/react-ui/src/assets/img/workspace/search-icon.png new file mode 100644 index 00000000..76b1dba5 Binary files /dev/null and b/react-ui/src/assets/img/workspace/search-icon.png differ diff --git a/react-ui/src/assets/img/workspace/search-star.gif b/react-ui/src/assets/img/workspace/search-star.gif new file mode 100644 index 00000000..d60d43f4 Binary files /dev/null and b/react-ui/src/assets/img/workspace/search-star.gif differ diff --git a/react-ui/src/assets/img/workspace/statistics-bg.png b/react-ui/src/assets/img/workspace/statistics-bg.png new file mode 100644 index 00000000..c3ac4a37 Binary files /dev/null and b/react-ui/src/assets/img/workspace/statistics-bg.png differ diff --git a/react-ui/src/assets/img/workspace/title-icon.png b/react-ui/src/assets/img/workspace/title-icon.png new file mode 100644 index 00000000..47754168 Binary files /dev/null and b/react-ui/src/assets/img/workspace/title-icon.png differ diff --git a/react-ui/src/assets/img/workspace/train.png b/react-ui/src/assets/img/workspace/train.png new file mode 100644 index 00000000..98c1a175 Binary files /dev/null and b/react-ui/src/assets/img/workspace/train.png differ diff --git a/react-ui/src/assets/img/workspace/workspace-bg.png b/react-ui/src/assets/img/workspace/workspace-bg.png new file mode 100644 index 00000000..e52a37f3 Binary files /dev/null and b/react-ui/src/assets/img/workspace/workspace-bg.png differ diff --git a/react-ui/src/hooks/useRootFontSize.ts b/react-ui/src/hooks/useRootFontSize.ts new file mode 100644 index 00000000..525dc889 --- /dev/null +++ b/react-ui/src/hooks/useRootFontSize.ts @@ -0,0 +1,29 @@ +import { useEffect, useState } from 'react'; + +/** + * 获取 root font size + * + * @param initialValue - 状态的初始值 + * @return 包含状态值、状态设置函数和可变引用对象的数组 + */ +export function useRootFontSize() { + const fontSizeStr = document.documentElement.style.fontSize; + const fontSize = parseFloat(fontSizeStr); + const [size, setSize] = useState(fontSize); + + useEffect(() => { + const setFontSize = () => { + setTimeout(() => { + const fontSizeStr = document.documentElement.style.fontSize; + const fontSize = parseFloat(fontSizeStr); + setSize(fontSize); + }, 300); + }; + window.addEventListener('resize', setFontSize); + return () => { + window.removeEventListener('resize', setFontSize); + }; + }, []); + + return size; +} diff --git a/react-ui/src/iconfont/iconfont.js b/react-ui/src/iconfont/iconfont.js index 38c8ec18..098ec118 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,v,z,i,o,p=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?p(h,a.firstChild):a.appendChild(h))},document.addEventListener?~["complete","loaded","interactive"].indexOf(document.readyState)?setTimeout(l,0):(v=function(){document.removeEventListener("DOMContentLoaded",v,!1),l()},document.addEventListener("DOMContentLoaded",v,!1)):document.attachEvent&&(z=l,i=t.document,o=!1,d(),i.onreadystatechange=function(){"complete"==i.readyState&&(i.onreadystatechange=null,m())})}function m(){o||(o=!0,z())}function d(){try{i.documentElement.doScroll("left")}catch(a){return void setTimeout(d,50)}m()}})(window); \ No newline at end of file +window._iconfont_svg_string_4511447='',(l=>{var a=(h=(h=document.getElementsByTagName("script"))[h.length-1]).getAttribute("data-injectcss"),h=h.getAttribute("data-disable-injectsvg");if(!h){var t,v,z,i,o,p=function(a,h){h.parentNode.insertBefore(a,h)};if(a&&!l.__iconfont__svg__cssinject__){l.__iconfont__svg__cssinject__=!0;try{document.write("")}catch(a){console&&console.log(a)}}t=function(){var a,h=document.createElement("div");h.innerHTML=l._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?p(h,a.firstChild):a.appendChild(h))},document.addEventListener?~["complete","loaded","interactive"].indexOf(document.readyState)?setTimeout(t,0):(v=function(){document.removeEventListener("DOMContentLoaded",v,!1),t()},document.addEventListener("DOMContentLoaded",v,!1)):document.attachEvent&&(z=t,i=l.document,o=!1,d(),i.onreadystatechange=function(){"complete"==i.readyState&&(i.onreadystatechange=null,m())})}function m(){o||(o=!0,z())}function d(){try{i.documentElement.doScroll("left")}catch(a){return void setTimeout(d,50)}m()}})(window); \ No newline at end of file diff --git a/react-ui/src/pages/Workspace/components/AssetsManagement/index.less b/react-ui/src/pages/Workspace/components/AssetsManagement/index.less index 41ba9f93..fde5a36f 100644 --- a/react-ui/src/pages/Workspace/components/AssetsManagement/index.less +++ b/react-ui/src/pages/Workspace/components/AssetsManagement/index.less @@ -1,65 +1,56 @@ .assets-management { - flex: 1; + display: flex; + flex-direction: column; width: 100%; - padding: 20px 20px 0; - background-color: white; - border-radius: 4px; + height: 10.875rem; + color: white; + .backgroundFullImage(url(@/assets/img/workspace/statistics-bg.png)); - :global { - .ant-select-filled { - background-color: rgba(138, 138, 138, 0.12); - border-radius: 2px; - - .ant-select-selection-item { - color: @text-color-secondary !important; - font-size: 13px; - } - } + &__title { + flex: none; + padding: 1.25rem; + font-weight: 700; + font-size: 1rem; } - &__title { - color: @text-color; - font-weight: 500; - font-size: @font-size-title; + &__line { + flex: none; + width: 64.9375rem; + height: 1px; + padding-left: 1.25rem; + background-image: linear-gradient( + 135.57deg, + rgba(255, 255, 255, 0.3) 0%, + rgba(255, 255, 255, 0) 100% + ); } - &__increase { - display: inline-block; - margin-top: 12px; - margin-bottom: 30px; - padding: 2px 7px; - color: @primary-color; - font-size: 13px; - background-color: rgba(187, 210, 255, 0.29); - border-radius: 2px; + &__content { + display: flex; + flex: 1; + align-items: center; + padding: 0 1.25rem; } &__summary { display: flex; flex-direction: column; - width: 40%; - text-align: left; + align-items: center; + width: 8.125rem; + border-right: 1px solid rgba(255, 255, 255, 0.2); - &:nth-child(3n + 2) { - width: 30%; - text-align: center; + &:last-child { + border-right: none; } - &:nth-child(3n) { - width: 30%; - text-align: right; + &__value { + margin-bottom: 4px; + font-weight: 700; + font-size: 1.25rem; } &__title { - margin-bottom: 12px; - color: @text-color-secondary; - font-size: @font-size; - } - - &__value { - color: @text-color; - font-weight: 500; - font-size: 22px; + font-size: 0.875rem; } } } diff --git a/react-ui/src/pages/Workspace/components/AssetsManagement/index.tsx b/react-ui/src/pages/Workspace/components/AssetsManagement/index.tsx index 1e5b2989..e5941f12 100644 --- a/react-ui/src/pages/Workspace/components/AssetsManagement/index.tsx +++ b/react-ui/src/pages/Workspace/components/AssetsManagement/index.tsx @@ -1,12 +1,15 @@ import { CommonTabKeys } from '@/enums'; import { getWorkspaceAssetCountReq } from '@/services/workspace'; import { to } from '@/utils/promise'; -import { Flex, Select } from 'antd'; +import { Flex, Typography } from 'antd'; import { useEffect, useState } from 'react'; import styles from './index.less'; + function AssetsManagement() { const [type, setType] = useState(CommonTabKeys.Public); - const [assetCounts, setAssetCounts] = useState<{ title: string; value: number }[]>([]); + const [assetCounts, setAssetCounts] = useState<{ title: string; value: number; icon: string }[]>( + [], + ); useEffect(() => { // 获取工作空间资产数量 @@ -21,34 +24,37 @@ function AssetsManagement() { { title: '数据集', value: dataset, + icon: 'dataset.png', }, { title: '模型', value: model, + icon: 'model.png', + }, + { + title: '代码配置', + value: 0, + icon: 'code.png', }, { title: '镜像', value: image, + icon: 'image.png', }, - // { - // title: '组件', - // value: component, - // }, - // { - // title: '代码配置', - // value: 0, - // }, { - title: '流水线模版', - value: workflow, + title: 'APP', + value: service, + icon: 'app.png', }, { - title: '代码配置', - value: codeConfig, + title: '流水线模板', + value: workflow, + icon: 'experiment.png', }, { - title: '服务', - value: service, + title: 'NOTEBOOKS', + value: codeConfig, + icon: 'train.png', }, ]; setAssetCounts(items); @@ -60,26 +66,18 @@ function AssetsManagement() { return (
- -
多形态资源库
-