first commit

This commit is contained in:
jerryjzhang
2023-06-12 18:44:01 +08:00
commit dc4fc69b57
879 changed files with 573090 additions and 0 deletions

View File

@@ -0,0 +1,137 @@
import type { NsGraph } from '@antv/xflow';
import { uuidv4 } from '@antv/xflow';
import type { StateType } from '../model';
import { GraphApi } from './service';
import { NODE_WIDTH, NODE_HEIGHT } from './constant';
import moment from 'moment';
import { jsonParse } from '@/utils/utils';
import type { GraphConfigListItem, RelationListItem } from './data';
export const getEdgesNodesIds = (edges: NsGraph.IEdgeConfig[], type?: 'source' | 'target') => {
const hasEdgesNodesIds = edges.reduce((nodesList: string[], item: NsGraph.IEdgeConfig) => {
const { source, target } = item;
if (!type) {
nodesList.push(source, target);
} else if (type === 'source') {
nodesList.push(source);
} else if (type === 'target') {
nodesList.push(target);
}
return nodesList;
}, []);
const uniqueHasEdgesNodesIds = Array.from(new Set(hasEdgesNodesIds));
return uniqueHasEdgesNodesIds;
};
export const computedSingerNodesEdgesPosition = ({ nodes, edges }: NsGraph.IGraphData) => {
const hasEdgesNodesIds = getEdgesNodesIds(edges);
const defaultXPostion = 100;
const defaultYPostion = 100;
const paddingSize = 50;
let xPosistion = defaultXPostion;
const yPostition = defaultYPostion;
const positionNodes = nodes.reduce(
(nodesList: NsGraph.INodeConfig[], item: NsGraph.INodeConfig, index: number) => {
const { id, width, height = NODE_HEIGHT } = item;
if (!hasEdgesNodesIds.includes(id)) {
xPosistion = xPosistion + (width || NODE_WIDTH + paddingSize) * index;
}
nodesList.push({
...item,
x: xPosistion,
y: height > yPostition ? height + paddingSize : yPostition,
});
return nodesList;
},
[],
);
return { nodes: positionNodes, edges };
};
export const addClassInfoAsDataSourceParents = (
{ nodes = [], edges = [] }: NsGraph.IGraphData,
domainManger: StateType,
) => {
const { selectDomainId, selectDomainName } = domainManger;
const sourceId = `classNodeId-${selectDomainId}`;
const classNode = {
...GraphApi.NODE_COMMON_PROPS,
id: sourceId,
label: selectDomainName,
ports: GraphApi.createPorts(sourceId),
};
const classEdges = nodes.reduce((edgesList: NsGraph.IEdgeConfig[], item: NsGraph.INodeConfig) => {
const { id } = item;
const sourcePortId = `${sourceId}-output-1`;
const edge = {
id: uuidv4(),
source: sourceId,
target: id,
sourcePortId,
targetPortId: `${id}-input-1`,
};
edgesList.push(edge);
return edgesList;
}, []);
const graphData = {
nodes: [classNode, ...nodes],
edges: [...edges, ...classEdges],
};
return graphData;
};
export const addDataSourceInfoAsDimensionParents = (
{ nodes = [], edges = [] }: NsGraph.IGraphData,
targetDataSource: NsGraph.INodeConfig,
) => {
const { id: sourceId } = targetDataSource;
const dimensionEdges = nodes.reduce(
(edgesList: NsGraph.IEdgeConfig[], item: NsGraph.INodeConfig) => {
const { id } = item;
const sourcePortId = `${sourceId}-output-1`;
const edge = {
id: uuidv4(),
source: sourceId,
target: id,
sourcePortId,
targetPortId: `${id}-input-1`,
};
edgesList.push(edge);
return edgesList;
},
[],
);
const graphData = {
nodes: [targetDataSource, ...nodes],
edges: [...edges, ...dimensionEdges],
};
return graphData;
};
export const getGraphConfigFromList = (configList: GraphConfigListItem[]) => {
configList.sort((a, b) => moment(b.updatedAt).valueOf() - moment(a.updatedAt).valueOf());
const targetConfig = configList[0];
if (targetConfig) {
const { config, id } = targetConfig;
return {
config: jsonParse(config),
id,
};
}
return;
};
export const getRelationConfigInfo = (
fromDataSourceId: number,
toDataSourceId: number,
relationList: RelationListItem[],
) => {
const relationConfig = relationList.filter((item: RelationListItem) => {
const { datasourceFrom, datasourceTo } = item;
return fromDataSourceId === datasourceFrom && toDataSourceId === datasourceTo;
})[0];
return relationConfig;
};