"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(); } }); }