32 | <record id="view_employee_tree_with_dpttree" model="ir.ui.view">
33 | <field name="name">hr.employee.tree</field>
34 | <field name="model">hr.employee</field>
35 | <field name="inherit_id" ref="hr.view_employee_tree" />
36 | <field name="arch" type="xml">
37 | <xpath expr="//tree" position="attributes">
38 | <attribute name="categ_property">department_id</attribute> <----- the field relate to the tree Structure in the model
39 | <attribute name="categ_model">hr.department</attribute> <----- the model of the tree Structure
40 | <attribute name="categ_parent_key">parent_id</attribute> <----- (optional)if only want to get a single layer tree,do not specify a value for this attribute
41 | </xpath>
42 | </field>
43 | </record>
44 |
0&&(l=i.appendNodes(a,b+1,q,p,-1,h,k&&p.open));k&&(i.makeDOMNodeMainBefore(f,a,p),i.makeDOMNodeLine(f, 42 | a,p),e.getBeforeA(a,p,f),i.makeDOMNodeNameBefore(f,a,p),e.getInnerBeforeA(a,p,f),i.makeDOMNodeIcon(f,a,p),e.getInnerAfterA(a,p,f),i.makeDOMNodeNameAfter(f,a,p),e.getAfterA(a,p,f),o&&p.open&&i.makeUlHtml(a,p,f,l.join("")),i.makeDOMNodeMainAfter(f,a,p),e.addCreatedNode(a,p))}return f},appendParentULDom:function(a,b){var c=[],d=l(b,a);!d.get(0)&&b.parentTId&&(i.appendParentULDom(a,b.getParentNode()),d=l(b,a));var g=l(b,f.id.UL,a);g.get(0)&&g.remove();g=e.nodeChildren(a,b);g=i.appendNodes(a,b.level+1, 43 | g,b,-1,!1,!0);i.makeUlHtml(a,b,c,g.join(""));d.append(c.join(""))},asyncNode:function(a,b,c,d){var g,h;g=e.nodeIsParent(a,b);if(b&&!g)return j.apply(d),!1;else if(b&&b.isAjaxing)return!1;else if(j.apply(a.callback.beforeAsync,[a.treeId,b],!0)==!1)return j.apply(d),!1;if(b)b.isAjaxing=!0,l(b,f.id.ICON,a).attr({style:"","class":f.className.BUTTON+" "+f.className.ICO_LOADING});var k={},m=j.apply(a.async.autoParam,[a.treeId,b],a.async.autoParam);for(g=0,h=m.length;b&&g1&&(o=r[1],r=r[0]);k[o]=b[r]}m=j.apply(a.async.otherParam,[a.treeId,b],a.async.otherParam);if(j.isArray(m))for(g=0,h=m.length;g -1?JSON.stringify(k):k,dataType:a.async.dataType,headers:a.async.headers,xhrFields:a.async.xhrFields,success:function(h){if(P== 45 | e.getRoot(a)._ver){var k=[];try{k=!h||h.length==0?[]:typeof h=="string"?eval("("+h+")"):h}catch(g){k=h}if(b)b.isAjaxing=null,b.zAsync=!0;i.setNodeLineIcos(a,b);k&&k!==""?(k=j.apply(a.async.dataFilter,[a.treeId,b,k],k),i.addNodes(a,b,-1,k?j.clone(k):[],!!c)):i.addNodes(a,b,-1,[],!!c);a.treeObj.trigger(f.event.ASYNC_SUCCESS,[a.treeId,b,h]);j.apply(d)}},error:function(c,d,h){if(P==e.getRoot(a)._ver){if(b)b.isAjaxing=null;i.setNodeLineIcos(a,b);a.treeObj.trigger(f.event.ASYNC_ERROR,[a.treeId,b,c,d,h])}}}); 46 | return!0},cancelPreSelectedNode:function(a,b,c){var d=e.getRoot(a).curSelectedList,g,h;for(g=d.length-1;g>=0;g--)if(h=d[g],b===h||!b&&(!c||c!==h))if(l(h,f.id.A,a).removeClass(f.node.CURSELECTED),b){e.removeSelectedNode(a,b);break}else d.splice(g,1),a.treeObj.trigger(f.event.UNSELECTED,[a.treeId,h])},createNodeCallback:function(a){if(a.callback.onNodeCreated||a.view.addDiyDom)for(var b=e.getRoot(a);b.createdNodes.length>0;){var c=b.createdNodes.shift();j.apply(a.view.addDiyDom,[a.treeId,c]);a.callback.onNodeCreated&& 47 | a.treeObj.trigger(f.event.NODECREATED,[a.treeId,c])}},createNodes:function(a,b,c,d,g){if(c&&c.length!=0){var h=e.getRoot(a),k=!d||d.open||!!l(e.nodeChildren(a,d)[0],a).get(0);h.createdNodes=[];var b=i.appendNodes(a,b,c,d,g,!0,k),m,j;d?(d=l(d,f.id.UL,a),d.get(0)&&(m=d)):m=a.treeObj;m&&(g>=0&&(j=m.children()[g]),g>=0&&j?q(j).before(b.join("")):m.append(b.join("")));i.createNodeCallback(a)}},destroy:function(a){a&&(e.initCache(a),e.initRoot(a),n.unbindTree(a),n.unbindEvent(a),a.treeObj.empty(),delete s[a.treeId])}, 48 | expandCollapseNode:function(a,b,c,d,g){var h=e.getRoot(a),k;if(b){var m=e.nodeChildren(a,b),r=e.nodeIsParent(a,b);if(h.expandTriggerFlag)k=g,g=function(){k&&k();b.open?a.treeObj.trigger(f.event.EXPAND,[a.treeId,b]):a.treeObj.trigger(f.event.COLLAPSE,[a.treeId,b])},h.expandTriggerFlag=!1;if(!b.open&&r&&(!l(b,f.id.UL,a).get(0)||m&&m.length>0&&!l(m[0],a).get(0)))i.appendParentULDom(a,b),i.createNodeCallback(a);if(b.open==c)j.apply(g,[]);else{var c=l(b,f.id.UL,a),h=l(b,f.id.SWITCH,a),o=l(b,f.id.ICON, 49 | a);r?(b.open=!b.open,b.iconOpen&&b.iconClose&&o.attr("style",i.makeNodeIcoStyle(a,b)),b.open?(i.replaceSwitchClass(b,h,f.folder.OPEN),i.replaceIcoClass(b,o,f.folder.OPEN),d==!1||a.view.expandSpeed==""?(c.show(),j.apply(g,[])):m&&m.length>0?c.slideDown(a.view.expandSpeed,g):(c.show(),j.apply(g,[]))):(i.replaceSwitchClass(b,h,f.folder.CLOSE),i.replaceIcoClass(b,o,f.folder.CLOSE),d==!1||a.view.expandSpeed==""||!(m&&m.length>0)?(c.hide(),j.apply(g,[])):c.slideUp(a.view.expandSpeed,g))):j.apply(g,[])}}else j.apply(g, 50 | [])},expandCollapseParentNode:function(a,b,c,d,e){b&&(b.parentTId?(i.expandCollapseNode(a,b,c,d),b.parentTId&&i.expandCollapseParentNode(a,b.getParentNode(),c,d,e)):i.expandCollapseNode(a,b,c,d,e))},expandCollapseSonNode:function(a,b,c,d,g){var h=e.getRoot(a),h=b?e.nodeChildren(a,b):e.nodeChildren(a,h),k=b?!1:d,f=e.getRoot(a).expandTriggerFlag;e.getRoot(a).expandTriggerFlag=!1;if(h)for(var j=0,l=h.length;j =0;d--)if(b===c[d])return!0;return!1},makeDOMNodeIcon:function(a,b,c){var d=e.nodeName(b,c),d=b.view.nameIsHTML?d:d.replace(/&/g,"&").replace(//g,">");a.push("", 52 | d,"")},makeDOMNodeLine:function(a,b,c){a.push("")},makeDOMNodeMainAfter:function(a){a.push("")},makeDOMNodeMainBefore:function(a,b,c){a.push(" ")},makeDOMNodeNameAfter:function(a){a.push("")},makeDOMNodeNameBefore:function(a,b,c){var d=e.nodeTitle(b,c),g=i.makeNodeUrl(b,c),h=i.makeNodeFontCss(b, 53 | c),k=[],m;for(m in h)k.push(m,":",h[m],";");a.push("0?"href='"+g+"'":""," target='",i.makeNodeTarget(c),"' style='",k.join(""),"'");j.apply(b.view.showTitle,[b.treeId,c],b.view.showTitle)&&d&&a.push("title='",d.replace(/'/g,"'").replace(//g,">"),"'");a.push(">")},makeNodeFontCss:function(a,b){var c=j.apply(a.view.fontCss,[a.treeId,b],a.view.fontCss); 54 | return c&&typeof c!="function"?c:{}},makeNodeIcoClass:function(a,b){var c=["ico"];if(!b.isAjaxing){var d=e.nodeIsParent(a,b);c[0]=(b.iconSkin?b.iconSkin+"_":"")+c[0];d?c.push(b.open?f.folder.OPEN:f.folder.CLOSE):c.push(f.folder.DOCU)}return f.className.BUTTON+" "+c.join("_")},makeNodeIcoStyle:function(a,b){var c=[];if(!b.isAjaxing){var d=e.nodeIsParent(a,b)&&b.iconOpen&&b.iconClose?b.open?b.iconOpen:b.iconClose:b[a.data.key.icon];d&&c.push("background:url(",d,") 0 0 no-repeat;");(a.view.showIcon== 55 | !1||!j.apply(a.view.showIcon,[a.treeId,b],!0))&&c.push("width:0px;height:0px;")}return c.join("")},makeNodeLineClass:function(a,b){var c=[];a.view.showLine?b.level==0&&b.isFirstNode&&b.isLastNode?c.push(f.line.ROOT):b.level==0&&b.isFirstNode?c.push(f.line.ROOTS):b.isLastNode?c.push(f.line.BOTTOM):c.push(f.line.CENTER):c.push(f.line.NOLINE);e.nodeIsParent(a,b)?c.push(b.open?f.folder.OPEN:f.folder.CLOSE):c.push(f.folder.DOCU);return i.makeNodeLineClassEx(b)+c.join("_")},makeNodeLineClassEx:function(a){return f.className.BUTTON+ 56 | " "+f.className.LEVEL+a.level+" "+f.className.SWITCH+" "},makeNodeTarget:function(a){return a.target||"_blank"},makeNodeUrl:function(a,b){var c=a.data.key.url;return b[c]?b[c]:null},makeUlHtml:function(a,b,c,d){c.push(" ");c.push(d);c.push("
")},makeUlLineClass:function(a,b){return a.view.showLine&&!b.isLastNode?f.line.LINE:""},removeChildNodes:function(a,b){if(b){var c= 57 | e.nodeChildren(a,b);if(c){for(var d=0,g=c.length;dc.bottom||d.right>c.right||d.left 0)c[0].isFirstNode=!0},setLastNode:function(a,b){var c=e.nodeChildren(a,b);if(c.length>0)c[c.length-1].isLastNode=!0},removeNode:function(a,b){var c=e.getRoot(a),d=b.parentTId? 61 | b.getParentNode():c;b.isFirstNode=!1;b.isLastNode=!1;b.getPreNode=function(){return null};b.getNextNode=function(){return null};if(e.getNodeCache(a,b.tId)){l(b,a).remove();e.removeNodeCache(a,b);e.removeSelectedNode(a,b);for(var g=e.nodeChildren(a,d),h=0,k=g.length;h 0){var r=g[h-1],h=l(r,f.id.UL,a),k=l(r,f.id.SWITCH,a);j=l(r,f.id.ICON,a);d==c?g.length==1?i.replaceSwitchClass(r,k,f.line.ROOT):(c=l(g[0],f.id.SWITCH,a),i.replaceSwitchClass(g[0],c,f.line.ROOTS),i.replaceSwitchClass(r,k,f.line.BOTTOM)):i.replaceSwitchClass(r,k,f.line.BOTTOM);h.removeClass(f.line.LINE)}}},replaceIcoClass:function(a,b,c){if(b&&!a.isAjaxing&& 63 | (a=b.attr("class"),a!=void 0)){a=a.split("_");switch(c){case f.folder.OPEN:case f.folder.CLOSE:case f.folder.DOCU:a[a.length-1]=c}b.attr("class",a.join("_"))}},replaceSwitchClass:function(a,b,c){if(b){var d=b.attr("class");if(d!=void 0){d=d.split("_");switch(c){case f.line.ROOT:case f.line.ROOTS:case f.line.CENTER:case f.line.BOTTOM:case f.line.NOLINE:d[0]=i.makeNodeLineClassEx(a)+c;break;case f.folder.OPEN:case f.folder.CLOSE:case f.folder.DOCU:d[1]=c}b.attr("class",d.join("_"));c!==f.folder.DOCU? 64 | b.removeAttr("disabled"):b.attr("disabled","disabled")}}},selectNode:function(a,b,c){c||i.cancelPreSelectedNode(a,null,b);l(b,f.id.A,a).addClass(f.node.CURSELECTED);e.addSelectedNode(a,b);a.treeObj.trigger(f.event.SELECTED,[a.treeId,b])},setNodeFontCss:function(a,b){var c=l(b,f.id.A,a),d=i.makeNodeFontCss(a,b);d&&c.css(d)},setNodeLineIcos:function(a,b){if(b){var c=l(b,f.id.SWITCH,a),d=l(b,f.id.UL,a),g=l(b,f.id.ICON,a),h=i.makeUlLineClass(a,b);h.length==0?d.removeClass(f.line.LINE):d.addClass(h);c.attr("class", 65 | i.makeNodeLineClass(a,b));e.nodeIsParent(a,b)?c.removeAttr("disabled"):c.attr("disabled","disabled");g.removeAttr("style");g.attr("style",i.makeNodeIcoStyle(a,b));g.attr("class",i.makeNodeIcoClass(a,b))}},setNodeName:function(a,b){var c=e.nodeTitle(a,b),d=l(b,f.id.SPAN,a);d.empty();a.view.nameIsHTML?d.html(e.nodeName(a,b)):d.text(e.nodeName(a,b));j.apply(a.view.showTitle,[a.treeId,b],a.view.showTitle)&&l(b,f.id.A,a).attr("title",!c?"":c)},setNodeTarget:function(a,b){l(b,f.id.A,a).attr("target",i.makeNodeTarget(b))}, 66 | setNodeUrl:function(a,b){var c=l(b,f.id.A,a),d=i.makeNodeUrl(a,b);d==null||d.length==0?c.removeAttr("href"):c.attr("href",d)},switchNode:function(a,b){b.open||!j.canAsync(a,b)?i.expandCollapseNode(a,b,!b.open):a.async.enable?i.asyncNode(a,b)||i.expandCollapseNode(a,b,!b.open):b&&i.expandCollapseNode(a,b,!b.open)}};q.fn.zTree={consts:{className:{BUTTON:"button",LEVEL:"level",ICO_LOADING:"ico_loading",SWITCH:"switch",NAME:"node_name"},event:{NODECREATED:"ztree_nodeCreated",CLICK:"ztree_click",EXPAND:"ztree_expand", 67 | COLLAPSE:"ztree_collapse",ASYNC_SUCCESS:"ztree_async_success",ASYNC_ERROR:"ztree_async_error",REMOVE:"ztree_remove",SELECTED:"ztree_selected",UNSELECTED:"ztree_unselected"},id:{A:"_a",ICON:"_ico",SPAN:"_span",SWITCH:"_switch",UL:"_ul"},line:{ROOT:"root",ROOTS:"roots",CENTER:"center",BOTTOM:"bottom",NOLINE:"noline",LINE:"line"},folder:{OPEN:"open",CLOSE:"close",DOCU:"docu"},node:{CURSELECTED:"curSelectedNode"}},_z:{tools:j,view:i,event:n,data:e},getZTreeObj:function(a){return(a=e.getZTreeTools(a))? 68 | a:null},destroy:function(a){if(a&&a.length>0)i.destroy(e.getSetting(a));else for(var b in s)i.destroy(s[b])},init:function(a,b,c){var d=j.clone(N);q.extend(!0,d,b);d.treeId=a.attr("id");d.treeObj=a;d.treeObj.empty();s[d.treeId]=d;if(typeof document.body.style.maxHeight==="undefined")d.view.expandSpeed="";e.initRoot(d);a=e.getRoot(d);c=c?j.clone(j.isArray(c)?c:[c]):[];d.data.simpleData.enable?e.nodeChildren(d,a,e.transformTozTreeFormat(d,c)):e.nodeChildren(d,a,c);e.initCache(d);n.unbindTree(d);n.bindTree(d); 69 | n.unbindEvent(d);n.bindEvent(d);var g={setting:d,addNodes:function(a,b,c,g){function f(){i.addNodes(d,a,b,n,g==!0)}a||(a=null);var l=e.nodeIsParent(d,a);if(a&&!l&&d.data.keep.leaf)return null;l=parseInt(b,10);isNaN(l)?(g=!!c,c=b,b=-1):b=l;if(!c)return null;var n=j.clone(j.isArray(c)?c:[c]);j.canAsync(d,a)?i.asyncNode(d,a,g,f):f();return n},cancelSelectedNode:function(a){i.cancelPreSelectedNode(d,a)},destroy:function(){i.destroy(d)},expandAll:function(a){a=!!a;i.expandCollapseSonNode(d,null,a,!0); 70 | return a},expandNode:function(a,b,c,g,f){function n(){var b=l(a,d).get(0);b&&g!==!1&&i.scrollIntoView(d,b)}if(!a||!e.nodeIsParent(d,a))return null;b!==!0&&b!==!1&&(b=!a.open);if((f=!!f)&&b&&j.apply(d.callback.beforeExpand,[d.treeId,a],!0)==!1)return null;else if(f&&!b&&j.apply(d.callback.beforeCollapse,[d.treeId,a],!0)==!1)return null;b&&a.parentTId&&i.expandCollapseParentNode(d,a.getParentNode(),b,!1);if(b===a.open&&!c)return null;e.getRoot(d).expandTriggerFlag=f;!j.canAsync(d,a)&&c?i.expandCollapseSonNode(d, 71 | a,b,!0,n):(a.open=!b,i.switchNode(this.setting,a),n());return b},getNodes:function(){return e.getNodes(d)},getNodeByParam:function(a,b,c){return!a?null:e.getNodeByParam(d,c?e.nodeChildren(d,c):e.getNodes(d),a,b)},getNodeByTId:function(a){return e.getNodeCache(d,a)},getNodesByParam:function(a,b,c){return!a?null:e.getNodesByParam(d,c?e.nodeChildren(d,c):e.getNodes(d),a,b)},getNodesByParamFuzzy:function(a,b,c){return!a?null:e.getNodesByParamFuzzy(d,c?e.nodeChildren(d,c):e.getNodes(d),a,b)},getNodesByFilter:function(a, 72 | b,c,f){b=!!b;return!a||typeof a!="function"?b?null:[]:e.getNodesByFilter(d,c?e.nodeChildren(d,c):e.getNodes(d),a,b,f)},getNodeIndex:function(a){if(!a)return null;for(var b=a.parentTId?a.getParentNode():e.getRoot(d),b=e.nodeChildren(d,b),c=0,f=b.length;c 0?i.createNodes(d,0,c,null,-1):d.async.enable&&d.async.url&&d.async.url!==""&&i.asyncNode(d);return g}};var O=q.fn.zTree,l=j.$,f=O.consts})(jQuery); 77 | -------------------------------------------------------------------------------- /odtree/static/src/lib/zTree_v3/js/jquery.ztree.excheck.js: -------------------------------------------------------------------------------- 1 | /* 2 | * JQuery zTree excheck v3.5.36 3 | * http://treejs.cn/ 4 | * 5 | * Copyright (c) 2010 Hunter.z 6 | * 7 | * Licensed same as jquery - MIT License 8 | * http://www.opensource.org/licenses/mit-license.php 9 | * 10 | * email: hunter.z@263.net 11 | * Date: 2018-06-26 12 | */ 13 | (function($){ 14 | //default consts of excheck 15 | var _consts = { 16 | event: { 17 | CHECK: "ztree_check" 18 | }, 19 | id: { 20 | CHECK: "_check" 21 | }, 22 | checkbox: { 23 | STYLE: "checkbox", 24 | DEFAULT: "chk", 25 | DISABLED: "disable", 26 | FALSE: "false", 27 | TRUE: "true", 28 | FULL: "full", 29 | PART: "part", 30 | FOCUS: "focus" 31 | }, 32 | radio: { 33 | STYLE: "radio", 34 | TYPE_ALL: "all", 35 | TYPE_LEVEL: "level" 36 | } 37 | }, 38 | //default setting of excheck 39 | _setting = { 40 | check: { 41 | enable: false, 42 | autoCheckTrigger: false, 43 | chkStyle: _consts.checkbox.STYLE, 44 | nocheckInherit: false, 45 | chkDisabledInherit: false, 46 | radioType: _consts.radio.TYPE_LEVEL, 47 | chkboxType: { 48 | "Y": "ps", 49 | "N": "ps" 50 | } 51 | }, 52 | data: { 53 | key: { 54 | checked: "checked" 55 | } 56 | }, 57 | callback: { 58 | beforeCheck:null, 59 | onCheck:null 60 | } 61 | }, 62 | //default root of excheck 63 | _initRoot = function (setting) { 64 | var r = data.getRoot(setting); 65 | r.radioCheckedList = []; 66 | }, 67 | //default cache of excheck 68 | _initCache = function(treeId) {}, 69 | //default bind event of excheck 70 | _bindEvent = function(setting) { 71 | var o = setting.treeObj, 72 | c = consts.event; 73 | o.bind(c.CHECK, function (event, srcEvent, treeId, node) { 74 | event.srcEvent = srcEvent; 75 | tools.apply(setting.callback.onCheck, [event, treeId, node]); 76 | }); 77 | }, 78 | _unbindEvent = function(setting) { 79 | var o = setting.treeObj, 80 | c = consts.event; 81 | o.unbind(c.CHECK); 82 | }, 83 | //default event proxy of excheck 84 | _eventProxy = function(e) { 85 | var target = e.target, 86 | setting = data.getSetting(e.data.treeId), 87 | tId = "", node = null, 88 | nodeEventType = "", treeEventType = "", 89 | nodeEventCallback = null, treeEventCallback = null; 90 | 91 | if (tools.eqs(e.type, "mouseover")) { 92 | if (setting.check.enable && tools.eqs(target.tagName, "span") && target.getAttribute("treeNode"+ consts.id.CHECK) !== null) { 93 | tId = tools.getNodeMainDom(target).id; 94 | nodeEventType = "mouseoverCheck"; 95 | } 96 | } else if (tools.eqs(e.type, "mouseout")) { 97 | if (setting.check.enable && tools.eqs(target.tagName, "span") && target.getAttribute("treeNode"+ consts.id.CHECK) !== null) { 98 | tId = tools.getNodeMainDom(target).id; 99 | nodeEventType = "mouseoutCheck"; 100 | } 101 | } else if (tools.eqs(e.type, "click")) { 102 | if (setting.check.enable && tools.eqs(target.tagName, "span") && target.getAttribute("treeNode"+ consts.id.CHECK) !== null) { 103 | tId = tools.getNodeMainDom(target).id; 104 | nodeEventType = "checkNode"; 105 | } 106 | } 107 | if (tId.length>0) { 108 | node = data.getNodeCache(setting, tId); 109 | switch (nodeEventType) { 110 | case "checkNode" : 111 | nodeEventCallback = _handler.onCheckNode; 112 | break; 113 | case "mouseoverCheck" : 114 | nodeEventCallback = _handler.onMouseoverCheck; 115 | break; 116 | case "mouseoutCheck" : 117 | nodeEventCallback = _handler.onMouseoutCheck; 118 | break; 119 | } 120 | } 121 | var proxyResult = { 122 | stop: nodeEventType === "checkNode", 123 | node: node, 124 | nodeEventType: nodeEventType, 125 | nodeEventCallback: nodeEventCallback, 126 | treeEventType: treeEventType, 127 | treeEventCallback: treeEventCallback 128 | }; 129 | return proxyResult 130 | }, 131 | //default init node of excheck 132 | _initNode = function(setting, level, n, parentNode, isFirstNode, isLastNode, openFlag) { 133 | if (!n) return; 134 | var checked = data.nodeChecked(setting, n); 135 | checked = data.nodeChecked(setting, n, checked); 136 | n.checkedOld = checked; 137 | if (typeof n.nocheck == "string") n.nocheck = tools.eqs(n.nocheck, "true"); 138 | n.nocheck = !!n.nocheck || (setting.check.nocheckInherit && parentNode && !!parentNode.nocheck); 139 | if (typeof n.chkDisabled == "string") n.chkDisabled = tools.eqs(n.chkDisabled, "true"); 140 | n.chkDisabled = !!n.chkDisabled || (setting.check.chkDisabledInherit && parentNode && !!parentNode.chkDisabled); 141 | if (typeof n.halfCheck == "string") n.halfCheck = tools.eqs(n.halfCheck, "true"); 142 | n.halfCheck = !!n.halfCheck; 143 | n.check_Child_State = -1; 144 | n.check_Focus = false; 145 | n.getCheckStatus = function() {return data.getCheckStatus(setting, n);}; 146 | 147 | if (setting.check.chkStyle == consts.radio.STYLE && setting.check.radioType == consts.radio.TYPE_ALL && checked) { 148 | var r = data.getRoot(setting); 149 | r.radioCheckedList.push(n); 150 | } 151 | }, 152 | //add dom for check 153 | _beforeA = function(setting, node, html) { 154 | if (setting.check.enable) { 155 | data.makeChkFlag(setting, node); 156 | html.push(""); 157 | } 158 | }, 159 | //update zTreeObj, add method of check 160 | _zTreeTools = function(setting, zTreeTools) { 161 | zTreeTools.checkNode = function(node, checked, checkTypeFlag, callbackFlag) { 162 | var nodeChecked = data.nodeChecked(setting, node); 163 | if (node.chkDisabled === true) return; 164 | if (checked !== true && checked !== false) { 165 | checked = !nodeChecked; 166 | } 167 | callbackFlag = !!callbackFlag; 168 | 169 | if (nodeChecked === checked && !checkTypeFlag) { 170 | return; 171 | } else if (callbackFlag && tools.apply(this.setting.callback.beforeCheck, [this.setting.treeId, node], true) == false) { 172 | return; 173 | } 174 | if (tools.uCanDo(this.setting) && this.setting.check.enable && node.nocheck !== true) { 175 | data.nodeChecked(setting, node, checked); 176 | var checkObj = $$(node, consts.id.CHECK, this.setting); 177 | if (checkTypeFlag || this.setting.check.chkStyle === consts.radio.STYLE) view.checkNodeRelation(this.setting, node); 178 | view.setChkClass(this.setting, checkObj, node); 179 | view.repairParentChkClassWithSelf(this.setting, node); 180 | if (callbackFlag) { 181 | this.setting.treeObj.trigger(consts.event.CHECK, [null, this.setting.treeId, node]); 182 | } 183 | } 184 | } 185 | 186 | zTreeTools.checkAllNodes = function(checked) { 187 | view.repairAllChk(this.setting, !!checked); 188 | } 189 | 190 | zTreeTools.getCheckedNodes = function(checked) { 191 | var checked = (checked !== false); 192 | var children = data.nodeChildren(setting, data.getRoot(this.setting)); 193 | return data.getTreeCheckedNodes(this.setting, children, checked); 194 | } 195 | 196 | zTreeTools.getChangeCheckedNodes = function() { 197 | var children = data.nodeChildren(setting, data.getRoot(this.setting)); 198 | return data.getTreeChangeCheckedNodes(this.setting, children); 199 | } 200 | 201 | zTreeTools.setChkDisabled = function(node, disabled, inheritParent, inheritChildren) { 202 | disabled = !!disabled; 203 | inheritParent = !!inheritParent; 204 | inheritChildren = !!inheritChildren; 205 | view.repairSonChkDisabled(this.setting, node, disabled, inheritChildren); 206 | view.repairParentChkDisabled(this.setting, node.getParentNode(), disabled, inheritParent); 207 | } 208 | 209 | var _updateNode = zTreeTools.updateNode; 210 | zTreeTools.updateNode = function(node, checkTypeFlag) { 211 | if (_updateNode) _updateNode.apply(zTreeTools, arguments); 212 | if (!node || !this.setting.check.enable) return; 213 | var nObj = $$(node, this.setting); 214 | if (nObj.get(0) && tools.uCanDo(this.setting)) { 215 | var checkObj = $$(node, consts.id.CHECK, this.setting); 216 | if (checkTypeFlag == true || this.setting.check.chkStyle === consts.radio.STYLE) view.checkNodeRelation(this.setting, node); 217 | view.setChkClass(this.setting, checkObj, node); 218 | view.repairParentChkClassWithSelf(this.setting, node); 219 | } 220 | } 221 | }, 222 | //method of operate data 223 | _data = { 224 | getRadioCheckedList: function(setting) { 225 | var checkedList = data.getRoot(setting).radioCheckedList; 226 | for (var i=0, j=checkedList.length; i -1 && node.check_Child_State < 2) : (node.check_Child_State > 0))) 240 | }; 241 | return r; 242 | }, 243 | getTreeCheckedNodes: function(setting, nodes, checked, results) { 244 | if (!nodes) return []; 245 | var onlyOne = (checked && setting.check.chkStyle == consts.radio.STYLE && setting.check.radioType == consts.radio.TYPE_ALL); 246 | results = !results ? [] : results; 247 | for (var i = 0, l = nodes.length; i < l; i++) { 248 | var node = nodes[i]; 249 | var children = data.nodeChildren(setting, node); 250 | var nodeChecked = data.nodeChecked(setting, node); 251 | if (node.nocheck !== true && node.chkDisabled !== true && nodeChecked == checked) { 252 | results.push(node); 253 | if(onlyOne) { 254 | break; 255 | } 256 | } 257 | data.getTreeCheckedNodes(setting, children, checked, results); 258 | if(onlyOne && results.length > 0) { 259 | break; 260 | } 261 | } 262 | return results; 263 | }, 264 | getTreeChangeCheckedNodes: function(setting, nodes, results) { 265 | if (!nodes) return []; 266 | results = !results ? [] : results; 267 | for (var i = 0, l = nodes.length; i < l; i++) { 268 | var node = nodes[i]; 269 | var children = data.nodeChildren(setting, node); 270 | var nodeChecked = data.nodeChecked(setting, node); 271 | if (node.nocheck !== true && node.chkDisabled !== true && nodeChecked != node.checkedOld) { 272 | results.push(node); 273 | } 274 | data.getTreeChangeCheckedNodes(setting, children, results); 275 | } 276 | return results; 277 | }, 278 | makeChkFlag: function(setting, node) { 279 | if (!node) return; 280 | var chkFlag = -1; 281 | var children = data.nodeChildren(setting, node); 282 | if (children) { 283 | for (var i = 0, l = children.length; i < l; i++) { 284 | var cNode = children[i]; 285 | var nodeChecked = data.nodeChecked(setting, cNode); 286 | var tmp = -1; 287 | if (setting.check.chkStyle == consts.radio.STYLE) { 288 | if (cNode.nocheck === true || cNode.chkDisabled === true) { 289 | tmp = cNode.check_Child_State; 290 | } else if (cNode.halfCheck === true) { 291 | tmp = 2; 292 | } else if (nodeChecked) { 293 | tmp = 2; 294 | } else { 295 | tmp = cNode.check_Child_State > 0 ? 2:0; 296 | } 297 | if (tmp == 2) { 298 | chkFlag = 2; break; 299 | } else if (tmp == 0){ 300 | chkFlag = 0; 301 | } 302 | } else if (setting.check.chkStyle == consts.checkbox.STYLE) { 303 | if (cNode.nocheck === true || cNode.chkDisabled === true) { 304 | tmp = cNode.check_Child_State; 305 | } else if (cNode.halfCheck === true) { 306 | tmp = 1; 307 | } else if (nodeChecked) { 308 | tmp = (cNode.check_Child_State === -1 || cNode.check_Child_State === 2) ? 2 : 1; 309 | } else { 310 | tmp = (cNode.check_Child_State > 0) ? 1 : 0; 311 | } 312 | if (tmp === 1) { 313 | chkFlag = 1; break; 314 | } else if (tmp === 2 && chkFlag > -1 && i > 0 && tmp !== chkFlag) { 315 | chkFlag = 1; break; 316 | } else if (chkFlag === 2 && tmp > -1 && tmp < 2) { 317 | chkFlag = 1; break; 318 | } else if (tmp > -1) { 319 | chkFlag = tmp; 320 | } 321 | } 322 | } 323 | } 324 | node.check_Child_State = chkFlag; 325 | } 326 | }, 327 | //method of event proxy 328 | _event = { 329 | 330 | }, 331 | //method of event handler 332 | _handler = { 333 | onCheckNode: function (event, node) { 334 | if (node.chkDisabled === true) return false; 335 | var setting = data.getSetting(event.data.treeId); 336 | if (tools.apply(setting.callback.beforeCheck, [setting.treeId, node], true) == false) return true; 337 | var nodeChecked = data.nodeChecked(setting, node); 338 | data.nodeChecked(setting, node, !nodeChecked); 339 | view.checkNodeRelation(setting, node); 340 | var checkObj = $$(node, consts.id.CHECK, setting); 341 | view.setChkClass(setting, checkObj, node); 342 | view.repairParentChkClassWithSelf(setting, node); 343 | setting.treeObj.trigger(consts.event.CHECK, [event, setting.treeId, node]); 344 | return true; 345 | }, 346 | onMouseoverCheck: function(event, node) { 347 | if (node.chkDisabled === true) return false; 348 | var setting = data.getSetting(event.data.treeId), 349 | checkObj = $$(node, consts.id.CHECK, setting); 350 | node.check_Focus = true; 351 | view.setChkClass(setting, checkObj, node); 352 | return true; 353 | }, 354 | onMouseoutCheck: function(event, node) { 355 | if (node.chkDisabled === true) return false; 356 | var setting = data.getSetting(event.data.treeId), 357 | checkObj = $$(node, consts.id.CHECK, setting); 358 | node.check_Focus = false; 359 | view.setChkClass(setting, checkObj, node); 360 | return true; 361 | } 362 | }, 363 | //method of tools for zTree 364 | _tools = { 365 | 366 | }, 367 | //method of operate ztree dom 368 | _view = { 369 | checkNodeRelation: function(setting, node) { 370 | var pNode, i, l, 371 | r = consts.radio; 372 | var nodeChecked = data.nodeChecked(setting, node); 373 | if (setting.check.chkStyle == r.STYLE) { 374 | var checkedList = data.getRadioCheckedList(setting); 375 | if (nodeChecked) { 376 | if (setting.check.radioType == r.TYPE_ALL) { 377 | for (i = checkedList.length-1; i >= 0; i--) { 378 | pNode = checkedList[i]; 379 | var pNodeChecked = data.nodeChecked(setting, pNode); 380 | if (pNodeChecked && pNode != node) { 381 | data.nodeChecked(setting, pNode, false); 382 | checkedList.splice(i, 1); 383 | 384 | view.setChkClass(setting, $$(pNode, consts.id.CHECK, setting), pNode); 385 | if (pNode.parentTId != node.parentTId) { 386 | view.repairParentChkClassWithSelf(setting, pNode); 387 | } 388 | } 389 | } 390 | checkedList.push(node); 391 | } else { 392 | var parentNode = (node.parentTId) ? node.getParentNode() : data.getRoot(setting); 393 | var children = data.nodeChildren(setting, parentNode); 394 | for (i = 0, l = children.length; i < l; i++) { 395 | pNode = children[i]; 396 | var pNodeChecked = data.nodeChecked(setting, pNode); 397 | if (pNodeChecked && pNode != node) { 398 | data.nodeChecked(setting, pNode, false); 399 | view.setChkClass(setting, $$(pNode, consts.id.CHECK, setting), pNode); 400 | } 401 | } 402 | } 403 | } else if (setting.check.radioType == r.TYPE_ALL) { 404 | for (i = 0, l = checkedList.length; i < l; i++) { 405 | if (node == checkedList[i]) { 406 | checkedList.splice(i, 1); 407 | break; 408 | } 409 | } 410 | } 411 | 412 | } else { 413 | var children = data.nodeChildren(setting, node); 414 | if (nodeChecked && (!children || children.length==0 || setting.check.chkboxType.Y.indexOf("s") > -1)) { 415 | view.setSonNodeCheckBox(setting, node, true); 416 | } 417 | if (!nodeChecked && (!children || children.length==0 || setting.check.chkboxType.N.indexOf("s") > -1)) { 418 | view.setSonNodeCheckBox(setting, node, false); 419 | } 420 | if (nodeChecked && setting.check.chkboxType.Y.indexOf("p") > -1) { 421 | view.setParentNodeCheckBox(setting, node, true); 422 | } 423 | if (!nodeChecked && setting.check.chkboxType.N.indexOf("p") > -1) { 424 | view.setParentNodeCheckBox(setting, node, false); 425 | } 426 | } 427 | }, 428 | makeChkClass: function(setting, node) { 429 | var c = consts.checkbox, r = consts.radio, 430 | fullStyle = ""; 431 | var nodeChecked = data.nodeChecked(setting, node); 432 | if (node.chkDisabled === true) { 433 | fullStyle = c.DISABLED; 434 | } else if (node.halfCheck) { 435 | fullStyle = c.PART; 436 | } else if (setting.check.chkStyle == r.STYLE) { 437 | fullStyle = (node.check_Child_State < 1)? c.FULL:c.PART; 438 | } else { 439 | 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); 440 | } 441 | var chkName = setting.check.chkStyle + "_" + (nodeChecked ? c.TRUE : c.FALSE) + "_" + fullStyle; 442 | chkName = (node.check_Focus && node.chkDisabled !== true) ? chkName + "_" + c.FOCUS : chkName; 443 | return consts.className.BUTTON + " " + c.DEFAULT + " " + chkName; 444 | }, 445 | repairAllChk: function(setting, checked) { 446 | if (setting.check.enable && setting.check.chkStyle === consts.checkbox.STYLE) { 447 | var root = data.getRoot(setting); 448 | var children = data.nodeChildren(setting, root); 449 | for (var i = 0, l = children.length; i 0) { 476 | view.repairParentChkClass(setting, children[0]); 477 | } else { 478 | view.repairParentChkClass(setting, node); 479 | } 480 | }, 481 | repairSonChkDisabled: function(setting, node, chkDisabled, inherit) { 482 | if (!node) return; 483 | if (node.chkDisabled != chkDisabled) { 484 | node.chkDisabled = chkDisabled; 485 | } 486 | view.repairChkClass(setting, node); 487 | var children = data.nodeChildren(setting, node); 488 | if (children && inherit) { 489 | for (var i = 0, l = children.length; i < l; i++) { 490 | var sNode = children[i]; 491 | view.repairSonChkDisabled(setting, sNode, chkDisabled, inherit); 492 | } 493 | } 494 | }, 495 | repairParentChkDisabled: function(setting, node, chkDisabled, inherit) { 496 | if (!node) return; 497 | if (node.chkDisabled != chkDisabled && inherit) { 498 | node.chkDisabled = chkDisabled; 499 | } 500 | view.repairChkClass(setting, node); 501 | view.repairParentChkDisabled(setting, node.getParentNode(), chkDisabled, inherit); 502 | }, 503 | setChkClass: function(setting, obj, node) { 504 | if (!obj) return; 505 | if (node.nocheck === true) { 506 | obj.hide(); 507 | } else { 508 | obj.show(); 509 | } 510 | obj.attr('class', view.makeChkClass(setting, node)); 511 | }, 512 | setParentNodeCheckBox: function(setting, node, value, srcNode) { 513 | var checkObj = $$(node, consts.id.CHECK, setting); 514 | if (!srcNode) srcNode = node; 515 | data.makeChkFlag(setting, node); 516 | if (node.nocheck !== true && node.chkDisabled !== true) { 517 | data.nodeChecked(setting, node, value); 518 | view.setChkClass(setting, checkObj, node); 519 | if (setting.check.autoCheckTrigger && node != srcNode) { 520 | setting.treeObj.trigger(consts.event.CHECK, [null, setting.treeId, node]); 521 | } 522 | } 523 | if (node.parentTId) { 524 | var pSign = true; 525 | if (!value) { 526 | var pNodes = data.nodeChildren(setting, node.getParentNode()); 527 | for (var i = 0, l = pNodes.length; i < l; i++) { 528 | var pNode = pNodes[i]; 529 | var nodeChecked = data.nodeChecked(setting, pNode); 530 | if ((pNode.nocheck !== true && pNode.chkDisabled !== true && nodeChecked) 531 | || ((pNode.nocheck === true || pNode.chkDisabled === true) && pNode.check_Child_State > 0)) { 532 | pSign = false; 533 | break; 534 | } 535 | } 536 | } 537 | if (pSign) { 538 | view.setParentNodeCheckBox(setting, node.getParentNode(), value, srcNode); 539 | } 540 | } 541 | }, 542 | setSonNodeCheckBox: function(setting, node, value, srcNode) { 543 | if (!node) return; 544 | var checkObj = $$(node, consts.id.CHECK, setting); 545 | if (!srcNode) srcNode = node; 546 | 547 | var hasDisable = false; 548 | var children = data.nodeChildren(setting, node); 549 | if (children) { 550 | for (var i = 0, l = children.length; i < l; i++) { 551 | var sNode = children[i]; 552 | view.setSonNodeCheckBox(setting, sNode, value, srcNode); 553 | if (sNode.chkDisabled === true) hasDisable = true; 554 | } 555 | } 556 | 557 | if (node != data.getRoot(setting) && node.chkDisabled !== true) { 558 | if (hasDisable && node.nocheck !== true) { 559 | data.makeChkFlag(setting, node); 560 | } 561 | if (node.nocheck !== true && node.chkDisabled !== true) { 562 | data.nodeChecked(setting, node, value); 563 | if (!hasDisable) node.check_Child_State = (children && children.length > 0) ? (value ? 2 : 0) : -1; 564 | } else { 565 | node.check_Child_State = -1; 566 | } 567 | view.setChkClass(setting, checkObj, node); 568 | if (setting.check.autoCheckTrigger && node != srcNode && node.nocheck !== true && node.chkDisabled !== true) { 569 | setting.treeObj.trigger(consts.event.CHECK, [null, setting.treeId, node]); 570 | } 571 | } 572 | 573 | } 574 | }, 575 | 576 | _z = { 577 | tools: _tools, 578 | view: _view, 579 | event: _event, 580 | data: _data 581 | }; 582 | $.extend(true, $.fn.zTree.consts, _consts); 583 | $.extend(true, $.fn.zTree._z, _z); 584 | 585 | var zt = $.fn.zTree, 586 | tools = zt._z.tools, 587 | consts = zt.consts, 588 | view = zt._z.view, 589 | data = zt._z.data, 590 | event = zt._z.event, 591 | $$ = tools.$; 592 | 593 | data.nodeChecked = function(setting, node, newChecked) { 594 | if (!node) { 595 | return false; 596 | } 597 | var key = setting.data.key.checked; 598 | if (typeof newChecked !== 'undefined') { 599 | if (typeof newChecked === "string") { 600 | newChecked = tools.eqs(newChecked, "true"); 601 | } 602 | newChecked = !!newChecked; 603 | node[key] = newChecked; 604 | } 605 | return node[key]; 606 | }; 607 | 608 | data.exSetting(_setting); 609 | data.addInitBind(_bindEvent); 610 | data.addInitUnBind(_unbindEvent); 611 | data.addInitCache(_initCache); 612 | data.addInitNode(_initNode); 613 | data.addInitProxy(_eventProxy, true); 614 | data.addInitRoot(_initRoot); 615 | data.addBeforeA(_beforeA); 616 | data.addZTreeTools(_zTreeTools); 617 | 618 | var _createNodes = view.createNodes; 619 | view.createNodes = function(setting, level, nodes, parentNode, index) { 620 | if (_createNodes) _createNodes.apply(view, arguments); 621 | if (!nodes) return; 622 | view.repairParentChkClassWithSelf(setting, parentNode); 623 | } 624 | var _removeNode = view.removeNode; 625 | view.removeNode = function(setting, node) { 626 | var parentNode = node.getParentNode(); 627 | if (_removeNode) _removeNode.apply(view, arguments); 628 | if (!node || !parentNode) return; 629 | view.repairChkClass(setting, parentNode); 630 | view.repairParentChkClass(setting, parentNode); 631 | } 632 | 633 | var _appendNodes = view.appendNodes; 634 | view.appendNodes = function(setting, level, nodes, parentNode, index, initFlag, openFlag) { 635 | var html = ""; 636 | if (_appendNodes) { 637 | html = _appendNodes.apply(view, arguments); 638 | } 639 | if (parentNode) { 640 | data.makeChkFlag(setting, parentNode); 641 | } 642 | return html; 643 | } 644 | })(jQuery); -------------------------------------------------------------------------------- /odtree/static/src/lib/zTree_v3/js/jquery.ztree.excheck.min.js: -------------------------------------------------------------------------------- 1 | /* 2 | * JQuery zTree excheck v3.5.36 3 | * http://treejs.cn/ 4 | * 5 | * Copyright (c) 2010 Hunter.z 6 | * 7 | * Licensed same as jquery - MIT License 8 | * http://www.opensource.org/licenses/mit-license.php 9 | * 10 | * email: hunter.z@263.net 11 | * Date: 2018-06-26 12 | */ 13 | (function(n){var q,r,s,p={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"}},w={check:{enable:!1,autoCheckTrigger:!1,chkStyle:p.checkbox.STYLE,nocheckInherit:!1,chkDisabledInherit:!1,radioType:p.radio.TYPE_LEVEL,chkboxType:{Y:"ps",N:"ps"}},data:{key:{checked:"checked"}},callback:{beforeCheck:null,onCheck:null}};q=function(c, 14 | a){if(a.chkDisabled===!0)return!1;var b=e.getSetting(c.data.treeId);if(i.apply(b.callback.beforeCheck,[b.treeId,a],!0)==!1)return!0;var d=e.nodeChecked(b,a);e.nodeChecked(b,a,!d);f.checkNodeRelation(b,a);d=m(a,h.id.CHECK,b);f.setChkClass(b,d,a);f.repairParentChkClassWithSelf(b,a);b.treeObj.trigger(h.event.CHECK,[c,b.treeId,a]);return!0};r=function(c,a){if(a.chkDisabled===!0)return!1;var b=e.getSetting(c.data.treeId),d=m(a,h.id.CHECK,b);a.check_Focus=!0;f.setChkClass(b,d,a);return!0};s=function(c, 15 | a){if(a.chkDisabled===!0)return!1;var b=e.getSetting(c.data.treeId),d=m(a,h.id.CHECK,b);a.check_Focus=!1;f.setChkClass(b,d,a);return!0};n.extend(!0,n.fn.zTree.consts,p);n.extend(!0,n.fn.zTree._z,{tools:{},view:{checkNodeRelation:function(c,a){var b,d,j;d=h.radio;b=e.nodeChecked(c,a);if(c.check.chkStyle==d.STYLE){var g=e.getRadioCheckedList(c);if(b)if(c.check.radioType==d.TYPE_ALL){for(d=g.length-1;d>=0;d--){b=g[d];var k=e.nodeChecked(c,b);k&&b!=a&&(e.nodeChecked(c,b,!1),g.splice(d,1),f.setChkClass(c, 16 | m(b,h.id.CHECK,c),b),b.parentTId!=a.parentTId&&f.repairParentChkClassWithSelf(c,b))}g.push(a)}else{g=a.parentTId?a.getParentNode():e.getRoot(c);g=e.nodeChildren(c,g);for(d=0,j=g.length;d -1)&&f.setSonNodeCheckBox(c,a, 17 | !0),!b&&(!g||g.length==0||c.check.chkboxType.N.indexOf("s")>-1)&&f.setSonNodeCheckBox(c,a,!1),b&&c.check.chkboxType.Y.indexOf("p")>-1&&f.setParentNodeCheckBox(c,a,!0),!b&&c.check.chkboxType.N.indexOf("p")>-1&&f.setParentNodeCheckBox(c,a,!1)},makeChkClass:function(c,a){var b=h.checkbox,d=h.radio,j="",g=e.nodeChecked(c,a),j=a.chkDisabled===!0?b.DISABLED:a.halfCheck?b.PART:c.check.chkStyle==d.STYLE?a.check_Child_State<1?b.FULL:b.PART:g?a.check_Child_State===2||a.check_Child_State===-1?b.FULL:b.PART: 18 | a.check_Child_State<1?b.FULL:b.PART,d=c.check.chkStyle+"_"+(g?b.TRUE:b.FALSE)+"_"+j,d=a.check_Focus&&a.chkDisabled!==!0?d+"_"+b.FOCUS:d;return h.className.BUTTON+" "+b.DEFAULT+" "+d},repairAllChk:function(c,a){if(c.check.enable&&c.check.chkStyle===h.checkbox.STYLE)for(var b=e.getRoot(c),b=e.nodeChildren(c,b),d=0,j=b.length;d 0?f.repairParentChkClass(c,b[0]):f.repairParentChkClass(c,a)}},repairSonChkDisabled:function(c,a,b,d){if(a){if(a.chkDisabled!=b)a.chkDisabled=b;f.repairChkClass(c,a);if((a=e.nodeChildren(c,a))&&d)for(var j=0,g=a.length;j 0){j=!1;break}}j&&f.setParentNodeCheckBox(c,a.getParentNode(),b,d)}},setSonNodeCheckBox:function(c,a,b,d){if(a){var j=m(a,h.id.CHECK,c);d||(d=a);var g=!1,k=e.nodeChildren(c,a);if(k)for(var o=0,l=k.length;o 0?b?2:0:-1}else a.check_Child_State=-1;f.setChkClass(c,j,a);c.check.autoCheckTrigger&&a!=d&&a.nocheck!==!0&&a.chkDisabled!==!0&&c.treeObj.trigger(h.event.CHECK,[null,c.treeId,a])}}}},event:{},data:{getRadioCheckedList:function(c){for(var a=e.getRoot(c).radioCheckedList,b=0,d=a.length;b -1&&a.check_Child_State<2:a.check_Child_State>0}},getTreeCheckedNodes:function(c,a,b,d){if(!a)return[];for(var j=b&&c.check.chkStyle==h.radio.STYLE&&c.check.radioType==h.radio.TYPE_ALL,d=!d?[]:d,g=0,f=a.length;g 0)break}return d},getTreeChangeCheckedNodes:function(c,a,b){if(!a)return[];for(var b=!b?[]:b,d=0,j=a.length;d 0?2:0,l==2){b=2;break}else l==0&&(b=0);else if(c.check.chkStyle==h.checkbox.STYLE)if(l=f.nocheck===!0||f.chkDisabled===!0?f.check_Child_State:f.halfCheck===!0?1:i?f.check_Child_State===-1||f.check_Child_State===2?2:1:f.check_Child_State>0?1:0,l===1){b=1;break}else if(l===2&&b>-1&&j>0&&l!== 26 | b){b=1;break}else if(b===2&&l>-1&&l<2){b=1;break}else l>-1&&(b=l)}a.check_Child_State=b}}}});var n=n.fn.zTree,i=n._z.tools,h=n.consts,f=n._z.view,e=n._z.data,m=i.$;e.nodeChecked=function(c,a,b){if(!a)return!1;c=c.data.key.checked;typeof b!=="undefined"&&(typeof b==="string"&&(b=i.eqs(b,"true")),a[c]=!!b);return a[c]};e.exSetting(w);e.addInitBind(function(c){c.treeObj.bind(h.event.CHECK,function(a,b,d,e){a.srcEvent=b;i.apply(c.callback.onCheck,[a,d,e])})});e.addInitUnBind(function(c){c.treeObj.unbind(h.event.CHECK)}); 27 | e.addInitCache(function(){});e.addInitNode(function(c,a,b,d){if(b){a=e.nodeChecked(c,b);a=e.nodeChecked(c,b,a);b.checkedOld=a;if(typeof b.nocheck=="string")b.nocheck=i.eqs(b.nocheck,"true");b.nocheck=!!b.nocheck||c.check.nocheckInherit&&d&&!!d.nocheck;if(typeof b.chkDisabled=="string")b.chkDisabled=i.eqs(b.chkDisabled,"true");b.chkDisabled=!!b.chkDisabled||c.check.chkDisabledInherit&&d&&!!d.chkDisabled;if(typeof b.halfCheck=="string")b.halfCheck=i.eqs(b.halfCheck,"true");b.halfCheck=!!b.halfCheck; 28 | b.check_Child_State=-1;b.check_Focus=!1;b.getCheckStatus=function(){return e.getCheckStatus(c,b)};c.check.chkStyle==h.radio.STYLE&&c.check.radioType==h.radio.TYPE_ALL&&a&&e.getRoot(c).radioCheckedList.push(b)}});e.addInitProxy(function(c){var a=c.target,b=e.getSetting(c.data.treeId),d="",f=null,g="",k=null;if(i.eqs(c.type,"mouseover")){if(b.check.enable&&i.eqs(a.tagName,"span")&&a.getAttribute("treeNode"+h.id.CHECK)!==null)d=i.getNodeMainDom(a).id,g="mouseoverCheck"}else if(i.eqs(c.type,"mouseout")){if(b.check.enable&& 29 | i.eqs(a.tagName,"span")&&a.getAttribute("treeNode"+h.id.CHECK)!==null)d=i.getNodeMainDom(a).id,g="mouseoutCheck"}else if(i.eqs(c.type,"click")&&b.check.enable&&i.eqs(a.tagName,"span")&&a.getAttribute("treeNode"+h.id.CHECK)!==null)d=i.getNodeMainDom(a).id,g="checkNode";if(d.length>0)switch(f=e.getNodeCache(b,d),g){case "checkNode":k=q;break;case "mouseoverCheck":k=r;break;case "mouseoutCheck":k=s}return{stop:g==="checkNode",node:f,nodeEventType:g,nodeEventCallback:k,treeEventType:"",treeEventCallback:null}}, 30 | !0);e.addInitRoot(function(c){e.getRoot(c).radioCheckedList=[]});e.addBeforeA(function(c,a,b){c.check.enable&&(e.makeChkFlag(c,a),b.push(""))});e.addZTreeTools(function(c,a){a.checkNode=function(a,b,g,k){var o=e.nodeChecked(c,a);if(a.chkDisabled!==!0&&(b!==!0&&b!==!1&&(b=!o),k=!!k,(o!==b||g)&&!(k&&i.apply(this.setting.callback.beforeCheck,[this.setting.treeId,a], 31 | !0)==!1)&&i.uCanDo(this.setting)&&this.setting.check.enable&&a.nocheck!==!0))e.nodeChecked(c,a,b),b=m(a,h.id.CHECK,this.setting),(g||this.setting.check.chkStyle===h.radio.STYLE)&&f.checkNodeRelation(this.setting,a),f.setChkClass(this.setting,b,a),f.repairParentChkClassWithSelf(this.setting,a),k&&this.setting.treeObj.trigger(h.event.CHECK,[null,this.setting.treeId,a])};a.checkAllNodes=function(a){f.repairAllChk(this.setting,!!a)};a.getCheckedNodes=function(a){var a=a!==!1,b=e.nodeChildren(c,e.getRoot(this.setting)); 32 | return e.getTreeCheckedNodes(this.setting,b,a)};a.getChangeCheckedNodes=function(){var a=e.nodeChildren(c,e.getRoot(this.setting));return e.getTreeChangeCheckedNodes(this.setting,a)};a.setChkDisabled=function(a,b,c,e){b=!!b;c=!!c;f.repairSonChkDisabled(this.setting,a,b,!!e);f.repairParentChkDisabled(this.setting,a.getParentNode(),b,c)};var b=a.updateNode;a.updateNode=function(c,e){b&&b.apply(a,arguments);if(c&&this.setting.check.enable&&m(c,this.setting).get(0)&&i.uCanDo(this.setting)){var g=m(c, 33 | h.id.CHECK,this.setting);(e==!0||this.setting.check.chkStyle===h.radio.STYLE)&&f.checkNodeRelation(this.setting,c);f.setChkClass(this.setting,g,c);f.repairParentChkClassWithSelf(this.setting,c)}}});var t=f.createNodes;f.createNodes=function(c,a,b,d,e){t&&t.apply(f,arguments);b&&f.repairParentChkClassWithSelf(c,d)};var u=f.removeNode;f.removeNode=function(c,a){var b=a.getParentNode();u&&u.apply(f,arguments);a&&b&&(f.repairChkClass(c,b),f.repairParentChkClass(c,b))};var v=f.appendNodes;f.appendNodes= 34 | function(c,a,b,d,h,g,i){var m="";v&&(m=v.apply(f,arguments));d&&e.makeChkFlag(c,d);return m}})(jQuery); 35 | -------------------------------------------------------------------------------- /odtree/static/src/lib/zTree_v3/js/jquery.ztree.exedit.min.js: -------------------------------------------------------------------------------- 1 | /* 2 | * JQuery zTree exedit v3.5.36 3 | * http://treejs.cn/ 4 | * 5 | * Copyright (c) 2010 Hunter.z 6 | * 7 | * Licensed same as jquery - MIT License 8 | * http://www.opensource.org/licenses/mit-license.php 9 | * 10 | * email: hunter.z@263.net 11 | * Date: 2018-06-26 12 | */ 13 | (function(B){var I={event:{DRAG:"ztree_drag",DROP:"ztree_drop",RENAME:"ztree_rename",DRAGMOVE:"ztree_dragmove"},id:{EDIT:"_edit",INPUT:"_input",REMOVE:"_remove"},move:{TYPE_INNER:"inner",TYPE_PREV:"prev",TYPE_NEXT:"next"},node:{CURSELECTED_EDIT:"curSelectedNode_Edit",TMPTARGET_TREE:"tmpTargetzTree",TMPTARGET_NODE:"tmpTargetNode"}},v={onHoverOverNode:function(a,b){var c=i.getSetting(a.data.treeId),d=i.getRoot(c);if(d.curHoverNode!=b)v.onHoverOutNode(a);d.curHoverNode=b;e.addHoverDom(c,b)},onHoverOutNode:function(a){var a= 14 | i.getSetting(a.data.treeId),b=i.getRoot(a);if(b.curHoverNode&&!i.isSelectedNode(a,b.curHoverNode))e.removeTreeDom(a,b.curHoverNode),b.curHoverNode=null},onMousedownNode:function(a,b){function c(a){if(m.dragFlag==0&&Math.abs(N-a.clientX) 1){var o=n[0].parentTId?i.nodeChildren(f,n[0].getParentNode()):i.getNodes(f);g=[];for(b=0,c=o.length;b -1&&p+1!==b&&(j=!1),g.push(o[b]),p=b),n.length===g.length){n=g;break}}j&&(H=n[0].getPreNode(),Q=n[n.length-1].getNextNode());C=q(" ", 16 | f);for(b=0,c=n.length;b
0),e.removeTreeDom(f,g),b>f.edit.drag.maxShowNodeNum-1||(j=q("",f),j.append(q(g,d.id.A,f).clone()),j.css("padding","0"),j.children("#"+g.tId+d.id.A).removeClass(d.node.CURSELECTED),C.append(j),b==f.edit.drag.maxShowNodeNum-1&&(j=q(" ... ",f),C.append(j)));C.attr("id",n[0].tId+d.id.UL+"_tmp");C.addClass(f.treeObj.attr("class"));C.appendTo(L);u=q("", 17 | f);u.attr("id","zTreeMove_arrow_tmp");u.appendTo(L);f.treeObj.trigger(d.event.DRAG,[a,f.treeId,n])}if(m.dragFlag==1){t&&u.attr("id")==a.target.id&&w&&a.clientX+G.scrollLeft()+2>B("#"+w+d.id.A,t).offset().left?(g=B("#"+w+d.id.A,t),a.target=g.length>0?g.get(0):a.target):t&&(t.removeClass(d.node.TMPTARGET_TREE),w&&B("#"+w+d.id.A,t).removeClass(d.node.TMPTARGET_NODE+"_"+d.move.TYPE_PREV).removeClass(d.node.TMPTARGET_NODE+"_"+I.move.TYPE_NEXT).removeClass(d.node.TMPTARGET_NODE+"_"+I.move.TYPE_INNER)); 18 | w=t=null;J=!1;h=f;g=i.getSettings();for(var z in g)if(g[z].treeId&&g[z].edit.enable&&g[z].treeId!=f.treeId&&(a.target.id==g[z].treeId||B(a.target).parents("#"+g[z].treeId).length>0))J=!0,h=g[z];z=G.scrollTop();j=G.scrollLeft();p=h.treeObj.offset();b=h.treeObj.get(0).scrollHeight;g=h.treeObj.get(0).scrollWidth;c=a.clientY+z-p.top;var E=h.treeObj.height()+p.top-a.clientY-z,r=a.clientX+j-p.left,s=h.treeObj.width()+p.left-a.clientX-j,p=cf.edit.drag.borderMin,o=E f.edit.drag.borderMin,F=r f.edit.drag.borderMin,v=s f.edit.drag.borderMin,E=c>f.edit.drag.borderMin&&E>f.edit.drag.borderMin&&r>f.edit.drag.borderMin&&s>f.edit.drag.borderMin,r=p&&h.treeObj.scrollTop()<=0,s=o&&h.treeObj.scrollTop()+h.treeObj.height()+10>=b,M=F&&h.treeObj.scrollLeft()<=0,P=v&&h.treeObj.scrollLeft()+h.treeObj.width()+10>=g;if(a.target&&k.isChildOrSelf(a.target,h.treeId)){for(var D=a.target;D&&D.tagName&&!k.eqs(D.tagName,"li")&&D.id!= 20 | h.treeId;)D=D.parentNode;var R=!0;for(b=0,c=n.length;b 0){R=!1;break}if(R&&a.target&&k.isChildOrSelf(a.target,D.id+d.id.A))t=B(D),w=D.id}g=n[0];if(E&&k.isChildOrSelf(a.target,h.treeId)){if(!t&&(a.target.id==h.treeId||r||s||M||P)&&(J||!J&&g.parentTId))t=h.treeObj;p?h.treeObj.scrollTop(h.treeObj.scrollTop()-10):o&&h.treeObj.scrollTop(h.treeObj.scrollTop()+10);F?h.treeObj.scrollLeft(h.treeObj.scrollLeft()-10):v&&h.treeObj.scrollLeft(h.treeObj.scrollLeft()+ 21 | 10);t&&t!=h.treeObj&&t.offset().left =-0.2)&&g?(j=1-u.width(),b=E-u.height()/2,x=d.move.TYPE_PREV):(M==0||z>=M&&z<=1.2)&&c?(j=1-u.width(),b=v==null||i.nodeIsParent(f,A)&&A.open?E+F.height()-u.height()/2:v.offset().top-u.height()/2,x=d.move.TYPE_NEXT):p?(j=5-u.width(),b=E,x=d.move.TYPE_INNER):o(),t){u.css({display:"block",top:b+"px",left:r+j+"px"});F.addClass(d.node.TMPTARGET_NODE+"_"+x);if(S!=w||T!=x)K=(new Date).getTime();if(A&&i.nodeIsParent(f, 24 | A)&&x==d.move.TYPE_INNER&&(z=!0,window.zTreeMoveTimer&&window.zTreeMoveTargetNodeTId!==A.tId?(clearTimeout(window.zTreeMoveTimer),window.zTreeMoveTargetNodeTId=null):window.zTreeMoveTimer&&window.zTreeMoveTargetNodeTId===A.tId&&(z=!1),z))window.zTreeMoveTimer=setTimeout(function(){x==d.move.TYPE_INNER&&A&&i.nodeIsParent(f,A)&&!A.open&&(new Date).getTime()-K>h.edit.drag.autoOpenTime&&k.apply(h.callback.beforeDragOpen,[h.treeId,A],!0)&&(e.switchNode(h,A),h.edit.drag.autoExpandTrigger&&h.treeObj.trigger(d.event.EXPAND, 25 | [h.treeId,A]))},h.edit.drag.autoOpenTime+50),window.zTreeMoveTargetNodeTId=A.tId}}else if(x=d.move.TYPE_INNER,t&&k.apply(h.edit.drag.inner,[h.treeId,n,null],!!h.edit.drag.inner)?t.addClass(d.node.TMPTARGET_TREE):t=null,u.css({display:"none"}),window.zTreeMoveTimer)clearTimeout(window.zTreeMoveTimer),window.zTreeMoveTargetNodeTId=null;S=w;T=x;f.treeObj.trigger(d.event.DRAGMOVE,[a,f.treeId,n])}return!1}function l(a){if(window.zTreeMoveTimer)clearTimeout(window.zTreeMoveTimer),window.zTreeMoveTargetNodeTId= 26 | null;T=S=null;G.unbind("mousemove",c);G.unbind("mouseup",l);G.unbind("selectstart",g);L.css("cursor","");t&&(t.removeClass(d.node.TMPTARGET_TREE),w&&B("#"+w+d.id.A,t).removeClass(d.node.TMPTARGET_NODE+"_"+d.move.TYPE_PREV).removeClass(d.node.TMPTARGET_NODE+"_"+I.move.TYPE_NEXT).removeClass(d.node.TMPTARGET_NODE+"_"+I.move.TYPE_INNER));k.showIfameMask(f,!1);y.showHoverDom=!0;if(m.dragFlag!=0){m.dragFlag=0;var b,j,o;for(b=0,j=n.length;b 0;)c.dragMaskList[0].remove(),c.dragMaskList.shift();if(b)for(var d=q("iframe",a),g=0,e=d.length;g ",a);j.appendTo(q("body",a));c.dragMaskList.push(j)}}},view:{addEditBtn:function(a,b){if(!(b.editNameFlag|| 33 | q(b,d.id.EDIT,a).length>0)&&k.apply(a.edit.showRenameBtn,[a.treeId,b],a.edit.showRenameBtn)){var c=q(b,d.id.A,a),l="";c.append(l);q(b,d.id.EDIT,a).bind("click",function(){if(!k.uCanDo(a)||k.apply(a.callback.beforeEditName,[a.treeId,b],!0)==!1)return!1;e.editNode(a,b);return!1}).show()}},addRemoveBtn:function(a, 34 | b){if(!(b.editNameFlag||q(b,d.id.REMOVE,a).length>0)&&k.apply(a.edit.showRemoveBtn,[a.treeId,b],a.edit.showRemoveBtn)){var c=q(b,d.id.A,a),l="";c.append(l);q(b,d.id.REMOVE,a).bind("click",function(){if(!k.uCanDo(a)||k.apply(a.callback.beforeRemove,[a.treeId,b],!0)==!1)return!1;e.removeNode(a,b);a.treeObj.trigger(d.event.REMOVE, 35 | [a.treeId,b]);return!1}).bind("mousedown",function(){return!0}).show()}},addHoverDom:function(a,b){if(i.getRoots().showHoverDom)b.isHover=!0,a.edit.enable&&(e.addEditBtn(a,b),e.addRemoveBtn(a,b)),k.apply(a.view.addHoverDom,[a.treeId,b])},cancelCurEditNode:function(a,b,c){var l=i.getRoot(a),g=l.curEditNode;if(g){var o=l.curEditInput,b=b?b:c?i.nodeName(a,g):o.val();if(k.apply(a.callback.beforeRename,[a.treeId,g,b,c],!0)===!1)return!1;i.nodeName(a,g,b);q(g,d.id.A,a).removeClass(d.node.CURSELECTED_EDIT); 36 | o.unbind();e.setNodeName(a,g);g.editNameFlag=!1;l.curEditNode=null;l.curEditInput=null;e.selectNode(a,g,!1);a.treeObj.trigger(d.event.RENAME,[a.treeId,g,c])}return l.noSelection=!0},editNode:function(a,b){var c=i.getRoot(a);e.editNodeBlur=!1;if(i.isSelectedNode(a,b)&&c.curEditNode==b&&b.editNameFlag)setTimeout(function(){k.inputFocus(c.curEditInput)},0);else{b.editNameFlag=!0;e.removeTreeDom(a,b);e.cancelCurEditNode(a);e.selectNode(a,b,!1);q(b,d.id.SPAN,a).html("");var l=q(b,d.id.INPUT,a);l.attr("value",i.nodeName(a,b));a.edit.editNameSelectAll?k.inputSelect(l):k.inputFocus(l);l.bind("blur",function(){e.editNodeBlur||e.cancelCurEditNode(a)}).bind("keydown",function(b){b.keyCode=="13"?(e.editNodeBlur=!0,e.cancelCurEditNode(a)):b.keyCode=="27"&&e.cancelCurEditNode(a,null,!0)}).bind("click",function(){return!1}).bind("dblclick",function(){return!1});q(b,d.id.A,a).addClass(d.node.CURSELECTED_EDIT);c.curEditInput=l; 38 | c.noSelection=!1;c.curEditNode=b}},moveNode:function(a,b,c,l,g,k){var j=i.getRoot(a);if(b!=c&&(!a.data.keep.leaf||!b||i.nodeIsParent(a,b)||l!=d.move.TYPE_INNER)){var f=c.parentTId?c.getParentNode():j,m=b===null||b==j;m&&b===null&&(b=j);if(m)l=d.move.TYPE_INNER;j=b.parentTId?b.getParentNode():j;if(l!=d.move.TYPE_PREV&&l!=d.move.TYPE_NEXT)l=d.move.TYPE_INNER;if(l==d.move.TYPE_INNER)if(m)c.parentTId=null;else{if(!i.nodeIsParent(a,b))i.nodeIsParent(a,b,!0),b.open=!!b.open,e.setNodeLineIcos(a,b);c.parentTId= 39 | b.tId}var y;m?y=m=a.treeObj:(!k&&l==d.move.TYPE_INNER?e.expandCollapseNode(a,b,!0,!1):k||e.expandCollapseNode(a,b.getParentNode(),!0,!1),m=q(b,a),y=q(b,d.id.UL,a),m.get(0)&&!y.get(0)&&(y=[],e.makeUlHtml(a,b,y,""),m.append(y.join(""))),y=q(b,d.id.UL,a));var r=q(c,a);r.get(0)?m.get(0)||r.remove():r=e.appendNodes(a,c.level,[c],null,-1,!1,!0).join("");y.get(0)&&l==d.move.TYPE_INNER?y.append(r):m.get(0)&&l==d.move.TYPE_PREV?m.before(r):m.get(0)&&l==d.move.TYPE_NEXT&&m.after(r);var s;y=-1;var r=0,n=null, 40 | m=null,B=c.level,v=i.nodeChildren(a,f),C=i.nodeChildren(a,j),u=i.nodeChildren(a,b);if(c.isFirstNode){if(y=0,v.length>1)n=v[1],n.isFirstNode=!0}else if(c.isLastNode)y=v.length-1,n=v[y-1],n.isLastNode=!0;else for(j=0,s=v.length;j =0&&v.splice(y,1);if(l!=d.move.TYPE_INNER)for(j=0,s=C.length;j0)m=u[u.length-1],m.isLastNode=!1;u.splice(u.length,0,c);c.isLastNode=!0;c.isFirstNode= 41 | u.length==1}else b.isFirstNode&&l==d.move.TYPE_PREV?(C.splice(r,0,c),m=b,m.isFirstNode=!1,c.parentTId=b.parentTId,c.isFirstNode=!0,c.isLastNode=!1):b.isLastNode&&l==d.move.TYPE_NEXT?(C.splice(r+1,0,c),m=b,m.isLastNode=!1,c.parentTId=b.parentTId,c.isFirstNode=!1,c.isLastNode=!0):(l==d.move.TYPE_PREV?C.splice(r,0,c):C.splice(r+1,0,c),c.parentTId=b.parentTId,c.isFirstNode=!1,c.isLastNode=!1);i.fixPIdKeyValue(a,c);i.setSonNodeLevel(a,c.getParentNode(),c);e.setNodeLineIcos(a,c);e.repairNodeLevelClass(a, 42 | c,B);!a.data.keep.parent&&v.length<1?(i.nodeIsParent(a,f,!1),f.open=!1,b=q(f,d.id.UL,a),l=q(f,d.id.SWITCH,a),j=q(f,d.id.ICON,a),e.replaceSwitchClass(f,l,d.folder.DOCU),e.replaceIcoClass(f,j,d.folder.DOCU),b.css("display","none")):n&&e.setNodeLineIcos(a,n);m&&e.setNodeLineIcos(a,m);a.check&&a.check.enable&&e.repairChkClass&&(e.repairChkClass(a,f),e.repairParentChkClassWithSelf(a,f),f!=c.parent&&e.repairParentChkClassWithSelf(a,c));k||e.expandCollapseParentNode(a,c.getParentNode(),!0,g)}},removeEditBtn:function(a, 43 | b){q(b,d.id.EDIT,a).unbind().remove()},removeRemoveBtn:function(a,b){q(b,d.id.REMOVE,a).unbind().remove()},removeTreeDom:function(a,b){b.isHover=!1;e.removeEditBtn(a,b);e.removeRemoveBtn(a,b);k.apply(a.view.removeHoverDom,[a.treeId,b])},repairNodeLevelClass:function(a,b,c){if(c!==b.level){var e=q(b,a),g=q(b,d.id.A,a),a=q(b,d.id.UL,a),c=d.className.LEVEL+c,b=d.className.LEVEL+b.level;e.removeClass(c);e.addClass(b);g.removeClass(c);g.addClass(b);a.removeClass(c);a.addClass(b)}},selectNodes:function(a, 44 | b){for(var c=0,d=b.length;c0)}},event:{},data:{setSonNodeLevel:function(a,b,c){if(c){var d=i.nodeChildren(a,c);c.level=b?b.level+1:0;if(d)for(var b=0,g=d.length;b 0)switch(o=i.getNodeCache(c,g),j){case "mousedownNode":f=v.onMousedownNode;break;case "hoverOverNode":f=v.onHoverOverNode; 48 | break;case "hoverOutNode":f=v.onHoverOutNode}return{stop:!1,node:o,nodeEventType:j,nodeEventCallback:f,treeEventType:"",treeEventCallback:null}});i.addInitRoot(function(a){var a=i.getRoot(a),b=i.getRoots();a.curEditNode=null;a.curEditInput=null;a.curHoverNode=null;a.dragFlag=0;a.dragNodeShowBefore=[];a.dragMaskList=[];b.showHoverDom=!0});i.addZTreeTools(function(a,b){b.cancelEditName=function(a){i.getRoot(this.setting).curEditNode&&e.cancelCurEditNode(this.setting,a?a:null,!0)};b.copyNode=function(b, 49 | l,g,o){if(!l)return null;var j=i.nodeIsParent(a,b);if(b&&!j&&this.setting.data.keep.leaf&&g===d.move.TYPE_INNER)return null;var f=this,m=k.clone(l);if(!b)b=null,g=d.move.TYPE_INNER;g==d.move.TYPE_INNER?(l=function(){e.addNodes(f.setting,b,-1,[m],o)},k.canAsync(this.setting,b)?e.asyncNode(this.setting,b,o,l):l()):(e.addNodes(this.setting,b.parentNode,-1,[m],o),e.moveNode(this.setting,b,m,g,!1,o));return m};b.editName=function(a){a&&a.tId&&a===i.getNodeCache(this.setting,a.tId)&&(a.parentTId&&e.expandCollapseParentNode(this.setting, 50 | a.getParentNode(),!0),e.editNode(this.setting,a))};b.moveNode=function(b,l,g,o){function j(){e.moveNode(m.setting,b,l,g,!1,o)}if(!l)return l;var f=i.nodeIsParent(a,b);if(b&&!f&&this.setting.data.keep.leaf&&g===d.move.TYPE_INNER)return null;else if(b&&(l.parentTId==b.tId&&g==d.move.TYPE_INNER||q(l,this.setting).find("#"+b.tId).length>0))return null;else b||(b=null);var m=this;k.canAsync(this.setting,b)&&g===d.move.TYPE_INNER?e.asyncNode(this.setting,b,o,j):j();return l};b.setEditable=function(a){this.setting.edit.enable= 51 | a;return this.refresh()}});var N=e.cancelPreSelectedNode;e.cancelPreSelectedNode=function(a,b){for(var c=i.getRoot(a).curSelectedList,d=0,g=c.length;d "); 127 | }, 128 | showNode: function(setting, node, options) { 129 | data.isHidden(setting, node, false); 130 | data.initShowForExCheck(setting, node); 131 | $$(node, setting).show(); 132 | }, 133 | showNodes: function(setting, nodes, options) { 134 | if (!nodes || nodes.length == 0) { 135 | return; 136 | } 137 | var pList = {}, i, j; 138 | for (i=0, j=nodes.length; i 0 && !isHidden) { 183 | children[0].isFirstNode = true; 184 | } else if (children.length > 0) { 185 | view.setFirstNodeForHide(setting, children); 186 | } 187 | }, 188 | setLastNode: function(setting, parentNode) { 189 | var children = data.nodeChildren(setting, parentNode); 190 | var isHidden = data.isHidden(setting, children[0]); 191 | if (children.length > 0 && !isHidden) { 192 | children[children.length - 1].isLastNode = true; 193 | } else if (children.length > 0) { 194 | view.setLastNodeForHide(setting, children); 195 | } 196 | }, 197 | setFirstNodeForHide: function(setting, nodes) { 198 | var n,i,j; 199 | for (i=0, j=nodes.length; i =0; i--) { 241 | n = nodes[i]; 242 | if (n.isLastNode) { 243 | break; 244 | } 245 | var isHidden = data.isHidden(setting, n); 246 | if (!isHidden && !n.isLastNode) { 247 | n.isLastNode = true; 248 | view.setNodeLineIcos(setting, n); 249 | break; 250 | } else { 251 | n = null; 252 | } 253 | } 254 | return n; 255 | }, 256 | setLastNodeForShow: function(setting, nodes) { 257 | var n,i,j, last, old; 258 | for (i=nodes.length-1; i>=0; i--) { 259 | n = nodes[i]; 260 | var isHidden = data.isHidden(setting, n); 261 | if (!last && !isHidden && n.isLastNode) { 262 | last = n; 263 | break; 264 | } else if (!last && !isHidden && !n.isLastNode) { 265 | n.isLastNode = true; 266 | last = n; 267 | view.setNodeLineIcos(setting, n); 268 | } else if (last && n.isLastNode) { 269 | n.isLastNode = false; 270 | old = n; 271 | view.setNodeLineIcos(setting, n); 272 | break; 273 | } else { 274 | n = null; 275 | } 276 | } 277 | return {"new":last, "old":old}; 278 | } 279 | }, 280 | 281 | _z = { 282 | view: _view, 283 | data: _data 284 | }; 285 | $.extend(true, $.fn.zTree._z, _z); 286 | 287 | var zt = $.fn.zTree, 288 | tools = zt._z.tools, 289 | consts = zt.consts, 290 | view = zt._z.view, 291 | data = zt._z.data, 292 | event = zt._z.event, 293 | $$ = tools.$; 294 | 295 | data.isHidden = function(setting, node, newIsHidden) { 296 | if (!node) { 297 | return false; 298 | } 299 | var key = setting.data.key.isHidden; 300 | if (typeof newIsHidden !== 'undefined') { 301 | if (typeof newIsHidden === "string") { 302 | newIsHidden = tools.eqs(checked, "true"); 303 | } 304 | newIsHidden = !!newIsHidden; 305 | node[key] = newIsHidden; 306 | } 307 | return node[key]; 308 | }; 309 | 310 | data.exSetting(_setting); 311 | data.addInitNode(_initNode); 312 | data.addBeforeA(_beforeA); 313 | data.addZTreeTools(_zTreeTools); 314 | 315 | // Override method in core 316 | var _dInitNode = data.initNode; 317 | data.initNode = function(setting, level, node, parentNode, isFirstNode, isLastNode, openFlag) { 318 | var tmpPNode = (parentNode) ? parentNode: data.getRoot(setting), 319 | children = tmpPNode[setting.data.key.children]; 320 | data.tmpHideFirstNode = view.setFirstNodeForHide(setting, children); 321 | data.tmpHideLastNode = view.setLastNodeForHide(setting, children); 322 | if (openFlag) { 323 | view.setNodeLineIcos(setting, data.tmpHideFirstNode); 324 | view.setNodeLineIcos(setting, data.tmpHideLastNode); 325 | } 326 | isFirstNode = (data.tmpHideFirstNode === node); 327 | isLastNode = (data.tmpHideLastNode === node); 328 | if (_dInitNode) _dInitNode.apply(data, arguments); 329 | if (openFlag && isLastNode) { 330 | view.clearOldLastNode(setting, node, openFlag); 331 | } 332 | }; 333 | 334 | var _makeChkFlag = data.makeChkFlag; 335 | if (!!_makeChkFlag) { 336 | data.makeChkFlag = function(setting, node) { 337 | if (!!node && !!data.isHidden(setting, node)) { 338 | return; 339 | } 340 | _makeChkFlag.apply(data, arguments); 341 | } 342 | } 343 | 344 | var _getTreeCheckedNodes = data.getTreeCheckedNodes; 345 | if (!!_getTreeCheckedNodes) { 346 | data.getTreeCheckedNodes = function(setting, nodes, checked, results) { 347 | if (!!nodes && nodes.length > 0) { 348 | var p = nodes[0].getParentNode(); 349 | if (!!p && !!data.isHidden(setting, p)) { 350 | return []; 351 | } 352 | } 353 | return _getTreeCheckedNodes.apply(data, arguments); 354 | } 355 | } 356 | 357 | var _getTreeChangeCheckedNodes = data.getTreeChangeCheckedNodes; 358 | if (!!_getTreeChangeCheckedNodes) { 359 | data.getTreeChangeCheckedNodes = function(setting, nodes, results) { 360 | if (!!nodes && nodes.length > 0) { 361 | var p = nodes[0].getParentNode(); 362 | if (!!p && !!data.isHidden(setting, p)) { 363 | return []; 364 | } 365 | } 366 | return _getTreeChangeCheckedNodes.apply(data, arguments); 367 | } 368 | } 369 | 370 | var _expandCollapseSonNode = view.expandCollapseSonNode; 371 | if (!!_expandCollapseSonNode) { 372 | view.expandCollapseSonNode = function(setting, node, expandFlag, animateFlag, callback) { 373 | if (!!node && !!data.isHidden(setting, node)) { 374 | return; 375 | } 376 | _expandCollapseSonNode.apply(view, arguments); 377 | } 378 | } 379 | 380 | var _setSonNodeCheckBox = view.setSonNodeCheckBox; 381 | if (!!_setSonNodeCheckBox) { 382 | view.setSonNodeCheckBox = function(setting, node, value, srcNode) { 383 | if (!!node && !!data.isHidden(setting, node)) { 384 | return; 385 | } 386 | _setSonNodeCheckBox.apply(view, arguments); 387 | } 388 | } 389 | 390 | var _repairParentChkClassWithSelf = view.repairParentChkClassWithSelf; 391 | if (!!_repairParentChkClassWithSelf) { 392 | view.repairParentChkClassWithSelf = function(setting, node) { 393 | if (!!node && !!data.isHidden(setting, node)) { 394 | return; 395 | } 396 | _repairParentChkClassWithSelf.apply(view, arguments); 397 | } 398 | } 399 | })(jQuery); -------------------------------------------------------------------------------- /odtree/static/src/lib/zTree_v3/js/jquery.ztree.exhide.min.js: -------------------------------------------------------------------------------- 1 | /* 2 | * JQuery zTree exHideNodes v3.5.36 3 | * http://treejs.cn/ 4 | * 5 | * Copyright (c) 2010 Hunter.z 6 | * 7 | * Licensed same as jquery - MIT License 8 | * http://www.opensource.org/licenses/mit-license.php 9 | * 10 | * email: hunter.z@263.net 11 | * Date: 2018-06-26 12 | */ 13 | (function(j){j.extend(!0,j.fn.zTree._z,{view:{clearOldFirstNode:function(c,a){for(var b=a.getNextNode();b;){if(b.isFirstNode){b.isFirstNode=!1;e.setNodeLineIcos(c,b);break}if(b.isLastNode)break;b=b.getNextNode()}},clearOldLastNode:function(c,a,b){for(a=a.getPreNode();a;){if(a.isLastNode){a.isLastNode=!1;b&&e.setNodeLineIcos(c,a);break}if(a.isFirstNode)break;a=a.getPreNode()}},makeDOMNodeMainBefore:function(c,a,b){a=d.isHidden(a,b);c.push(" ")},showNode:function(c,a){d.isHidden(c,a,!1);d.initShowForExCheck(c,a);k(a,c).show()},showNodes:function(c,a,b){if(a&&a.length!=0){var f={},g,i;for(g=0,i=a.length;g0&&!f?b[0].isFirstNode=!0:b.length>0&&e.setFirstNodeForHide(c,b)},setLastNode:function(c,a){var b=d.nodeChildren(c,a),f=d.isHidden(c,b[0]);b.length>0&&!f?b[b.length-1].isLastNode=!0:b.length>0&&e.setLastNodeForHide(c,b)},setFirstNodeForHide:function(c,a){var b,f,g;for(f=0,g=a.length;f =0;f--){b=a[f];if(b.isLastNode)break;if(!d.isHidden(c,b)&&!b.isLastNode){b.isLastNode=!0;e.setNodeLineIcos(c,b);break}else b=null}return b},setLastNodeForShow:function(c, 18 | a){var b,f,g,i;for(f=a.length-1;f>=0;f--){b=a[f];var h=d.isHidden(c,b);if(!g&&!h&&b.isLastNode){g=b;break}else if(!g&&!h&&!b.isLastNode)b.isLastNode=!0,g=b,e.setNodeLineIcos(c,b);else if(g&&b.isLastNode){b.isLastNode=!1;i=b;e.setNodeLineIcos(c,b);break}}return{"new":g,old:i}}},data:{initHideForExCheck:function(c,a){if(d.isHidden(c,a)&&c.check&&c.check.enable){if(typeof a._nocheck=="undefined")a._nocheck=!!a.nocheck,a.nocheck=!0;a.check_Child_State=-1;e.repairParentChkClassWithSelf&&e.repairParentChkClassWithSelf(c, 19 | a)}},initShowForExCheck:function(c,a){if(!d.isHidden(c,a)&&c.check&&c.check.enable){if(typeof a._nocheck!="undefined")a.nocheck=a._nocheck,delete a._nocheck;if(e.setChkClass){var b=k(a,l.id.CHECK,c);e.setChkClass(c,b,a)}e.repairParentChkClassWithSelf&&e.repairParentChkClassWithSelf(c,a)}}}});var j=j.fn.zTree,m=j._z.tools,l=j.consts,e=j._z.view,d=j._z.data,k=m.$;d.isHidden=function(c,a,b){if(!a)return!1;c=c.data.key.isHidden;typeof b!=="undefined"&&(typeof b==="string"&&(b=m.eqs(checked,"true")),a[c]= 20 | !!b);return a[c]};d.exSetting({data:{key:{isHidden:"isHidden"}}});d.addInitNode(function(c,a,b){a=d.isHidden(c,b);d.isHidden(c,b,a);d.initHideForExCheck(c,b)});d.addBeforeA(function(){});d.addZTreeTools(function(c,a){a.showNodes=function(a,b){e.showNodes(c,a,b)};a.showNode=function(a,b){a&&e.showNodes(c,[a],b)};a.hideNodes=function(a,b){e.hideNodes(c,a,b)};a.hideNode=function(a,b){a&&e.hideNodes(c,[a],b)};var b=a.checkNode;if(b)a.checkNode=function(f,e,i,h){(!f||!d.isHidden(c,f))&&b.apply(a,arguments)}}); 21 | var n=d.initNode;d.initNode=function(c,a,b,f,g,i,h){var j=(f?f:d.getRoot(c))[c.data.key.children];d.tmpHideFirstNode=e.setFirstNodeForHide(c,j);d.tmpHideLastNode=e.setLastNodeForHide(c,j);h&&(e.setNodeLineIcos(c,d.tmpHideFirstNode),e.setNodeLineIcos(c,d.tmpHideLastNode));g=d.tmpHideFirstNode===b;i=d.tmpHideLastNode===b;n&&n.apply(d,arguments);h&&i&&e.clearOldLastNode(c,b,h)};var o=d.makeChkFlag;if(o)d.makeChkFlag=function(c,a){(!a||!d.isHidden(c,a))&&o.apply(d,arguments)};var p=d.getTreeCheckedNodes; 22 | if(p)d.getTreeCheckedNodes=function(c,a,b,f){if(a&&a.length>0){var e=a[0].getParentNode();if(e&&d.isHidden(c,e))return[]}return p.apply(d,arguments)};var q=d.getTreeChangeCheckedNodes;if(q)d.getTreeChangeCheckedNodes=function(c,a,b){if(a&&a.length>0){var e=a[0].getParentNode();if(e&&d.isHidden(c,e))return[]}return q.apply(d,arguments)};var r=e.expandCollapseSonNode;if(r)e.expandCollapseSonNode=function(c,a,b,f,g){(!a||!d.isHidden(c,a))&&r.apply(e,arguments)};var s=e.setSonNodeCheckBox;if(s)e.setSonNodeCheckBox= 23 | function(c,a,b,f){(!a||!d.isHidden(c,a))&&s.apply(e,arguments)};var t=e.repairParentChkClassWithSelf;if(t)e.repairParentChkClassWithSelf=function(c,a){(!a||!d.isHidden(c,a))&&t.apply(e,arguments)}})(jQuery); 24 | -------------------------------------------------------------------------------- /odtree/static/src/scss/odtree.scss: -------------------------------------------------------------------------------- 1 | .o_list_view_categ { 2 | float: left; 3 | height: 100%; 4 | border-collapse: collapse; 5 | overflow: auto; 6 | padding-left: 0px; 7 | padding-right: 0px; 8 | border-right: 1px solid #b9b9b9; 9 | } 10 | 11 | .o_list_view_categ_hidden{ 12 | width:20px; 13 | padding:0px; 14 | } 15 | 16 | .o_list_view_width_withcateg { 17 | position: relative; 18 | width: auto; 19 | overflow: auto; 20 | } 21 | 22 | .ztree{ 23 | width:95%; 24 | float: left; 25 | } 26 | 27 | 28 | .handle_menu_arrow{ 29 | display: block; 30 | top: 50%; 31 | width: 18px; 32 | height: 120px; 33 | margin-top: -60px; 34 | padding: 0px; 35 | position: absolute; 36 | font-weight: normal; 37 | color: #454545; 38 | transition: width 1s; 39 | -moz-transition:width 1s; /* Firefox 4 */ 40 | -webkit-transition:width 1s; /* Safari and Chrome */ 41 | -o-transition:width 1s; /* Opera */ 42 | -webkit-user-select: none; 43 | -moz-user-select: none; 44 | -ms-user-select: none; 45 | user-select: none; 46 | cursor: pointer; 47 | box-sizing: border-box; 48 | } 49 | 50 | .handle_menu_arrow_left { 51 | left: 100%; 52 | margin-left: -20px; 53 | text-align: right; 54 | border-left: 0px; 55 | border-right: 12px solid rgba(0, 0, 0, 0.3); 56 | border-top: solid 8px transparent; 57 | border-bottom: solid 8px transparent; 58 | } 59 | 60 | .handle_menu_arrow_left:hover { 61 | width: 18px; 62 | border-right: 18px solid rgba(0, 0, 0, 0.3); 63 | } 64 | 65 | .handle_menu_arrow_right { 66 | text-align: right; 67 | border-left: 0px; 68 | border-right: 12px solid rgba(0, 0, 0, 0.3); 69 | border-top: solid 8px transparent; 70 | border-bottom: solid 8px transparent; 71 | 72 | transform:rotate(180deg); 73 | -ms-transform:rotate(180deg); /* Internet Explorer */ 74 | -moz-transform:rotate(180deg); /* Firefox */ 75 | -webkit-transform:rotate(180deg); /* Safari 和 Chrome */ 76 | -o-transform:rotate(180deg); /* Opera */ 77 | } 78 | 79 | .handle_menu_arrow_right:hover { 80 | width: 18px; 81 | border-right: 18px solid rgba(0, 0, 0, 0.3); 82 | } 83 | 84 | .fas{ 85 | z-index: 1; 86 | position: absolute; 87 | top: 50px; 88 | } 89 | 90 | .odtree_control_panel{ 91 | display: -webkit-box; 92 | display: -webkit-flex; 93 | display: flex; 94 | -webkit-flex-flow: row wrap; 95 | flex-flow: row wrap; 96 | border-bottom: 1px solid #b9b9b9; 97 | padding-top: 10px; 98 | padding-right: 16px; 99 | padding-bottom: 10px; 100 | padding-left: 16px; 101 | background-color: #ececec; 102 | } -------------------------------------------------------------------------------- /odtree/static/src/xml/odtree.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 14 | -------------------------------------------------------------------------------- /odtree/views/odtree_templates.xml: -------------------------------------------------------------------------------- 1 | 2 |4 | 12 | 13 | 11 |3 | 4 | 14 | -------------------------------------------------------------------------------- /odtree_hr/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | 4 | 5 | 6 | 7 | # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: 8 | -------------------------------------------------------------------------------- /odtree_hr/__manifest__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | 4 | { 5 | 'name': 'Odoo Employee Tree', 6 | 'version': '1.0', 7 | 'category': 'OdTree', 8 | 'sequence': 14, 9 | 'license':'LGPL-3', 10 | 'description': """ 11 | display employees in a department tree 12 | """, 13 | 'author': 'openliu', 14 | 'website': 'http://www.openliu.com', 15 | 'images': [], 16 | 'depends': ['odtree','hr'], 17 | 'qweb': [ 18 | 19 | ], 20 | 'data': [ 21 | 'views/hr_view.xml' 22 | ], 23 | 'installable': True, 24 | 'auto_install': False, 25 | 'application': True, 26 | } 27 | # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: 28 | -------------------------------------------------------------------------------- /odtree_hr/static/description/demo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuqwert/odtree/a876c6a8b53d82fe65fb89460c6e6ba82e71d61e/odtree_hr/static/description/demo.jpg -------------------------------------------------------------------------------- /odtree_hr/static/description/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuqwert/odtree/a876c6a8b53d82fe65fb89460c6e6ba82e71d61e/odtree_hr/static/description/icon.png -------------------------------------------------------------------------------- /odtree_hr/static/description/index.html: -------------------------------------------------------------------------------- 1 |5 | 6 | 7 | 8 |9 | 10 | 11 | 12 | 13 |2 | 11 | 12 |3 |10 |Employee Department Tree.
4 |5 |9 |6 |8 |7 |
13 | 14 | -------------------------------------------------------------------------------- /odtree_hr/views/hr_view.xml: -------------------------------------------------------------------------------- 1 | 2 |3 | 4 | 30 | -------------------------------------------------------------------------------- /odtree_product/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | 4 | 5 | 6 | 7 | # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: 8 | -------------------------------------------------------------------------------- /odtree_product/__manifest__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | 4 | { 5 | 'name': 'Odoo Product Tree', 6 | 'version': '1.0', 7 | 'category': 'OdTree', 8 | 'sequence': 14, 9 | 'license':'LGPL-3', 10 | 'description': """ 11 | display product in a product category tree 12 | """, 13 | 'author': 'openliu', 14 | 'website': 'http://www.openliu.com', 15 | 'images': [], 16 | 'depends': ['odtree','product'], 17 | 'qweb': [ 18 | 19 | ], 20 | 'data': [ 21 | 'views/product_view.xml' 22 | ], 23 | 'installable': True, 24 | 'auto_install': False, 25 | 'application': True, 26 | } 27 | # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: 28 | -------------------------------------------------------------------------------- /odtree_product/static/description/demo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuqwert/odtree/a876c6a8b53d82fe65fb89460c6e6ba82e71d61e/odtree_product/static/description/demo.jpg -------------------------------------------------------------------------------- /odtree_product/static/description/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuqwert/odtree/a876c6a8b53d82fe65fb89460c6e6ba82e71d61e/odtree_product/static/description/icon.png -------------------------------------------------------------------------------- /odtree_product/static/description/index.html: -------------------------------------------------------------------------------- 1 |5 | 16 | 17 |hr.employee.tree 6 |hr.employee 7 |8 | 9 | 15 |10 | 14 |department_id 11 |hr.department 12 |parent_id 13 |18 | 29 |hr.employee.kanban 19 |hr.employee 20 |21 | 22 | 28 |23 | 27 |department_id 24 |hr.department 25 |parent_id 26 |2 | 11 | 12 |3 |10 |Product Category Tree
4 |5 |9 |6 |8 |7 |
13 | 14 | -------------------------------------------------------------------------------- /odtree_product/views/product_view.xml: -------------------------------------------------------------------------------- 1 | 2 |3 | 4 | 30 | --------------------------------------------------------------------------------5 | 16 | 17 |product.template.product.tree 6 |product.template 7 |8 | 9 | 15 |10 | 14 |categ_id 11 |product.category 12 |parent_id 13 |18 | 29 |Product.template.product.kanban 19 |product.template 20 |21 | 22 | 28 |23 | 27 |categ_id 24 |product.category 25 |parent_id 26 |