antv x6连线与取消连线的操作+自定义连接桩+节点选择/框选

本文介绍如何在AntV X6中实现自定义连线功能,包括定义不同类型的连接桩并控制其样式与数据,设置连线规则以确保只有相同类型的连接桩才能连接,以及在节点选择或框选时回传数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

antv x6连线与取消连线的操作+自定义连接桩+节点选择/框选

我们的需求:给连接桩赋不同样式与数据代表不同类型,连线中只有相同类型的连接桩才可以相连,并且左边连接桩为输入,右边连接桩为输出,输入必须和输出相连,输出也只能和输入相连,每次选择节点后回传数据

在这里插入图片描述
假设我们的数据结构如下;

{
   
			"name": "python",
			"icon": "images/pythonScripts@2x.png",
			"icon1": "images1/pythonScripts@2x.png",
			"description": "",
			"category": "Scripts",
			"typeID": 3,
			"inputs": [
				{
   
					"name": "Data",
					"type": "DataType"
				},
				{
   
					"name": "Model",
					"type": "ModelType"
				}
			],
			"outputs": [
				{
   
					"name": "Data",
					"type": "DataType"
				},
				{
   
					"name": "Model",
					"type": "ModelType"
				}
			]
		},

然后我们先来看:

1.自定义连接桩

1.1定义连接桩位置及数据

let groups = {
   },
    items = [],
    inputs = type.inputs,
    outputs = type.outputs,
    name = type.name;

  if (inputs.length) {
   
    inputs.forEach((item, index) => {
   
      // 如果type为data类型
      if (item.type === "dataType") {
   
        groups.input1 = {
   
          position: {
   
            name: "absolute", // 连接桩固定属性
          },
          attrs: {
   
            fo: {
   
              magnet: "true", 
            },
            data: item, // 自定义与与节点/边关联的业务数据
          },
        };
        items.push({
   
          id: `${
     name}_input_${
     item.name}_${
     item.type}`, // 使用拼接字符串代表此连接桩属性
          group: "input1",
          args: {
    // 连接桩位置
            x: 0,
            y: 47,
            angle: 45,
          },
        });
      }
      // 如果type为model类型
      if (item.type === "<class 'sklearn.base.ClassifierMixin'>") {
   
        groups.input2 = {
   
          position: {
   
            name: "absolute",
          },
          attrs: {
   
            fo: {
   
              magnet: "true",
            },
            data: item, // 自定义与与节点/边关联的业务数据,为我们上方展示的数据结构
          },
        };
        items.push({
   
          id: `${
     name}_input_${
     item.name}_${
     item.type}`,
          group: "input2",
          args: {
   
            x: 0,
            y: 104,
            angle: 45,
          },
        });
      }
    });
  }

  if (outputs.length) {
   
    outputs.forEach((item, index) => {
   
      // 如果type为data类型
      if (item.type === "<class 'pandas.core.frame.DataFrame'>") {
   
        // console.log(123123123123123123123123123123123123123123);
        groups.output1 = {
   
          position: {
   
            name: "absolute",
          },
          attrs: {
   
            fo: {
   
              magnet: "true",
            },
            data: item, // 自定义与与节点/边关联的业务数据
          },
        };
        items.push({
   
          id: `${
     name}_output_${
     item.name}_${
     item.type
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值