[improvement][semantic-fe] Added an editing component to set filtering rules for Q&A. Now, the SQL editor will be accompanied by a list for display and control, to resolve ambiguity when using comma-separated values.

[improvement][semantic-fe] Improved validation logic and prompt copywriting for data source/dimension/metric editing and creation.
[improvement][semantic-fe] Improved user experience for visual modeling. Now, when using the legend to control the display/hide of data sources and their associated metric dimensions, the canvas will be re-layout based on the activated data source in the legend.

Co-authored-by: tristanliu <tristanliu@tencent.com>
This commit is contained in:
tristanliu
2023-07-21 15:30:38 +08:00
committed by GitHub
parent 6492316e23
commit 078a81038f
39 changed files with 1541 additions and 1161 deletions

View File

@@ -9,6 +9,7 @@ import DataSourceRelationFormDrawer from './DataSourceRelationFormDrawer';
import DataSourceCreateForm from '../../Datasource/components/DataSourceCreateForm';
import ClassDataSourceTypeModal from '../../components/ClassDataSourceTypeModal';
import { GraphApi } from '../service';
import { SemanticNodeType } from '../../enum';
import type { StateType } from '../../model';
import DataSource from '../../Datasource';
@@ -112,7 +113,7 @@ const XflowJsonSchemaFormDrawerForm: React.FC<CreateFormProps> = (props) => {
...targetData,
label: dataSourceInfo.name,
payload: dataSourceInfo,
id: `dataSource-${dataSourceInfo.id}`,
id: `${SemanticNodeType.DATASOURCE}-${dataSourceInfo.id}`,
});
setDataSourceItem(undefined);
commandService.executeCommand(XFlowGraphCommands.SAVE_GRAPH_DATA.id, {
@@ -144,7 +145,7 @@ const XflowJsonSchemaFormDrawerForm: React.FC<CreateFormProps> = (props) => {
...targetData,
label: dataSourceInfo.name,
payload: dataSourceInfo,
id: `dataSource-${dataSourceInfo.id}`,
id: `${SemanticNodeType.DATASOURCE}-${dataSourceInfo.id}`,
});
setDataSourceItem(undefined);
commandService.executeCommand(XFlowGraphCommands.SAVE_GRAPH_DATA.id, {

View File

@@ -7,6 +7,7 @@ import type { NsDeployDagCmd } from './CmdExtensions/CmdDeploy';
import { getRelationConfigInfo, addClassInfoAsDataSourceParents } from './utils';
import { cloneDeep } from 'lodash';
import type { IDataSource } from '../data';
import { SemanticNodeType } from '../enum';
import {
getDatasourceList,
deleteDatasource,
@@ -57,7 +58,7 @@ export namespace GraphApi {
export const createDataSourceNode = (dataSourceItem: IDataSource.IDataSourceItem) => {
const { id, name } = dataSourceItem;
const nodeId = `dataSource-${id}`;
const nodeId = `${SemanticNodeType.DATASOURCE}-${id}`;
return {
...NODE_COMMON_PROPS,
id: nodeId,
@@ -89,7 +90,7 @@ export namespace GraphApi {
const dataSourceMap = data.reduce(
(itemMap: Record<string, IDataSource.IDataSourceItem>, item: IDataSource.IDataSourceItem) => {
const { id, name } = item;
itemMap[`dataSource-${id}`] = item;
itemMap[`${SemanticNodeType.DATASOURCE}-${id}`] = item;
itemMap[name] = item;
return itemMap;
@@ -114,7 +115,7 @@ export namespace GraphApi {
mergeNodes = data.reduce(
(mergeNodeList: NsGraph.INodeConfig[], item: IDataSource.IDataSourceItem) => {
const { id } = item;
const targetDataSourceItem = nodesMap[`dataSource-${id}`];
const targetDataSourceItem = nodesMap[`${SemanticNodeType.DATASOURCE}-${id}`];
if (targetDataSourceItem) {
mergeNodeList.push({
...targetDataSourceItem,
@@ -166,7 +167,7 @@ export namespace GraphApi {
const { list } = data;
const nodes: NsGraph.INodeConfig[] = list.map((item: any) => {
const { id, name } = item;
const nodeId = `dimension-${id}`;
const nodeId = `${SemanticNodeType.DIMENSION}-${id}`;
return {
...NODE_COMMON_PROPS,
id: nodeId,