首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >无法在visjs中创建节点,ID已存在

无法在visjs中创建节点,ID已存在
EN

Stack Overflow用户
提问于 2018-05-22 17:01:07
回答 1查看 1.7K关注 0票数 0

我想在visjs上建立一个网络。不管什么时候我到了

代码语言:javascript
复制
else if (version.slice(-7).toUpperCase() == 'DEFAULT')

我收到一个错误,说ID已经存在。正如您在代码中看到的,我分配的ID等于for循环的迭代次数。问题从iteration/ID 10开始。我在代码中设置了一个断点来检查节点和值,正如您在图像中看到的,节点对象实际上并不包含ID为10的节点。有人有什么建议吗?

Image of breakpoint

代码语言:javascript
复制
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Geoinfo SDE StateTree</title>
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/vis/4.21.0/vis.min.css" type="text/css" />

    <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/PapaParse/4.4.0/papaparse.min.js"></script>
    <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/vis/4.21.0/vis.min.js"></script>
<script type="text/javascript">
Papa.parse("WIL_sde_states_fejl.txt", {
  download: true,
  complete: function(results) {
    var tree = results.data;
    var nodes = new vis.DataSet();
    var edges = new vis.DataSet();
    var levels = [];
    var state, parent, version, lineage;
    for (i = 1; i < tree.length; i++) {
      id = String(i)
      state = tree[i][0];
      parent = tree[i][1];
      version = tree[i][2];
      lineage = tree[i][3];
      if (version.toUpperCase() === '') {
        if (state != parent) {
          nodes.add([{
            id: id,
            lid: lineage,
            label: state
          }]);
          edges.add([{
            from: id,
            to: parent
          }]);

        } else {
          nodes.add([{
            id: id,
            lid: lineage,
            label: state,
            color: '#0000FF'
          }]);
        }
      }else if (version.slice(-7).toUpperCase() == 'DEFAULT') {
        nodes.add([{
          id: id,
          lid: lineage,
          label: state
        }, {
          id: id, //state.concat('v')
          lid: lineage,
          label: version,
          color: '#ff0000'
        }]);
        edges.add([{
          from: id,
          to: parent
        }, {
          from: id,//state.concat('v'),
          to: state,
          arrows: {
            to: {
              enabled: true
            },
            from: {
              enabled: false
            }
          }
        }]);
      }else if (version.slice(0, 5).toUpperCase() == 'SYNC_') {
        nodes.add([{
          id: id,
          lid: lineage,
          label: state
        }, {
          id: id, //state.concat('v'),
          lid: lineage,
          label: version,
          color: '#ff6600'
        }]);
        edges.add([{
          from: state,
          to: parent
        }, {
          from: id,//state.concat('v'),
          to: state,
          arrows: {
            to: {
              enabled: true
            },
            from: {
              enabled: false
            }
          }
        }]);
      }else {
        nodes.add([{
          id: id,
          lid: lineage,
          label: state
        }, {
          id: id,//state.concat('v')
          lid: lineage,
          label: version,
          color: '#ffcc00'
        }]);
        edges.add([{
          from: id,
          to: parent
        }, {
          from: id, //state.concat('v'),
          to: state,
          arrows: {
            to: {
              enabled: true
            },
            from: {
              enabled: false
            }
          }
        }]);
      }
    }
    // create a network
    var container = document.getElementById('mynetwork');
    var data = {
      nodes: nodes,
      edges: edges
    };
    var options = {
      layout: {
        hierarchical: {
          enabled: true
        }
      },
      nodes: {
        shape: 'dot',
        size: 20,
        borderWidth: 0.5,
        color: {
          border: '000000',
          background: '#77d14a'
        },
        font: {
          background: '#FFFFFF'
        }
      },
      edges: {
        width: 0.5,
        color: '000000',
        arrows: 'from'
      },
      physics: {
        stabilization: false
      }
    };
    var network = new vis.Network(container, data, options);
  }
});
</script>


    <style>
    #mynetwork {
        width: 98%;
        height: 98%;
        border: 1px solid lightgray;
    }
    </style>


  </head>
  <body>


    <div id="mynetwork"></div>
  </body>
</html>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-22 18:16:28

好了,我找到问题所在了。

代码语言:javascript
复制
nodes.add([{
    id: id,
    lid: lineage,
    label: state
}, {
    id: id, //state.concat('v')
    lid: lineage,
    label: version,
    color: '#ff0000'
}]);

这两个Ids不能具有相同的名称。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50463718

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档