From ad5b28cf3538f070c29804aff31072b9eb9caed8 Mon Sep 17 00:00:00 2001 From: tristanliu <37809633+sevenliu1896@users.noreply.github.com> Date: Fri, 10 May 2024 17:56:27 +0800 Subject: [PATCH] [improvement][headless-fe] Adjusted the logic for displaying the tab in the theme domain. (#975) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * [improvement][semantic-fe] Add model alias setting & Add view permission restrictions to the model permission management tab. [improvement][semantic-fe] Add permission control to the action buttons for the main domain; apply high sensitivity filtering to the authorization of metrics/dimensions. [improvement][semantic-fe] Optimize the editing mode in the dimension/metric/datasource components to use the modelId stored in the database for data, instead of relying on the data from the state manager. * [improvement][semantic-fe] Add time granularity setting in the data source configuration. * [improvement][semantic-fe] Dictionary import for dimension values supported in Q&A visibility * [improvement][semantic-fe] Modification of data source creation prompt wording" * [improvement][semantic-fe] metric market experience optimization * [improvement][semantic-fe] enhance the analysis of metric trends * [improvement][semantic-fe] optimize the presentation of metric trend permissions * [improvement][semantic-fe] add metric trend download functionality * [improvement][semantic-fe] fix the dimension initialization issue in metric correlation * [improvement][semantic-fe] Fix the issue of database changes not taking effect when creating based on an SQL data source. * [improvement][semantic-fe] Optimizing pagination logic and some CSS styles * [improvement][semantic-fe] Fixing the API for the indicator list by changing "current" to "pageNum" * [improvement][semantic-fe] Fixing the default value setting for the indicator list * [improvement][semantic-fe] Adding batch operations for indicators/dimensions/models * [improvement][semantic-fe] Replacing the single status update API for indicators/dimensions with a batch update API * [improvement][semantic-fe] Redesigning the indicator homepage to incorporate trend charts and table functionality for indicators * [improvement][semantic-fe] Optimizing the logic for setting dimension values and editing data sources, and adding system settings functionality * [improvement][semantic-fe] Upgrading antd version to 5.x, extracting the batch operation button component, optimizing the interaction for system settings, and expanding the configuration generation types for list-to-select component. * [improvement][semantic-fe] Adding the ability to filter dimensions based on whether they are tags or not. * [improvement][semantic-fe] Adding the ability to edit relationships between models in the canvas. * [improvement][semantic-fe] Updating the datePicker component to use dayjs instead. * [improvement][semantic-fe] Fixing the issue with passing the model ID for dimensions in the indicator market. * [improvement][semantic-fe] Fixing the abnormal state of the popup when creating a model. * [improvement][semantic-fe] Adding permission logic for bulk operations in the indicator market. * [improvement][semantic-fe] Adding the ability to download and transpose data. * [improvement][semantic-fe] Fixing the initialization issue with the date selection component in the indicator details page when switching time granularity. * [improvement][semantic-fe] Fixing the logic error in the dimension value setting. * [improvement][semantic-fe] Fixing the synchronization issue with the question and answer settings information. * [improvement][semantic-fe] Optimizing the canvas functionality for better performance and user experience. * [improvement][semantic-fe] Optimizing the update process for drawing model relationship edges in the canvas. * [improvement][semantic-fe] Changing the line type for canvas connections. * [improvement][semantic-fe] Replacing the initialization variable from "semantic" to "headless". * [improvement][semantic-fe] Fixing the missing migration issue for default drill-down dimension configuration in model editing. Additionally, optimizing the data retrieval method for initializing fields in the model. * [improvement][semantic-fe] Updating the logic for the fieldName. * [improvement][semantic-fe] Adjusting the position of the metrics tab. * [improvement][semantic-fe] Changing the 字段名称 to 英文名称. * [improvement][semantic-fe] Fix metric measurement deletion. * [improvement][semantic-fe] UI optimization for metric details page. * [improvement][semantic-fe] UI optimization for metric details page. * [improvement][semantic-fe] UI adjustment for metric details page. * [improvement][semantic-fe] The granularity field in the time type of model editing now supports setting it as empty. * [improvement][semantic-fe] Added field type and metric type to the metric creation options. * [improvement][semantic-fe] The organization structure selection feature has been added to the permission management. * [improvement][semantic-fe] Improved user experience for the metric list. * [improvement][semantic-fe] fix update the metric list. * [improvement][headless-fe] Added view management functionality. * [improvement][headless-fe] The view management functionality has been added. This feature allows users to create, edit, and manage different views within the system. * [improvement][headless-fe] Added model editing side effect detection. * [improvement][headless-fe] Fixed the logic error in view editing. * [improvement][headless-fe] Fixed the issue with initializing dimension associations in metric settings. * [improvement][headless-fe] Added the ability to hide the Q&A settings entry point. * [improvement][headless-fe] Fixed the issue with selecting search results in metric field creation. * [improvement][headless-fe] Added search functionality to the field list in model editing. * [improvement][headless-fe] fix the field list in model editing * [improvement][headless-fe] Restructured the data for the dimension value settings interface. * [improvement][headless-fe] Added dynamic variable functionality to model creation based on SQL scripts. * [improvement][headless-fe] Added support for passing dynamic variables as parameters in the executeSql function. * [improvement][headless-fe] Resolved the issue where users were unable to select all options for dimensions, metrics, and fields in the metric generation process. * [improvement][headless-fe] Replaced the term "view" with "dataset" * [improvement][headless-fe] Added the ability to export metrics and dimensions to a specific target. * [improvement][headless-fe] Enhanced dataset creation to support the tag mode. * [improvement][headless-fe] Added tag value setting. * [improvement][headless-fe] Optimized the tag setting system. * [improvement][headless-fe] Optimized the tag setting system. * [improvement][headless-fe] Updated the data initialization for model editing to use API requests instead. * [improvement][headless-fe] Added search functionality to model management. * [improvement][headless-fe] Removed field null validation during model editing. * [improvement][headless-fe] Updated the batch operation button component. * [improvement][headless-fe] Optimized the logic for initializing indicators in dimension value settings. * [improvement][headless-fe] Adjusted the length of the input field for model editing names. * [improvement][headless-fe] Lock the version of the @ant-design/pro-table component and replace it with @ant-design/pro-components. * [improvement][headless-fe] Optimized the style of the metrics market and tags market. * [improvement][headless-fe] The quick creation of model fields now defaults to using the "comment" field for filling. * [improvement][headless-fe] The quick creation of model fields now defaults to using the "comment" field for filling * [improvement][headless-fe] The quick creation of model fields now defaults to using the "comment" field for filling. * [improvement][headless-fe] Fixed the issue where the conditions for metric measurement creation were not being saved correctly. * [improvement][headless-fe] Default value setting for hiding dimensions. * [improvement][headless-fe] Updated the file imports in the project. * [improvement][headless-fe] Adjusted the logic for displaying the tab in the theme domain. --- .../pages/SemanticModel/OverviewContainer.tsx | 1 - .../SemanticModel/components/DomainList.tsx | 4 +-- .../components/DomainManagerTab.tsx | 35 ++++++++++++++----- .../components/DomainTreeSelect.tsx | 2 -- .../src/pages/SemanticModel/data.d.ts | 2 ++ .../src/pages/SemanticModel/service.ts | 3 -- 6 files changed, 30 insertions(+), 17 deletions(-) diff --git a/webapp/packages/supersonic-fe/src/pages/SemanticModel/OverviewContainer.tsx b/webapp/packages/supersonic-fe/src/pages/SemanticModel/OverviewContainer.tsx index 4b67d1360..a611442c6 100644 --- a/webapp/packages/supersonic-fe/src/pages/SemanticModel/OverviewContainer.tsx +++ b/webapp/packages/supersonic-fe/src/pages/SemanticModel/OverviewContainer.tsx @@ -34,7 +34,6 @@ const OverviewContainer: React.FC = ({ mode, domainManger, dispatch }) => const targetNode = domainList.filter((item: any) => { return `${item.id}` === domainId; })[0]; - if (!targetNode) { const firstRootNode = domainList.filter((item: any) => { return item.parentId === 0; diff --git a/webapp/packages/supersonic-fe/src/pages/SemanticModel/components/DomainList.tsx b/webapp/packages/supersonic-fe/src/pages/SemanticModel/components/DomainList.tsx index 48e52dae8..b0ccb8267 100644 --- a/webapp/packages/supersonic-fe/src/pages/SemanticModel/components/DomainList.tsx +++ b/webapp/packages/supersonic-fe/src/pages/SemanticModel/components/DomainList.tsx @@ -114,7 +114,7 @@ const DomainListTree: FC = ({ }; const titleRender = (node: any) => { - const { id, name, path, hasEditPermission, parentId } = node as any; + const { id, name, path, hasEditPermission, parentId, hasModel } = node as any; return (
= ({ {createDomainBtnVisible && hasEditPermission && ( - {Array.isArray(path) && path.length < 2 && ( + {Array.isArray(path) && path.length < 2 && !hasModel && ( { diff --git a/webapp/packages/supersonic-fe/src/pages/SemanticModel/components/DomainManagerTab.tsx b/webapp/packages/supersonic-fe/src/pages/SemanticModel/components/DomainManagerTab.tsx index 94d7e0c6e..bd0e8206a 100644 --- a/webapp/packages/supersonic-fe/src/pages/SemanticModel/components/DomainManagerTab.tsx +++ b/webapp/packages/supersonic-fe/src/pages/SemanticModel/components/DomainManagerTab.tsx @@ -43,17 +43,27 @@ const DomainManagerTab: React.FC = ({ }) => { const initState = useRef(false); const defaultTabKey = 'metric'; - const { selectDomainId, selectModelId, selectModelName, selectDomainName, domainData } = - domainManger; - + const { + selectDomainId, + selectModelId, + selectModelName, + selectDomainName, + domainData, + domainList, + } = domainManger; useEffect(() => { initState.current = false; }, [selectModelId]); + const domainListParentIdList: number[] = Array.isArray(domainList) + ? Array.from(new Set(domainList.map((item) => item.parentId))) + : []; + const tabItem = [ { label: '模型管理', key: 'overview', + hidden: domainData && domainListParentIdList.includes(domainData.id), children: ( = ({ { label: '数据集管理', key: 'dataSetManange', + hidden: !!domainData?.parentId, children: ( = ({ { label: '画布', key: 'xflow', + hidden: domainData && domainListParentIdList.includes(domainData.id), children: (
@@ -137,12 +149,17 @@ const DomainManagerTab: React.FC = ({ key: 'recommendedQuestions', children: , }, - ].filter((item) => { - if (window.RUNNING_ENV === 'headless') { - return !['chatSetting', 'recommendedQuestions'].includes(item.key); + ]; + + const getActiveKey = () => { + const key = activeKey || defaultTabKey; + const tabItems = !isModel ? tabItem : isModelItem; + const tabItemsKeys = tabItems.map((item) => item.key); + if (!tabItemsKeys.includes(key)) { + return tabItemsKeys[0]; } - return item; - }); + return key; + }; return ( <> @@ -187,7 +204,7 @@ const DomainManagerTab: React.FC = ({ { diff --git a/webapp/packages/supersonic-fe/src/pages/SemanticModel/components/DomainTreeSelect.tsx b/webapp/packages/supersonic-fe/src/pages/SemanticModel/components/DomainTreeSelect.tsx index e29c6e104..1f90eb34c 100644 --- a/webapp/packages/supersonic-fe/src/pages/SemanticModel/components/DomainTreeSelect.tsx +++ b/webapp/packages/supersonic-fe/src/pages/SemanticModel/components/DomainTreeSelect.tsx @@ -2,11 +2,9 @@ import { message, TreeSelect } from 'antd'; import type { DataNode } from 'antd/lib/tree'; import { useEffect, useState, useRef } from 'react'; import type { FC } from 'react'; -import type { Dispatch } from 'umi'; import { getDomainList } from '../../SemanticModel/service'; import { constructorClassTreeFromList, addPathInTreeData } from '../utils'; import styles from './style.less'; -import { ISemantic } from '../data'; type Props = { value?: any; diff --git a/webapp/packages/supersonic-fe/src/pages/SemanticModel/data.d.ts b/webapp/packages/supersonic-fe/src/pages/SemanticModel/data.d.ts index 6a1391e93..8de06558e 100644 --- a/webapp/packages/supersonic-fe/src/pages/SemanticModel/data.d.ts +++ b/webapp/packages/supersonic-fe/src/pages/SemanticModel/data.d.ts @@ -110,11 +110,13 @@ export declare namespace ISemantic { name: string; bizName: string; description: any; + children: IDomainItem[]; hasEditPermission: boolean; status?: number; typeEnum?: any; sensitiveLevel?: number; parentId: number; + hasModel: boolean; fullPath?: string; viewers?: any[]; viewOrgs?: any[]; diff --git a/webapp/packages/supersonic-fe/src/pages/SemanticModel/service.ts b/webapp/packages/supersonic-fe/src/pages/SemanticModel/service.ts index 8dfde68e6..4a4637318 100644 --- a/webapp/packages/supersonic-fe/src/pages/SemanticModel/service.ts +++ b/webapp/packages/supersonic-fe/src/pages/SemanticModel/service.ts @@ -8,9 +8,6 @@ const getRunningEnv = () => { }; export function getDomainList(): Promise { - if (getRunningEnv() === 'chat') { - return request.get(`${process.env.CHAT_API_BASE_URL}conf/domainList`); - } return request.get(`${process.env.API_BASE_URL}domain/getDomainList`); }