wangrong
2022-10-24 c42e3ffb4339e4f60405beb0afcb3f11076ce8f0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
"use script"; //开发环境建议开启严格模式
 
//对应widget.js中MyWidget实例化后的对象
var thisWidget;
var layers = [];
var layersObj = {};
var indexCache = 0;
 
//当前页面业务
function initWidgetView(_thisWidget) {
  thisWidget = _thisWidget;
 
  thisWidget.getTreeUrl();
 
  $("#btn_back").click(function (e) {
    thisWidget.resetStyle();
    $("#treeOverlays").jstree("uncheck_all", true);
    $("#viewReset").hide();
  });
}
 
function name2text(o) {
  o.text = o.name;
 
  //这块为了避免tree控件里的id不统一,所以加改变一下
  o.eleid = o.id;
  o.id = indexCache++;
 
  layersObj[o.id] = o.eleid;
 
  if ((!o.text || o.text.trim() == "") && o.type) {
    o.text = o.type;
  }
 
  if (o.children) {
    for (var i = 0; i < o.children.length; i++) {
      name2text(o.children[i]);
    }
  }
}
 
function initSceneTree(scene) {
  var data = [];
  if (scene.scenes) {
    for (var i = 0; i < scene.scenes.length; i++) {
      var node = scene.scenes[i];
      name2text(node);
      data.push(node);
    }
  } else {
    name2text(scene);
    data.push(scene);
  }
 
  $("#treeOverlays").jstree({
    core: {
      data: data,
      themes: {
        name: "default-dark",
        dots: true,
        icons: true,
        multiple: true,
      },
    },
    checkbox: {
      whole_node: false,
      keep_selected_style: false,
      tie_selection: false,
    },
    plugins: ["checkbox"],
  });
 
  $("#treeOverlays").on("changed.jstree", function (e, data) {
    var node = data.node.original;
    if (node && node.sphere) {
      thisWidget.locateNode(node.eleid, node.sphere);
      $("#viewReset").show();
    }
  });
 
  // checkbox被选中
  $("#treeOverlays").on("check_node.jstree", function (e, data) {
    console.log(data);
    var list = [];
    var selectNode = [];
    var arrNode = [];
    //全选时获取所有子节点
    let childrenNode = data.node.children_d;
    let arr = data.selected;
    //遍历出子节点
    for (var i = 0; i < childrenNode.length; i++) {
      let nodeId = layersObj[childrenNode[i]];
      list.push(nodeId);
    }
    //遍历出selected的节点
    for (var j = 0; j < arr.length; j++) {
      let selectNodeId = layersObj[arr[j]];
      selectNode.push(selectNodeId);
    }
    arrNode = [...list, ...selectNode];
    thisWidget.showTitleStyle(arrNode);
  });
  //checkbox取消选中
  $("#treeOverlays").on("uncheck_node.jstree", function (e, data) {
    let list = [];
    var childrenNode = data.node.children_d;
    var arr = data.selected;
 
    var c1 = arr.filter((a) => {
      return !childrenNode.some((c) => c == a);
    });
 
    for (var j = 0; j < c1.length; j++) {
      let node = layersObj[c1[j]];
      list.push(node);
      thisWidget.showTitleStyle(list);
    }
    //全部取消
    if (c1.length === 0) {
      thisWidget.cancelAll();
    }
  });
}