/* eslint-disable */ /* * JQuery zTree excheck v3.5.37 * http://treejs.cn/ * * Copyright (c) 2010 Hunter.z * * Licensed same as jquery - MIT License * http://www.opensource.org/licenses/mit-license.php * * email: hunter.z@263.net * Date: 2018-08-21 */ (function ($) { // default consts of excheck var _consts = { event: { CHECK: 'ztree_check' }, id: { CHECK: '_check' }, checkbox: { STYLE: 'checkbox', DEFAULT: 'chk', DISABLED: 'disable', FALSE: 'false', TRUE: 'true', FULL: 'full', PART: 'part', FOCUS: 'focus' }, radio: { STYLE: 'radio', TYPE_ALL: 'all', TYPE_LEVEL: 'level' } }, // default setting of excheck _setting = { check: { enable: false, autoCheckTrigger: false, chkStyle: _consts.checkbox.STYLE, nocheckInherit: false, chkDisabledInherit: false, radioType: _consts.radio.TYPE_LEVEL, chkboxType: { 'Y': 'ps', 'N': 'ps' } }, data: { key: { checked: 'checked' } }, callback: { beforeCheck: null, onCheck: null } }, // default root of excheck _initRoot = function (setting) { var r = data.getRoot(setting) r.radioCheckedList = [] }, // default cache of excheck _initCache = function (treeId) { }, // default bind event of excheck _bindEvent = function (setting) { var o = setting.treeObj, c = consts.event o.bind(c.CHECK, function (event, srcEvent, treeId, node) { event.srcEvent = srcEvent tools.apply(setting.callback.onCheck, [event, treeId, node]) }) }, _unbindEvent = function (setting) { var o = setting.treeObj, c = consts.event o.unbind(c.CHECK) }, // default event proxy of excheck _eventProxy = function (e) { var target = e.target, setting = data.getSetting(e.data.treeId), tId = '', node = null, nodeEventType = '', treeEventType = '', nodeEventCallback = null, treeEventCallback = null if (tools.eqs(e.type, 'mouseover')) { if (setting.check.enable && tools.eqs(target.tagName, 'span') && target.getAttribute('treeNode' + consts.id.CHECK) !== null) { tId = tools.getNodeMainDom(target).id nodeEventType = 'mouseoverCheck' } } else if (tools.eqs(e.type, 'mouseout')) { if (setting.check.enable && tools.eqs(target.tagName, 'span') && target.getAttribute('treeNode' + consts.id.CHECK) !== null) { tId = tools.getNodeMainDom(target).id nodeEventType = 'mouseoutCheck' } } else if (tools.eqs(e.type, 'click')) { if (setting.check.enable && tools.eqs(target.tagName, 'span') && target.getAttribute('treeNode' + consts.id.CHECK) !== null) { tId = tools.getNodeMainDom(target).id nodeEventType = 'checkNode' } } if (tId.length > 0) { node = data.getNodeCache(setting, tId) switch (nodeEventType) { case 'checkNode' : nodeEventCallback = _handler.onCheckNode break case 'mouseoverCheck' : nodeEventCallback = _handler.onMouseoverCheck break case 'mouseoutCheck' : nodeEventCallback = _handler.onMouseoutCheck break } } var proxyResult = { stop: nodeEventType === 'checkNode', node: node, nodeEventType: nodeEventType, nodeEventCallback: nodeEventCallback, treeEventType: treeEventType, treeEventCallback: treeEventCallback } return proxyResult }, // default init node of excheck _initNode = function (setting, level, n, parentNode, isFirstNode, isLastNode, openFlag) { if (!n) return var checked = data.nodeChecked(setting, n) checked = data.nodeChecked(setting, n, checked) n.checkedOld = checked if (typeof n.nocheck === 'string') n.nocheck = tools.eqs(n.nocheck, 'true') n.nocheck = !!n.nocheck || (setting.check.nocheckInherit && parentNode && !!parentNode.nocheck) if (typeof n.chkDisabled === 'string') n.chkDisabled = tools.eqs(n.chkDisabled, 'true') n.chkDisabled = !!n.chkDisabled || (setting.check.chkDisabledInherit && parentNode && !!parentNode.chkDisabled) if (typeof n.halfCheck === 'string') n.halfCheck = tools.eqs(n.halfCheck, 'true') n.halfCheck = !!n.halfCheck n.check_Child_State = -1 n.check_Focus = false n.getCheckStatus = function () { return data.getCheckStatus(setting, n) } if (setting.check.chkStyle == consts.radio.STYLE && setting.check.radioType == consts.radio.TYPE_ALL && checked) { var r = data.getRoot(setting) r.radioCheckedList.push(n) } }, // add dom for check _beforeA = function (setting, node, html) { if (setting.check.enable) { data.makeChkFlag(setting, node) html.push("') } }, // update zTreeObj, add method of check _zTreeTools = function (setting, zTreeTools) { zTreeTools.checkNode = function (node, checked, checkTypeFlag, callbackFlag) { var nodeChecked = data.nodeChecked(setting, node) if (node.chkDisabled === true) return if (checked !== true && checked !== false) { checked = !nodeChecked } callbackFlag = !!callbackFlag if (nodeChecked === checked && !checkTypeFlag) { return } else if (callbackFlag && tools.apply(this.setting.callback.beforeCheck, [this.setting.treeId, node], true) == false) { return } if (tools.uCanDo(this.setting) && this.setting.check.enable && node.nocheck !== true) { data.nodeChecked(setting, node, checked) var checkObj = $$(node, consts.id.CHECK, this.setting) if (checkTypeFlag || this.setting.check.chkStyle === consts.radio.STYLE) view.checkNodeRelation(this.setting, node) view.setChkClass(this.setting, checkObj, node) view.repairParentChkClassWithSelf(this.setting, node) if (callbackFlag) { this.setting.treeObj.trigger(consts.event.CHECK, [null, this.setting.treeId, node]) } } } zTreeTools.checkAllNodes = function (checked) { view.repairAllChk(this.setting, !!checked) } zTreeTools.getCheckedNodes = function (checked) { var checked = (checked !== false) var children = data.nodeChildren(setting, data.getRoot(this.setting)) return data.getTreeCheckedNodes(this.setting, children, checked) } zTreeTools.getChangeCheckedNodes = function () { var children = data.nodeChildren(setting, data.getRoot(this.setting)) return data.getTreeChangeCheckedNodes(this.setting, children) } zTreeTools.setChkDisabled = function (node, disabled, inheritParent, inheritChildren) { disabled = !!disabled inheritParent = !!inheritParent inheritChildren = !!inheritChildren view.repairSonChkDisabled(this.setting, node, disabled, inheritChildren) view.repairParentChkDisabled(this.setting, node.getParentNode(), disabled, inheritParent) } var _updateNode = zTreeTools.updateNode zTreeTools.updateNode = function (node, checkTypeFlag) { if (_updateNode) _updateNode.apply(zTreeTools, arguments) if (!node || !this.setting.check.enable) return var nObj = $$(node, this.setting) if (nObj.get(0) && tools.uCanDo(this.setting)) { var checkObj = $$(node, consts.id.CHECK, this.setting) if (checkTypeFlag == true || this.setting.check.chkStyle === consts.radio.STYLE) view.checkNodeRelation(this.setting, node) view.setChkClass(this.setting, checkObj, node) view.repairParentChkClassWithSelf(this.setting, node) } } }, // method of operate data _data = { getRadioCheckedList: function (setting) { var checkedList = data.getRoot(setting).radioCheckedList for (var i = 0, j = checkedList.length; i < j; i++) { if (!data.getNodeCache(setting, checkedList[i].tId)) { checkedList.splice(i, 1) i-- j-- } } return checkedList }, getCheckStatus: function (setting, node) { if (!setting.check.enable || node.nocheck || node.chkDisabled) return null var checked = data.nodeChecked(setting, node), r = { checked: checked, half: node.halfCheck ? node.halfCheck : (setting.check.chkStyle == consts.radio.STYLE ? (node.check_Child_State === 2) : (checked ? (node.check_Child_State > -1 && node.check_Child_State < 2) : (node.check_Child_State > 0))) } return r }, getTreeCheckedNodes: function (setting, nodes, checked, results) { if (!nodes) return [] var onlyOne = (checked && setting.check.chkStyle == consts.radio.STYLE && setting.check.radioType == consts.radio.TYPE_ALL) results = !results ? [] : results for (var i = 0, l = nodes.length; i < l; i++) { var node = nodes[i] var children = data.nodeChildren(setting, node) var nodeChecked = data.nodeChecked(setting, node) if (node.nocheck !== true && node.chkDisabled !== true && nodeChecked == checked) { results.push(node) if (onlyOne) { break } } data.getTreeCheckedNodes(setting, children, checked, results) if (onlyOne && results.length > 0) { break } } return results }, getTreeChangeCheckedNodes: function (setting, nodes, results) { if (!nodes) return [] results = !results ? [] : results for (var i = 0, l = nodes.length; i < l; i++) { var node = nodes[i] var children = data.nodeChildren(setting, node) var nodeChecked = data.nodeChecked(setting, node) if (node.nocheck !== true && node.chkDisabled !== true && nodeChecked != node.checkedOld) { results.push(node) } data.getTreeChangeCheckedNodes(setting, children, results) } return results }, makeChkFlag: function (setting, node) { if (!node) return var chkFlag = -1 var children = data.nodeChildren(setting, node) if (children) { for (var i = 0, l = children.length; i < l; i++) { var cNode = children[i] var nodeChecked = data.nodeChecked(setting, cNode) var tmp = -1 if (setting.check.chkStyle == consts.radio.STYLE) { if (cNode.nocheck === true || cNode.chkDisabled === true) { tmp = cNode.check_Child_State } else if (cNode.halfCheck === true) { tmp = 2 } else if (nodeChecked) { tmp = 2 } else { tmp = cNode.check_Child_State > 0 ? 2 : 0 } if (tmp == 2) { chkFlag = 2 break } else if (tmp == 0) { chkFlag = 0 } } else if (setting.check.chkStyle == consts.checkbox.STYLE) { if (cNode.nocheck === true || cNode.chkDisabled === true) { tmp = cNode.check_Child_State } else if (cNode.halfCheck === true) { tmp = 1 } else if (nodeChecked) { tmp = (cNode.check_Child_State === -1 || cNode.check_Child_State === 2) ? 2 : 1 } else { tmp = (cNode.check_Child_State > 0) ? 1 : 0 } if (tmp === 1) { chkFlag = 1 break } else if (tmp === 2 && chkFlag > -1 && i > 0 && tmp !== chkFlag) { chkFlag = 1 break } else if (chkFlag === 2 && tmp > -1 && tmp < 2) { chkFlag = 1 break } else if (tmp > -1) { chkFlag = tmp } } } } node.check_Child_State = chkFlag } }, // method of event proxy _event = {}, // method of event handler _handler = { onCheckNode: function (event, node) { if (node.chkDisabled === true) return false var setting = data.getSetting(event.data.treeId) if (tools.apply(setting.callback.beforeCheck, [setting.treeId, node], true) == false) return true var nodeChecked = data.nodeChecked(setting, node) data.nodeChecked(setting, node, !nodeChecked) view.checkNodeRelation(setting, node) var checkObj = $$(node, consts.id.CHECK, setting) view.setChkClass(setting, checkObj, node) view.repairParentChkClassWithSelf(setting, node) setting.treeObj.trigger(consts.event.CHECK, [event, setting.treeId, node]) return true }, onMouseoverCheck: function (event, node) { if (node.chkDisabled === true) return false var setting = data.getSetting(event.data.treeId), checkObj = $$(node, consts.id.CHECK, setting) node.check_Focus = true view.setChkClass(setting, checkObj, node) return true }, onMouseoutCheck: function (event, node) { if (node.chkDisabled === true) return false var setting = data.getSetting(event.data.treeId), checkObj = $$(node, consts.id.CHECK, setting) node.check_Focus = false view.setChkClass(setting, checkObj, node) return true } }, // method of tools for zTree _tools = {}, // method of operate ztree dom _view = { checkNodeRelation: function (setting, node) { var pNode, i, l, r = consts.radio var nodeChecked = data.nodeChecked(setting, node) if (setting.check.chkStyle == r.STYLE) { var checkedList = data.getRadioCheckedList(setting) if (nodeChecked) { if (setting.check.radioType == r.TYPE_ALL) { for (i = checkedList.length - 1; i >= 0; i--) { pNode = checkedList[i] var pNodeChecked = data.nodeChecked(setting, pNode) if (pNodeChecked && pNode != node) { data.nodeChecked(setting, pNode, false) checkedList.splice(i, 1) view.setChkClass(setting, $$(pNode, consts.id.CHECK, setting), pNode) if (pNode.parentTId != node.parentTId) { view.repairParentChkClassWithSelf(setting, pNode) } } } checkedList.push(node) } else { var parentNode = (node.parentTId) ? node.getParentNode() : data.getRoot(setting) var children = data.nodeChildren(setting, parentNode) for (i = 0, l = children.length; i < l; i++) { pNode = children[i] var pNodeChecked = data.nodeChecked(setting, pNode) if (pNodeChecked && pNode != node) { data.nodeChecked(setting, pNode, false) view.setChkClass(setting, $$(pNode, consts.id.CHECK, setting), pNode) } } } } else if (setting.check.radioType == r.TYPE_ALL) { for (i = 0, l = checkedList.length; i < l; i++) { if (node == checkedList[i]) { checkedList.splice(i, 1) break } } } } else { var children = data.nodeChildren(setting, node) if (nodeChecked && (!children || children.length == 0 || setting.check.chkboxType.Y.indexOf('s') > -1)) { view.setSonNodeCheckBox(setting, node, true) } if (!nodeChecked && (!children || children.length == 0 || setting.check.chkboxType.N.indexOf('s') > -1)) { view.setSonNodeCheckBox(setting, node, false) } if (nodeChecked && setting.check.chkboxType.Y.indexOf('p') > -1) { view.setParentNodeCheckBox(setting, node, true) } if (!nodeChecked && setting.check.chkboxType.N.indexOf('p') > -1) { view.setParentNodeCheckBox(setting, node, false) } } }, makeChkClass: function (setting, node) { var c = consts.checkbox, r = consts.radio, fullStyle = '' var nodeChecked = data.nodeChecked(setting, node) if (node.chkDisabled === true) { fullStyle = c.DISABLED } else if (node.halfCheck) { fullStyle = c.PART } else if (setting.check.chkStyle == r.STYLE) { fullStyle = (node.check_Child_State < 1) ? c.FULL : c.PART } else { fullStyle = nodeChecked ? ((node.check_Child_State === 2 || node.check_Child_State === -1) ? c.FULL : c.PART) : ((node.check_Child_State < 1) ? c.FULL : c.PART) } var chkName = setting.check.chkStyle + '_' + (nodeChecked ? c.TRUE : c.FALSE) + '_' + fullStyle chkName = (node.check_Focus && node.chkDisabled !== true) ? chkName + '_' + c.FOCUS : chkName return consts.className.BUTTON + ' ' + c.DEFAULT + ' ' + chkName }, repairAllChk: function (setting, checked) { if (setting.check.enable && setting.check.chkStyle === consts.checkbox.STYLE) { var root = data.getRoot(setting) var children = data.nodeChildren(setting, root) for (var i = 0, l = children.length; i < l; i++) { var node = children[i] if (node.nocheck !== true && node.chkDisabled !== true) { data.nodeChecked(setting, node, checked) } view.setSonNodeCheckBox(setting, node, checked) } } }, repairChkClass: function (setting, node) { if (!node) return data.makeChkFlag(setting, node) if (node.nocheck !== true) { var checkObj = $$(node, consts.id.CHECK, setting) view.setChkClass(setting, checkObj, node) } }, repairParentChkClass: function (setting, node) { if (!node || !node.parentTId) return var pNode = node.getParentNode() view.repairChkClass(setting, pNode) view.repairParentChkClass(setting, pNode) }, repairParentChkClassWithSelf: function (setting, node) { if (!node) return var children = data.nodeChildren(setting, node) if (children && children.length > 0) { view.repairParentChkClass(setting, children[0]) } else { view.repairParentChkClass(setting, node) } }, repairSonChkDisabled: function (setting, node, chkDisabled, inherit) { if (!node) return if (node.chkDisabled != chkDisabled) { node.chkDisabled = chkDisabled } view.repairChkClass(setting, node) var children = data.nodeChildren(setting, node) if (children && inherit) { for (var i = 0, l = children.length; i < l; i++) { var sNode = children[i] view.repairSonChkDisabled(setting, sNode, chkDisabled, inherit) } } }, repairParentChkDisabled: function (setting, node, chkDisabled, inherit) { if (!node) return if (node.chkDisabled != chkDisabled && inherit) { node.chkDisabled = chkDisabled } view.repairChkClass(setting, node) view.repairParentChkDisabled(setting, node.getParentNode(), chkDisabled, inherit) }, setChkClass: function (setting, obj, node) { if (!obj) return if (node.nocheck === true) { obj.hide() } else { obj.show() } obj.attr('class', view.makeChkClass(setting, node)) }, setParentNodeCheckBox: function (setting, node, value, srcNode) { var checkObj = $$(node, consts.id.CHECK, setting) if (!srcNode) srcNode = node data.makeChkFlag(setting, node) if (node.nocheck !== true && node.chkDisabled !== true) { data.nodeChecked(setting, node, value) view.setChkClass(setting, checkObj, node) if (setting.check.autoCheckTrigger && node != srcNode) { setting.treeObj.trigger(consts.event.CHECK, [null, setting.treeId, node]) } } if (node.parentTId) { var pSign = true if (!value) { var pNodes = data.nodeChildren(setting, node.getParentNode()) for (var i = 0, l = pNodes.length; i < l; i++) { var pNode = pNodes[i] var nodeChecked = data.nodeChecked(setting, pNode) if ((pNode.nocheck !== true && pNode.chkDisabled !== true && nodeChecked) || ((pNode.nocheck === true || pNode.chkDisabled === true) && pNode.check_Child_State > 0)) { pSign = false break } } } if (pSign) { view.setParentNodeCheckBox(setting, node.getParentNode(), value, srcNode) } } }, setSonNodeCheckBox: function (setting, node, value, srcNode) { if (!node) return var checkObj = $$(node, consts.id.CHECK, setting) if (!srcNode) srcNode = node var hasDisable = false var children = data.nodeChildren(setting, node) if (children) { for (var i = 0, l = children.length; i < l; i++) { var sNode = children[i] view.setSonNodeCheckBox(setting, sNode, value, srcNode) if (sNode.chkDisabled === true) hasDisable = true } } if (node != data.getRoot(setting) && node.chkDisabled !== true) { if (hasDisable && node.nocheck !== true) { data.makeChkFlag(setting, node) } if (node.nocheck !== true && node.chkDisabled !== true) { data.nodeChecked(setting, node, value) if (!hasDisable) node.check_Child_State = (children && children.length > 0) ? (value ? 2 : 0) : -1 } else { node.check_Child_State = -1 } view.setChkClass(setting, checkObj, node) if (setting.check.autoCheckTrigger && node != srcNode && node.nocheck !== true && node.chkDisabled !== true) { setting.treeObj.trigger(consts.event.CHECK, [null, setting.treeId, node]) } } } }, _z = { tools: _tools, view: _view, event: _event, data: _data } $.extend(true, $.fn.zTree.consts, _consts) $.extend(true, $.fn.zTree._z, _z) var zt = $.fn.zTree, tools = zt._z.tools, consts = zt.consts, view = zt._z.view, data = zt._z.data, event = zt._z.event, $$ = tools.$ data.nodeChecked = function (setting, node, newChecked) { if (!node) { return false } var key = setting.data.key.checked if (typeof newChecked !== 'undefined') { if (typeof newChecked === 'string') { newChecked = tools.eqs(newChecked, 'true') } newChecked = !!newChecked node[key] = newChecked } return node[key] } data.exSetting(_setting) data.addInitBind(_bindEvent) data.addInitUnBind(_unbindEvent) data.addInitCache(_initCache) data.addInitNode(_initNode) data.addInitProxy(_eventProxy, true) data.addInitRoot(_initRoot) data.addBeforeA(_beforeA) data.addZTreeTools(_zTreeTools) var _createNodes = view.createNodes view.createNodes = function (setting, level, nodes, parentNode, index) { if (_createNodes) _createNodes.apply(view, arguments) if (!nodes) return view.repairParentChkClassWithSelf(setting, parentNode) } var _removeNode = view.removeNode view.removeNode = function (setting, node) { var parentNode = node.getParentNode() if (_removeNode) _removeNode.apply(view, arguments) if (!node || !parentNode) return view.repairChkClass(setting, parentNode) view.repairParentChkClass(setting, parentNode) } var _appendNodes = view.appendNodes view.appendNodes = function (setting, level, nodes, parentNode, index, initFlag, openFlag) { var html = '' if (_appendNodes) { html = _appendNodes.apply(view, arguments) } if (parentNode) { data.makeChkFlag(setting, parentNode) } return html } })(jQuery)