var thisWidget, lastRightClickTreeId, lastRightClickTreeNode, layers = [], layersObj = {}; function initWidgetView(e) { thisWidget = e, bindRightMenuEvnet(); for (var e = { check: { enable: !0 }, data: { simpleData: { enable: !0 } , }, callback: { onCheck: treeOverlays_onCheck, onRightClick: treeOverlays_OnRightClick, onDblClick: treeOverlays_onDblClick, onClick: treeOverlays_onClick , }, view: { addDiyDom: addOpacityRangeDom , } , }, n = [], t = (layers = thisWidget.getLayers()).length - 1; 0 <= t; t--) { var a = _getNodeConfig(layers[t]); a && n.push(a) } $.fn.zTree.init($("#treeOverlays"), e, n) } function _getNodeConfig(e) { if (null != e && !e.options.noLayerManage) { var n = e.options; if ("未命名" != n.name) { var t = { id: e.id, pId: e.pid, name: e.name, uuid: e.uuid }; return e.hasEmptyGroup ? (t.icon = "img/folder.png", t.open = null == n.open || n.open) : e.hasChildLayer ? (t.icon = "img/layerGroup.png", t.open = null == n.open || n.open) : (t.icon = "img/layer.png", t.checked = e.isAdded && e.show, n._parent && (t._parent = n._parent.uuid), layersObj[t.uuid] = e), t } } } function addNode(e) { var n, t = $.fn.zTree.getZTreeObj("treeOverlays"); e.pid && -1 != e.pid && (n = t.getNodeByParam("id", e.pid, null)); var a = _getNodeConfig(e); a && (t.addNodes(n, 0, [a], !0), e.hasChildLayer && e.eachLayer(function (e) { removeNode(e), addNode(e) })) } function removeNode(e) { var n = $.fn.zTree.getZTreeObj("treeOverlays"), e = n.getNodeByParam("uuid", e.uuid, null); e && n.removeNode(e) } function updateNode(e) { var n = $.fn.zTree.getZTreeObj("treeOverlays"), t = n.getNodeByParam("uuid", e.uuid, null), a = e.isAdded && e.show; t ? t.checked != a && (t.checkedOld = t.checked, t.checked = a, n.updateNode(t)) : addNode(e, a) } function treeOverlays_onClick(e, n, t, a) { } function treeOverlays_onDblClick(e, n, t) { null == t || null == t.uuid || null != (t = layersObj[t.uuid]) && t.flyTo() } function treeOverlays_onCheck(e, n, t) { for (var a = $.fn.zTree.getZTreeObj(n), d = a.getChangeCheckedNodes(), r = 0; r < d.length; r++) { var o = d[r]; o.checkedOld = o.checked; var i, l = layersObj[o.uuid]; if (null != l) { if (o.checked ? $("#" + o.tId + "_range").show() : $("#" + o.tId + "_range").hide(), l.options.radio && o.checked) for (var c = a.getNodesByFilter(function (e) { var n = layersObj[e.uuid]; return n.options.radio && n.pid == l.pid && e.uuid != o.uuid }, !1, o.getParentNode()), u = 0; u < c.length; u++)c[u].checkedOld = !1, a.checkNode(c[u], !1, !0), $("#" + c[u].tId + "_range").hide(), layersObj[c[u].uuid].show = !1; o._parent ? (i = layersObj[o._parent], thisWidget.updateLayerShow(l, o.checked, i)) : thisWidget.updateLayerShow(l, o.checked) } } } function addOpacityRangeDom(e, n) { var t, a, d = layersObj[n.uuid]; d && d.hasOpacity && (t = $("#" + n.tId), a = '', t.append(a), n.checked || $("#" + n.tId + "_range").hide(), $("#" + n.tId + "_range").range({ min: 0, max: 100, step: 1, value: 100 * (d.opacity || 1), onChange: function (e) { layersObj[n.uuid].opacity = e / 100 } })) } function treeOverlays_OnRightClick(e, n, t) { var a; null == t || (a = layersObj[t.uuid]) && a.hasZIndex && (lastRightClickTreeId = n, lastRightClickTreeNode = t, n = e.clientY, t = e.clientX, (e = document.body.offsetHeight - 100) < n && (n = e), (e = document.body.offsetWidth - 100) < t && (t = e), $("#content_layer_manager_rMenu").css({ top: n + "px", left: t + "px" }).show(), $("body").bind("mousedown", onBodyMouseDown)) } function onBodyMouseDown(e) { "content_layer_manager_rMenu" == e.target.id || 0 < $(e.target).parents("#content_layer_manager_rMenu").length || hideRMenu() } function hideRMenu() { $("body").unbind("mousedown", onBodyMouseDown), $("#content_layer_manager_rMenu").hide() } function bindRightMenuEvnet() { $("#content_layer_manager_rMenu li").on("click", function () { hideRMenu(), moveNodeAndLayer($(this).attr("data-type")) }) } function moveNodeAndLayer(e) { var n = $.fn.zTree.getZTreeObj(lastRightClickTreeId), t = lastRightClickTreeNode.getParentNode(), a = null == t ? n.getNodes() : t.children, d = lastRightClickTreeNode, r = layersObj[d.uuid]; switch (e) { case "up": var o = d.getPreNode(); o && (n.moveNode(o, d, "prev"), exchangeLayer(r, layersObj[o.uuid])); break; case "top": if (0 == d.getIndex()) return; for (; 0 < d.getIndex();) { var i = d.getPreNode(); i && (n.moveNode(i, d, "prev"), exchangeLayer(r, layersObj[i.uuid])) } break; case "down": o = d.getNextNode(); o && (n.moveNode(o, d, "next"), exchangeLayer(r, layersObj[o.uuid])); break; case "bottom": if (d.getIndex() == a.length - 1) return; for (; d.getIndex() < a.length - 1;) { var l = d.getNextNode(); l && (n.moveNode(l, d, "next"), exchangeLayer(r, layersObj[l.uuid])) } }layers.sort(function (e, n) { return e.zIndex - n.zIndex }) } function exchangeLayer(e, n) { var t; null != e && null != n && (t = e.zIndex, e.zIndex = n.zIndex, n.zIndex = t, console.log("".concat(e.name, ":").concat(e.zIndex, ", ").concat(n.name, ":").concat(n.zIndex))) } function updateCheckd(e, n) { var t = $.fn.zTree.getZTreeObj("treeOverlays"), a = t.getNodesByParam("name", e, null); a && 0 < a.length ? t.checkNode(a[0], n, !1) : console.log("未在图层树上找到图层“" + e + "”,无法自动勾选处理") }