点和边数据结构设计

249 阅读1分钟

首先不设根节点,

image.png 这些节点就是第零层的节点。
"level": 0,
image.png
类似Tops、Blouse实心的为第一层节点
"level": 1,
Tank Top为第二层节点
"level": 2
且即使是下面这种情况
image.png
空心的节点直接和第一层节点相连,空心节点的level仍然是2。

节点数据结构

第零层节点数据结构

{
      "id": "trend",
      "name": "Trend",
      "level": 0,
      "childrenNum": 11,
      "tag": "trend"
    },

id和name、tag一样,level上面讲了,就是零不动,childrenNum是子节点的数量。

第一层节点数据结构

{
      "id": "clustering",
      "name": "Clustering",
      "level": 1,
      "childrenNum": 7,
      "tag": "clustering",
      "isLeaf": false,
      "tags": [
        "relation"
      ]
    },

level变成了1,isLeaf是true表示没有孩子节点了如下图一,是false表示不是叶子,还有孩子节点如图二。tags就是一个字符串数组,里面是该节点所连的第零层节点。
我是图一

image.png
我是图二

image.png

第二层节点数据结构

第一种情况:和第一层节点相连的第二层节点,tags里面的字符串需是"第零层节点-第一层节点"(由于-该符号有特殊意义,故节点名称不得有-,反例前后端均视为不合法)
{
      "id": "compactBox",
      "name": "CompactBox",
      "level": 2,
      "isLeaf": true,
      "tags": [
        "relation-hierarchy"
      ],
    },
第二种情况:自己和第零层节点相连的第二层节点,tags里面的字符串直接是第零层节点
{
      "id": "wordcloud",
      "name": "Word\nCloud",
      "level": 2,
      "isLeaf": true,
      "tags": [
        "compare"
      ]
    },

第二层节点没有tag只有tags,第一层节点tag和tags均有。

边数据结构

边不做改动,

{
      "source": "percentage",
      "target": "groupbarchart"
    },

原有的value值作用不明,需后续对接。