This is an automated email from the ASF dual-hosted git repository.

likyh pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-devlake.git


The following commit(s) were added to refs/heads/main by this push:
     new 51e42c7b9 fix(config-ui): some bugs (#4119)
51e42c7b9 is described below

commit 51e42c7b9456993d7dc6e492a3a46e1b7f43262f
Author: 青湛 <[email protected]>
AuthorDate: Thu Jan 5 20:42:07 2023 +0800

    fix(config-ui): some bugs (#4119)
    
    * fix(config-ui): the placeholder not right on tapd
    
    * feat(config-ui): show beta on siderbar menu item
    
    * fix(config-ui): adjust delete scope condition
    
    * fix(config-ui): adjust scope length condition
---
 config-ui/src/layouts/base/base.tsx                    | 9 +++++++--
 config-ui/src/layouts/base/styled.ts                   | 9 +++++++++
 config-ui/src/layouts/base/use-menu.ts                 | 9 +++++++--
 config-ui/src/pages/blueprint/create/bp-context.tsx    | 2 +-
 config-ui/src/plugins/common/data-scope-list/index.tsx | 7 ++++---
 config-ui/src/plugins/tapd/config.ts                   | 2 +-
 6 files changed, 29 insertions(+), 9 deletions(-)

diff --git a/config-ui/src/layouts/base/base.tsx 
b/config-ui/src/layouts/base/base.tsx
index 51209d6c8..39274860f 100644
--- a/config-ui/src/layouts/base/base.tsx
+++ b/config-ui/src/layouts/base/base.tsx
@@ -18,7 +18,7 @@
 
 import React from 'react';
 import { useLocation, useHistory } from 'react-router-dom';
-import { Menu, MenuItem, Navbar, Alignment } from '@blueprintjs/core';
+import { Menu, MenuItem, Tag, Navbar, Intent, Alignment } from 
'@blueprintjs/core';
 
 import { Logo } from '@/components';
 import { useVersion } from '@/store';
@@ -66,7 +66,12 @@ export const BaseLayout = ({ children }: Props) => {
                 <MenuItem
                   key={cit.key}
                   className="sub-menu-item"
-                  text={cit.title}
+                  text={
+                    <S.SiderMenuItem>
+                      <span>{cit.title}</span>
+                      {cit.isBeta && <Tag intent={Intent.WARNING}>beta</Tag>}
+                    </S.SiderMenuItem>
+                  }
                   icon={cit.icon ?? <img src={cit.iconUrl} width={16} alt="" 
/>}
                   active={pathname.includes(cit.path)}
                   onClick={() => handlePushPath(cit)}
diff --git a/config-ui/src/layouts/base/styled.ts 
b/config-ui/src/layouts/base/styled.ts
index 443c90a43..77fe0fcdf 100644
--- a/config-ui/src/layouts/base/styled.ts
+++ b/config-ui/src/layouts/base/styled.ts
@@ -116,3 +116,12 @@ export const Content = styled.div`
   max-width: 900px;
   width: 100%;
 `;
+
+export const SiderMenuItem = styled.div`
+  display: flex;
+  align-items: center;
+
+  & > .bp4-tag {
+    margin-left: 8px;
+  }
+`;
diff --git a/config-ui/src/layouts/base/use-menu.ts 
b/config-ui/src/layouts/base/use-menu.ts
index b4cc34b26..e7abe62bd 100644
--- a/config-ui/src/layouts/base/use-menu.ts
+++ b/config-ui/src/layouts/base/use-menu.ts
@@ -19,6 +19,7 @@
 import { useMemo } from 'react';
 import { IconName } from '@blueprintjs/core';
 
+import type { PluginConfigConnectionType } from '@/plugins';
 import { PluginConfig, PluginType } from '@/plugins';
 
 export type MenuItemType = {
@@ -29,6 +30,7 @@ export type MenuItemType = {
   path: string;
   children?: MenuItemType[];
   target?: boolean;
+  isBeta?: boolean;
 };
 
 export const useMenu = () => {
@@ -53,13 +55,16 @@ export const useMenu = () => {
           title: 'Connections',
           icon: 'data-connection',
           path: '/connections',
-          children: PluginConfig.filter((p) =>
-            [PluginType.Connection, 
PluginType.Incoming_Connection].includes(p.type),
+          children: (
+            PluginConfig.filter((p) =>
+              [PluginType.Connection, 
PluginType.Incoming_Connection].includes(p.type),
+            ) as PluginConfigConnectionType[]
           ).map((it) => ({
             key: it.plugin,
             title: it.name,
             iconUrl: it.icon,
             path: `/connections/${it.plugin}`,
+            isBeta: it.isBeta,
           })),
         },
         {
diff --git a/config-ui/src/pages/blueprint/create/bp-context.tsx 
b/config-ui/src/pages/blueprint/create/bp-context.tsx
index 06ed0805d..9305de9a2 100644
--- a/config-ui/src/pages/blueprint/create/bp-context.tsx
+++ b/config-ui/src/pages/blueprint/create/bp-context.tsx
@@ -104,7 +104,7 @@ export const BPContextProvider = ({ from, projectName, 
children }: Props) => {
           .filter((cs) => uniqueList.includes(cs.unique))
           .every((cs) => cs.status === ConnectionStatusEnum.ONLINE):
         return 'Normal Mode: Has some offline connections';
-      case step === 2 && Object.keys(scopeMap).length !== uniqueList.length:
+      case step === 2 && Object.keys(scopeMap).filter((key) => 
scopeMap[key].length).length !== uniqueList.length:
         return 'No Data Scope is Selected';
       default:
         return '';
diff --git a/config-ui/src/plugins/common/data-scope-list/index.tsx 
b/config-ui/src/plugins/common/data-scope-list/index.tsx
index e5e4fe04c..20f79ca6a 100644
--- a/config-ui/src/plugins/common/data-scope-list/index.tsx
+++ b/config-ui/src/plugins/common/data-scope-list/index.tsx
@@ -28,11 +28,12 @@ import * as S from './styled';
 
 interface Props extends UseDataScopeList {
   groupByTs: boolean;
+  scopeIds: string[];
   onDelete?: (plugin: Plugins, connectionId: ID, scopeId: ID) => void;
 }
 
-export const DataScopeList = ({ groupByTs, onDelete, ...props }: Props) => {
-  const { loading, scope, scopeTsMap } = useDataScopeList({ ...props });
+export const DataScopeList = ({ groupByTs, scopeIds, onDelete, ...props }: 
Props) => {
+  const { loading, scope, scopeTsMap } = useDataScopeList({ scopeIds, ...props 
});
 
   if (!scope.length) {
     return <span>No Data Scope Selected</span>;
@@ -65,7 +66,7 @@ export const DataScopeList = ({ groupByTs, onDelete, ...props 
}: Props) => {
               {scopeTsMap[name].map((sc) => (
                 <li key={sc.id}>
                   <span>{sc.name}</span>
-                  {onDelete && (
+                  {onDelete && scopeIds.length > 1 && (
                     <DeleteButton onDelete={() => onDelete(props.plugin, 
props.connectionId, sc.id)}>
                       <Button small minimal intent={Intent.PRIMARY} 
icon="cross" />
                     </DeleteButton>
diff --git a/config-ui/src/plugins/tapd/config.ts 
b/config-ui/src/plugins/tapd/config.ts
index 204c9c2ac..8d3d7b383 100644
--- a/config-ui/src/plugins/tapd/config.ts
+++ b/config-ui/src/plugins/tapd/config.ts
@@ -37,7 +37,7 @@ export const TAPDConfig: PluginConfigType = {
         label: 'Connection Name',
         type: 'text',
         required: true,
-        placeholder: 'eg. ZenTao',
+        placeholder: 'eg. TAPD',
       },
       {
         key: 'endpoint',

Reply via email to