Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
GitCode
1024程序员开源挑战赛(10.23-11.14)
提交
ad144cf5
1
1024程序员开源挑战赛(10.23-11.14)
项目概览
GitCode
/
1024程序员开源挑战赛(10.23-11.14)
通知
180912
Star
1063
Fork
1042
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
86
列表
看板
标记
里程碑
合并请求
8
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
1
1024程序员开源挑战赛(10.23-11.14)
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
86
Issue
86
列表
看板
标记
里程碑
合并请求
8
合并请求
8
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
ad144cf5
编写于
1月 06, 2018
作者:
Z
zTree-github
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
* [修改] setting.async.autoParam / otherParam 支持 function
* [修改] isParent / isHidden 允许自定义属性名称 setting.data.key.isParent / isHidden
上级
37132d1e
变更
23
显示空白变更内容
内联
并排
Showing
23 changed file
with
1304 addition
and
1002 deletion
+1304
-1002
api/API_cn.html
api/API_cn.html
+1
-1
api/API_en.html
api/API_en.html
+1
-1
api/apiCss/api.js
api/apiCss/api.js
+2
-0
api/apiCss/jquery.ztree.core.js
api/apiCss/jquery.ztree.core.js
+66
-65
api/cn/setting.async.autoParam.html
api/cn/setting.async.autoParam.html
+11
-1
api/cn/setting.async.otherParam.html
api/cn/setting.async.otherParam.html
+11
-1
api/cn/setting.data.key.isHidden.html
api/cn/setting.data.key.isHidden.html
+24
-0
api/cn/setting.data.key.isParent.html
api/cn/setting.data.key.isParent.html
+24
-0
api/en/setting.async.autoParam.html
api/en/setting.async.autoParam.html
+11
-1
api/en/setting.async.otherParam.html
api/en/setting.async.otherParam.html
+11
-1
api/en/setting.data.key.isHidden.html
api/en/setting.data.key.isHidden.html
+24
-0
api/en/setting.data.key.isParent.html
api/en/setting.data.key.isParent.html
+24
-0
js/jquery.ztree.all.js
js/jquery.ztree.all.js
+372
-310
js/jquery.ztree.all.min.js
js/jquery.ztree.all.min.js
+133
-132
js/jquery.ztree.core.js
js/jquery.ztree.core.js
+216
-173
js/jquery.ztree.core.min.js
js/jquery.ztree.core.min.js
+66
-65
js/jquery.ztree.excheck.js
js/jquery.ztree.excheck.js
+104
-88
js/jquery.ztree.excheck.min.js
js/jquery.ztree.excheck.min.js
+24
-24
js/jquery.ztree.exedit.js
js/jquery.ztree.exedit.js
+53
-50
js/jquery.ztree.exedit.min.js
js/jquery.ztree.exedit.min.js
+43
-43
js/jquery.ztree.exhide.js
js/jquery.ztree.exhide.js
+66
-34
js/jquery.ztree.exhide.min.js
js/jquery.ztree.exhide.min.js
+13
-12
log v3.x.txt
log v3.x.txt
+4
-0
未找到文件。
api/API_cn.html
浏览文件 @
ad144cf5
...
...
@@ -35,7 +35,7 @@
<div
class=
"ieSuggest"
>
浏览本网站建议您使用 Chrome、FireFox、Opera、IE9 等浏览器(只要不是 IE6 7 8 就行), 速度会更快,画面会更炫!
</div>
<div
class=
"google_plus"
><g:plusone></g:plusone></div>
<div
class=
"header-text"
>
<h1><em>
zTree v3.5.3
1
API 文档
</em></h1><p></p>
<h1><em>
zTree v3.5.3
2
API 文档
</em></h1><p></p>
<p>
all.js = core + excheck + exedit ( 不包括 exhide ); 发现错误请及时通知,谢谢。
</p>
</div>
<ul
class=
"shortcuts language"
style=
"top:0;"
>
...
...
api/API_en.html
浏览文件 @
ad144cf5
...
...
@@ -34,7 +34,7 @@
<div
class=
"ieSuggest"
>
If you use the Chrome / FireFox / Opera / IE9 browser will be even more dazzling effect!
</div>
<div
class=
"google_plus"
><g:plusone></g:plusone></div>
<div
class=
"header-text"
>
<h1><em>
zTree v3.5.3
1
API Document
</em></h1><p></p>
<h1><em>
zTree v3.5.3
2
API Document
</em></h1><p></p>
<p>
all.js = core + excheck + exedit ( without exhide ); if you found some mistakes please contact me.
</p>
</div>
<ul
class=
"shortcuts language"
style=
"top:0;"
>
...
...
api/apiCss/api.js
浏览文件 @
ad144cf5
...
...
@@ -133,6 +133,8 @@ var apiContent = {
{
id
:
510
,
pId
:
50
,
t
:
"
key
"
,
name
:
"
key : {
"
,
open
:
true
},
{
id
:
5101
,
pId
:
510
,
t
:
"
checked
"
,
name
:
"
checked :
\"
checked
\"
,
"
,
iconSkin
:
"
check
"
,
showAPI
:
true
},
{
id
:
5102
,
pId
:
510
,
t
:
"
children
"
,
name
:
"
children :
\"
children
\"
,
"
,
iconSkin
:
"
core
"
,
showAPI
:
true
},
{
id
:
5106
,
pId
:
510
,
t
:
"
isParent
"
,
name
:
"
isParent :
\"
isParent
\"
,
"
,
iconSkin
:
"
core
"
,
showAPI
:
true
},
{
id
:
5107
,
pId
:
510
,
t
:
"
isHidden
"
,
name
:
"
isHidden :
\"
isHidden
\"
,
"
,
iconSkin
:
"
hide
"
,
showAPI
:
true
},
{
id
:
5103
,
pId
:
510
,
t
:
"
name
"
,
name
:
"
name :
\"
name
\"
,
"
,
iconSkin
:
"
core
"
,
showAPI
:
true
},
{
id
:
5104
,
pId
:
510
,
t
:
"
title
"
,
name
:
"
title :
\"\"
"
,
iconSkin
:
"
core
"
,
showAPI
:
true
},
{
id
:
5105
,
pId
:
510
,
t
:
"
url
"
,
name
:
"
url :
\"
url
\"
"
,
iconSkin
:
"
core
"
,
showAPI
:
true
},
...
...
api/apiCss/jquery.ztree.core.js
浏览文件 @
ad144cf5
/*
* JQuery zTree core v3.5.3
1
* JQuery zTree core v3.5.3
2
* http://treejs.cn/
*
* Copyright (c) 2010 Hunter.z
...
...
@@ -8,68 +8,69 @@
* http://www.opensource.org/licenses/mit-license.php
*
* email: hunter.z@263.net
* Date: 201
7-12-28
* Date: 201
8-01-06
*/
(
function
(
q
){
var
H
,
I
,
J
,
K
,
L
,
M
,
u
,
s
=
{},
v
=
{},
w
=
{},
N
=
{
treeId
:
""
,
treeObj
:
null
,
view
:{
addDiyDom
:
null
,
autoCancelSelected
:
!
0
,
dblClickExpand
:
!
0
,
expandSpeed
:
"
fast
"
,
fontCss
:{},
nameIsHTML
:
!
1
,
selectedMulti
:
!
0
,
showIcon
:
!
0
,
showLine
:
!
0
,
showTitle
:
!
0
,
txtSelectedEnable
:
!
1
},
data
:{
key
:{
children
:
"
children
"
,
name
:
"
name
"
,
title
:
""
,
url
:
"
url
"
,
icon
:
"
icon
"
},
simpleData
:{
enable
:
!
1
,
idKey
:
"
id
"
,
pIdKey
:
"
pId
"
,
rootPId
:
null
},
keep
:{
parent
:
!
1
,
leaf
:
!
1
}},
async
:{
enable
:
!
1
,
contentType
:
"
application/x-www-form-urlencoded
"
,
type
:
"
post
"
,
dataType
:
"
text
"
,
url
:
""
,
autoParam
:[],
otherParam
:[],
dataFilter
:
null
},
callback
:{
beforeAsync
:
null
,
beforeClick
:
null
,
beforeDblClick
:
null
,
beforeRightClick
:
null
,
beforeMouseDown
:
null
,
beforeMouseUp
:
null
,
beforeExpand
:
null
,
beforeCollapse
:
null
,
beforeRemove
:
null
,
onAsyncError
:
null
,
onAsyncSuccess
:
null
,
onNodeCreated
:
null
,
onClick
:
null
,
onDblClick
:
null
,
onRightClick
:
null
,
onMouseDown
:
null
,
onMouseUp
:
null
,
onExpand
:
null
,
onCollapse
:
null
,
onRemove
:
null
}},
x
=
[
function
(
b
){
var
a
=
b
.
treeObj
,
c
=
f
.
event
;
a
.
bind
(
c
.
NODECREATED
,
function
(
a
,
c
,
h
){
i
.
apply
(
b
.
callback
.
onNodeCreated
,
[
a
,
c
,
h
])});
a
.
bind
(
c
.
CLICK
,
function
(
a
,
c
,
h
,
k
,
g
){
i
.
apply
(
b
.
callback
.
onClick
,[
c
,
h
,
k
,
g
])});
a
.
bind
(
c
.
EXPAND
,
function
(
a
,
c
,
h
){
i
.
apply
(
b
.
callback
.
onExpand
,[
a
,
c
,
h
])});
a
.
bind
(
c
.
COLLAPSE
,
function
(
a
,
c
,
h
){
i
.
apply
(
b
.
callback
.
onCollapse
,[
a
,
c
,
h
])});
a
.
bind
(
c
.
ASYNC_SUCCESS
,
function
(
a
,
c
,
h
,
k
){
i
.
apply
(
b
.
callback
.
onAsyncSuccess
,[
a
,
c
,
h
,
k
])});
a
.
bind
(
c
.
ASYNC_ERROR
,
function
(
a
,
c
,
h
,
k
,
g
,
f
){
i
.
apply
(
b
.
callback
.
onAsyncError
,[
a
,
c
,
h
,
k
,
g
,
f
])});
a
.
bind
(
c
.
REMOVE
,
function
(
a
,
c
,
h
){
i
.
apply
(
b
.
callback
.
onRemove
,[
a
,
c
,
h
])});
a
.
bind
(
c
.
SELECTED
,
function
(
a
,
c
,
h
){
i
.
apply
(
b
.
callback
.
onSelected
,[
c
,
h
])});
a
.
bind
(
c
.
UNSELECTED
,
function
(
a
,
c
,
h
){
i
.
apply
(
b
.
callback
.
onUnSelected
,[
c
,
h
])})}],
y
=
[
function
(
b
){
var
a
=
f
.
event
;
b
.
treeObj
.
unbind
(
a
.
NODECREATED
).
unbind
(
a
.
CLICK
).
unbind
(
a
.
EXPAND
).
unbind
(
a
.
COLLAPSE
).
unbind
(
a
.
ASYNC_SUCCESS
).
unbind
(
a
.
ASYNC_ERROR
).
unbind
(
a
.
REMOVE
).
unbind
(
a
.
SELECTED
).
unbind
(
a
.
UNSELECTED
)}],
z
=
[
function
(
b
){
var
a
=
g
.
getCache
(
b
);
a
||
(
a
=
{},
g
.
setCache
(
b
,
a
));
a
.
nodes
=
[];
a
.
doms
=
[]}],
A
=
[
function
(
b
,
a
,
c
,
d
,
e
,
h
){
if
(
c
){
var
k
=
g
.
getRoot
(
b
),
f
=
b
.
data
.
key
.
children
;
c
.
level
=
a
;
c
.
tId
=
b
.
treeId
+
"
_
"
+
++
k
.
zId
;
c
.
parentTId
=
d
?
d
.
tId
:
null
;
c
.
open
=
typeof
c
.
open
==
"
string
"
?
i
.
eqs
(
c
.
open
,
"
true
"
):
!!
c
.
open
;
i
.
isArray
(
c
[
f
])
&&!
(
c
.
isParent
===!
1
||
typeof
c
.
isParent
==
"
string
"
&&
i
.
eqs
(
c
.
isParent
,
"
false
"
))?(
c
.
isParent
=!
0
,
c
.
zAsync
=!
0
):(
c
.
isParent
=
typeof
c
.
isParent
==
"
string
"
?
i
.
eqs
(
c
.
isParent
,
"
true
"
):
!!
c
.
isParent
,
c
.
open
=
c
.
isParent
&&!
b
.
async
.
enable
?
c
.
open
:
!
1
,
c
.
zAsync
=!
c
.
isParent
);
c
.
isFirstNode
=
e
;
c
.
isLastNode
=
h
;
c
.
getParentNode
=
function
(){
return
g
.
getNodeCache
(
b
,
c
.
parentTId
)};
c
.
getPreNode
=
function
(){
return
g
.
getPreNode
(
b
,
c
)};
c
.
getNextNode
=
function
(){
return
g
.
getNextNode
(
b
,
c
)};
c
.
getIndex
=
function
(){
return
g
.
getNodeIndex
(
b
,
c
)};
c
.
getPath
=
function
(){
return
g
.
getNodePath
(
b
,
c
)};
c
.
isAjaxing
=!
1
;
g
.
fixPIdKeyValue
(
b
,
c
)}}],
t
=
[
function
(
b
){
var
a
=
b
.
target
,
c
=
g
.
getSetting
(
b
.
data
.
treeId
),
d
=
""
,
e
=
null
,
h
=
""
,
k
=
""
,
o
=
null
,
j
=
null
,
l
=
null
;
if
(
i
.
eqs
(
b
.
type
,
"
mousedown
"
))
k
=
"
mousedown
"
;
else
if
(
i
.
eqs
(
b
.
type
,
"
mouseup
"
))
k
=
"
mouseup
"
;
else
if
(
i
.
eqs
(
b
.
type
,
"
contextmenu
"
))
k
=
"
contextmenu
"
;
else
if
(
i
.
eqs
(
b
.
type
,
"
click
"
))
if
(
i
.
eqs
(
a
.
tagName
,
"
span
"
)
&&
a
.
getAttribute
(
"
treeNode
"
+
f
.
id
.
SWITCH
)
!==
null
)
d
=
i
.
getNodeMainDom
(
a
).
id
,
h
=
"
switchNode
"
;
else
{
if
(
l
=
i
.
getMDom
(
c
,
a
,[{
tagName
:
"
a
"
,
attrName
:
"
treeNode
"
+
f
.
id
.
A
}]))
d
=
i
.
getNodeMainDom
(
l
).
id
,
h
=
"
clickNode
"
}
else
if
(
i
.
eqs
(
b
.
type
,
"
dblclick
"
)
&&
(
k
=
"
dblclick
"
,
l
=
i
.
getMDom
(
c
,
a
,[{
tagName
:
"
a
"
,
attrName
:
"
treeNode
"
+
f
.
id
.
A
}])))
d
=
i
.
getNodeMainDom
(
l
).
id
,
h
=
"
switchNode
"
;
if
(
k
.
length
>
0
&&
d
.
length
==
0
&&
(
l
=
i
.
getMDom
(
c
,
a
,[{
tagName
:
"
a
"
,
attrName
:
"
treeNode
"
+
f
.
id
.
A
}])))
d
=
i
.
getNodeMainDom
(
l
).
id
;
if
(
d
.
length
>
0
)
switch
(
e
=
g
.
getNodeCache
(
c
,
d
),
h
){
case
"
switchNode
"
:
e
.
isParent
?
i
.
eqs
(
b
.
type
,
"
click
"
)
||
i
.
eqs
(
b
.
type
,
"
dblclick
"
)
&&
i
.
apply
(
c
.
view
.
dblClickExpand
,[
c
.
treeId
,
e
],
c
.
view
.
dblClickExpand
)?
o
=
H
:
h
=
""
:
h
=
""
;
break
;
case
"
clickNode
"
:
o
=
I
}
switch
(
k
){
case
"
mousedown
"
:
j
=
J
;
break
;
case
"
mouseup
"
:
j
=
K
;
break
;
case
"
dblclick
"
:
j
=
L
;
break
;
case
"
contextmenu
"
:
j
=
M
}
return
{
stop
:
!
1
,
node
:
e
,
nodeEventType
:
h
,
nodeEventCallback
:
o
,
treeEventType
:
k
,
treeEventCallback
:
j
}}],
B
=
[
function
(
b
){
var
a
=
g
.
getRoot
(
b
);
a
||
(
a
=
{},
g
.
setRoot
(
b
,
a
));
a
[
b
.
data
.
key
.
children
]
=
[];
a
.
expandTriggerFlag
=!
1
;
a
.
curSelectedList
=
[];
a
.
noSelection
=
!
0
;
a
.
createdNodes
=
[];
a
.
zId
=
0
;
a
.
_ver
=
(
new
Date
).
getTime
()}],
C
=
[],
D
=
[],
E
=
[],
F
=
[],
G
=
[],
g
=
{
addNodeCache
:
function
(
b
,
a
){
g
.
getCache
(
b
).
nodes
[
g
.
getNodeCacheId
(
a
.
tId
)]
=
a
},
getNodeCacheId
:
function
(
b
){
return
b
.
substring
(
b
.
lastIndexOf
(
"
_
"
)
+
1
)},
addAfterA
:
function
(
b
){
D
.
push
(
b
)},
addBeforeA
:
function
(
b
){
C
.
push
(
b
)},
addInnerAfterA
:
function
(
b
){
F
.
push
(
b
)},
addInnerBeforeA
:
function
(
b
){
E
.
push
(
b
)},
addInitBind
:
function
(
b
){
x
.
push
(
b
)},
addInitUnBind
:
function
(
b
){
y
.
push
(
b
)},
addInitCache
:
function
(
b
){
z
.
push
(
b
)},
addInitNode
:
function
(
b
){
A
.
push
(
b
)},
addInitProxy
:
function
(
b
,
a
){
a
?
t
.
splice
(
0
,
0
,
b
):
t
.
push
(
b
)},
addInitRoot
:
function
(
b
){
B
.
push
(
b
)},
addNodesData
:
function
(
b
,
a
,
c
,
d
){
var
e
=
b
.
data
.
key
.
children
;
a
[
e
]?
c
>=
a
[
e
].
length
&&
(
c
=-
1
):(
a
[
e
]
=
[],
c
=-
1
);
if
(
a
[
e
].
length
>
0
&&
c
===
0
)
a
[
e
][
0
].
isFirstNode
=!
1
,
j
.
setNodeLineIcos
(
b
,
a
[
e
][
0
]);
else
if
(
a
[
e
].
length
>
0
&&
c
<
0
)
a
[
e
][
a
[
e
].
length
-
1
].
isLastNode
=!
1
,
j
.
setNodeLineIcos
(
b
,
a
[
e
][
a
[
e
].
length
-
1
]);
a
.
isParent
=!
0
;
c
<
0
?
a
[
e
]
=
a
[
e
].
concat
(
d
):(
b
=
[
c
,
0
].
concat
(
d
),
a
[
e
].
splice
.
apply
(
a
[
e
],
b
))},
addSelectedNode
:
function
(
b
,
a
){
var
c
=
g
.
getRoot
(
b
);
g
.
isSelectedNode
(
b
,
a
)
||
c
.
curSelectedList
.
push
(
a
)},
addCreatedNode
:
function
(
b
,
a
){(
b
.
callback
.
onNodeCreated
||
b
.
view
.
addDiyDom
)
&&
g
.
getRoot
(
b
).
createdNodes
.
push
(
a
)},
addZTreeTools
:
function
(
b
){
G
.
push
(
b
)},
exSetting
:
function
(
b
){
q
.
extend
(
!
0
,
N
,
b
)},
fixPIdKeyValue
:
function
(
b
,
a
){
b
.
data
.
simpleData
.
enable
&&
(
a
[
b
.
data
.
simpleData
.
pIdKey
]
=
a
.
parentTId
?
a
.
getParentNode
()[
b
.
data
.
simpleData
.
idKey
]:
b
.
data
.
simpleData
.
rootPId
)},
getAfterA
:
function
(
b
,
a
,
c
){
for
(
var
d
=
0
,
e
=
D
.
length
;
d
<
e
;
d
++
)
D
[
d
].
apply
(
this
,
arguments
)},
getBeforeA
:
function
(
b
,
a
,
c
){
for
(
var
d
=
0
,
e
=
C
.
length
;
d
<
e
;
d
++
)
C
[
d
].
apply
(
this
,
arguments
)},
getInnerAfterA
:
function
(
b
,
a
,
c
){
for
(
var
d
=
0
,
e
=
F
.
length
;
d
<
e
;
d
++
)
F
[
d
].
apply
(
this
,
arguments
)},
getInnerBeforeA
:
function
(
b
,
a
,
c
){
for
(
var
d
=
0
,
e
=
E
.
length
;
d
<
e
;
d
++
)
E
[
d
].
apply
(
this
,
arguments
)},
getCache
:
function
(
b
){
return
w
[
b
.
treeId
]},
getNodeIndex
:
function
(
b
,
a
){
if
(
!
a
)
return
null
;
for
(
var
c
=
b
.
data
.
key
.
children
,
d
=
a
.
parentTId
?
a
.
getParentNode
():
g
.
getRoot
(
b
),
e
=
0
,
h
=
d
[
c
].
length
-
1
;
e
<=
h
;
e
++
)
if
(
d
[
c
][
e
]
===
a
)
return
e
;
return
-
1
},
getNextNode
:
function
(
b
,
a
){
if
(
!
a
)
return
null
;
for
(
var
c
=
b
.
data
.
key
.
children
,
d
=
a
.
parentTId
?
a
.
getParentNode
():
g
.
getRoot
(
b
),
e
=
0
,
h
=
d
[
c
].
length
-
1
;
e
<=
h
;
e
++
)
if
(
d
[
c
][
e
]
===
a
)
return
e
==
h
?
null
:
d
[
c
][
e
+
1
];
return
null
},
getNodeByParam
:
function
(
b
,
a
,
c
,
d
){
if
(
!
a
||!
c
)
return
null
;
for
(
var
e
=
b
.
data
.
key
.
children
,
h
=
0
,
k
=
a
.
length
;
h
<
k
;
h
++
){
if
(
a
[
h
][
c
]
==
d
)
return
a
[
h
];
var
f
=
g
.
getNodeByParam
(
b
,
a
[
h
][
e
],
c
,
d
);
if
(
f
)
return
f
}
return
null
},
getNodeCache
:
function
(
b
,
a
){
if
(
!
a
)
return
null
;
var
c
=
w
[
b
.
treeId
].
nodes
[
g
.
getNodeCacheId
(
a
)];
return
c
?
c
:
null
},
getNodeName
:
function
(
b
,
a
){
return
""
+
a
[
b
.
data
.
key
.
name
]},
getNodePath
:
function
(
b
,
a
){
if
(
!
a
)
return
null
;
var
c
;(
c
=
a
.
parentTId
?
a
.
getParentNode
().
getPath
():[])
&&
c
.
push
(
a
);
return
c
},
getNodeTitle
:
function
(
b
,
a
){
return
""
+
a
[
b
.
data
.
key
.
title
===
""
?
b
.
data
.
key
.
name
:
b
.
data
.
key
.
title
]},
getNodes
:
function
(
b
){
return
g
.
getRoot
(
b
)[
b
.
data
.
key
.
children
]},
getNodesByParam
:
function
(
b
,
a
,
c
,
d
){
if
(
!
a
||!
c
)
return
[];
for
(
var
e
=
b
.
data
.
key
.
children
,
h
=
[],
k
=
0
,
f
=
a
.
length
;
k
<
f
;
k
++
)
a
[
k
][
c
]
==
d
&&
h
.
push
(
a
[
k
]),
h
=
h
.
concat
(
g
.
getNodesByParam
(
b
,
a
[
k
][
e
],
c
,
d
));
return
h
},
getNodesByParamFuzzy
:
function
(
b
,
a
,
c
,
d
){
if
(
!
a
||!
c
)
return
[];
for
(
var
e
=
b
.
data
.
key
.
children
,
h
=
[],
d
=
d
.
toLowerCase
(),
k
=
0
,
f
=
a
.
length
;
k
<
f
;
k
++
)
typeof
a
[
k
][
c
]
==
"
string
"
&&
a
[
k
][
c
].
toLowerCase
().
indexOf
(
d
)
>-
1
&&
h
.
push
(
a
[
k
]),
h
=
h
.
concat
(
g
.
getNodesByParamFuzzy
(
b
,
a
[
k
][
e
],
c
,
d
));
return
h
},
getNodesByFilter
:
function
(
b
,
a
,
c
,
d
,
e
){
if
(
!
a
)
return
d
?
null
:[];
for
(
var
h
=
b
.
data
.
key
.
children
,
k
=
d
?
null
:[],
f
=
0
,
j
=
a
.
length
;
f
<
j
;
f
++
){
if
(
i
.
apply
(
c
,[
a
[
f
],
e
],
!
1
)){
if
(
d
)
return
a
[
f
];
k
.
push
(
a
[
f
])}
var
l
=
g
.
getNodesByFilter
(
b
,
a
[
f
][
h
],
c
,
d
,
e
);
if
(
d
&&
l
)
return
l
;
k
=
d
?
l
:
k
.
concat
(
l
)}
return
k
},
getPreNode
:
function
(
b
,
a
){
if
(
!
a
)
return
null
;
for
(
var
c
=
b
.
data
.
key
.
children
,
d
=
a
.
parentTId
?
a
.
getParentNode
():
g
.
getRoot
(
b
),
e
=
0
,
h
=
d
[
c
].
length
;
e
<
h
;
e
++
)
if
(
d
[
c
][
e
]
===
a
)
return
e
==
0
?
null
:
d
[
c
][
e
-
1
];
return
null
},
getRoot
:
function
(
b
){
return
b
?
v
[
b
.
treeId
]:
null
},
getRoots
:
function
(){
return
v
},
getSetting
:
function
(
b
){
return
s
[
b
]},
getSettings
:
function
(){
return
s
},
getZTreeTools
:
function
(
b
){
return
(
b
=
this
.
getRoot
(
this
.
getSetting
(
b
)))?
b
.
treeTools
:
null
},
initCache
:
function
(
b
){
for
(
var
a
=
0
,
c
=
z
.
length
;
a
<
c
;
a
++
)
z
[
a
].
apply
(
this
,
arguments
)},
initNode
:
function
(
b
,
a
,
c
,
d
,
e
,
h
){
for
(
var
k
=
0
,
f
=
A
.
length
;
k
<
f
;
k
++
)
A
[
k
].
apply
(
this
,
arguments
)},
initRoot
:
function
(
b
){
for
(
var
a
=
0
,
c
=
B
.
length
;
a
<
c
;
a
++
)
B
[
a
].
apply
(
this
,
arguments
)},
isSelectedNode
:
function
(
b
,
a
){
for
(
var
c
=
g
.
getRoot
(
b
),
d
=
0
,
e
=
c
.
curSelectedList
.
length
;
d
<
e
;
d
++
)
if
(
a
===
c
.
curSelectedList
[
d
])
return
!
0
;
return
!
1
},
removeNodeCache
:
function
(
b
,
a
){
var
c
=
b
.
data
.
key
.
children
;
if
(
a
[
c
])
for
(
var
d
=
0
,
e
=
a
[
c
].
length
;
d
<
e
;
d
++
)
g
.
removeNodeCache
(
b
,
a
[
c
][
d
]);
g
.
getCache
(
b
).
nodes
[
g
.
getNodeCacheId
(
a
.
tId
)]
=
null
},
removeSelectedNode
:
function
(
b
,
a
){
for
(
var
c
=
g
.
getRoot
(
b
),
d
=
0
,
e
=
c
.
curSelectedList
.
length
;
d
<
e
;
d
++
)
if
(
a
===
c
.
curSelectedList
[
d
]
||!
g
.
getNodeCache
(
b
,
c
.
curSelectedList
[
d
].
tId
))
c
.
curSelectedList
.
splice
(
d
,
1
),
b
.
treeObj
.
trigger
(
f
.
event
.
UNSELECTED
,[
b
.
treeId
,
a
]),
d
--
,
e
--
},
setCache
:
function
(
b
,
a
){
w
[
b
.
treeId
]
=
a
},
setRoot
:
function
(
b
,
a
){
v
[
b
.
treeId
]
=
a
},
setZTreeTools
:
function
(
b
,
a
){
for
(
var
c
=
0
,
d
=
G
.
length
;
c
<
d
;
c
++
)
G
[
c
].
apply
(
this
,
arguments
)},
transformToArrayFormat
:
function
(
b
,
a
){
if
(
!
a
)
return
[];
var
c
=
b
.
data
.
key
.
children
,
d
=
[];
if
(
i
.
isArray
(
a
))
for
(
var
e
=
0
,
h
=
a
.
length
;
e
<
h
;
e
++
)
d
.
push
(
a
[
e
]),
a
[
e
][
c
]
&&
(
d
=
d
.
concat
(
g
.
transformToArrayFormat
(
b
,
a
[
e
][
c
])));
else
d
.
push
(
a
),
a
[
c
]
&&
(
d
=
d
.
concat
(
g
.
transformToArrayFormat
(
b
,
a
[
c
])));
return
d
},
transformTozTreeFormat
:
function
(
b
,
a
){
var
c
,
d
,
e
=
b
.
data
.
simpleData
.
idKey
,
h
=
b
.
data
.
simpleData
.
pIdKey
,
k
=
b
.
data
.
key
.
children
;
if
(
!
e
||
e
==
""
||!
a
)
return
[];
if
(
i
.
isArray
(
a
)){
var
f
=
[],
g
=
{};
for
(
c
=
0
,
d
=
a
.
length
;
c
<
d
;
c
++
)
g
[
a
[
c
][
e
]]
=
a
[
c
];
for
(
c
=
0
,
d
=
a
.
length
;
c
<
d
;
c
++
)
g
[
a
[
c
][
h
]]
&&
a
[
c
][
e
]
!=
a
[
c
][
h
]?(
g
[
a
[
c
][
h
]][
k
]
||
(
g
[
a
[
c
][
h
]][
k
]
=
[]),
g
[
a
[
c
][
h
]][
k
].
push
(
a
[
c
])):
f
.
push
(
a
[
c
]);
return
f
}
else
return
[
a
]}},
m
=
{
bindEvent
:
function
(
b
){
for
(
var
a
=
0
,
c
=
x
.
length
;
a
<
c
;
a
++
)
x
[
a
].
apply
(
this
,
arguments
)},
unbindEvent
:
function
(
b
){
for
(
var
a
=
0
,
c
=
y
.
length
;
a
<
c
;
a
++
)
y
[
a
].
apply
(
this
,
arguments
)},
bindTree
:
function
(
b
){
var
a
=
{
treeId
:
b
.
treeId
},
c
=
b
.
treeObj
;
b
.
view
.
txtSelectedEnable
||
c
.
bind
(
"
selectstart
"
,
u
).
css
({
"
-moz-user-select
"
:
"
-moz-none
"
});
c
.
bind
(
"
click
"
,
a
,
m
.
proxy
);
c
.
bind
(
"
dblclick
"
,
a
,
m
.
proxy
);
c
.
bind
(
"
mouseover
"
,
a
,
m
.
proxy
);
c
.
bind
(
"
mouseout
"
,
a
,
m
.
proxy
);
c
.
bind
(
"
mousedown
"
,
a
,
m
.
proxy
);
c
.
bind
(
"
mouseup
"
,
a
,
m
.
proxy
);
c
.
bind
(
"
contextmenu
"
,
a
,
m
.
proxy
)},
unbindTree
:
function
(
b
){
b
.
treeObj
.
unbind
(
"
selectstart
"
,
u
).
unbind
(
"
click
"
,
m
.
proxy
).
unbind
(
"
dblclick
"
,
m
.
proxy
).
unbind
(
"
mouseover
"
,
m
.
proxy
).
unbind
(
"
mouseout
"
,
m
.
proxy
).
unbind
(
"
mousedown
"
,
m
.
proxy
).
unbind
(
"
mouseup
"
,
m
.
proxy
).
unbind
(
"
contextmenu
"
,
m
.
proxy
)},
doProxy
:
function
(
b
){
for
(
var
a
=
[],
c
=
0
,
d
=
t
.
length
;
c
<
d
;
c
++
){
var
e
=
t
[
c
].
apply
(
this
,
arguments
);
a
.
push
(
e
);
if
(
e
.
stop
)
break
}
return
a
},
proxy
:
function
(
b
){
var
a
=
g
.
getSetting
(
b
.
data
.
treeId
);
if
(
!
i
.
uCanDo
(
a
,
b
))
return
!
0
;
for
(
var
a
=
m
.
doProxy
(
b
),
c
=!
0
,
d
=
0
,
e
=
a
.
length
;
d
<
e
;
d
++
){
var
h
=
a
[
d
];
h
.
nodeEventCallback
&&
(
c
=
h
.
nodeEventCallback
.
apply
(
h
,[
b
,
h
.
node
])
&&
c
);
h
.
treeEventCallback
&&
(
c
=
h
.
treeEventCallback
.
apply
(
h
,[
b
,
h
.
node
])
&&
c
)}
return
c
}};
H
=
function
(
b
,
a
){
var
c
=
g
.
getSetting
(
b
.
data
.
treeId
);
if
(
a
.
open
){
if
(
i
.
apply
(
c
.
callback
.
beforeCollapse
,[
c
.
treeId
,
a
],
!
0
)
==!
1
)
return
!
0
}
else
if
(
i
.
apply
(
c
.
callback
.
beforeExpand
,[
c
.
treeId
,
a
],
!
0
)
==!
1
)
return
!
0
;
g
.
getRoot
(
c
).
expandTriggerFlag
=!
0
;
j
.
switchNode
(
c
,
a
);
return
!
0
};
I
=
function
(
b
,
a
){
var
c
=
g
.
getSetting
(
b
.
data
.
treeId
),
d
=
c
.
view
.
autoCancelSelected
&&
(
b
.
ctrlKey
||
b
.
metaKey
)
&&
g
.
isSelectedNode
(
c
,
a
)?
0
:
c
.
view
.
autoCancelSelected
&&
(
b
.
ctrlKey
||
b
.
metaKey
)
&&
c
.
view
.
selectedMulti
?
2
:
1
;
if
(
i
.
apply
(
c
.
callback
.
beforeClick
,[
c
.
treeId
,
a
,
d
],
!
0
)
==!
1
)
return
!
0
;
d
===
0
?
j
.
cancelPreSelectedNode
(
c
,
a
):
j
.
selectNode
(
c
,
a
,
d
===
2
);
c
.
treeObj
.
trigger
(
f
.
event
.
CLICK
,[
b
,
c
.
treeId
,
a
,
d
]);
return
!
0
};
J
=
function
(
b
,
a
){
var
c
=
g
.
getSetting
(
b
.
data
.
treeId
);
i
.
apply
(
c
.
callback
.
beforeMouseDown
,[
c
.
treeId
,
a
],
!
0
)
&&
i
.
apply
(
c
.
callback
.
onMouseDown
,[
b
,
c
.
treeId
,
a
]);
return
!
0
};
K
=
function
(
b
,
a
){
var
c
=
g
.
getSetting
(
b
.
data
.
treeId
);
i
.
apply
(
c
.
callback
.
beforeMouseUp
,[
c
.
treeId
,
a
],
!
0
)
&&
i
.
apply
(
c
.
callback
.
onMouseUp
,[
b
,
c
.
treeId
,
a
]);
return
!
0
};
L
=
function
(
b
,
a
){
var
c
=
g
.
getSetting
(
b
.
data
.
treeId
);
i
.
apply
(
c
.
callback
.
beforeDblClick
,[
c
.
treeId
,
a
],
!
0
)
&&
i
.
apply
(
c
.
callback
.
onDblClick
,[
b
,
c
.
treeId
,
a
]);
return
!
0
};
M
=
function
(
b
,
a
){
var
c
=
g
.
getSetting
(
b
.
data
.
treeId
);
i
.
apply
(
c
.
callback
.
beforeRightClick
,[
c
.
treeId
,
a
],
!
0
)
&&
i
.
apply
(
c
.
callback
.
onRightClick
,[
b
,
c
.
treeId
,
a
]);
return
typeof
c
.
callback
.
onRightClick
!=
"
function
"
};
u
=
function
(
b
){
b
=
b
.
originalEvent
.
srcElement
.
nodeName
.
toLowerCase
();
return
b
===
"
input
"
||
b
===
"
textarea
"
};
var
i
=
{
apply
:
function
(
b
,
a
,
c
){
return
typeof
b
==
"
function
"
?
b
.
apply
(
O
,
a
?
a
:[]):
c
},
canAsync
:
function
(
b
,
a
){
var
c
=
b
.
data
.
key
.
children
;
return
b
.
async
.
enable
&&
a
&&
a
.
isParent
&&!
(
a
.
zAsync
||
a
[
c
]
&&
a
[
c
].
length
>
0
)},
clone
:
function
(
b
){
if
(
b
===
null
)
return
null
;
var
a
=
i
.
isArray
(
b
)?[]:{},
c
;
for
(
c
in
b
)
a
[
c
]
=
b
[
c
]
instanceof
Date
?
new
Date
(
b
[
c
].
getTime
()):
typeof
b
[
c
]
===
"
object
"
?
i
.
clone
(
b
[
c
]):
b
[
c
];
return
a
},
eqs
:
function
(
b
,
a
){
return
b
.
toLowerCase
()
===
a
.
toLowerCase
()},
isArray
:
function
(
b
){
return
Object
.
prototype
.
toString
.
apply
(
b
)
===
"
[object Array]
"
},
isElement
:
function
(
b
){
return
typeof
HTMLElement
===
"
object
"
?
b
instanceof
HTMLElement
:
b
&&
typeof
b
===
"
object
"
&&
b
!==
null
&&
b
.
nodeType
===
1
&&
typeof
b
.
nodeName
===
"
string
"
},
$
:
function
(
b
,
a
,
c
){
a
&&
typeof
a
!=
"
string
"
&&
(
c
=
a
,
a
=
""
);
return
typeof
b
==
"
string
"
?
q
(
b
,
c
?
c
.
treeObj
.
get
(
0
).
ownerDocument
:
null
):
q
(
"
#
"
+
b
.
tId
+
a
,
c
?
c
.
treeObj
:
null
)},
getMDom
:
function
(
b
,
a
,
c
){
if
(
!
a
)
return
null
;
for
(;
a
&&
a
.
id
!==
b
.
treeId
;){
for
(
var
d
=
0
,
e
=
c
.
length
;
a
.
tagName
&&
d
<
e
;
d
++
)
if
(
i
.
eqs
(
a
.
tagName
,
c
[
d
].
tagName
)
&&
a
.
getAttribute
(
c
[
d
].
attrName
)
!==
null
)
return
a
;
a
=
a
.
parentNode
}
return
null
},
getNodeMainDom
:
function
(
b
){
return
q
(
b
).
parent
(
"
li
"
).
get
(
0
)
||
q
(
b
).
parentsUntil
(
"
li
"
).
parent
().
get
(
0
)},
isChildOrSelf
:
function
(
b
,
a
){
return
q
(
b
).
closest
(
"
#
"
+
a
).
length
>
0
},
uCanDo
:
function
(){
return
!
0
}},
j
=
{
addNodes
:
function
(
b
,
a
,
c
,
d
,
e
){
if
(
!
b
.
data
.
keep
.
leaf
||!
a
||
a
.
isParent
)
if
(
i
.
isArray
(
d
)
||
(
d
=
[
d
]),
b
.
data
.
simpleData
.
enable
&&
(
d
=
g
.
transformTozTreeFormat
(
b
,
d
)),
a
){
var
h
=
l
(
a
,
f
.
id
.
SWITCH
,
b
),
k
=
l
(
a
,
f
.
id
.
ICON
,
b
),
o
=
l
(
a
,
f
.
id
.
UL
,
b
);
if
(
!
a
.
open
)
j
.
replaceSwitchClass
(
a
,
h
,
f
.
folder
.
CLOSE
),
j
.
replaceIcoClass
(
a
,
k
,
f
.
folder
.
CLOSE
),
a
.
open
=!
1
,
o
.
css
({
display
:
"
none
"
});
g
.
addNodesData
(
b
,
a
,
c
,
d
);
j
.
createNodes
(
b
,
a
.
level
+
1
,
d
,
a
,
c
);
e
||
j
.
expandCollapseParentNode
(
b
,
a
,
!
0
)}
else
g
.
addNodesData
(
b
,
g
.
getRoot
(
b
),
c
,
d
),
j
.
createNodes
(
b
,
0
,
d
,
null
,
c
)},
appendNodes
:
function
(
b
,
a
,
c
,
d
,
e
,
h
,
k
){
if
(
!
c
)
return
[];
var
f
=
[],
i
=
b
.
data
.
key
.
children
,
l
=
(
d
?
d
:
g
.
getRoot
(
b
))[
i
],
r
,
P
;
if
(
!
l
||
e
>=
l
.
length
-
c
.
length
)
e
=-
1
;
for
(
var
m
=
0
,
q
=
c
.
length
;
m
<
q
;
m
++
){
var
n
=
c
[
m
];
h
&&
(
r
=
(
e
===
0
||
l
.
length
==
c
.
length
)
&&
m
==
0
,
P
=
e
<
0
&&
m
==
c
.
length
-
1
,
g
.
initNode
(
b
,
a
,
n
,
d
,
r
,
P
,
k
),
g
.
addNodeCache
(
b
,
n
));
r
=
[];
n
[
i
]
&&
n
[
i
].
length
>
0
&&
(
r
=
j
.
appendNodes
(
b
,
a
+
1
,
n
[
i
],
n
,
-
1
,
h
,
k
&&
n
.
open
));
k
&&
(
j
.
makeDOMNodeMainBefore
(
f
,
b
,
n
),
j
.
makeDOMNodeLine
(
f
,
b
,
n
),
g
.
getBeforeA
(
b
,
n
,
f
),
j
.
makeDOMNodeNameBefore
(
f
,
b
,
n
),
g
.
getInnerBeforeA
(
b
,
n
,
f
),
j
.
makeDOMNodeIcon
(
f
,
b
,
n
),
g
.
getInnerAfterA
(
b
,
n
,
f
),
j
.
makeDOMNodeNameAfter
(
f
,
b
,
n
),
g
.
getAfterA
(
b
,
n
,
f
),
n
.
isParent
&&
n
.
open
&&
j
.
makeUlHtml
(
b
,
n
,
f
,
r
.
join
(
""
)),
j
.
makeDOMNodeMainAfter
(
f
,
b
,
n
),
g
.
addCreatedNode
(
b
,
n
))}
return
f
},
appendParentULDom
:
function
(
b
,
a
){
var
c
=
[],
d
=
l
(
a
,
b
);
!
d
.
get
(
0
)
&&
a
.
parentTId
&&
(
j
.
appendParentULDom
(
b
,
a
.
getParentNode
()),
d
=
l
(
a
,
b
));
var
e
=
l
(
a
,
f
.
id
.
UL
,
b
);
e
.
get
(
0
)
&&
e
.
remove
();
e
=
j
.
appendNodes
(
b
,
a
.
level
+
1
,
a
[
b
.
data
.
key
.
children
],
a
,
-
1
,
!
1
,
!
0
);
j
.
makeUlHtml
(
b
,
a
,
c
,
e
.
join
(
""
));
d
.
append
(
c
.
join
(
""
))},
asyncNode
:
function
(
b
,
a
,
c
,
d
){
var
e
,
h
;
if
(
a
&&!
a
.
isParent
)
return
i
.
apply
(
d
),
!
1
;
else
if
(
a
&&
a
.
isAjaxing
)
return
!
1
;
else
if
(
i
.
apply
(
b
.
callback
.
beforeAsync
,[
b
.
treeId
,
a
],
!
0
)
==!
1
)
return
i
.
apply
(
d
),
!
1
;
if
(
a
)
a
.
isAjaxing
=
!
0
,
l
(
a
,
f
.
id
.
ICON
,
b
).
attr
({
style
:
""
,
"
class
"
:
f
.
className
.
BUTTON
+
"
"
+
f
.
className
.
ICO_LOADING
});
var
k
=
{};
for
(
e
=
0
,
h
=
b
.
async
.
autoParam
.
length
;
a
&&
e
<
h
;
e
++
){
var
o
=
b
.
async
.
autoParam
[
e
].
split
(
"
=
"
),
p
=
o
;
o
.
length
>
1
&&
(
p
=
o
[
1
],
o
=
o
[
0
]);
k
[
p
]
=
a
[
o
]}
if
(
i
.
isArray
(
b
.
async
.
otherParam
))
for
(
e
=
0
,
h
=
b
.
async
.
otherParam
.
length
;
e
<
h
;
e
+=
2
)
k
[
b
.
async
.
otherParam
[
e
]]
=
b
.
async
.
otherParam
[
e
+
1
];
else
for
(
var
m
in
b
.
async
.
otherParam
)
k
[
m
]
=
b
.
async
.
otherParam
[
m
];
var
r
=
g
.
getRoot
(
b
).
_ver
;
q
.
ajax
({
contentType
:
b
.
async
.
contentType
,
cache
:
!
1
,
type
:
b
.
async
.
type
,
url
:
i
.
apply
(
b
.
async
.
url
,[
b
.
treeId
,
a
],
b
.
async
.
url
),
data
:
b
.
async
.
contentType
.
indexOf
(
"
application/json
"
)
>-
1
?
JSON
.
stringify
(
k
):
k
,
dataType
:
b
.
async
.
dataType
,
success
:
function
(
h
){
if
(
r
==
g
.
getRoot
(
b
).
_ver
){
var
e
=
[];
try
{
e
=!
h
||
h
.
length
==
0
?[]:
typeof
h
==
"
string
"
?
eval
(
"
(
"
+
h
+
"
)
"
):
h
}
catch
(
k
){
e
=
h
}
if
(
a
)
a
.
isAjaxing
=
null
,
a
.
zAsync
=!
0
;
j
.
setNodeLineIcos
(
b
,
a
);
e
&&
e
!==
""
?(
e
=
i
.
apply
(
b
.
async
.
dataFilter
,[
b
.
treeId
,
a
,
e
],
e
),
j
.
addNodes
(
b
,
a
,
-
1
,
e
?
i
.
clone
(
e
):[],
!!
c
)):
j
.
addNodes
(
b
,
a
,
-
1
,[],
!!
c
);
b
.
treeObj
.
trigger
(
f
.
event
.
ASYNC_SUCCESS
,
[
b
.
treeId
,
a
,
h
]);
i
.
apply
(
d
)}},
error
:
function
(
c
,
d
,
h
){
if
(
r
==
g
.
getRoot
(
b
).
_ver
){
if
(
a
)
a
.
isAjaxing
=
null
;
j
.
setNodeLineIcos
(
b
,
a
);
b
.
treeObj
.
trigger
(
f
.
event
.
ASYNC_ERROR
,[
b
.
treeId
,
a
,
c
,
d
,
h
])}}});
return
!
0
},
cancelPreSelectedNode
:
function
(
b
,
a
,
c
){
var
d
=
g
.
getRoot
(
b
).
curSelectedList
,
e
,
h
;
for
(
e
=
d
.
length
-
1
;
e
>=
0
;
e
--
)
if
(
h
=
d
[
e
],
a
===
h
||!
a
&&
(
!
c
||
c
!==
h
))
if
(
l
(
h
,
f
.
id
.
A
,
b
).
removeClass
(
f
.
node
.
CURSELECTED
),
a
){
g
.
removeSelectedNode
(
b
,
a
);
break
}
else
d
.
splice
(
e
,
1
),
b
.
treeObj
.
trigger
(
f
.
event
.
UNSELECTED
,[
b
.
treeId
,
h
])},
createNodeCallback
:
function
(
b
){
if
(
b
.
callback
.
onNodeCreated
||
b
.
view
.
addDiyDom
)
for
(
var
a
=
g
.
getRoot
(
b
);
a
.
createdNodes
.
length
>
0
;){
var
c
=
a
.
createdNodes
.
shift
();
i
.
apply
(
b
.
view
.
addDiyDom
,[
b
.
treeId
,
c
]);
b
.
callback
.
onNodeCreated
&&
b
.
treeObj
.
trigger
(
f
.
event
.
NODECREATED
,[
b
.
treeId
,
c
])}},
createNodes
:
function
(
b
,
a
,
c
,
d
,
e
){
if
(
c
&&
c
.
length
!=
0
){
var
h
=
g
.
getRoot
(
b
),
k
=
b
.
data
.
key
.
children
,
k
=!
d
||
d
.
open
||!!
l
(
d
[
k
][
0
],
b
).
get
(
0
);
h
.
createdNodes
=
[];
var
a
=
j
.
appendNodes
(
b
,
a
,
c
,
d
,
e
,
!
0
,
k
),
i
,
p
;
d
?(
d
=
l
(
d
,
f
.
id
.
UL
,
b
),
d
.
get
(
0
)
&&
(
i
=
d
)):
i
=
b
.
treeObj
;
i
&&
(
e
>=
0
&&
(
p
=
i
.
children
()[
e
]),
e
>=
0
&&
p
?
q
(
p
).
before
(
a
.
join
(
""
)):
i
.
append
(
a
.
join
(
""
)));
j
.
createNodeCallback
(
b
)}},
destroy
:
function
(
b
){
b
&&
(
g
.
initCache
(
b
),
g
.
initRoot
(
b
),
m
.
unbindTree
(
b
),
m
.
unbindEvent
(
b
),
b
.
treeObj
.
empty
(),
delete
s
[
b
.
treeId
])},
expandCollapseNode
:
function
(
b
,
a
,
c
,
d
,
e
){
var
h
=
g
.
getRoot
(
b
),
k
=
b
.
data
.
key
.
children
,
o
;
if
(
a
){
if
(
h
.
expandTriggerFlag
)
o
=
e
,
e
=
function
(){
o
&&
o
();
a
.
open
?
b
.
treeObj
.
trigger
(
f
.
event
.
EXPAND
,[
b
.
treeId
,
a
]):
b
.
treeObj
.
trigger
(
f
.
event
.
COLLAPSE
,[
b
.
treeId
,
a
])},
h
.
expandTriggerFlag
=!
1
;
if
(
!
a
.
open
&&
a
.
isParent
&&
(
!
l
(
a
,
f
.
id
.
UL
,
b
).
get
(
0
)
||
a
[
k
]
&&
a
[
k
].
length
>
0
&&!
l
(
a
[
k
][
0
],
b
).
get
(
0
)))
j
.
appendParentULDom
(
b
,
a
),
j
.
createNodeCallback
(
b
);
if
(
a
.
open
==
c
)
i
.
apply
(
e
,[]);
else
{
var
c
=
l
(
a
,
f
.
id
.
UL
,
b
),
h
=
l
(
a
,
f
.
id
.
SWITCH
,
b
),
p
=
l
(
a
,
f
.
id
.
ICON
,
b
);
a
.
isParent
?(
a
.
open
=!
a
.
open
,
a
.
iconOpen
&&
a
.
iconClose
&&
p
.
attr
(
"
style
"
,
j
.
makeNodeIcoStyle
(
b
,
a
)),
a
.
open
?(
j
.
replaceSwitchClass
(
a
,
h
,
f
.
folder
.
OPEN
),
j
.
replaceIcoClass
(
a
,
p
,
f
.
folder
.
OPEN
),
d
==!
1
||
b
.
view
.
expandSpeed
==
""
?(
c
.
show
(),
i
.
apply
(
e
,[])):
a
[
k
]
&&
a
[
k
].
length
>
0
?
c
.
slideDown
(
b
.
view
.
expandSpeed
,
e
):(
c
.
show
(),
i
.
apply
(
e
,[]))):(
j
.
replaceSwitchClass
(
a
,
h
,
f
.
folder
.
CLOSE
),
j
.
replaceIcoClass
(
a
,
p
,
f
.
folder
.
CLOSE
),
d
==!
1
||
b
.
view
.
expandSpeed
==
""
||!
(
a
[
k
]
&&
a
[
k
].
length
>
0
)?(
c
.
hide
(),
i
.
apply
(
e
,[])):
c
.
slideUp
(
b
.
view
.
expandSpeed
,
e
))):
i
.
apply
(
e
,[])}}
else
i
.
apply
(
e
,[])},
expandCollapseParentNode
:
function
(
b
,
a
,
c
,
d
,
e
){
a
&&
(
a
.
parentTId
?(
j
.
expandCollapseNode
(
b
,
a
,
c
,
d
),
a
.
parentTId
&&
j
.
expandCollapseParentNode
(
b
,
a
.
getParentNode
(),
c
,
d
,
e
)):
j
.
expandCollapseNode
(
b
,
a
,
c
,
d
,
e
))},
expandCollapseSonNode
:
function
(
b
,
a
,
c
,
d
,
e
){
var
h
=
g
.
getRoot
(
b
),
k
=
b
.
data
.
key
.
children
,
h
=
a
?
a
[
k
]:
h
[
k
],
k
=
a
?
!
1
:
d
,
f
=
g
.
getRoot
(
b
).
expandTriggerFlag
;
g
.
getRoot
(
b
).
expandTriggerFlag
=!
1
;
if
(
h
)
for
(
var
i
=
0
,
l
=
h
.
length
;
i
<
l
;
i
++
)
h
[
i
]
&&
j
.
expandCollapseSonNode
(
b
,
h
[
i
],
c
,
k
);
g
.
getRoot
(
b
).
expandTriggerFlag
=
f
;
j
.
expandCollapseNode
(
b
,
a
,
c
,
d
,
e
)},
isSelectedNode
:
function
(
b
,
a
){
if
(
!
a
)
return
!
1
;
var
c
=
g
.
getRoot
(
b
).
curSelectedList
,
d
;
for
(
d
=
c
.
length
-
1
;
d
>=
0
;
d
--
)
if
(
a
===
c
[
d
])
return
!
0
;
return
!
1
},
makeDOMNodeIcon
:
function
(
b
,
a
,
c
){
var
d
=
g
.
getNodeName
(
a
,
c
),
d
=
a
.
view
.
nameIsHTML
?
d
:
d
.
replace
(
/&/g
,
"
&
"
).
replace
(
/</g
,
"
<
"
).
replace
(
/>/g
,
"
>
"
);
b
.
push
(
"
<span id='
"
,
c
.
tId
,
f
.
id
.
ICON
,
"
' title='' treeNode
"
,
f
.
id
.
ICON
,
"
class='
"
,
j
.
makeNodeIcoClass
(
a
,
c
),
"
' style='
"
,
j
.
makeNodeIcoStyle
(
a
,
c
),
"
'></span><span id='
"
,
c
.
tId
,
f
.
id
.
SPAN
,
"
' class='
"
,
f
.
className
.
NAME
,
"
'>
"
,
d
,
"
</span>
"
)},
makeDOMNodeLine
:
function
(
b
,
a
,
c
){
b
.
push
(
"
<span id='
"
,
c
.
tId
,
f
.
id
.
SWITCH
,
"
' title='' class='
"
,
j
.
makeNodeLineClass
(
a
,
c
),
"
' treeNode
"
,
f
.
id
.
SWITCH
,
"
></span>
"
)},
makeDOMNodeMainAfter
:
function
(
b
){
b
.
push
(
"
</li>
"
)},
makeDOMNodeMainBefore
:
function
(
b
,
a
,
c
){
b
.
push
(
"
<li id='
"
,
c
.
tId
,
"
' class='
"
,
f
.
className
.
LEVEL
,
c
.
level
,
"
' tabindex='0' hidefocus='true' treenode>
"
)},
makeDOMNodeNameAfter
:
function
(
b
){
b
.
push
(
"
</a>
"
)},
makeDOMNodeNameBefore
:
function
(
b
,
a
,
c
){
var
d
=
g
.
getNodeTitle
(
a
,
c
),
e
=
j
.
makeNodeUrl
(
a
,
c
),
h
=
j
.
makeNodeFontCss
(
a
,
c
),
k
=
[],
o
;
for
(
o
in
h
)
k
.
push
(
o
,
"
:
"
,
h
[
o
],
"
;
"
);
b
.
push
(
"
<a id='
"
,
c
.
tId
,
f
.
id
.
A
,
"
' class='
"
,
f
.
className
.
LEVEL
,
c
.
level
,
"
' treeNode
"
,
f
.
id
.
A
,
'
onclick="
'
,
c
.
click
||
""
,
'
"
'
,
e
!=
null
&&
e
.
length
>
0
?
"
href='
"
+
e
+
"
'
"
:
""
,
"
target='
"
,
j
.
makeNodeTarget
(
c
),
"
' style='
"
,
k
.
join
(
""
),
"
'
"
);
i
.
apply
(
a
.
view
.
showTitle
,[
a
.
treeId
,
c
],
a
.
view
.
showTitle
)
&&
d
&&
b
.
push
(
"
title='
"
,
d
.
replace
(
/'/g
,
"
'
"
).
replace
(
/</g
,
"
<
"
).
replace
(
/>/g
,
"
>
"
),
"
'
"
);
b
.
push
(
"
>
"
)},
makeNodeFontCss
:
function
(
b
,
a
){
var
c
=
i
.
apply
(
b
.
view
.
fontCss
,[
b
.
treeId
,
a
],
b
.
view
.
fontCss
);
return
c
&&
typeof
c
!=
"
function
"
?
c
:{}},
makeNodeIcoClass
:
function
(
b
,
a
){
var
c
=
[
"
ico
"
];
a
.
isAjaxing
||
(
c
[
0
]
=
(
a
.
iconSkin
?
a
.
iconSkin
+
"
_
"
:
""
)
+
c
[
0
],
a
.
isParent
?
c
.
push
(
a
.
open
?
f
.
folder
.
OPEN
:
f
.
folder
.
CLOSE
):
c
.
push
(
f
.
folder
.
DOCU
));
return
f
.
className
.
BUTTON
+
"
"
+
c
.
join
(
"
_
"
)},
makeNodeIcoStyle
:
function
(
b
,
a
){
var
c
=
[];
if
(
!
a
.
isAjaxing
){
var
d
=
a
.
isParent
&&
a
.
iconOpen
&&
a
.
iconClose
?
a
.
open
?
a
.
iconOpen
:
a
.
iconClose
:
a
[
b
.
data
.
key
.
icon
];
d
&&
c
.
push
(
"
background:url(
"
,
d
,
"
) 0 0 no-repeat;
"
);(
b
.
view
.
showIcon
==!
1
||!
i
.
apply
(
b
.
view
.
showIcon
,[
b
.
treeId
,
a
],
!
0
))
&&
c
.
push
(
"
width:0px;height:0px;
"
)}
return
c
.
join
(
""
)},
makeNodeLineClass
:
function
(
b
,
a
){
var
c
=
[];
b
.
view
.
showLine
?
a
.
level
==
0
&&
a
.
isFirstNode
&&
a
.
isLastNode
?
c
.
push
(
f
.
line
.
ROOT
):
a
.
level
==
0
&&
a
.
isFirstNode
?
c
.
push
(
f
.
line
.
ROOTS
):
a
.
isLastNode
?
c
.
push
(
f
.
line
.
BOTTOM
):
c
.
push
(
f
.
line
.
CENTER
):
c
.
push
(
f
.
line
.
NOLINE
);
a
.
isParent
?
c
.
push
(
a
.
open
?
f
.
folder
.
OPEN
:
f
.
folder
.
CLOSE
):
c
.
push
(
f
.
folder
.
DOCU
);
return
j
.
makeNodeLineClassEx
(
a
)
+
c
.
join
(
"
_
"
)},
makeNodeLineClassEx
:
function
(
b
){
return
f
.
className
.
BUTTON
+
"
"
+
f
.
className
.
LEVEL
+
b
.
level
+
"
"
+
f
.
className
.
SWITCH
+
"
"
},
makeNodeTarget
:
function
(
b
){
return
b
.
target
||
"
_blank
"
},
makeNodeUrl
:
function
(
b
,
a
){
var
c
=
b
.
data
.
key
.
url
;
return
a
[
c
]?
a
[
c
]:
null
},
makeUlHtml
:
function
(
b
,
a
,
c
,
d
){
c
.
push
(
"
<ul id='
"
,
a
.
tId
,
f
.
id
.
UL
,
"
' class='
"
,
f
.
className
.
LEVEL
,
a
.
level
,
"
"
,
j
.
makeUlLineClass
(
b
,
a
),
"
' style='display:
"
,
a
.
open
?
"
block
"
:
"
none
"
,
"
'>
"
);
c
.
push
(
d
);
c
.
push
(
"
</ul>
"
)},
makeUlLineClass
:
function
(
b
,
a
){
return
b
.
view
.
showLine
&&!
a
.
isLastNode
?
f
.
line
.
LINE
:
""
},
removeChildNodes
:
function
(
b
,
a
){
if
(
a
){
var
c
=
b
.
data
.
key
.
children
,
d
=
a
[
c
];
if
(
d
){
for
(
var
e
=
0
,
h
=
d
.
length
;
e
<
h
;
e
++
)
g
.
removeNodeCache
(
b
,
d
[
e
]);
g
.
removeSelectedNode
(
b
);
delete
a
[
c
];
b
.
data
.
keep
.
parent
?
l
(
a
,
f
.
id
.
UL
,
b
).
empty
():(
a
.
isParent
=!
1
,
a
.
open
=!
1
,
c
=
l
(
a
,
f
.
id
.
SWITCH
,
b
),
d
=
l
(
a
,
f
.
id
.
ICON
,
b
),
j
.
replaceSwitchClass
(
a
,
c
,
f
.
folder
.
DOCU
),
j
.
replaceIcoClass
(
a
,
d
,
f
.
folder
.
DOCU
),
l
(
a
,
f
.
id
.
UL
,
b
).
remove
())}}},
scrollIntoView
:
function
(
b
,
a
){
if
(
a
)
if
(
typeof
Element
===
"
undefined
"
){
var
c
=
b
.
treeObj
.
get
(
0
).
getBoundingClientRect
(),
d
=
a
.
getBoundingClientRect
();(
d
.
top
<
c
.
top
||
d
.
bottom
>
c
.
bottom
||
d
.
right
>
c
.
right
||
d
.
left
<
c
.
left
)
&&
a
.
scrollIntoView
()}
else
{
if
(
!
Element
.
prototype
.
scrollIntoViewIfNeeded
)
Element
.
prototype
.
scrollIntoViewIfNeeded
=
function
(
a
){
function
b
(
a
,
c
,
d
,
e
){
return
{
left
:
a
,
top
:
c
,
width
:
d
,
height
:
e
,
right
:
a
+
d
,
bottom
:
c
+
e
,
translate
:
function
(
f
,
k
){
return
b
(
f
+
a
,
k
+
c
,
d
,
e
)},
relativeFromTo
:
function
(
k
,
g
){
var
j
=
a
,
i
=
c
,
k
=
k
.
offsetParent
,
g
=
g
.
offsetParent
;
if
(
k
===
g
)
return
f
;
for
(;
k
;
k
=
k
.
offsetParent
)
j
+=
k
.
offsetLeft
+
k
.
clientLeft
,
i
+=
k
.
offsetTop
+
k
.
clientTop
;
for
(;
g
;
g
=
g
.
offsetParent
)
j
-=
g
.
offsetLeft
+
g
.
clientLeft
,
i
-=
g
.
offsetTop
+
g
.
clientTop
;
return
b
(
j
,
i
,
d
,
e
)}}}
for
(
var
c
,
d
=
this
,
f
=
b
(
this
.
offsetLeft
,
this
.
offsetTop
,
this
.
offsetWidth
,
this
.
offsetHeight
);
i
.
isElement
(
c
=
d
.
parentNode
);){
var
g
=
c
.
offsetLeft
+
c
.
clientLeft
,
j
=
c
.
offsetTop
+
c
.
clientTop
,
f
=
f
.
relativeFromTo
(
d
,
c
).
translate
(
-
g
,
-
j
);
c
.
scrollLeft
=!
1
===
a
||
f
.
left
<=
c
.
scrollLeft
+
c
.
clientWidth
&&
c
.
scrollLeft
<=
f
.
right
-
c
.
clientWidth
+
c
.
clientWidth
?
Math
.
min
(
f
.
left
,
Math
.
max
(
f
.
right
-
c
.
clientWidth
,
c
.
scrollLeft
)):(
f
.
right
-
c
.
clientWidth
+
f
.
left
)
/
2
;
c
.
scrollTop
=!
1
===
a
||
f
.
top
<=
c
.
scrollTop
+
c
.
clientHeight
&&
c
.
scrollTop
<=
f
.
bottom
-
c
.
clientHeight
+
c
.
clientHeight
?
Math
.
min
(
f
.
top
,
Math
.
max
(
f
.
bottom
-
c
.
clientHeight
,
c
.
scrollTop
)):(
f
.
bottom
-
c
.
clientHeight
+
f
.
top
)
/
2
;
f
=
f
.
translate
(
g
-
c
.
scrollLeft
,
j
-
c
.
scrollTop
);
d
=
c
}};
a
.
scrollIntoViewIfNeeded
()}},
setFirstNode
:
function
(
b
,
a
){
var
c
=
b
.
data
.
key
.
children
;
if
(
a
[
c
].
length
>
0
)
a
[
c
][
0
].
isFirstNode
=
!
0
},
setLastNode
:
function
(
b
,
a
){
var
c
=
b
.
data
.
key
.
children
,
d
=
a
[
c
].
length
;
if
(
d
>
0
)
a
[
c
][
d
-
1
].
isLastNode
=!
0
},
removeNode
:
function
(
b
,
a
){
var
c
=
g
.
getRoot
(
b
),
d
=
b
.
data
.
key
.
children
,
e
=
a
.
parentTId
?
a
.
getParentNode
():
c
;
a
.
isFirstNode
=!
1
;
a
.
isLastNode
=!
1
;
a
.
getPreNode
=
function
(){
return
null
};
a
.
getNextNode
=
function
(){
return
null
};
if
(
g
.
getNodeCache
(
b
,
a
.
tId
)){
l
(
a
,
b
).
remove
();
g
.
removeNodeCache
(
b
,
a
);
g
.
removeSelectedNode
(
b
,
a
);
for
(
var
h
=
0
,
k
=
e
[
d
].
length
;
h
<
k
;
h
++
)
if
(
e
[
d
][
h
].
tId
==
a
.
tId
){
e
[
d
].
splice
(
h
,
1
);
break
}
j
.
setFirstNode
(
b
,
e
);
j
.
setLastNode
(
b
,
e
);
var
i
,
h
=
e
[
d
].
length
;
if
(
!
b
.
data
.
keep
.
parent
&&
h
==
0
)
e
.
isParent
=!
1
,
e
.
open
=!
1
,
delete
e
[
d
],
h
=
l
(
e
,
f
.
id
.
UL
,
b
),
k
=
l
(
e
,
f
.
id
.
SWITCH
,
b
),
i
=
l
(
e
,
f
.
id
.
ICON
,
b
),
j
.
replaceSwitchClass
(
e
,
k
,
f
.
folder
.
DOCU
),
j
.
replaceIcoClass
(
e
,
i
,
f
.
folder
.
DOCU
),
h
.
css
(
"
display
"
,
"
none
"
);
else
if
(
b
.
view
.
showLine
&&
h
>
0
){
var
p
=
e
[
d
][
h
-
1
],
h
=
l
(
p
,
f
.
id
.
UL
,
b
),
k
=
l
(
p
,
f
.
id
.
SWITCH
,
b
);
i
=
l
(
p
,
f
.
id
.
ICON
,
b
);
e
==
c
?
e
[
d
].
length
==
1
?
j
.
replaceSwitchClass
(
p
,
k
,
f
.
line
.
ROOT
):(
c
=
l
(
e
[
d
][
0
],
f
.
id
.
SWITCH
,
b
),
j
.
replaceSwitchClass
(
e
[
d
][
0
],
c
,
f
.
line
.
ROOTS
),
j
.
replaceSwitchClass
(
p
,
k
,
f
.
line
.
BOTTOM
)):
j
.
replaceSwitchClass
(
p
,
k
,
f
.
line
.
BOTTOM
);
h
.
removeClass
(
f
.
line
.
LINE
)}}},
replaceIcoClass
:
function
(
b
,
a
,
c
){
if
(
a
&&!
b
.
isAjaxing
&&
(
b
=
a
.
attr
(
"
class
"
),
b
!=
void
0
)){
b
=
b
.
split
(
"
_
"
);
switch
(
c
){
case
f
.
folder
.
OPEN
:
case
f
.
folder
.
CLOSE
:
case
f
.
folder
.
DOCU
:
b
[
b
.
length
-
1
]
=
c
}
a
.
attr
(
"
class
"
,
b
.
join
(
"
_
"
))}},
replaceSwitchClass
:
function
(
b
,
a
,
c
){
if
(
a
){
var
d
=
a
.
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
]
=
j
.
makeNodeLineClassEx
(
b
)
+
c
;
break
;
case
f
.
folder
.
OPEN
:
case
f
.
folder
.
CLOSE
:
case
f
.
folder
.
DOCU
:
d
[
1
]
=
c
}
a
.
attr
(
"
class
"
,
d
.
join
(
"
_
"
));
c
!==
f
.
folder
.
DOCU
?
a
.
removeAttr
(
"
disabled
"
):
a
.
attr
(
"
disabled
"
,
"
disabled
"
)}}},
selectNode
:
function
(
b
,
a
,
c
){
c
||
j
.
cancelPreSelectedNode
(
b
,
null
,
a
);
l
(
a
,
f
.
id
.
A
,
b
).
addClass
(
f
.
node
.
CURSELECTED
);
g
.
addSelectedNode
(
b
,
a
);
b
.
treeObj
.
trigger
(
f
.
event
.
SELECTED
,[
b
.
treeId
,
a
])},
setNodeFontCss
:
function
(
b
,
a
){
var
c
=
l
(
a
,
f
.
id
.
A
,
b
),
d
=
j
.
makeNodeFontCss
(
b
,
a
);
d
&&
c
.
css
(
d
)},
setNodeLineIcos
:
function
(
b
,
a
){
if
(
a
){
var
c
=
l
(
a
,
f
.
id
.
SWITCH
,
b
),
d
=
l
(
a
,
f
.
id
.
UL
,
b
),
e
=
l
(
a
,
f
.
id
.
ICON
,
b
),
h
=
j
.
makeUlLineClass
(
b
,
a
);
h
.
length
==
0
?
d
.
removeClass
(
f
.
line
.
LINE
):
d
.
addClass
(
h
);
c
.
attr
(
"
class
"
,
j
.
makeNodeLineClass
(
b
,
a
));
a
.
isParent
?
c
.
removeAttr
(
"
disabled
"
):
c
.
attr
(
"
disabled
"
,
"
disabled
"
);
e
.
removeAttr
(
"
style
"
);
e
.
attr
(
"
style
"
,
j
.
makeNodeIcoStyle
(
b
,
a
));
e
.
attr
(
"
class
"
,
j
.
makeNodeIcoClass
(
b
,
a
))}},
setNodeName
:
function
(
b
,
a
){
var
c
=
g
.
getNodeTitle
(
b
,
a
),
d
=
l
(
a
,
f
.
id
.
SPAN
,
b
);
d
.
empty
();
b
.
view
.
nameIsHTML
?
d
.
html
(
g
.
getNodeName
(
b
,
a
)):
d
.
text
(
g
.
getNodeName
(
b
,
a
));
i
.
apply
(
b
.
view
.
showTitle
,
[
b
.
treeId
,
a
],
b
.
view
.
showTitle
)
&&
l
(
a
,
f
.
id
.
A
,
b
).
attr
(
"
title
"
,
!
c
?
""
:
c
)},
setNodeTarget
:
function
(
b
,
a
){
l
(
a
,
f
.
id
.
A
,
b
).
attr
(
"
target
"
,
j
.
makeNodeTarget
(
a
))},
setNodeUrl
:
function
(
b
,
a
){
var
c
=
l
(
a
,
f
.
id
.
A
,
b
),
d
=
j
.
makeNodeUrl
(
b
,
a
);
d
==
null
||
d
.
length
==
0
?
c
.
removeAttr
(
"
href
"
):
c
.
attr
(
"
href
"
,
d
)},
switchNode
:
function
(
b
,
a
){
a
.
open
||!
i
.
canAsync
(
b
,
a
)?
j
.
expandCollapseNode
(
b
,
a
,
!
a
.
open
):
b
.
async
.
enable
?
j
.
asyncNode
(
b
,
a
)
||
j
.
expandCollapseNode
(
b
,
a
,
!
a
.
open
):
a
&&
j
.
expandCollapseNode
(
b
,
a
,
!
a
.
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
"
,
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
:
i
,
view
:
j
,
event
:
m
,
data
:
g
},
getZTreeObj
:
function
(
b
){
return
(
b
=
g
.
getZTreeTools
(
b
))?
b
:
null
},
destroy
:
function
(
b
){
if
(
b
&&
b
.
length
>
0
)
j
.
destroy
(
g
.
getSetting
(
b
));
else
for
(
var
a
in
s
)
j
.
destroy
(
s
[
a
])},
init
:
function
(
b
,
a
,
c
){
var
d
=
i
.
clone
(
N
);
q
.
extend
(
!
0
,
d
,
a
);
d
.
treeId
=
b
.
attr
(
"
id
"
);
d
.
treeObj
=
b
;
d
.
treeObj
.
empty
();
s
[
d
.
treeId
]
=
d
;
if
(
typeof
document
.
body
.
style
.
maxHeight
===
"
undefined
"
)
d
.
view
.
expandSpeed
=
""
;
g
.
initRoot
(
d
);
b
=
g
.
getRoot
(
d
);
a
=
d
.
data
.
key
.
children
;
c
=
c
?
i
.
clone
(
i
.
isArray
(
c
)?
c
:[
c
]):[];
b
[
a
]
=
d
.
data
.
simpleData
.
enable
?
g
.
transformTozTreeFormat
(
d
,
c
):
c
;
g
.
initCache
(
d
);
m
.
unbindTree
(
d
);
m
.
bindTree
(
d
);
m
.
unbindEvent
(
d
);
m
.
bindEvent
(
d
);
var
e
=
{
setting
:
d
,
addNodes
:
function
(
a
,
b
,
c
,
e
){
function
f
(){
j
.
addNodes
(
d
,
a
,
b
,
l
,
e
==!
0
)}
a
||
(
a
=
null
);
if
(
a
&&!
a
.
isParent
&&
d
.
data
.
keep
.
leaf
)
return
null
;
var
g
=
parseInt
(
b
,
10
);
isNaN
(
g
)?(
e
=!!
c
,
c
=
b
,
b
=-
1
):
b
=
g
;
if
(
!
c
)
return
null
;
var
l
=
i
.
clone
(
i
.
isArray
(
c
)?
c
:[
c
]);
i
.
canAsync
(
d
,
a
)?
j
.
asyncNode
(
d
,
a
,
e
,
f
):
f
();
return
l
},
cancelSelectedNode
:
function
(
a
){
j
.
cancelPreSelectedNode
(
d
,
a
)},
destroy
:
function
(){
j
.
destroy
(
d
)},
expandAll
:
function
(
a
){
a
=!!
a
;
j
.
expandCollapseSonNode
(
d
,
null
,
a
,
!
0
);
return
a
},
expandNode
:
function
(
a
,
b
,
c
,
e
,
f
){
function
m
(){
var
b
=
l
(
a
,
d
).
get
(
0
);
b
&&
e
!==!
1
&&
j
.
scrollIntoView
(
d
,
b
)}
if
(
!
a
||!
a
.
isParent
)
return
null
;
b
!==!
0
&&
b
!==!
1
&&
(
b
=!
a
.
open
);
if
((
f
=!!
f
)
&&
b
&&
i
.
apply
(
d
.
callback
.
beforeExpand
,[
d
.
treeId
,
a
],
!
0
)
==!
1
)
return
null
;
else
if
(
f
&&!
b
&&
i
.
apply
(
d
.
callback
.
beforeCollapse
,[
d
.
treeId
,
a
],
!
0
)
==!
1
)
return
null
;
b
&&
a
.
parentTId
&&
j
.
expandCollapseParentNode
(
d
,
a
.
getParentNode
(),
b
,
!
1
);
if
(
b
===
a
.
open
&&!
c
)
return
null
;
g
.
getRoot
(
d
).
expandTriggerFlag
=
f
;
!
i
.
canAsync
(
d
,
a
)
&&
c
?
j
.
expandCollapseSonNode
(
d
,
a
,
b
,
!
0
,
m
):(
a
.
open
=!
b
,
j
.
switchNode
(
this
.
setting
,
a
),
m
());
return
b
},
getNodes
:
function
(){
return
g
.
getNodes
(
d
)},
getNodeByParam
:
function
(
a
,
b
,
c
){
return
!
a
?
null
:
g
.
getNodeByParam
(
d
,
c
?
c
[
d
.
data
.
key
.
children
]:
g
.
getNodes
(
d
),
a
,
b
)},
getNodeByTId
:
function
(
a
){
return
g
.
getNodeCache
(
d
,
a
)},
getNodesByParam
:
function
(
a
,
b
,
c
){
return
!
a
?
null
:
g
.
getNodesByParam
(
d
,
c
?
c
[
d
.
data
.
key
.
children
]:
g
.
getNodes
(
d
),
a
,
b
)},
getNodesByParamFuzzy
:
function
(
a
,
b
,
c
){
return
!
a
?
null
:
g
.
getNodesByParamFuzzy
(
d
,
c
?
c
[
d
.
data
.
key
.
children
]:
g
.
getNodes
(
d
),
a
,
b
)},
getNodesByFilter
:
function
(
a
,
b
,
c
,
e
){
b
=!!
b
;
return
!
a
||
typeof
a
!=
"
function
"
?
b
?
null
:[]:
g
.
getNodesByFilter
(
d
,
c
?
c
[
d
.
data
.
key
.
children
]:
g
.
getNodes
(
d
),
a
,
b
,
e
)},
getNodeIndex
:
function
(
a
){
if
(
!
a
)
return
null
;
for
(
var
b
=
d
.
data
.
key
.
children
,
c
=
a
.
parentTId
?
a
.
getParentNode
():
g
.
getRoot
(
d
),
e
=
0
,
f
=
c
[
b
].
length
;
e
<
f
;
e
++
)
if
(
c
[
b
][
e
]
==
a
)
return
e
;
return
-
1
},
getSelectedNodes
:
function
(){
for
(
var
a
=
[],
b
=
g
.
getRoot
(
d
).
curSelectedList
,
c
=
0
,
e
=
b
.
length
;
c
<
e
;
c
++
)
a
.
push
(
b
[
c
]);
return
a
},
isSelectedNode
:
function
(
a
){
return
g
.
isSelectedNode
(
d
,
a
)},
reAsyncChildNodesPromise
:
function
(
a
,
b
,
c
){
return
new
Promise
(
function
(
d
,
f
){
try
{
e
.
reAsyncChildNodes
(
a
,
b
,
c
,
function
(){
d
(
a
)})}
catch
(
g
){
f
(
g
)}})},
reAsyncChildNodes
:
function
(
a
,
b
,
c
,
e
){
if
(
this
.
setting
.
async
.
enable
){
var
i
=!
a
;
i
&&
(
a
=
g
.
getRoot
(
d
));
if
(
b
==
"
refresh
"
){
for
(
var
b
=
this
.
setting
.
data
.
key
.
children
,
m
=
0
,
q
=
a
[
b
]?
a
[
b
].
length
:
0
;
m
<
q
;
m
++
)
g
.
removeNodeCache
(
d
,
a
[
b
][
m
]);
g
.
removeSelectedNode
(
d
);
a
[
b
]
=
[];
i
?
this
.
setting
.
treeObj
.
empty
():
l
(
a
,
f
.
id
.
UL
,
d
).
empty
()}
j
.
asyncNode
(
this
.
setting
,
i
?
null
:
a
,
!!
c
,
e
)}},
refresh
:
function
(){
this
.
setting
.
treeObj
.
empty
();
var
a
=
g
.
getRoot
(
d
),
b
=
a
[
d
.
data
.
key
.
children
];
g
.
initRoot
(
d
);
a
[
d
.
data
.
key
.
children
]
=
b
;
g
.
initCache
(
d
);
j
.
createNodes
(
d
,
0
,
a
[
d
.
data
.
key
.
children
],
null
,
-
1
)},
removeChildNodes
:
function
(
a
){
if
(
!
a
)
return
null
;
var
b
=
a
[
d
.
data
.
key
.
children
];
j
.
removeChildNodes
(
d
,
a
);
return
b
?
b
:
null
},
removeNode
:
function
(
a
,
b
){
a
&&
(
b
=!!
b
,
b
&&
i
.
apply
(
d
.
callback
.
beforeRemove
,[
d
.
treeId
,
a
],
!
0
)
==!
1
||
(
j
.
removeNode
(
d
,
a
),
b
&&
this
.
setting
.
treeObj
.
trigger
(
f
.
event
.
REMOVE
,
[
d
.
treeId
,
a
])))},
selectNode
:
function
(
a
,
b
,
c
){
function
e
(){
if
(
!
c
){
var
b
=
l
(
a
,
d
).
get
(
0
);
j
.
scrollIntoView
(
d
,
b
)}}
if
(
a
&&
i
.
uCanDo
(
d
)){
b
=
d
.
view
.
selectedMulti
&&
b
;
if
(
a
.
parentTId
)
j
.
expandCollapseParentNode
(
d
,
a
.
getParentNode
(),
!
0
,
!
1
,
e
);
else
if
(
!
c
)
try
{
l
(
a
,
d
).
focus
().
blur
()}
catch
(
f
){}
j
.
selectNode
(
d
,
a
,
b
)}},
transformTozTreeNodes
:
function
(
a
){
return
g
.
transformTozTreeFormat
(
d
,
a
)},
transformToArray
:
function
(
a
){
return
g
.
transformToArrayFormat
(
d
,
a
)},
updateNode
:
function
(
a
){
a
&&
l
(
a
,
d
).
get
(
0
)
&&
i
.
uCanDo
(
d
)
&&
(
j
.
setNodeName
(
d
,
a
),
j
.
setNodeTarget
(
d
,
a
),
j
.
setNodeUrl
(
d
,
a
),
j
.
setNodeLineIcos
(
d
,
a
),
j
.
setNodeFontCss
(
d
,
a
))}};
b
.
treeTools
=
e
;
g
.
setZTreeTools
(
d
,
e
);
b
[
a
]
&&
b
[
a
].
length
>
0
?
j
.
createNodes
(
d
,
0
,
b
[
a
],
null
,
-
1
):
d
.
async
.
enable
&&
d
.
async
.
url
&&
d
.
async
.
url
!==
""
&&
j
.
asyncNode
(
d
);
return
e
}};
var
O
=
q
.
fn
.
zTree
,
l
=
i
.
$
,
f
=
O
.
consts
})(
jQuery
);
(
function
(
q
){
var
H
,
I
,
J
,
K
,
L
,
M
,
u
,
s
=
{},
v
=
{},
w
=
{},
N
=
{
treeId
:
""
,
treeObj
:
null
,
view
:{
addDiyDom
:
null
,
autoCancelSelected
:
!
0
,
dblClickExpand
:
!
0
,
expandSpeed
:
"
fast
"
,
fontCss
:{},
nameIsHTML
:
!
1
,
selectedMulti
:
!
0
,
showIcon
:
!
0
,
showLine
:
!
0
,
showTitle
:
!
0
,
txtSelectedEnable
:
!
1
},
data
:{
key
:{
isParent
:
"
isParent
"
,
children
:
"
children
"
,
name
:
"
name
"
,
title
:
""
,
url
:
"
url
"
,
icon
:
"
icon
"
},
simpleData
:{
enable
:
!
1
,
idKey
:
"
id
"
,
pIdKey
:
"
pId
"
,
rootPId
:
null
},
keep
:{
parent
:
!
1
,
leaf
:
!
1
}},
async
:{
enable
:
!
1
,
contentType
:
"
application/x-www-form-urlencoded
"
,
type
:
"
post
"
,
dataType
:
"
text
"
,
url
:
""
,
autoParam
:[],
otherParam
:[],
dataFilter
:
null
},
callback
:{
beforeAsync
:
null
,
beforeClick
:
null
,
beforeDblClick
:
null
,
beforeRightClick
:
null
,
beforeMouseDown
:
null
,
beforeMouseUp
:
null
,
beforeExpand
:
null
,
beforeCollapse
:
null
,
beforeRemove
:
null
,
onAsyncError
:
null
,
onAsyncSuccess
:
null
,
onNodeCreated
:
null
,
onClick
:
null
,
onDblClick
:
null
,
onRightClick
:
null
,
onMouseDown
:
null
,
onMouseUp
:
null
,
onExpand
:
null
,
onCollapse
:
null
,
onRemove
:
null
}},
x
=
[
function
(
a
){
var
b
=
a
.
treeObj
,
c
=
f
.
event
;
b
.
bind
(
c
.
NODECREATED
,
function
(
b
,
c
,
h
){
j
.
apply
(
a
.
callback
.
onNodeCreated
,[
b
,
c
,
h
])});
b
.
bind
(
c
.
CLICK
,
function
(
b
,
c
,
h
,
e
,
m
){
j
.
apply
(
a
.
callback
.
onClick
,[
c
,
h
,
e
,
m
])});
b
.
bind
(
c
.
EXPAND
,
function
(
b
,
c
,
h
){
j
.
apply
(
a
.
callback
.
onExpand
,[
b
,
c
,
h
])});
b
.
bind
(
c
.
COLLAPSE
,
function
(
b
,
c
,
h
){
j
.
apply
(
a
.
callback
.
onCollapse
,[
b
,
c
,
h
])});
b
.
bind
(
c
.
ASYNC_SUCCESS
,
function
(
b
,
c
,
h
,
e
){
j
.
apply
(
a
.
callback
.
onAsyncSuccess
,[
b
,
c
,
h
,
e
])});
b
.
bind
(
c
.
ASYNC_ERROR
,
function
(
b
,
c
,
h
,
e
,
m
,
f
){
j
.
apply
(
a
.
callback
.
onAsyncError
,[
b
,
c
,
h
,
e
,
m
,
f
])});
b
.
bind
(
c
.
REMOVE
,
function
(
b
,
c
,
h
){
j
.
apply
(
a
.
callback
.
onRemove
,
[
b
,
c
,
h
])});
b
.
bind
(
c
.
SELECTED
,
function
(
b
,
c
,
h
){
j
.
apply
(
a
.
callback
.
onSelected
,[
c
,
h
])});
b
.
bind
(
c
.
UNSELECTED
,
function
(
b
,
c
,
h
){
j
.
apply
(
a
.
callback
.
onUnSelected
,[
c
,
h
])})}],
y
=
[
function
(
a
){
var
b
=
f
.
event
;
a
.
treeObj
.
unbind
(
b
.
NODECREATED
).
unbind
(
b
.
CLICK
).
unbind
(
b
.
EXPAND
).
unbind
(
b
.
COLLAPSE
).
unbind
(
b
.
ASYNC_SUCCESS
).
unbind
(
b
.
ASYNC_ERROR
).
unbind
(
b
.
REMOVE
).
unbind
(
b
.
SELECTED
).
unbind
(
b
.
UNSELECTED
)}],
z
=
[
function
(
a
){
var
b
=
e
.
getCache
(
a
);
b
||
(
b
=
{},
e
.
setCache
(
a
,
b
));
b
.
nodes
=
[];
b
.
doms
=
[]}],
A
=
[
function
(
a
,
b
,
c
,
d
,
g
,
h
){
if
(
c
){
var
k
=
e
.
getRoot
(
a
),
m
=
e
.
nodeChildren
(
a
,
c
);
c
.
level
=
b
;
c
.
tId
=
a
.
treeId
+
"
_
"
+
++
k
.
zId
;
c
.
parentTId
=
d
?
d
.
tId
:
null
;
c
.
open
=
typeof
c
.
open
==
"
string
"
?
j
.
eqs
(
c
.
open
,
"
true
"
):
!!
c
.
open
;
b
=
e
.
nodeIsParent
(
a
,
c
);
j
.
isArray
(
m
)
&&!
(
b
===!
1
||
typeof
b
==
"
string
"
&&
j
.
eqs
(
b
,
"
false
"
))?(
e
.
nodeIsParent
(
a
,
c
,
!
0
),
c
.
zAsync
=!
0
):(
b
=
e
.
nodeIsParent
(
a
,
c
,
b
),
c
.
open
=
b
&&!
a
.
async
.
enable
?
c
.
open
:
!
1
,
c
.
zAsync
=!
b
);
c
.
isFirstNode
=
g
;
c
.
isLastNode
=
h
;
c
.
getParentNode
=
function
(){
return
e
.
getNodeCache
(
a
,
c
.
parentTId
)};
c
.
getPreNode
=
function
(){
return
e
.
getPreNode
(
a
,
c
)};
c
.
getNextNode
=
function
(){
return
e
.
getNextNode
(
a
,
c
)};
c
.
getIndex
=
function
(){
return
e
.
getNodeIndex
(
a
,
c
)};
c
.
getPath
=
function
(){
return
e
.
getNodePath
(
a
,
c
)};
c
.
isAjaxing
=!
1
;
e
.
fixPIdKeyValue
(
a
,
c
)}}],
t
=
[
function
(
a
){
var
b
=
a
.
target
,
c
=
e
.
getSetting
(
a
.
data
.
treeId
),
d
=
""
,
g
=
null
,
h
=
""
,
k
=
""
,
m
=
null
,
i
=
null
,
o
=
null
;
if
(
j
.
eqs
(
a
.
type
,
"
mousedown
"
))
k
=
"
mousedown
"
;
else
if
(
j
.
eqs
(
a
.
type
,
"
mouseup
"
))
k
=
"
mouseup
"
;
else
if
(
j
.
eqs
(
a
.
type
,
"
contextmenu
"
))
k
=
"
contextmenu
"
;
else
if
(
j
.
eqs
(
a
.
type
,
"
click
"
))
if
(
j
.
eqs
(
b
.
tagName
,
"
span
"
)
&&
b
.
getAttribute
(
"
treeNode
"
+
f
.
id
.
SWITCH
)
!==
null
)
d
=
j
.
getNodeMainDom
(
b
).
id
,
h
=
"
switchNode
"
;
else
{
if
(
o
=
j
.
getMDom
(
c
,
b
,[{
tagName
:
"
a
"
,
attrName
:
"
treeNode
"
+
f
.
id
.
A
}]))
d
=
j
.
getNodeMainDom
(
o
).
id
,
h
=
"
clickNode
"
}
else
if
(
j
.
eqs
(
a
.
type
,
"
dblclick
"
)
&&
(
k
=
"
dblclick
"
,
o
=
j
.
getMDom
(
c
,
b
,[{
tagName
:
"
a
"
,
attrName
:
"
treeNode
"
+
f
.
id
.
A
}])))
d
=
j
.
getNodeMainDom
(
o
).
id
,
h
=
"
switchNode
"
;
if
(
k
.
length
>
0
&&
d
.
length
==
0
&&
(
o
=
j
.
getMDom
(
c
,
b
,[{
tagName
:
"
a
"
,
attrName
:
"
treeNode
"
+
f
.
id
.
A
}])))
d
=
j
.
getNodeMainDom
(
o
).
id
;
if
(
d
.
length
>
0
)
switch
(
g
=
e
.
getNodeCache
(
c
,
d
),
h
){
case
"
switchNode
"
:
e
.
nodeIsParent
(
c
,
g
)?
j
.
eqs
(
a
.
type
,
"
click
"
)
||
j
.
eqs
(
a
.
type
,
"
dblclick
"
)
&&
j
.
apply
(
c
.
view
.
dblClickExpand
,[
c
.
treeId
,
g
],
c
.
view
.
dblClickExpand
)?
m
=
H
:
h
=
""
:
h
=
""
;
break
;
case
"
clickNode
"
:
m
=
I
}
switch
(
k
){
case
"
mousedown
"
:
i
=
J
;
break
;
case
"
mouseup
"
:
i
=
K
;
break
;
case
"
dblclick
"
:
i
=
L
;
break
;
case
"
contextmenu
"
:
i
=
M
}
return
{
stop
:
!
1
,
node
:
g
,
nodeEventType
:
h
,
nodeEventCallback
:
m
,
treeEventType
:
k
,
treeEventCallback
:
i
}}],
B
=
[
function
(
a
){
var
b
=
e
.
getRoot
(
a
);
b
||
(
b
=
{},
e
.
setRoot
(
a
,
b
));
e
.
nodeChildren
(
a
,
b
,[]);
b
.
expandTriggerFlag
=!
1
;
b
.
curSelectedList
=
[];
b
.
noSelection
=
!
0
;
b
.
createdNodes
=
[];
b
.
zId
=
0
;
b
.
_ver
=
(
new
Date
).
getTime
()}],
C
=
[],
D
=
[],
E
=
[],
F
=
[],
G
=
[],
e
=
{
addNodeCache
:
function
(
a
,
b
){
e
.
getCache
(
a
).
nodes
[
e
.
getNodeCacheId
(
b
.
tId
)]
=
b
},
getNodeCacheId
:
function
(
a
){
return
a
.
substring
(
a
.
lastIndexOf
(
"
_
"
)
+
1
)},
addAfterA
:
function
(
a
){
D
.
push
(
a
)},
addBeforeA
:
function
(
a
){
C
.
push
(
a
)},
addInnerAfterA
:
function
(
a
){
F
.
push
(
a
)},
addInnerBeforeA
:
function
(
a
){
E
.
push
(
a
)},
addInitBind
:
function
(
a
){
x
.
push
(
a
)},
addInitUnBind
:
function
(
a
){
y
.
push
(
a
)},
addInitCache
:
function
(
a
){
z
.
push
(
a
)},
addInitNode
:
function
(
a
){
A
.
push
(
a
)},
addInitProxy
:
function
(
a
,
b
){
b
?
t
.
splice
(
0
,
0
,
a
):
t
.
push
(
a
)},
addInitRoot
:
function
(
a
){
B
.
push
(
a
)},
addNodesData
:
function
(
a
,
b
,
c
,
d
){
var
g
=
e
.
nodeChildren
(
a
,
b
);
g
?
c
>=
g
.
length
&&
(
c
=-
1
):(
g
=
e
.
nodeChildren
(
a
,
b
,[]),
c
=-
1
);
if
(
g
.
length
>
0
&&
c
===
0
)
g
[
0
].
isFirstNode
=!
1
,
i
.
setNodeLineIcos
(
a
,
g
[
0
]);
else
if
(
g
.
length
>
0
&&
c
<
0
)
g
[
g
.
length
-
1
].
isLastNode
=!
1
,
i
.
setNodeLineIcos
(
a
,
g
[
g
.
length
-
1
]);
e
.
nodeIsParent
(
a
,
b
,
!
0
);
c
<
0
?
e
.
nodeChildren
(
a
,
b
,
g
.
concat
(
d
)):(
a
=
[
c
,
0
].
concat
(
d
),
g
.
splice
.
apply
(
g
,
a
))},
addSelectedNode
:
function
(
a
,
b
){
var
c
=
e
.
getRoot
(
a
);
e
.
isSelectedNode
(
a
,
b
)
||
c
.
curSelectedList
.
push
(
b
)},
addCreatedNode
:
function
(
a
,
b
){(
a
.
callback
.
onNodeCreated
||
a
.
view
.
addDiyDom
)
&&
e
.
getRoot
(
a
).
createdNodes
.
push
(
b
)},
addZTreeTools
:
function
(
a
){
G
.
push
(
a
)},
exSetting
:
function
(
a
){
q
.
extend
(
!
0
,
N
,
a
)},
fixPIdKeyValue
:
function
(
a
,
b
){
a
.
data
.
simpleData
.
enable
&&
(
b
[
a
.
data
.
simpleData
.
pIdKey
]
=
b
.
parentTId
?
b
.
getParentNode
()[
a
.
data
.
simpleData
.
idKey
]:
a
.
data
.
simpleData
.
rootPId
)},
getAfterA
:
function
(
a
,
b
,
c
){
for
(
var
d
=
0
,
e
=
D
.
length
;
d
<
e
;
d
++
)
D
[
d
].
apply
(
this
,
arguments
)},
getBeforeA
:
function
(
a
,
b
,
c
){
for
(
var
d
=
0
,
e
=
C
.
length
;
d
<
e
;
d
++
)
C
[
d
].
apply
(
this
,
arguments
)},
getInnerAfterA
:
function
(
a
,
b
,
c
){
for
(
var
d
=
0
,
e
=
F
.
length
;
d
<
e
;
d
++
)
F
[
d
].
apply
(
this
,
arguments
)},
getInnerBeforeA
:
function
(
a
,
b
,
c
){
for
(
var
d
=
0
,
e
=
E
.
length
;
d
<
e
;
d
++
)
E
[
d
].
apply
(
this
,
arguments
)},
getCache
:
function
(
a
){
return
w
[
a
.
treeId
]},
getNodeIndex
:
function
(
a
,
b
){
if
(
!
b
)
return
null
;
for
(
var
c
=
b
.
parentTId
?
b
.
getParentNode
():
e
.
getRoot
(
a
),
c
=
e
.
nodeChildren
(
a
,
c
),
d
=
0
,
g
=
c
.
length
-
1
;
d
<=
g
;
d
++
)
if
(
c
[
d
]
===
b
)
return
d
;
return
-
1
},
getNextNode
:
function
(
a
,
b
){
if
(
!
b
)
return
null
;
for
(
var
c
=
b
.
parentTId
?
b
.
getParentNode
():
e
.
getRoot
(
a
),
c
=
e
.
nodeChildren
(
a
,
c
),
d
=
0
,
g
=
c
.
length
-
1
;
d
<=
g
;
d
++
)
if
(
c
[
d
]
===
b
)
return
d
==
g
?
null
:
c
[
d
+
1
];
return
null
},
getNodeByParam
:
function
(
a
,
b
,
c
,
d
){
if
(
!
b
||!
c
)
return
null
;
for
(
var
g
=
0
,
h
=
b
.
length
;
g
<
h
;
g
++
){
var
k
=
b
[
g
];
if
(
k
[
c
]
==
d
)
return
b
[
g
];
k
=
e
.
nodeChildren
(
a
,
k
);
if
(
k
=
e
.
getNodeByParam
(
a
,
k
,
c
,
d
))
return
k
}
return
null
},
getNodeCache
:
function
(
a
,
b
){
if
(
!
b
)
return
null
;
var
c
=
w
[
a
.
treeId
].
nodes
[
e
.
getNodeCacheId
(
b
)];
return
c
?
c
:
null
},
getNodePath
:
function
(
a
,
b
){
if
(
!
b
)
return
null
;
var
c
;
(
c
=
b
.
parentTId
?
b
.
getParentNode
().
getPath
():[])
&&
c
.
push
(
b
);
return
c
},
getNodes
:
function
(
a
){
return
e
.
nodeChildren
(
a
,
e
.
getRoot
(
a
))},
getNodesByParam
:
function
(
a
,
b
,
c
,
d
){
if
(
!
b
||!
c
)
return
[];
for
(
var
g
=
[],
h
=
0
,
k
=
b
.
length
;
h
<
k
;
h
++
){
var
m
=
b
[
h
];
m
[
c
]
==
d
&&
g
.
push
(
m
);
m
=
e
.
nodeChildren
(
a
,
m
);
g
=
g
.
concat
(
e
.
getNodesByParam
(
a
,
m
,
c
,
d
))}
return
g
},
getNodesByParamFuzzy
:
function
(
a
,
b
,
c
,
d
){
if
(
!
b
||!
c
)
return
[];
for
(
var
g
=
[],
d
=
d
.
toLowerCase
(),
h
=
0
,
k
=
b
.
length
;
h
<
k
;
h
++
){
var
m
=
b
[
h
];
typeof
m
[
c
]
==
"
string
"
&&
b
[
h
][
c
].
toLowerCase
().
indexOf
(
d
)
>-
1
&&
g
.
push
(
m
);
m
=
e
.
nodeChildren
(
a
,
m
);
g
=
g
.
concat
(
e
.
getNodesByParamFuzzy
(
a
,
m
,
c
,
d
))}
return
g
},
getNodesByFilter
:
function
(
a
,
b
,
c
,
d
,
g
){
if
(
!
b
)
return
d
?
null
:[];
for
(
var
h
=
d
?
null
:[],
k
=
0
,
m
=
b
.
length
;
k
<
m
;
k
++
){
var
f
=
b
[
k
];
if
(
j
.
apply
(
c
,[
f
,
g
],
!
1
)){
if
(
d
)
return
f
;
h
.
push
(
f
)}
f
=
e
.
nodeChildren
(
a
,
f
);
f
=
e
.
getNodesByFilter
(
a
,
f
,
c
,
d
,
g
);
if
(
d
&&
f
)
return
f
;
h
=
d
?
f
:
h
.
concat
(
f
)}
return
h
},
getPreNode
:
function
(
a
,
b
){
if
(
!
b
)
return
null
;
for
(
var
c
=
b
.
parentTId
?
b
.
getParentNode
():
e
.
getRoot
(
a
),
c
=
e
.
nodeChildren
(
a
,
c
),
d
=
0
,
g
=
c
.
length
;
d
<
g
;
d
++
)
if
(
c
[
d
]
===
b
)
return
d
==
0
?
null
:
c
[
d
-
1
];
return
null
},
getRoot
:
function
(
a
){
return
a
?
v
[
a
.
treeId
]:
null
},
getRoots
:
function
(){
return
v
},
getSetting
:
function
(
a
){
return
s
[
a
]},
getSettings
:
function
(){
return
s
},
getZTreeTools
:
function
(
a
){
return
(
a
=
this
.
getRoot
(
this
.
getSetting
(
a
)))?
a
.
treeTools
:
null
},
initCache
:
function
(
a
){
for
(
var
b
=
0
,
c
=
z
.
length
;
b
<
c
;
b
++
)
z
[
b
].
apply
(
this
,
arguments
)},
initNode
:
function
(
a
,
b
,
c
,
d
,
e
,
h
){
for
(
var
k
=
0
,
f
=
A
.
length
;
k
<
f
;
k
++
)
A
[
k
].
apply
(
this
,
arguments
)},
initRoot
:
function
(
a
){
for
(
var
b
=
0
,
c
=
B
.
length
;
b
<
c
;
b
++
)
B
[
b
].
apply
(
this
,
arguments
)},
isSelectedNode
:
function
(
a
,
b
){
for
(
var
c
=
e
.
getRoot
(
a
),
d
=
0
,
g
=
c
.
curSelectedList
.
length
;
d
<
g
;
d
++
)
if
(
b
===
c
.
curSelectedList
[
d
])
return
!
0
;
return
!
1
},
nodeChildren
:
function
(
a
,
b
,
c
){
if
(
!
b
)
return
null
;
a
=
a
.
data
.
key
.
children
;
typeof
c
!==
"
undefined
"
&&
(
b
[
a
]
=
c
);
return
b
[
a
]},
nodeIsParent
:
function
(
a
,
b
,
c
){
if
(
!
b
)
return
!
1
;
a
=
a
.
data
.
key
.
isParent
;
typeof
c
!==
"
undefined
"
&&
(
typeof
c
===
"
string
"
&&
(
c
=
j
.
eqs
(
checked
,
"
true
"
)),
b
[
a
]
=!!
c
);
return
b
[
a
]},
nodeName
:
function
(
a
,
b
,
c
){
a
=
a
.
data
.
key
.
name
;
typeof
c
!==
"
undefined
"
&&
(
b
[
a
]
=
c
);
return
""
+
b
[
a
]},
nodeTitle
:
function
(
a
,
b
){
return
""
+
b
[
a
.
data
.
key
.
title
===
""
?
a
.
data
.
key
.
name
:
a
.
data
.
key
.
title
]},
removeNodeCache
:
function
(
a
,
b
){
var
c
=
e
.
nodeChildren
(
a
,
b
);
if
(
c
)
for
(
var
d
=
0
,
g
=
c
.
length
;
d
<
g
;
d
++
)
e
.
removeNodeCache
(
a
,
c
[
d
]);
e
.
getCache
(
a
).
nodes
[
e
.
getNodeCacheId
(
b
.
tId
)]
=
null
},
removeSelectedNode
:
function
(
a
,
b
){
for
(
var
c
=
e
.
getRoot
(
a
),
d
=
0
,
g
=
c
.
curSelectedList
.
length
;
d
<
g
;
d
++
)
if
(
b
===
c
.
curSelectedList
[
d
]
||!
e
.
getNodeCache
(
a
,
c
.
curSelectedList
[
d
].
tId
))
c
.
curSelectedList
.
splice
(
d
,
1
),
a
.
treeObj
.
trigger
(
f
.
event
.
UNSELECTED
,[
a
.
treeId
,
b
]),
d
--
,
g
--
},
setCache
:
function
(
a
,
b
){
w
[
a
.
treeId
]
=
b
},
setRoot
:
function
(
a
,
b
){
v
[
a
.
treeId
]
=
b
},
setZTreeTools
:
function
(
a
,
b
){
for
(
var
c
=
0
,
d
=
G
.
length
;
c
<
d
;
c
++
)
G
[
c
].
apply
(
this
,
arguments
)},
transformToArrayFormat
:
function
(
a
,
b
){
function
c
(
b
){
d
.
push
(
b
);(
b
=
e
.
nodeChildren
(
a
,
b
))
&&
(
d
=
d
.
concat
(
e
.
transformToArrayFormat
(
a
,
b
)))}
if
(
!
b
)
return
[];
var
d
=
[];
if
(
j
.
isArray
(
b
))
for
(
var
g
=
0
,
h
=
b
.
length
;
g
<
h
;
g
++
)
c
(
b
[
g
]);
else
c
(
b
);
return
d
},
transformTozTreeFormat
:
function
(
a
,
b
){
var
c
,
d
,
g
=
a
.
data
.
simpleData
.
idKey
,
h
=
a
.
data
.
simpleData
.
pIdKey
;
if
(
!
g
||
g
==
""
||!
b
)
return
[];
if
(
j
.
isArray
(
b
)){
var
k
=
[],
f
=
{};
for
(
c
=
0
,
d
=
b
.
length
;
c
<
d
;
c
++
)
f
[
b
[
c
][
g
]]
=
b
[
c
];
for
(
c
=
0
,
d
=
b
.
length
;
c
<
d
;
c
++
){
var
i
=
f
[
b
[
c
][
h
]];
if
(
i
&&
b
[
c
][
g
]
!=
b
[
c
][
h
]){
var
o
=
e
.
nodeChildren
(
a
,
i
);
o
||
(
o
=
e
.
nodeChildren
(
a
,
i
,[]));
o
.
push
(
b
[
c
])}
else
k
.
push
(
b
[
c
])}
return
k
}
else
return
[
b
]}},
n
=
{
bindEvent
:
function
(
a
){
for
(
var
b
=
0
,
c
=
x
.
length
;
b
<
c
;
b
++
)
x
[
b
].
apply
(
this
,
arguments
)},
unbindEvent
:
function
(
a
){
for
(
var
b
=
0
,
c
=
y
.
length
;
b
<
c
;
b
++
)
y
[
b
].
apply
(
this
,
arguments
)},
bindTree
:
function
(
a
){
var
b
=
{
treeId
:
a
.
treeId
},
c
=
a
.
treeObj
;
a
.
view
.
txtSelectedEnable
||
c
.
bind
(
"
selectstart
"
,
u
).
css
({
"
-moz-user-select
"
:
"
-moz-none
"
});
c
.
bind
(
"
click
"
,
b
,
n
.
proxy
);
c
.
bind
(
"
dblclick
"
,
b
,
n
.
proxy
);
c
.
bind
(
"
mouseover
"
,
b
,
n
.
proxy
);
c
.
bind
(
"
mouseout
"
,
b
,
n
.
proxy
);
c
.
bind
(
"
mousedown
"
,
b
,
n
.
proxy
);
c
.
bind
(
"
mouseup
"
,
b
,
n
.
proxy
);
c
.
bind
(
"
contextmenu
"
,
b
,
n
.
proxy
)},
unbindTree
:
function
(
a
){
a
.
treeObj
.
unbind
(
"
selectstart
"
,
u
).
unbind
(
"
click
"
,
n
.
proxy
).
unbind
(
"
dblclick
"
,
n
.
proxy
).
unbind
(
"
mouseover
"
,
n
.
proxy
).
unbind
(
"
mouseout
"
,
n
.
proxy
).
unbind
(
"
mousedown
"
,
n
.
proxy
).
unbind
(
"
mouseup
"
,
n
.
proxy
).
unbind
(
"
contextmenu
"
,
n
.
proxy
)},
doProxy
:
function
(
a
){
for
(
var
b
=
[],
c
=
0
,
d
=
t
.
length
;
c
<
d
;
c
++
){
var
e
=
t
[
c
].
apply
(
this
,
arguments
);
b
.
push
(
e
);
if
(
e
.
stop
)
break
}
return
b
},
proxy
:
function
(
a
){
var
b
=
e
.
getSetting
(
a
.
data
.
treeId
);
if
(
!
j
.
uCanDo
(
b
,
a
))
return
!
0
;
for
(
var
b
=
n
.
doProxy
(
a
),
c
=!
0
,
d
=
0
,
g
=
b
.
length
;
d
<
g
;
d
++
){
var
h
=
b
[
d
];
h
.
nodeEventCallback
&&
(
c
=
h
.
nodeEventCallback
.
apply
(
h
,[
a
,
h
.
node
])
&&
c
);
h
.
treeEventCallback
&&
(
c
=
h
.
treeEventCallback
.
apply
(
h
,[
a
,
h
.
node
])
&&
c
)}
return
c
}};
H
=
function
(
a
,
b
){
var
c
=
e
.
getSetting
(
a
.
data
.
treeId
);
if
(
b
.
open
){
if
(
j
.
apply
(
c
.
callback
.
beforeCollapse
,[
c
.
treeId
,
b
],
!
0
)
==!
1
)
return
!
0
}
else
if
(
j
.
apply
(
c
.
callback
.
beforeExpand
,[
c
.
treeId
,
b
],
!
0
)
==!
1
)
return
!
0
;
e
.
getRoot
(
c
).
expandTriggerFlag
=!
0
;
i
.
switchNode
(
c
,
b
);
return
!
0
};
I
=
function
(
a
,
b
){
var
c
=
e
.
getSetting
(
a
.
data
.
treeId
),
d
=
c
.
view
.
autoCancelSelected
&&
(
a
.
ctrlKey
||
a
.
metaKey
)
&&
e
.
isSelectedNode
(
c
,
b
)?
0
:
c
.
view
.
autoCancelSelected
&&
(
a
.
ctrlKey
||
a
.
metaKey
)
&&
c
.
view
.
selectedMulti
?
2
:
1
;
if
(
j
.
apply
(
c
.
callback
.
beforeClick
,[
c
.
treeId
,
b
,
d
],
!
0
)
==!
1
)
return
!
0
;
d
===
0
?
i
.
cancelPreSelectedNode
(
c
,
b
):
i
.
selectNode
(
c
,
b
,
d
===
2
);
c
.
treeObj
.
trigger
(
f
.
event
.
CLICK
,[
a
,
c
.
treeId
,
b
,
d
]);
return
!
0
};
J
=
function
(
a
,
b
){
var
c
=
e
.
getSetting
(
a
.
data
.
treeId
);
j
.
apply
(
c
.
callback
.
beforeMouseDown
,[
c
.
treeId
,
b
],
!
0
)
&&
j
.
apply
(
c
.
callback
.
onMouseDown
,[
a
,
c
.
treeId
,
b
]);
return
!
0
};
K
=
function
(
a
,
b
){
var
c
=
e
.
getSetting
(
a
.
data
.
treeId
);
j
.
apply
(
c
.
callback
.
beforeMouseUp
,[
c
.
treeId
,
b
],
!
0
)
&&
j
.
apply
(
c
.
callback
.
onMouseUp
,[
a
,
c
.
treeId
,
b
]);
return
!
0
};
L
=
function
(
a
,
b
){
var
c
=
e
.
getSetting
(
a
.
data
.
treeId
);
j
.
apply
(
c
.
callback
.
beforeDblClick
,[
c
.
treeId
,
b
],
!
0
)
&&
j
.
apply
(
c
.
callback
.
onDblClick
,[
a
,
c
.
treeId
,
b
]);
return
!
0
};
M
=
function
(
a
,
b
){
var
c
=
e
.
getSetting
(
a
.
data
.
treeId
);
j
.
apply
(
c
.
callback
.
beforeRightClick
,[
c
.
treeId
,
b
],
!
0
)
&&
j
.
apply
(
c
.
callback
.
onRightClick
,[
a
,
c
.
treeId
,
b
]);
return
typeof
c
.
callback
.
onRightClick
!=
"
function
"
};
u
=
function
(
a
){
a
=
a
.
originalEvent
.
srcElement
.
nodeName
.
toLowerCase
();
return
a
===
"
input
"
||
a
===
"
textarea
"
};
var
j
=
{
apply
:
function
(
a
,
b
,
c
){
return
typeof
a
==
"
function
"
?
a
.
apply
(
O
,
b
?
b
:[]):
c
},
canAsync
:
function
(
a
,
b
){
var
c
=
e
.
nodeChildren
(
a
,
b
),
d
=
e
.
nodeIsParent
(
a
,
b
);
return
a
.
async
.
enable
&&
b
&&
d
&&!
(
b
.
zAsync
||
c
&&
c
.
length
>
0
)},
clone
:
function
(
a
){
if
(
a
===
null
)
return
null
;
var
b
=
j
.
isArray
(
a
)?[]:{},
c
;
for
(
c
in
a
)
b
[
c
]
=
a
[
c
]
instanceof
Date
?
new
Date
(
a
[
c
].
getTime
()):
typeof
a
[
c
]
===
"
object
"
?
j
.
clone
(
a
[
c
]):
a
[
c
];
return
b
},
eqs
:
function
(
a
,
b
){
return
a
.
toLowerCase
()
===
b
.
toLowerCase
()},
isArray
:
function
(
a
){
return
Object
.
prototype
.
toString
.
apply
(
a
)
===
"
[object Array]
"
},
isElement
:
function
(
a
){
return
typeof
HTMLElement
===
"
object
"
?
a
instanceof
HTMLElement
:
a
&&
typeof
a
===
"
object
"
&&
a
!==
null
&&
a
.
nodeType
===
1
&&
typeof
a
.
nodeName
===
"
string
"
},
$
:
function
(
a
,
b
,
c
){
b
&&
typeof
b
!=
"
string
"
&&
(
c
=
b
,
b
=
""
);
return
typeof
a
==
"
string
"
?
q
(
a
,
c
?
c
.
treeObj
.
get
(
0
).
ownerDocument
:
null
):
q
(
"
#
"
+
a
.
tId
+
b
,
c
?
c
.
treeObj
:
null
)},
getMDom
:
function
(
a
,
b
,
c
){
if
(
!
b
)
return
null
;
for
(;
b
&&
b
.
id
!==
a
.
treeId
;){
for
(
var
d
=
0
,
e
=
c
.
length
;
b
.
tagName
&&
d
<
e
;
d
++
)
if
(
j
.
eqs
(
b
.
tagName
,
c
[
d
].
tagName
)
&&
b
.
getAttribute
(
c
[
d
].
attrName
)
!==
null
)
return
b
;
b
=
b
.
parentNode
}
return
null
},
getNodeMainDom
:
function
(
a
){
return
q
(
a
).
parent
(
"
li
"
).
get
(
0
)
||
q
(
a
).
parentsUntil
(
"
li
"
).
parent
().
get
(
0
)},
isChildOrSelf
:
function
(
a
,
b
){
return
q
(
a
).
closest
(
"
#
"
+
b
).
length
>
0
},
uCanDo
:
function
(){
return
!
0
}},
i
=
{
addNodes
:
function
(
a
,
b
,
c
,
d
,
g
){
var
h
=
e
.
nodeIsParent
(
a
,
b
);
if
(
!
a
.
data
.
keep
.
leaf
||!
b
||
h
)
if
(
j
.
isArray
(
d
)
||
(
d
=
[
d
]),
a
.
data
.
simpleData
.
enable
&&
(
d
=
e
.
transformTozTreeFormat
(
a
,
d
)),
b
){
var
h
=
l
(
b
,
f
.
id
.
SWITCH
,
a
),
k
=
l
(
b
,
f
.
id
.
ICON
,
a
),
m
=
l
(
b
,
f
.
id
.
UL
,
a
);
if
(
!
b
.
open
)
i
.
replaceSwitchClass
(
b
,
h
,
f
.
folder
.
CLOSE
),
i
.
replaceIcoClass
(
b
,
k
,
f
.
folder
.
CLOSE
),
b
.
open
=!
1
,
m
.
css
({
display
:
"
none
"
});
e
.
addNodesData
(
a
,
b
,
c
,
d
);
i
.
createNodes
(
a
,
b
.
level
+
1
,
d
,
b
,
c
);
g
||
i
.
expandCollapseParentNode
(
a
,
b
,
!
0
)}
else
e
.
addNodesData
(
a
,
e
.
getRoot
(
a
),
c
,
d
),
i
.
createNodes
(
a
,
0
,
d
,
null
,
c
)},
appendNodes
:
function
(
a
,
b
,
c
,
d
,
g
,
h
,
k
){
if
(
!
c
)
return
[];
var
f
=
[],
j
=
d
?
d
:
e
.
getRoot
(
a
),
j
=
e
.
nodeChildren
(
a
,
j
),
o
,
l
;
if
(
!
j
||
g
>=
j
.
length
-
c
.
length
)
g
=-
1
;
for
(
var
n
=
0
,
Q
=
c
.
length
;
n
<
Q
;
n
++
){
var
p
=
c
[
n
];
h
&&
(
o
=
(
g
===
0
||
j
.
length
==
c
.
length
)
&&
n
==
0
,
l
=
g
<
0
&&
n
==
c
.
length
-
1
,
e
.
initNode
(
a
,
b
,
p
,
d
,
o
,
l
,
k
),
e
.
addNodeCache
(
a
,
p
));
o
=
e
.
nodeIsParent
(
a
,
p
);
l
=
[];
var
q
=
e
.
nodeChildren
(
a
,
p
);
q
&&
q
.
length
>
0
&&
(
l
=
i
.
appendNodes
(
a
,
b
+
1
,
q
,
p
,
-
1
,
h
,
k
&&
p
.
open
));
k
&&
(
i
.
makeDOMNodeMainBefore
(
f
,
a
,
p
),
i
.
makeDOMNodeLine
(
f
,
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
,
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
&&
g
<
h
;
g
++
){
var
r
=
m
[
g
].
split
(
"
=
"
),
o
=
r
;
r
.
length
>
1
&&
(
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
<
h
;
g
+=
2
)
k
[
m
[
g
]]
=
m
[
g
+
1
];
else
for
(
var
n
in
m
)
k
[
n
]
=
m
[
n
];
var
P
=
e
.
getRoot
(
a
).
_ver
;
q
.
ajax
({
contentType
:
a
.
async
.
contentType
,
cache
:
!
1
,
type
:
a
.
async
.
type
,
url
:
j
.
apply
(
a
.
async
.
url
,[
a
.
treeId
,
b
],
a
.
async
.
url
),
data
:
a
.
async
.
contentType
.
indexOf
(
"
application/json
"
)
>-
1
?
JSON
.
stringify
(
k
):
k
,
dataType
:
a
.
async
.
dataType
,
success
:
function
(
h
){
if
(
P
==
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
])}}});
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
&&
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
])},
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
,
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
,
[])},
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
<
l
;
j
++
)
h
[
j
]
&&
i
.
expandCollapseSonNode
(
a
,
h
[
j
],
c
,
k
);
e
.
getRoot
(
a
).
expandTriggerFlag
=
f
;
i
.
expandCollapseNode
(
a
,
b
,
c
,
d
,
g
)},
isSelectedNode
:
function
(
a
,
b
){
if
(
!
b
)
return
!
1
;
var
c
=
e
.
getRoot
(
a
).
curSelectedList
,
d
;
for
(
d
=
c
.
length
-
1
;
d
>=
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
,
"
<
"
).
replace
(
/>/g
,
"
>
"
);
a
.
push
(
"
<span id='
"
,
c
.
tId
,
f
.
id
.
ICON
,
"
' title='' treeNode
"
,
f
.
id
.
ICON
,
"
class='
"
,
i
.
makeNodeIcoClass
(
b
,
c
),
"
' style='
"
,
i
.
makeNodeIcoStyle
(
b
,
c
),
"
'></span><span id='
"
,
c
.
tId
,
f
.
id
.
SPAN
,
"
' class='
"
,
f
.
className
.
NAME
,
"
'>
"
,
d
,
"
</span>
"
)},
makeDOMNodeLine
:
function
(
a
,
b
,
c
){
a
.
push
(
"
<span id='
"
,
c
.
tId
,
f
.
id
.
SWITCH
,
"
' title='' class='
"
,
i
.
makeNodeLineClass
(
b
,
c
),
"
' treeNode
"
,
f
.
id
.
SWITCH
,
"
></span>
"
)},
makeDOMNodeMainAfter
:
function
(
a
){
a
.
push
(
"
</li>
"
)},
makeDOMNodeMainBefore
:
function
(
a
,
b
,
c
){
a
.
push
(
"
<li id='
"
,
c
.
tId
,
"
' class='
"
,
f
.
className
.
LEVEL
,
c
.
level
,
"
' tabindex='0' hidefocus='true' treenode>
"
)},
makeDOMNodeNameAfter
:
function
(
a
){
a
.
push
(
"
</a>
"
)},
makeDOMNodeNameBefore
:
function
(
a
,
b
,
c
){
var
d
=
e
.
nodeTitle
(
b
,
c
),
g
=
i
.
makeNodeUrl
(
b
,
c
),
h
=
i
.
makeNodeFontCss
(
b
,
c
),
k
=
[],
m
;
for
(
m
in
h
)
k
.
push
(
m
,
"
:
"
,
h
[
m
],
"
;
"
);
a
.
push
(
"
<a id='
"
,
c
.
tId
,
f
.
id
.
A
,
"
' class='
"
,
f
.
className
.
LEVEL
,
c
.
level
,
"
' treeNode
"
,
f
.
id
.
A
,
'
onclick="
'
,
c
.
click
||
""
,
'
"
'
,
g
!=
null
&&
g
.
length
>
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
,
"
<
"
).
replace
(
/>/g
,
"
>
"
),
"
'
"
);
a
.
push
(
"
>
"
)},
makeNodeFontCss
:
function
(
a
,
b
){
var
c
=
j
.
apply
(
a
.
view
.
fontCss
,[
a
.
treeId
,
b
],
a
.
view
.
fontCss
);
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
==
!
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
+
"
"
+
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
(
"
<ul id='
"
,
b
.
tId
,
f
.
id
.
UL
,
"
' class='
"
,
f
.
className
.
LEVEL
,
b
.
level
,
"
"
,
i
.
makeUlLineClass
(
a
,
b
),
"
' style='display:
"
,
b
.
open
?
"
block
"
:
"
none
"
,
"
'>
"
);
c
.
push
(
d
);
c
.
push
(
"
</ul>
"
)},
makeUlLineClass
:
function
(
a
,
b
){
return
a
.
view
.
showLine
&&!
b
.
isLastNode
?
f
.
line
.
LINE
:
""
},
removeChildNodes
:
function
(
a
,
b
){
if
(
b
){
var
c
=
e
.
nodeChildren
(
a
,
b
);
if
(
c
){
for
(
var
d
=
0
,
g
=
c
.
length
;
d
<
g
;
d
++
)
e
.
removeNodeCache
(
a
,
c
[
d
]);
e
.
removeSelectedNode
(
a
);
delete
b
[
a
.
data
.
key
.
children
];
a
.
data
.
keep
.
parent
?
l
(
b
,
f
.
id
.
UL
,
a
).
empty
():(
e
.
nodeIsParent
(
a
,
b
,
!
1
),
b
.
open
=!
1
,
c
=
l
(
b
,
f
.
id
.
SWITCH
,
a
),
d
=
l
(
b
,
f
.
id
.
ICON
,
a
),
i
.
replaceSwitchClass
(
b
,
c
,
f
.
folder
.
DOCU
),
i
.
replaceIcoClass
(
b
,
d
,
f
.
folder
.
DOCU
),
l
(
b
,
f
.
id
.
UL
,
a
).
remove
())}}},
scrollIntoView
:
function
(
a
,
b
){
if
(
b
)
if
(
typeof
Element
===
"
undefined
"
){
var
c
=
a
.
treeObj
.
get
(
0
).
getBoundingClientRect
(),
d
=
b
.
getBoundingClientRect
();(
d
.
top
<
c
.
top
||
d
.
bottom
>
c
.
bottom
||
d
.
right
>
c
.
right
||
d
.
left
<
c
.
left
)
&&
b
.
scrollIntoView
()}
else
{
if
(
!
Element
.
prototype
.
scrollIntoViewIfNeeded
)
Element
.
prototype
.
scrollIntoViewIfNeeded
=
function
(
a
){
function
b
(
a
,
c
,
d
,
f
){
return
{
left
:
a
,
top
:
c
,
width
:
d
,
height
:
f
,
right
:
a
+
d
,
bottom
:
c
+
f
,
translate
:
function
(
e
,
g
){
return
b
(
e
+
a
,
g
+
c
,
d
,
f
)},
relativeFromTo
:
function
(
g
,
k
){
var
i
=
a
,
j
=
c
,
g
=
g
.
offsetParent
,
k
=
k
.
offsetParent
;
if
(
g
===
k
)
return
e
;
for
(;
g
;
g
=
g
.
offsetParent
)
i
+=
g
.
offsetLeft
+
g
.
clientLeft
,
j
+=
g
.
offsetTop
+
g
.
clientTop
;
for
(;
k
;
k
=
k
.
offsetParent
)
i
-=
k
.
offsetLeft
+
k
.
clientLeft
,
j
-=
k
.
offsetTop
+
k
.
clientTop
;
return
b
(
i
,
j
,
d
,
f
)}}}
for
(
var
c
,
d
=
this
,
e
=
b
(
this
.
offsetLeft
,
this
.
offsetTop
,
this
.
offsetWidth
,
this
.
offsetHeight
);
j
.
isElement
(
c
=
d
.
parentNode
);){
var
f
=
c
.
offsetLeft
+
c
.
clientLeft
,
i
=
c
.
offsetTop
+
c
.
clientTop
,
e
=
e
.
relativeFromTo
(
d
,
c
).
translate
(
-
f
,
-
i
);
c
.
scrollLeft
=!
1
===
a
||
e
.
left
<=
c
.
scrollLeft
+
c
.
clientWidth
&&
c
.
scrollLeft
<=
e
.
right
-
c
.
clientWidth
+
c
.
clientWidth
?
Math
.
min
(
e
.
left
,
Math
.
max
(
e
.
right
-
c
.
clientWidth
,
c
.
scrollLeft
)):(
e
.
right
-
c
.
clientWidth
+
e
.
left
)
/
2
;
c
.
scrollTop
=
!
1
===
a
||
e
.
top
<=
c
.
scrollTop
+
c
.
clientHeight
&&
c
.
scrollTop
<=
e
.
bottom
-
c
.
clientHeight
+
c
.
clientHeight
?
Math
.
min
(
e
.
top
,
Math
.
max
(
e
.
bottom
-
c
.
clientHeight
,
c
.
scrollTop
)):(
e
.
bottom
-
c
.
clientHeight
+
e
.
top
)
/
2
;
e
=
e
.
translate
(
f
-
c
.
scrollLeft
,
i
-
c
.
scrollTop
);
d
=
c
}};
b
.
scrollIntoViewIfNeeded
()}},
setFirstNode
:
function
(
a
,
b
){
var
c
=
e
.
nodeChildren
(
a
,
b
);
if
(
c
.
length
>
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
?
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
<
k
;
h
++
)
if
(
g
[
h
].
tId
==
b
.
tId
){
g
.
splice
(
h
,
1
);
break
}
i
.
setFirstNode
(
a
,
d
);
i
.
setLastNode
(
a
,
d
);
var
j
,
h
=
g
.
length
;
if
(
!
a
.
data
.
keep
.
parent
&&
h
==
0
)
e
.
nodeIsParent
(
a
,
d
,
!
1
),
d
.
open
=!
1
,
delete
d
[
a
.
data
.
key
.
children
],
h
=
l
(
d
,
f
.
id
.
UL
,
a
),
k
=
l
(
d
,
f
.
id
.
SWITCH
,
a
),
j
=
l
(
d
,
f
.
id
.
ICON
,
a
),
i
.
replaceSwitchClass
(
d
,
k
,
f
.
folder
.
DOCU
),
i
.
replaceIcoClass
(
d
,
j
,
f
.
folder
.
DOCU
),
h
.
css
(
"
display
"
,
"
none
"
);
else
if
(
a
.
view
.
showLine
&&
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
&&
(
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
?
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
"
,
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
))},
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
"
,
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
))?
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
);
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
);
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
,
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
,
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
<
f
;
c
++
)
if
(
b
[
c
]
==
a
)
return
c
;
return
-
1
},
getSelectedNodes
:
function
(){
for
(
var
a
=
[],
b
=
e
.
getRoot
(
d
).
curSelectedList
,
c
=
0
,
f
=
b
.
length
;
c
<
f
;
c
++
)
a
.
push
(
b
[
c
]);
return
a
},
isSelectedNode
:
function
(
a
){
return
e
.
isSelectedNode
(
d
,
a
)},
reAsyncChildNodesPromise
:
function
(
a
,
b
,
c
){
return
new
Promise
(
function
(
d
,
e
){
try
{
g
.
reAsyncChildNodes
(
a
,
b
,
c
,
function
(){
d
(
a
)})}
catch
(
f
){
e
(
f
)}})},
reAsyncChildNodes
:
function
(
a
,
b
,
c
,
g
){
if
(
this
.
setting
.
async
.
enable
){
var
j
=!
a
;
j
&&
(
a
=
e
.
getRoot
(
d
));
if
(
b
==
"
refresh
"
){
for
(
var
b
=
e
.
nodeChildren
(
d
,
a
),
n
=
0
,
q
=
b
?
b
.
length
:
0
;
n
<
q
;
n
++
)
e
.
removeNodeCache
(
d
,
b
[
n
]);
e
.
removeSelectedNode
(
d
);
e
.
nodeChildren
(
d
,
a
,[]);
j
?
this
.
setting
.
treeObj
.
empty
():
l
(
a
,
f
.
id
.
UL
,
d
).
empty
()}
i
.
asyncNode
(
this
.
setting
,
j
?
null
:
a
,
!!
c
,
g
)}},
refresh
:
function
(){
this
.
setting
.
treeObj
.
empty
();
var
a
=
e
.
getRoot
(
d
),
b
=
e
.
nodeChildren
(
d
,
a
);
e
.
initRoot
(
d
);
e
.
nodeChildren
(
d
,
a
,
b
);
e
.
initCache
(
d
);
i
.
createNodes
(
d
,
0
,
e
.
nodeChildren
(
d
,
a
),
null
,
-
1
)},
removeChildNodes
:
function
(
a
){
if
(
!
a
)
return
null
;
var
b
=
e
.
nodeChildren
(
d
,
a
);
i
.
removeChildNodes
(
d
,
a
);
return
b
?
b
:
null
},
removeNode
:
function
(
a
,
b
){
a
&&
(
b
=!!
b
,
b
&&
j
.
apply
(
d
.
callback
.
beforeRemove
,[
d
.
treeId
,
a
],
!
0
)
==!
1
||
(
i
.
removeNode
(
d
,
a
),
b
&&
this
.
setting
.
treeObj
.
trigger
(
f
.
event
.
REMOVE
,[
d
.
treeId
,
a
])))},
selectNode
:
function
(
a
,
b
,
c
){
function
e
(){
if
(
!
c
){
var
b
=
l
(
a
,
d
).
get
(
0
);
i
.
scrollIntoView
(
d
,
b
)}}
if
(
a
&&
j
.
uCanDo
(
d
)){
b
=
d
.
view
.
selectedMulti
&&
b
;
if
(
a
.
parentTId
)
i
.
expandCollapseParentNode
(
d
,
a
.
getParentNode
(),
!
0
,
!
1
,
e
);
else
if
(
!
c
)
try
{
l
(
a
,
d
).
focus
().
blur
()}
catch
(
f
){}
i
.
selectNode
(
d
,
a
,
b
)}},
transformTozTreeNodes
:
function
(
a
){
return
e
.
transformTozTreeFormat
(
d
,
a
)},
transformToArray
:
function
(
a
){
return
e
.
transformToArrayFormat
(
d
,
a
)},
updateNode
:
function
(
a
){
a
&&
l
(
a
,
d
).
get
(
0
)
&&
j
.
uCanDo
(
d
)
&&
(
i
.
setNodeName
(
d
,
a
),
i
.
setNodeTarget
(
d
,
a
),
i
.
setNodeUrl
(
d
,
a
),
i
.
setNodeLineIcos
(
d
,
a
),
i
.
setNodeFontCss
(
d
,
a
))}};
a
.
treeTools
=
g
;
e
.
setZTreeTools
(
d
,
g
);(
c
=
e
.
nodeChildren
(
d
,
a
))
&&
c
.
length
>
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
);
api/cn/setting.async.autoParam.html
浏览文件 @
ad144cf5
<div
class=
"apiDetail"
>
<div>
<h2><span>
Array(String)
</span><span
class=
"path"
>
setting.async.
</span>
autoParam
</h2>
<h2><span>
Array(String)
/ Function(treeId, treeNode)
</span><span
class=
"path"
>
setting.async.
</span>
autoParam
</h2>
<h3>
概述
<span
class=
"h3_info"
>
[ 依赖
<span
class=
"highlight_green"
>
jquery.ztree.core
</span>
核心 js ]
</span></h3>
<div
class=
"desc"
>
<p></p>
...
...
@@ -14,6 +14,16 @@
<p>
1、将需要作为参数提交的属性名称,制作成 Array 即可,例如:["id", "name"]
</p>
<p>
2、可以设置提交时的参数名称,例如 server 只接受 zId : ["id=zId"]
</p>
</div>
<h3>
Function 参数说明
</h3>
<div
class=
"desc"
>
<h4><b>
treeId
</b><span>
String
</span></h4>
<p>
对应 zTree 的
<b
class=
"highlight_red"
>
treeId
</b>
,便于用户操控
</p>
<h4
class=
"topLine"
><b>
treeNode
</b><span>
JSON
</span></h4>
<p>
需要异步加载子节点的的父节点 JSON 数据对象
</p>
<p
class=
"highlight_red"
>
针对根进行异步加载时,treeNode = null
</p>
<h4
class=
"topLine"
><b>
返回值
</b><span>
Array(String)
</span></h4>
<p>
返回值同 Array(String) 格式的数据
</p>
</div>
<h3>
setting 举例
</h3>
<h4>
1. 设置 id 属性为自动提交的参数
</h4>
<pre
xmlns=
""
><code>
var setting = {
...
...
api/cn/setting.async.otherParam.html
浏览文件 @
ad144cf5
<div
class=
"apiDetail"
>
<div>
<h2><span>
Array(String) / JSON
</span><span
class=
"path"
>
setting.async.
</span>
otherParam
</h2>
<h2><span>
Array(String) / JSON
/ Function(treeId, treeNode)
</span><span
class=
"path"
>
setting.async.
</span>
otherParam
</h2>
<h3>
概述
<span
class=
"h3_info"
>
[ 依赖
<span
class=
"highlight_green"
>
jquery.ztree.core
</span>
核心 js ]
</span></h3>
<div
class=
"desc"
>
<p></p>
...
...
@@ -17,6 +17,16 @@
<div
class=
"desc"
>
<p>
直接用 JSON 格式制作键值对,例如:{ key1:value1, key2:value2 }
</p>
</div>
<h3>
Function 参数说明
</h3>
<div
class=
"desc"
>
<h4><b>
treeId
</b><span>
String
</span></h4>
<p>
对应 zTree 的
<b
class=
"highlight_red"
>
treeId
</b>
,便于用户操控
</p>
<h4
class=
"topLine"
><b>
treeNode
</b><span>
JSON
</span></h4>
<p>
需要异步加载子节点的的父节点 JSON 数据对象
</p>
<p
class=
"highlight_red"
>
针对根进行异步加载时,treeNode = null
</p>
<h4
class=
"topLine"
><b>
返回值
</b><span>
Array(String) || JSON
</span></h4>
<p>
返回值同 Array(String) || JSON 格式的数据
</p>
</div>
<h3>
setting 举例
</h3>
<h4>
1. 设置 Array(String) 格式的参数
</h4>
<pre
xmlns=
""
><code>
var setting = {
...
...
api/cn/setting.data.key.isHidden.html
0 → 100644
浏览文件 @
ad144cf5
<div
class=
"apiDetail"
>
<div>
<h2><span>
String
</span><span
class=
"path"
>
setting.data.key.
</span>
isHidden
</h2>
<h3>
概述
<span
class=
"h3_info"
>
[ 依赖
<span
class=
"highlight_green"
>
jquery.ztree.exhide
</span>
js ]
</span></h3>
<div
class=
"desc"
>
<p></p>
<div
class=
"longdesc"
>
<p>
zTree 节点数据保存节点是否隐藏的属性名称。
</p>
<p>
默认值:"isHidden"
</p>
<p
class=
"highlight_red"
>
v3.5.32+
</p>
</div>
</div>
<h3>
setting 举例
</h3>
<h4>
1. 设置 zTree 显示节点时,将 treeNode 的 hidden 属性当做节点是否隐藏的属性名称
</h4>
<pre
xmlns=
""
><code>
var setting = {
data: {
key: {
isHidden: "hidden"
}
}
};
......
</code></pre>
</div>
</div>
\ No newline at end of file
api/cn/setting.data.key.isParent.html
0 → 100644
浏览文件 @
ad144cf5
<div
class=
"apiDetail"
>
<div>
<h2><span>
String
</span><span
class=
"path"
>
setting.data.key.
</span>
isParent
</h2>
<h3>
概述
<span
class=
"h3_info"
>
[ 依赖
<span
class=
"highlight_green"
>
jquery.ztree.core
</span>
核心 js ]
</span></h3>
<div
class=
"desc"
>
<p></p>
<div
class=
"longdesc"
>
<p>
zTree 节点数据保存节点是否为父节点的属性名称。
</p>
<p>
默认值:"isParent"
</p>
<p
class=
"highlight_red"
>
v3.5.32+
</p>
</div>
</div>
<h3>
setting 举例
</h3>
<h4>
1. 设置 zTree 显示节点时,将 treeNode 的 parent 属性当做节点是否为父节点的属性名称
</h4>
<pre
xmlns=
""
><code>
var setting = {
data: {
key: {
isParent: "parent"
}
}
};
......
</code></pre>
</div>
</div>
\ No newline at end of file
api/en/setting.async.autoParam.html
浏览文件 @
ad144cf5
<div
class=
"apiDetail"
>
<div>
<h2><span>
Array(String)
</span><span
class=
"path"
>
setting.async.
</span>
autoParam
</h2>
<h2><span>
Array(String)
/ Function(treeId, treeNode)
</span><span
class=
"path"
>
setting.async.
</span>
autoParam
</h2>
<h3>
Overview
<span
class=
"h3_info"
>
[ depends on
<span
class=
"highlight_green"
>
jquery.ztree.core
</span>
js ]
</span></h3>
<div
class=
"desc"
>
<p></p>
...
...
@@ -17,6 +17,16 @@
<p>
1. Put the attribute name(s) of node to the array. For example: ["id", "name"]
</p>
<p>
2. You can rename the parameter name as sent to the server. For example: server only accepts "zId" -- ["id=zId"]
</p>
</div>
<h3>
Function Parameter Descriptions
</h3>
<div
class=
"desc"
>
<h4><b>
treeId
</b><span>
String
</span></h4>
<p>
zTree unique identifier:
<b
class=
"highlight_red"
>
treeId
</b>
.
</p>
<h4
class=
"topLine"
><b>
treeNode
</b><span>
JSON
</span></h4>
<p>
Parent node's JSON data object
</p>
<p
class=
"highlight_red"
>
When asynchronously loading the root, the treeNode = null
</p>
<h4
class=
"topLine"
><b>
Return
</b><span>
Array(String)
</span></h4>
<p>
Return value is same as 'Array(String) Format'
</p>
</div>
<h3>
Examples of setting
</h3>
<h4>
1. set auto commit 'id' attribute
</h4>
<pre
xmlns=
""
><code>
var setting = {
...
...
api/en/setting.async.otherParam.html
浏览文件 @
ad144cf5
<div
class=
"apiDetail"
>
<div>
<h2><span>
Array(String) / JSON
</span><span
class=
"path"
>
setting.async.
</span>
otherParam
</h2>
<h2><span>
Array(String) / JSON
/ Function(treeId, treeNode)
</span><span
class=
"path"
>
setting.async.
</span>
otherParam
</h2>
<h3>
Overview
<span
class=
"h3_info"
>
[ depends on
<span
class=
"highlight_green"
>
jquery.ztree.core
</span>
js ]
</span></h3>
<div
class=
"desc"
>
<p></p>
...
...
@@ -17,6 +17,16 @@
<div
class=
"desc"
>
<p>
Use JSON hash data to set the key-value pairs. e.g. { key1:value1, key2:value2 }
</p>
</div>
<h3>
Function Parameter Descriptions
</h3>
<div
class=
"desc"
>
<h4><b>
treeId
</b><span>
String
</span></h4>
<p>
zTree unique identifier:
<b
class=
"highlight_red"
>
treeId
</b>
.
</p>
<h4
class=
"topLine"
><b>
treeNode
</b><span>
JSON
</span></h4>
<p>
Parent node's JSON data object
</p>
<p
class=
"highlight_red"
>
When asynchronously loading the root, the treeNode = null
</p>
<h4
class=
"topLine"
><b>
Return
</b><span>
Array(String) || JSON
</span></h4>
<p>
Return value is same as 'Array(String) || JSON Format'
</p>
</div>
<h3>
Examples of setting
</h3>
<h4>
1. Using Array(String) Format
</h4>
<pre
xmlns=
""
><code>
var setting = {
...
...
api/en/setting.data.key.isHidden.html
0 → 100644
浏览文件 @
ad144cf5
<div
class=
"apiDetail"
>
<div>
<h2><span>
String
</span><span
class=
"path"
>
setting.data.key.
</span>
isHidden
</h2>
<h3>
Overview
<span
class=
"h3_info"
>
[ depends on
<span
class=
"highlight_green"
>
jquery.ztree.core
</span>
js ]
</span></h3>
<div
class=
"desc"
>
<p></p>
<div
class=
"longdesc"
>
<p>
The node data's attribute to save whether the node is the parent node.
</p>
<p>
Default: "isHidden"
</p>
<p
class=
"highlight_red"
>
v3.5.32+
</p>
</div>
</div>
<h3>
Examples of setting
</h3>
<h4>
1. Set the 'hidden' attribute to save whether the node is the parent node.
</h4>
<pre
xmlns=
""
><code>
var setting = {
data: {
key: {
isHidden: "hidden"
}
}
};
......
</code></pre>
</div>
</div>
\ No newline at end of file
api/en/setting.data.key.isParent.html
0 → 100644
浏览文件 @
ad144cf5
<div
class=
"apiDetail"
>
<div>
<h2><span>
String
</span><span
class=
"path"
>
setting.data.key.
</span>
isParent
</h2>
<h3>
Overview
<span
class=
"h3_info"
>
[ depends on
<span
class=
"highlight_green"
>
jquery.ztree.core
</span>
js ]
</span></h3>
<div
class=
"desc"
>
<p></p>
<div
class=
"longdesc"
>
<p>
The node data's attribute to save whether the node is the parent node.
</p>
<p>
Default: "isParent"
</p>
<p
class=
"highlight_red"
>
v3.5.32+
</p>
</div>
</div>
<h3>
Examples of setting
</h3>
<h4>
1. Set the 'parent' attribute to save whether the node is the parent node.
</h4>
<pre
xmlns=
""
><code>
var setting = {
data: {
key: {
isParent: "parent"
}
}
};
......
</code></pre>
</div>
</div>
\ No newline at end of file
js/jquery.ztree.all.js
浏览文件 @
ad144cf5
/*
* JQuery zTree core v3.5.3
1
* JQuery zTree core v3.5.3
2
* http://treejs.cn/
*
* Copyright (c) 2010 Hunter.z
...
...
@@ -9,7 +9,7 @@
* http://www.opensource.org/licenses/mit-license.php
*
* email: hunter.z@263.net
* Date: 201
7-12-28
* Date: 201
8-01-06
*/
(
function
(
$
)
{
var
settings
=
{},
roots
=
{},
caches
=
{},
...
...
@@ -76,6 +76,7 @@
},
data
:
{
key
:
{
isParent
:
"
isParent
"
,
children
:
"
children
"
,
name
:
"
name
"
,
title
:
""
,
...
...
@@ -135,7 +136,7 @@
r
=
{};
data
.
setRoot
(
setting
,
r
);
}
r
[
setting
.
data
.
key
.
children
]
=
[]
;
data
.
nodeChildren
(
setting
,
r
,
[])
;
r
.
expandTriggerFlag
=
false
;
r
.
curSelectedList
=
[];
r
.
noSelection
=
true
;
...
...
@@ -250,7 +251,8 @@
node
=
data
.
getNodeCache
(
setting
,
tId
);
switch
(
nodeEventType
)
{
case
"
switchNode
"
:
if
(
!
node
.
isParent
)
{
var
isParent
=
data
.
nodeIsParent
(
setting
,
node
);
if
(
!
isParent
)
{
nodeEventType
=
""
;
}
else
if
(
tools
.
eqs
(
event
.
type
,
"
click
"
)
||
(
tools
.
eqs
(
event
.
type
,
"
dblclick
"
)
&&
tools
.
apply
(
setting
.
view
.
dblClickExpand
,
[
setting
.
treeId
,
node
],
setting
.
view
.
dblClickExpand
)))
{
...
...
@@ -293,20 +295,20 @@
_initNode
=
function
(
setting
,
level
,
n
,
parentNode
,
isFirstNode
,
isLastNode
,
openFlag
)
{
if
(
!
n
)
return
;
var
r
=
data
.
getRoot
(
setting
),
child
Key
=
setting
.
data
.
key
.
children
;
child
ren
=
data
.
nodeChildren
(
setting
,
n
)
;
n
.
level
=
level
;
n
.
tId
=
setting
.
treeId
+
"
_
"
+
(
++
r
.
zId
);
n
.
parentTId
=
parentNode
?
parentNode
.
tId
:
null
;
n
.
open
=
(
typeof
n
.
open
==
"
string
"
)
?
tools
.
eqs
(
n
.
open
,
"
true
"
)
:
!!
n
.
open
;
// if (n[childKey] && n[childKey].length > 0) {
if
(
tools
.
isArray
(
n
[
childKey
]
)
&&
!
(
n
.
isParent
===
false
||
(
typeof
n
.
isParent
==
"
string
"
&&
tools
.
eqs
(
n
.
isParent
,
"
false
"
))))
{
n
.
isParent
=
true
;
var
isParent
=
data
.
nodeIsParent
(
setting
,
n
);
if
(
tools
.
isArray
(
children
)
&&
!
(
isParent
===
false
||
(
typeof
isParent
==
"
string
"
&&
tools
.
eqs
(
isParent
,
"
false
"
))))
{
data
.
nodeIsParent
(
setting
,
n
,
true
)
;
n
.
zAsync
=
true
;
}
else
{
n
.
isParent
=
(
typeof
n
.
isParent
==
"
string
"
)
?
tools
.
eqs
(
n
.
isParent
,
"
true
"
)
:
!!
n
.
isParent
;
n
.
open
=
(
n
.
isParent
&&
!
setting
.
async
.
enable
)
?
n
.
open
:
false
;
n
.
zAsync
=
!
n
.
isParent
;
isParent
=
data
.
nodeIsParent
(
setting
,
n
,
isParent
)
;
n
.
open
=
(
isParent
&&
!
setting
.
async
.
enable
)
?
n
.
open
:
false
;
n
.
zAsync
=
!
isParent
;
}
n
.
isFirstNode
=
isFirstNode
;
n
.
isLastNode
=
isLastNode
;
...
...
@@ -384,28 +386,28 @@
_init
.
roots
.
push
(
initRoot
);
},
addNodesData
:
function
(
setting
,
parentNode
,
index
,
nodes
)
{
var
child
Key
=
setting
.
data
.
key
.
children
,
params
;
if
(
!
parentNode
[
childKey
]
)
{
parentNode
[
childKey
]
=
[]
;
var
child
ren
=
data
.
nodeChildren
(
setting
,
parentNode
)
,
params
;
if
(
!
children
)
{
children
=
data
.
nodeChildren
(
setting
,
parentNode
,
[])
;
index
=
-
1
;
}
else
if
(
index
>=
parentNode
[
childKey
]
.
length
)
{
}
else
if
(
index
>=
children
.
length
)
{
index
=
-
1
;
}
if
(
parentNode
[
childKey
]
.
length
>
0
&&
index
===
0
)
{
parentNode
[
childKey
]
[
0
].
isFirstNode
=
false
;
view
.
setNodeLineIcos
(
setting
,
parentNode
[
childKey
]
[
0
]);
}
else
if
(
parentNode
[
childKey
]
.
length
>
0
&&
index
<
0
)
{
parentNode
[
childKey
][
parentNode
[
childKey
]
.
length
-
1
].
isLastNode
=
false
;
view
.
setNodeLineIcos
(
setting
,
parentNode
[
childKey
][
parentNode
[
childKey
]
.
length
-
1
]);
if
(
children
.
length
>
0
&&
index
===
0
)
{
children
[
0
].
isFirstNode
=
false
;
view
.
setNodeLineIcos
(
setting
,
children
[
0
]);
}
else
if
(
children
.
length
>
0
&&
index
<
0
)
{
children
[
children
.
length
-
1
].
isLastNode
=
false
;
view
.
setNodeLineIcos
(
setting
,
children
[
children
.
length
-
1
]);
}
parentNode
.
isParent
=
true
;
data
.
nodeIsParent
(
setting
,
parentNode
,
true
)
;
if
(
index
<
0
)
{
parentNode
[
childKey
]
=
parentNode
[
childKey
].
concat
(
nodes
);
data
.
nodeChildren
(
setting
,
parentNode
,
children
.
concat
(
nodes
)
);
}
else
{
params
=
[
index
,
0
].
concat
(
nodes
);
parentNode
[
childKey
].
splice
.
apply
(
parentNode
[
childKey
]
,
params
);
children
.
splice
.
apply
(
children
,
params
);
}
},
addSelectedNode
:
function
(
setting
,
node
)
{
...
...
@@ -456,10 +458,10 @@
},
getNodeIndex
:
function
(
setting
,
node
)
{
if
(
!
node
)
return
null
;
var
childKey
=
setting
.
data
.
key
.
children
,
p
=
node
.
parentTId
?
node
.
getParentNode
()
:
data
.
getRoot
(
setting
);
for
(
var
i
=
0
,
l
=
p
[
childKey
]
.
length
-
1
;
i
<=
l
;
i
++
)
{
if
(
p
[
childKey
]
[
i
]
===
node
)
{
var
p
=
node
.
parentTId
?
node
.
getParentNode
()
:
data
.
getRoot
(
setting
)
,
children
=
data
.
nodeChildren
(
setting
,
p
);
for
(
var
i
=
0
,
l
=
children
.
length
-
1
;
i
<=
l
;
i
++
)
{
if
(
children
[
i
]
===
node
)
{
return
i
;
}
}
...
...
@@ -467,23 +469,24 @@
},
getNextNode
:
function
(
setting
,
node
)
{
if
(
!
node
)
return
null
;
var
childKey
=
setting
.
data
.
key
.
children
,
p
=
node
.
parentTId
?
node
.
getParentNode
()
:
data
.
getRoot
(
setting
);
for
(
var
i
=
0
,
l
=
p
[
childKey
]
.
length
-
1
;
i
<=
l
;
i
++
)
{
if
(
p
[
childKey
]
[
i
]
===
node
)
{
return
(
i
==
l
?
null
:
p
[
childKey
]
[
i
+
1
]);
var
p
=
node
.
parentTId
?
node
.
getParentNode
()
:
data
.
getRoot
(
setting
)
,
children
=
data
.
nodeChildren
(
setting
,
p
);
for
(
var
i
=
0
,
l
=
children
.
length
-
1
;
i
<=
l
;
i
++
)
{
if
(
children
[
i
]
===
node
)
{
return
(
i
==
l
?
null
:
children
[
i
+
1
]);
}
}
return
null
;
},
getNodeByParam
:
function
(
setting
,
nodes
,
key
,
value
)
{
if
(
!
nodes
||
!
key
)
return
null
;
var
childKey
=
setting
.
data
.
key
.
children
;
for
(
var
i
=
0
,
l
=
nodes
.
length
;
i
<
l
;
i
++
)
{
if
(
nodes
[
i
][
key
]
==
value
)
{
var
node
=
nodes
[
i
];
if
(
node
[
key
]
==
value
)
{
return
nodes
[
i
];
}
var
tmp
=
data
.
getNodeByParam
(
setting
,
nodes
[
i
][
childKey
],
key
,
value
);
var
children
=
data
.
nodeChildren
(
setting
,
node
);
var
tmp
=
data
.
getNodeByParam
(
setting
,
children
,
key
,
value
);
if
(
tmp
)
return
tmp
;
}
return
null
;
...
...
@@ -493,10 +496,6 @@
var
n
=
caches
[
setting
.
treeId
].
nodes
[
data
.
getNodeCacheId
(
tId
)];
return
n
?
n
:
null
;
},
getNodeName
:
function
(
setting
,
node
)
{
var
nameKey
=
setting
.
data
.
key
.
name
;
return
""
+
node
[
nameKey
];
},
getNodePath
:
function
(
setting
,
node
)
{
if
(
!
node
)
return
null
;
...
...
@@ -513,50 +512,49 @@
return
path
;
},
getNodeTitle
:
function
(
setting
,
node
)
{
var
t
=
setting
.
data
.
key
.
title
===
""
?
setting
.
data
.
key
.
name
:
setting
.
data
.
key
.
title
;
return
""
+
node
[
t
];
},
getNodes
:
function
(
setting
)
{
return
data
.
getRoot
(
setting
)[
setting
.
data
.
key
.
children
]
;
return
data
.
nodeChildren
(
setting
,
data
.
getRoot
(
setting
))
;
},
getNodesByParam
:
function
(
setting
,
nodes
,
key
,
value
)
{
if
(
!
nodes
||
!
key
)
return
[];
var
childKey
=
setting
.
data
.
key
.
children
,
result
=
[];
var
result
=
[];
for
(
var
i
=
0
,
l
=
nodes
.
length
;
i
<
l
;
i
++
)
{
if
(
nodes
[
i
][
key
]
==
value
)
{
result
.
push
(
nodes
[
i
]);
var
node
=
nodes
[
i
];
if
(
node
[
key
]
==
value
)
{
result
.
push
(
node
);
}
result
=
result
.
concat
(
data
.
getNodesByParam
(
setting
,
nodes
[
i
][
childKey
],
key
,
value
));
var
children
=
data
.
nodeChildren
(
setting
,
node
);
result
=
result
.
concat
(
data
.
getNodesByParam
(
setting
,
children
,
key
,
value
));
}
return
result
;
},
getNodesByParamFuzzy
:
function
(
setting
,
nodes
,
key
,
value
)
{
if
(
!
nodes
||
!
key
)
return
[];
var
childKey
=
setting
.
data
.
key
.
children
,
result
=
[];
var
result
=
[];
value
=
value
.
toLowerCase
();
for
(
var
i
=
0
,
l
=
nodes
.
length
;
i
<
l
;
i
++
)
{
if
(
typeof
nodes
[
i
][
key
]
==
"
string
"
&&
nodes
[
i
][
key
].
toLowerCase
().
indexOf
(
value
)
>
-
1
)
{
result
.
push
(
nodes
[
i
]);
var
node
=
nodes
[
i
];
if
(
typeof
node
[
key
]
==
"
string
"
&&
nodes
[
i
][
key
].
toLowerCase
().
indexOf
(
value
)
>
-
1
)
{
result
.
push
(
node
);
}
result
=
result
.
concat
(
data
.
getNodesByParamFuzzy
(
setting
,
nodes
[
i
][
childKey
],
key
,
value
));
var
children
=
data
.
nodeChildren
(
setting
,
node
);
result
=
result
.
concat
(
data
.
getNodesByParamFuzzy
(
setting
,
children
,
key
,
value
));
}
return
result
;
},
getNodesByFilter
:
function
(
setting
,
nodes
,
filter
,
isSingle
,
invokeParam
)
{
if
(
!
nodes
)
return
(
isSingle
?
null
:
[]);
var
childKey
=
setting
.
data
.
key
.
children
,
result
=
isSingle
?
null
:
[];
var
result
=
isSingle
?
null
:
[];
for
(
var
i
=
0
,
l
=
nodes
.
length
;
i
<
l
;
i
++
)
{
if
(
tools
.
apply
(
filter
,
[
nodes
[
i
],
invokeParam
],
false
))
{
var
node
=
nodes
[
i
];
if
(
tools
.
apply
(
filter
,
[
node
,
invokeParam
],
false
))
{
if
(
isSingle
)
{
return
node
s
[
i
]
;
return
node
;
}
result
.
push
(
node
s
[
i
]
);
result
.
push
(
node
);
}
var
tmpResult
=
data
.
getNodesByFilter
(
setting
,
nodes
[
i
][
childKey
],
filter
,
isSingle
,
invokeParam
);
var
children
=
data
.
nodeChildren
(
setting
,
node
);
var
tmpResult
=
data
.
getNodesByFilter
(
setting
,
children
,
filter
,
isSingle
,
invokeParam
);
if
(
isSingle
&&
!!
tmpResult
)
{
return
tmpResult
;
}
...
...
@@ -566,11 +564,11 @@
},
getPreNode
:
function
(
setting
,
node
)
{
if
(
!
node
)
return
null
;
var
childKey
=
setting
.
data
.
key
.
children
,
p
=
node
.
parentTId
?
node
.
getParentNode
()
:
data
.
getRoot
(
setting
);
for
(
var
i
=
0
,
l
=
p
[
childKey
]
.
length
;
i
<
l
;
i
++
)
{
if
(
p
[
childKey
]
[
i
]
===
node
)
{
return
(
i
==
0
?
null
:
p
[
childKey
]
[
i
-
1
]);
var
p
=
node
.
parentTId
?
node
.
getParentNode
()
:
data
.
getRoot
(
setting
)
,
children
=
data
.
nodeChildren
(
setting
,
p
);
for
(
var
i
=
0
,
l
=
children
.
length
;
i
<
l
;
i
++
)
{
if
(
children
[
i
]
===
node
)
{
return
(
i
==
0
?
null
:
children
[
i
-
1
]);
}
}
return
null
;
...
...
@@ -613,11 +611,46 @@
}
return
false
;
},
nodeChildren
:
function
(
setting
,
node
,
newChildren
)
{
if
(
!
node
)
{
return
null
;
}
var
key
=
setting
.
data
.
key
.
children
;
if
(
typeof
newChildren
!==
'
undefined
'
)
{
node
[
key
]
=
newChildren
;
}
return
node
[
key
];
},
nodeIsParent
:
function
(
setting
,
node
,
newIsParent
)
{
if
(
!
node
)
{
return
false
;
}
var
key
=
setting
.
data
.
key
.
isParent
;
if
(
typeof
newIsParent
!==
'
undefined
'
)
{
if
(
typeof
newIsParent
===
"
string
"
)
{
newIsParent
=
tools
.
eqs
(
checked
,
"
true
"
);
}
newIsParent
=
!!
newIsParent
;
node
[
key
]
=
newIsParent
;
}
return
node
[
key
];
},
nodeName
:
function
(
setting
,
node
,
newName
)
{
var
key
=
setting
.
data
.
key
.
name
;
if
(
typeof
newName
!==
'
undefined
'
)
{
node
[
key
]
=
newName
;
}
return
""
+
node
[
key
];
},
nodeTitle
:
function
(
setting
,
node
)
{
var
t
=
setting
.
data
.
key
.
title
===
""
?
setting
.
data
.
key
.
name
:
setting
.
data
.
key
.
title
;
return
""
+
node
[
t
];
},
removeNodeCache
:
function
(
setting
,
node
)
{
var
child
Key
=
setting
.
data
.
key
.
children
;
if
(
node
[
childKey
]
)
{
for
(
var
i
=
0
,
l
=
node
[
childKey
]
.
length
;
i
<
l
;
i
++
)
{
data
.
removeNodeCache
(
setting
,
node
[
childKey
]
[
i
]);
var
child
ren
=
data
.
nodeChildren
(
setting
,
node
)
;
if
(
children
)
{
for
(
var
i
=
0
,
l
=
children
.
length
;
i
<
l
;
i
++
)
{
data
.
removeNodeCache
(
setting
,
children
[
i
]);
}
}
data
.
getCache
(
setting
).
nodes
[
data
.
getNodeCacheId
(
node
.
tId
)]
=
null
;
...
...
@@ -646,26 +679,29 @@
},
transformToArrayFormat
:
function
(
setting
,
nodes
)
{
if
(
!
nodes
)
return
[];
var
childKey
=
setting
.
data
.
key
.
children
,
r
=
[];
var
r
=
[];
if
(
tools
.
isArray
(
nodes
))
{
for
(
var
i
=
0
,
l
=
nodes
.
length
;
i
<
l
;
i
++
)
{
r
.
push
(
nodes
[
i
]);
if
(
nodes
[
i
][
childKey
])
r
=
r
.
concat
(
data
.
transformToArrayFormat
(
setting
,
nodes
[
i
][
childKey
]));
var
node
=
nodes
[
i
];
_do
(
node
);
}
}
else
{
r
.
push
(
nodes
);
if
(
nodes
[
childKey
])
r
=
r
.
concat
(
data
.
transformToArrayFormat
(
setting
,
nodes
[
childKey
]));
_do
(
nodes
);
}
return
r
;
function
_do
(
_node
)
{
r
.
push
(
_node
);
var
children
=
data
.
nodeChildren
(
setting
,
_node
);
if
(
children
)
{
r
=
r
.
concat
(
data
.
transformToArrayFormat
(
setting
,
children
));
}
}
},
transformTozTreeFormat
:
function
(
setting
,
sNodes
)
{
var
i
,
l
,
key
=
setting
.
data
.
simpleData
.
idKey
,
parentKey
=
setting
.
data
.
simpleData
.
pIdKey
,
childKey
=
setting
.
data
.
key
.
children
;
parentKey
=
setting
.
data
.
simpleData
.
pIdKey
;
if
(
!
key
||
key
==
""
||
!
sNodes
)
return
[];
if
(
tools
.
isArray
(
sNodes
))
{
...
...
@@ -675,10 +711,13 @@
tmpMap
[
sNodes
[
i
][
key
]]
=
sNodes
[
i
];
}
for
(
i
=
0
,
l
=
sNodes
.
length
;
i
<
l
;
i
++
)
{
if
(
tmpMap
[
sNodes
[
i
][
parentKey
]]
&&
sNodes
[
i
][
key
]
!=
sNodes
[
i
][
parentKey
])
{
if
(
!
tmpMap
[
sNodes
[
i
][
parentKey
]][
childKey
])
tmpMap
[
sNodes
[
i
][
parentKey
]][
childKey
]
=
[];
tmpMap
[
sNodes
[
i
][
parentKey
]][
childKey
].
push
(
sNodes
[
i
]);
var
p
=
tmpMap
[
sNodes
[
i
][
parentKey
]];
if
(
p
&&
sNodes
[
i
][
key
]
!=
sNodes
[
i
][
parentKey
])
{
var
children
=
data
.
nodeChildren
(
setting
,
p
);
if
(
!
children
)
{
children
=
data
.
nodeChildren
(
setting
,
p
,
[]);
}
children
.
push
(
sNodes
[
i
]);
}
else
{
r
.
push
(
sNodes
[
i
]);
}
...
...
@@ -830,8 +869,9 @@
return
defaultValue
;
},
canAsync
:
function
(
setting
,
node
)
{
var
childKey
=
setting
.
data
.
key
.
children
;
return
(
setting
.
async
.
enable
&&
node
&&
node
.
isParent
&&
!
(
node
.
zAsync
||
(
node
[
childKey
]
&&
node
[
childKey
].
length
>
0
)));
var
children
=
data
.
nodeChildren
(
setting
,
node
);
var
isParent
=
data
.
nodeIsParent
(
setting
,
node
);
return
(
setting
.
async
.
enable
&&
node
&&
isParent
&&
!
(
node
.
zAsync
||
(
children
&&
children
.
length
>
0
)));
},
clone
:
function
(
obj
)
{
if
(
obj
===
null
)
return
null
;
...
...
@@ -889,7 +929,8 @@
//method of operate ztree dom
view
=
{
addNodes
:
function
(
setting
,
parentNode
,
index
,
newNodes
,
isSilent
)
{
if
(
setting
.
data
.
keep
.
leaf
&&
parentNode
&&
!
parentNode
.
isParent
)
{
var
isParent
=
data
.
nodeIsParent
(
setting
,
parentNode
);
if
(
setting
.
data
.
keep
.
leaf
&&
parentNode
&&
!
isParent
)
{
return
;
}
if
(
!
tools
.
isArray
(
newNodes
))
{
...
...
@@ -924,11 +965,10 @@
},
appendNodes
:
function
(
setting
,
level
,
nodes
,
parentNode
,
index
,
initFlag
,
openFlag
)
{
if
(
!
nodes
)
return
[];
var
html
=
[],
childKey
=
setting
.
data
.
key
.
children
;
var
html
=
[];
var
tmpPNode
=
(
parentNode
)
?
parentNode
:
data
.
getRoot
(
setting
),
tmpPChild
=
tmpPNode
[
childKey
]
,
tmpPChild
=
data
.
nodeChildren
(
setting
,
tmpPNode
)
,
isFirstNode
,
isLastNode
;
if
(
!
tmpPChild
||
index
>=
tmpPChild
.
length
-
nodes
.
length
)
{
...
...
@@ -943,14 +983,15 @@
data
.
initNode
(
setting
,
level
,
node
,
parentNode
,
isFirstNode
,
isLastNode
,
openFlag
);
data
.
addNodeCache
(
setting
,
node
);
}
var
isParent
=
data
.
nodeIsParent
(
setting
,
node
);
var
childHtml
=
[];
if
(
node
[
childKey
]
&&
node
[
childKey
].
length
>
0
)
{
var
children
=
data
.
nodeChildren
(
setting
,
node
);
if
(
children
&&
children
.
length
>
0
)
{
//make child html first, because checkType
childHtml
=
view
.
appendNodes
(
setting
,
level
+
1
,
node
[
childKey
]
,
node
,
-
1
,
initFlag
,
openFlag
&&
node
.
open
);
childHtml
=
view
.
appendNodes
(
setting
,
level
+
1
,
children
,
node
,
-
1
,
initFlag
,
openFlag
&&
node
.
open
);
}
if
(
openFlag
)
{
view
.
makeDOMNodeMainBefore
(
html
,
setting
,
node
);
view
.
makeDOMNodeLine
(
html
,
setting
,
node
);
data
.
getBeforeA
(
setting
,
node
,
html
);
...
...
@@ -960,7 +1001,7 @@
data
.
getInnerAfterA
(
setting
,
node
,
html
);
view
.
makeDOMNodeNameAfter
(
html
,
setting
,
node
);
data
.
getAfterA
(
setting
,
node
,
html
);
if
(
node
.
isParent
&&
node
.
open
)
{
if
(
isParent
&&
node
.
open
)
{
view
.
makeUlHtml
(
setting
,
node
,
html
,
childHtml
.
join
(
''
));
}
view
.
makeDOMNodeMainAfter
(
html
,
setting
,
node
);
...
...
@@ -980,14 +1021,15 @@
if
(
ulObj
.
get
(
0
))
{
ulObj
.
remove
();
}
var
child
Key
=
setting
.
data
.
key
.
children
,
childHtml
=
view
.
appendNodes
(
setting
,
node
.
level
+
1
,
node
[
childKey
]
,
node
,
-
1
,
false
,
true
);
var
child
ren
=
data
.
nodeChildren
(
setting
,
node
)
,
childHtml
=
view
.
appendNodes
(
setting
,
node
.
level
+
1
,
children
,
node
,
-
1
,
false
,
true
);
view
.
makeUlHtml
(
setting
,
node
,
html
,
childHtml
.
join
(
''
));
nObj
.
append
(
html
.
join
(
''
));
},
asyncNode
:
function
(
setting
,
node
,
isSilent
,
callback
)
{
var
i
,
l
;
if
(
node
&&
!
node
.
isParent
)
{
var
isParent
=
data
.
nodeIsParent
(
setting
,
node
);
if
(
node
&&
!
isParent
)
{
tools
.
apply
(
callback
);
return
false
;
}
else
if
(
node
&&
node
.
isAjaxing
)
{
...
...
@@ -1003,21 +1045,23 @@
}
var
tmpParam
=
{};
for
(
i
=
0
,
l
=
setting
.
async
.
autoParam
.
length
;
node
&&
i
<
l
;
i
++
)
{
var
pKey
=
setting
.
async
.
autoParam
[
i
].
split
(
"
=
"
),
spKey
=
pKey
;
var
autoParam
=
tools
.
apply
(
setting
.
async
.
autoParam
,
[
setting
.
treeId
,
node
],
setting
.
async
.
autoParam
);
for
(
i
=
0
,
l
=
autoParam
.
length
;
node
&&
i
<
l
;
i
++
)
{
var
pKey
=
autoParam
[
i
].
split
(
"
=
"
),
spKey
=
pKey
;
if
(
pKey
.
length
>
1
)
{
spKey
=
pKey
[
1
];
pKey
=
pKey
[
0
];
}
tmpParam
[
spKey
]
=
node
[
pKey
];
}
if
(
tools
.
isArray
(
setting
.
async
.
otherParam
))
{
for
(
i
=
0
,
l
=
setting
.
async
.
otherParam
.
length
;
i
<
l
;
i
+=
2
)
{
tmpParam
[
setting
.
async
.
otherParam
[
i
]]
=
setting
.
async
.
otherParam
[
i
+
1
];
var
otherParam
=
tools
.
apply
(
setting
.
async
.
otherParam
,
[
setting
.
treeId
,
node
],
setting
.
async
.
otherParam
);
if
(
tools
.
isArray
(
otherParam
))
{
for
(
i
=
0
,
l
=
otherParam
.
length
;
i
<
l
;
i
+=
2
)
{
tmpParam
[
otherParam
[
i
]]
=
otherParam
[
i
+
1
];
}
}
else
{
for
(
var
p
in
setting
.
async
.
otherParam
)
{
tmpParam
[
p
]
=
setting
.
async
.
otherParam
[
p
];
for
(
var
p
in
otherParam
)
{
tmpParam
[
p
]
=
otherParam
[
p
];
}
}
...
...
@@ -1103,8 +1147,7 @@
createNodes
:
function
(
setting
,
level
,
nodes
,
parentNode
,
index
)
{
if
(
!
nodes
||
nodes
.
length
==
0
)
return
;
var
root
=
data
.
getRoot
(
setting
),
childKey
=
setting
.
data
.
key
.
children
,
openFlag
=
!
parentNode
||
parentNode
.
open
||
!!
$$
(
parentNode
[
childKey
][
0
],
setting
).
get
(
0
);
openFlag
=
!
parentNode
||
parentNode
.
open
||
!!
$$
(
data
.
nodeChildren
(
setting
,
parentNode
)[
0
],
setting
).
get
(
0
);
root
.
createdNodes
=
[];
var
zTreeHtml
=
view
.
appendNodes
(
setting
,
level
,
nodes
,
parentNode
,
index
,
true
,
openFlag
),
parentObj
,
nextObj
;
...
...
@@ -1142,13 +1185,14 @@
delete
settings
[
setting
.
treeId
];
},
expandCollapseNode
:
function
(
setting
,
node
,
expandFlag
,
animateFlag
,
callback
)
{
var
root
=
data
.
getRoot
(
setting
),
childKey
=
setting
.
data
.
key
.
children
;
var
root
=
data
.
getRoot
(
setting
);
var
tmpCb
,
_callback
;
if
(
!
node
)
{
tools
.
apply
(
callback
,
[]);
return
;
}
var
children
=
data
.
nodeChildren
(
setting
,
node
);
var
isParent
=
data
.
nodeIsParent
(
setting
,
node
);
if
(
root
.
expandTriggerFlag
)
{
_callback
=
callback
;
tmpCb
=
function
()
{
...
...
@@ -1162,7 +1206,7 @@
callback
=
tmpCb
;
root
.
expandTriggerFlag
=
false
;
}
if
(
!
node
.
open
&&
node
.
isParent
&&
((
!
$$
(
node
,
consts
.
id
.
UL
,
setting
).
get
(
0
))
||
(
node
[
childKey
]
&&
node
[
childKey
].
length
>
0
&&
!
$$
(
node
[
childKey
]
[
0
],
setting
).
get
(
0
))))
{
if
(
!
node
.
open
&&
isParent
&&
((
!
$$
(
node
,
consts
.
id
.
UL
,
setting
).
get
(
0
))
||
(
children
&&
children
.
length
>
0
&&
!
$$
(
children
[
0
],
setting
).
get
(
0
))))
{
view
.
appendParentULDom
(
setting
,
node
);
view
.
createNodeCallback
(
setting
);
}
...
...
@@ -1174,7 +1218,7 @@
switchObj
=
$$
(
node
,
consts
.
id
.
SWITCH
,
setting
),
icoObj
=
$$
(
node
,
consts
.
id
.
ICON
,
setting
);
if
(
node
.
isParent
)
{
if
(
isParent
)
{
node
.
open
=
!
node
.
open
;
if
(
node
.
iconOpen
&&
node
.
iconClose
)
{
icoObj
.
attr
(
"
style
"
,
view
.
makeNodeIcoStyle
(
setting
,
node
));
...
...
@@ -1187,7 +1231,7 @@
ulObj
.
show
();
tools
.
apply
(
callback
,
[]);
}
else
{
if
(
node
[
childKey
]
&&
node
[
childKey
]
.
length
>
0
)
{
if
(
children
&&
children
.
length
>
0
)
{
ulObj
.
slideDown
(
setting
.
view
.
expandSpeed
,
callback
);
}
else
{
ulObj
.
show
();
...
...
@@ -1197,7 +1241,7 @@
}
else
{
view
.
replaceSwitchClass
(
node
,
switchObj
,
consts
.
folder
.
CLOSE
);
view
.
replaceIcoClass
(
node
,
icoObj
,
consts
.
folder
.
CLOSE
);
if
(
animateFlag
==
false
||
setting
.
view
.
expandSpeed
==
""
||
!
(
node
[
childKey
]
&&
node
[
childKey
]
.
length
>
0
))
{
if
(
animateFlag
==
false
||
setting
.
view
.
expandSpeed
==
""
||
!
(
children
&&
children
.
length
>
0
))
{
ulObj
.
hide
();
tools
.
apply
(
callback
,
[]);
}
else
{
...
...
@@ -1222,8 +1266,7 @@
},
expandCollapseSonNode
:
function
(
setting
,
node
,
expandFlag
,
animateFlag
,
callback
)
{
var
root
=
data
.
getRoot
(
setting
),
childKey
=
setting
.
data
.
key
.
children
,
treeNodes
=
(
node
)
?
node
[
childKey
]
:
root
[
childKey
],
treeNodes
=
(
node
)
?
data
.
nodeChildren
(
setting
,
node
)
:
data
.
nodeChildren
(
setting
,
root
),
selfAnimateSign
=
(
node
)
?
false
:
animateFlag
,
expandTriggerFlag
=
data
.
getRoot
(
setting
).
expandTriggerFlag
;
data
.
getRoot
(
setting
).
expandTriggerFlag
=
false
;
...
...
@@ -1249,7 +1292,7 @@
return
false
;
},
makeDOMNodeIcon
:
function
(
html
,
setting
,
node
)
{
var
nameStr
=
data
.
getN
odeName
(
setting
,
node
),
var
nameStr
=
data
.
n
odeName
(
setting
,
node
),
name
=
setting
.
view
.
nameIsHTML
?
nameStr
:
nameStr
.
replace
(
/&/g
,
'
&
'
).
replace
(
/</g
,
'
<
'
).
replace
(
/>/g
,
'
>
'
);
html
.
push
(
"
<span id='
"
,
node
.
tId
,
consts
.
id
.
ICON
,
"
' title='' treeNode
"
,
consts
.
id
.
ICON
,
"
class='
"
,
view
.
makeNodeIcoClass
(
setting
,
node
),
...
...
@@ -1270,7 +1313,7 @@
html
.
push
(
"
</a>
"
);
},
makeDOMNodeNameBefore
:
function
(
html
,
setting
,
node
)
{
var
title
=
data
.
getN
odeTitle
(
setting
,
node
),
var
title
=
data
.
n
odeTitle
(
setting
,
node
),
url
=
view
.
makeNodeUrl
(
setting
,
node
),
fontcss
=
view
.
makeNodeFontCss
(
setting
,
node
),
fontStyle
=
[];
...
...
@@ -1292,8 +1335,9 @@
makeNodeIcoClass
:
function
(
setting
,
node
)
{
var
icoCss
=
[
"
ico
"
];
if
(
!
node
.
isAjaxing
)
{
var
isParent
=
data
.
nodeIsParent
(
setting
,
node
);
icoCss
[
0
]
=
(
node
.
iconSkin
?
node
.
iconSkin
+
"
_
"
:
""
)
+
icoCss
[
0
];
if
(
node
.
isParent
)
{
if
(
isParent
)
{
icoCss
.
push
(
node
.
open
?
consts
.
folder
.
OPEN
:
consts
.
folder
.
CLOSE
);
}
else
{
icoCss
.
push
(
consts
.
folder
.
DOCU
);
...
...
@@ -1304,7 +1348,8 @@
makeNodeIcoStyle
:
function
(
setting
,
node
)
{
var
icoStyle
=
[];
if
(
!
node
.
isAjaxing
)
{
var
icon
=
(
node
.
isParent
&&
node
.
iconOpen
&&
node
.
iconClose
)
?
(
node
.
open
?
node
.
iconOpen
:
node
.
iconClose
)
:
node
[
setting
.
data
.
key
.
icon
];
var
isParent
=
data
.
nodeIsParent
(
setting
,
node
);
var
icon
=
(
isParent
&&
node
.
iconOpen
&&
node
.
iconClose
)
?
(
node
.
open
?
node
.
iconOpen
:
node
.
iconClose
)
:
node
[
setting
.
data
.
key
.
icon
];
if
(
icon
)
icoStyle
.
push
(
"
background:url(
"
,
icon
,
"
) 0 0 no-repeat;
"
);
if
(
setting
.
view
.
showIcon
==
false
||
!
tools
.
apply
(
setting
.
view
.
showIcon
,
[
setting
.
treeId
,
node
],
true
))
{
icoStyle
.
push
(
"
width:0px;height:0px;
"
);
...
...
@@ -1327,7 +1372,7 @@
}
else
{
lineClass
.
push
(
consts
.
line
.
NOLINE
);
}
if
(
node
.
isParent
)
{
if
(
data
.
nodeIsParent
(
setting
,
node
)
)
{
lineClass
.
push
(
node
.
open
?
consts
.
folder
.
OPEN
:
consts
.
folder
.
CLOSE
);
}
else
{
lineClass
.
push
(
consts
.
folder
.
DOCU
);
...
...
@@ -1354,18 +1399,17 @@
},
removeChildNodes
:
function
(
setting
,
node
)
{
if
(
!
node
)
return
;
var
childKey
=
setting
.
data
.
key
.
children
,
nodes
=
node
[
childKey
];
var
nodes
=
data
.
nodeChildren
(
setting
,
node
);
if
(
!
nodes
)
return
;
for
(
var
i
=
0
,
l
=
nodes
.
length
;
i
<
l
;
i
++
)
{
data
.
removeNodeCache
(
setting
,
nodes
[
i
]);
}
data
.
removeSelectedNode
(
setting
);
delete
node
[
childKey
];
delete
node
[
setting
.
data
.
key
.
children
];
if
(
!
setting
.
data
.
keep
.
parent
)
{
node
.
isParent
=
false
;
data
.
nodeIsParent
(
setting
,
node
,
false
)
;
node
.
open
=
false
;
var
tmp_switchObj
=
$$
(
node
,
consts
.
id
.
SWITCH
,
setting
),
tmp_icoObj
=
$$
(
node
,
consts
.
id
.
ICON
,
setting
);
...
...
@@ -1458,20 +1502,19 @@
dom
.
scrollIntoViewIfNeeded
();
},
setFirstNode
:
function
(
setting
,
parentNode
)
{
var
child
Key
=
setting
.
data
.
key
.
children
,
childLength
=
parentNode
[
childKey
].
length
;
if
(
child
L
ength
>
0
)
{
parentNode
[
childKey
]
[
0
].
isFirstNode
=
true
;
var
child
ren
=
data
.
nodeChildren
(
setting
,
parentNode
)
;
if
(
child
ren
.
l
ength
>
0
)
{
children
[
0
].
isFirstNode
=
true
;
}
},
setLastNode
:
function
(
setting
,
parentNode
)
{
var
child
Key
=
setting
.
data
.
key
.
children
,
childLength
=
parentNode
[
childKey
].
length
;
if
(
child
L
ength
>
0
)
{
parentNode
[
childKey
][
childL
ength
-
1
].
isLastNode
=
true
;
var
child
ren
=
data
.
nodeChildren
(
setting
,
parentNode
)
;
if
(
child
ren
.
l
ength
>
0
)
{
children
[
children
.
l
ength
-
1
].
isLastNode
=
true
;
}
},
removeNode
:
function
(
setting
,
node
)
{
var
root
=
data
.
getRoot
(
setting
),
childKey
=
setting
.
data
.
key
.
children
,
parentNode
=
(
node
.
parentTId
)
?
node
.
getParentNode
()
:
root
;
node
.
isFirstNode
=
false
;
...
...
@@ -1491,9 +1534,10 @@
data
.
removeNodeCache
(
setting
,
node
);
data
.
removeSelectedNode
(
setting
,
node
);
for
(
var
i
=
0
,
l
=
parentNode
[
childKey
].
length
;
i
<
l
;
i
++
)
{
if
(
parentNode
[
childKey
][
i
].
tId
==
node
.
tId
)
{
parentNode
[
childKey
].
splice
(
i
,
1
);
var
children
=
data
.
nodeChildren
(
setting
,
parentNode
);
for
(
var
i
=
0
,
l
=
children
.
length
;
i
<
l
;
i
++
)
{
if
(
children
[
i
].
tId
==
node
.
tId
)
{
children
.
splice
(
i
,
1
);
break
;
}
}
...
...
@@ -1501,14 +1545,14 @@
view
.
setLastNode
(
setting
,
parentNode
);
var
tmp_ulObj
,
tmp_switchObj
,
tmp_icoObj
,
childLength
=
parentNode
[
childKey
]
.
length
;
childLength
=
children
.
length
;
//repair nodes old parent
if
(
!
setting
.
data
.
keep
.
parent
&&
childLength
==
0
)
{
//old parentNode has no child nodes
parentNode
.
isParent
=
false
;
data
.
nodeIsParent
(
setting
,
parentNode
,
false
)
;
parentNode
.
open
=
false
;
delete
parentNode
[
childKey
];
delete
parentNode
[
setting
.
data
.
key
.
children
];
tmp_ulObj
=
$$
(
parentNode
,
consts
.
id
.
UL
,
setting
);
tmp_switchObj
=
$$
(
parentNode
,
consts
.
id
.
SWITCH
,
setting
);
tmp_icoObj
=
$$
(
parentNode
,
consts
.
id
.
ICON
,
setting
);
...
...
@@ -1518,17 +1562,17 @@
}
else
if
(
setting
.
view
.
showLine
&&
childLength
>
0
)
{
//old parentNode has child nodes
var
newLast
=
parentNode
[
childKey
]
[
childLength
-
1
];
var
newLast
=
children
[
childLength
-
1
];
tmp_ulObj
=
$$
(
newLast
,
consts
.
id
.
UL
,
setting
);
tmp_switchObj
=
$$
(
newLast
,
consts
.
id
.
SWITCH
,
setting
);
tmp_icoObj
=
$$
(
newLast
,
consts
.
id
.
ICON
,
setting
);
if
(
parentNode
==
root
)
{
if
(
parentNode
[
childKey
]
.
length
==
1
)
{
if
(
children
.
length
==
1
)
{
//node was root, and ztree has only one root after move node
view
.
replaceSwitchClass
(
newLast
,
tmp_switchObj
,
consts
.
line
.
ROOT
);
}
else
{
var
tmp_first_switchObj
=
$$
(
parentNode
[
childKey
]
[
0
],
consts
.
id
.
SWITCH
,
setting
);
view
.
replaceSwitchClass
(
parentNode
[
childKey
]
[
0
],
tmp_first_switchObj
,
consts
.
line
.
ROOTS
);
var
tmp_first_switchObj
=
$$
(
children
[
0
],
consts
.
id
.
SWITCH
,
setting
);
view
.
replaceSwitchClass
(
children
[
0
],
tmp_first_switchObj
,
consts
.
line
.
ROOTS
);
view
.
replaceSwitchClass
(
newLast
,
tmp_switchObj
,
consts
.
line
.
BOTTOM
);
}
}
else
{
...
...
@@ -1604,7 +1648,7 @@
ulObj
.
addClass
(
ulLine
);
}
switchObj
.
attr
(
"
class
"
,
view
.
makeNodeLineClass
(
setting
,
node
));
if
(
node
.
isParent
)
{
if
(
data
.
nodeIsParent
(
setting
,
node
)
)
{
switchObj
.
removeAttr
(
"
disabled
"
);
}
else
{
switchObj
.
attr
(
"
disabled
"
,
"
disabled
"
);
...
...
@@ -1614,13 +1658,13 @@
icoObj
.
attr
(
"
class
"
,
view
.
makeNodeIcoClass
(
setting
,
node
));
},
setNodeName
:
function
(
setting
,
node
)
{
var
title
=
data
.
getN
odeTitle
(
setting
,
node
),
var
title
=
data
.
n
odeTitle
(
setting
,
node
),
nObj
=
$$
(
node
,
consts
.
id
.
SPAN
,
setting
);
nObj
.
empty
();
if
(
setting
.
view
.
nameIsHTML
)
{
nObj
.
html
(
data
.
getN
odeName
(
setting
,
node
));
nObj
.
html
(
data
.
n
odeName
(
setting
,
node
));
}
else
{
nObj
.
text
(
data
.
getN
odeName
(
setting
,
node
));
nObj
.
text
(
data
.
n
odeName
(
setting
,
node
));
}
if
(
tools
.
apply
(
setting
.
view
.
showTitle
,
[
setting
.
treeId
,
node
],
setting
.
view
.
showTitle
))
{
var
aObj
=
$$
(
node
,
consts
.
id
.
A
,
setting
);
...
...
@@ -1687,13 +1731,12 @@
setting
.
view
.
expandSpeed
=
""
;
}
data
.
initRoot
(
setting
);
var
root
=
data
.
getRoot
(
setting
),
childKey
=
setting
.
data
.
key
.
children
;
var
root
=
data
.
getRoot
(
setting
);
zNodes
=
zNodes
?
tools
.
clone
(
tools
.
isArray
(
zNodes
)
?
zNodes
:
[
zNodes
])
:
[];
if
(
setting
.
data
.
simpleData
.
enable
)
{
root
[
childKey
]
=
data
.
transformTozTreeFormat
(
setting
,
zNodes
);
data
.
nodeChildren
(
setting
,
root
,
data
.
transformTozTreeFormat
(
setting
,
zNodes
)
);
}
else
{
root
[
childKey
]
=
zNodes
;
data
.
nodeChildren
(
setting
,
root
,
zNodes
)
;
}
data
.
initCache
(
setting
);
...
...
@@ -1706,7 +1749,8 @@
setting
:
setting
,
addNodes
:
function
(
parentNode
,
index
,
newNodes
,
isSilent
)
{
if
(
!
parentNode
)
parentNode
=
null
;
if
(
parentNode
&&
!
parentNode
.
isParent
&&
setting
.
data
.
keep
.
leaf
)
return
null
;
var
isParent
=
data
.
nodeIsParent
(
setting
,
parentNode
);
if
(
parentNode
&&
!
isParent
&&
setting
.
data
.
keep
.
leaf
)
return
null
;
var
i
=
parseInt
(
index
,
10
);
if
(
isNaN
(
i
))
{
...
...
@@ -1744,7 +1788,7 @@
return
expandFlag
;
},
expandNode
:
function
(
node
,
expandFlag
,
sonSign
,
focus
,
callbackFlag
)
{
if
(
!
node
||
!
node
.
isParent
)
return
null
;
if
(
!
node
||
!
data
.
nodeIsParent
(
setting
,
node
)
)
return
null
;
if
(
expandFlag
!==
true
&&
expandFlag
!==
false
)
{
expandFlag
=
!
node
.
open
;
}
...
...
@@ -1784,30 +1828,30 @@
},
getNodeByParam
:
function
(
key
,
value
,
parentNode
)
{
if
(
!
key
)
return
null
;
return
data
.
getNodeByParam
(
setting
,
parentNode
?
parentNode
[
setting
.
data
.
key
.
children
]
:
data
.
getNodes
(
setting
),
key
,
value
);
return
data
.
getNodeByParam
(
setting
,
parentNode
?
data
.
nodeChildren
(
setting
,
parentNode
)
:
data
.
getNodes
(
setting
),
key
,
value
);
},
getNodeByTId
:
function
(
tId
)
{
return
data
.
getNodeCache
(
setting
,
tId
);
},
getNodesByParam
:
function
(
key
,
value
,
parentNode
)
{
if
(
!
key
)
return
null
;
return
data
.
getNodesByParam
(
setting
,
parentNode
?
parentNode
[
setting
.
data
.
key
.
children
]
:
data
.
getNodes
(
setting
),
key
,
value
);
return
data
.
getNodesByParam
(
setting
,
parentNode
?
data
.
nodeChildren
(
setting
,
parentNode
)
:
data
.
getNodes
(
setting
),
key
,
value
);
},
getNodesByParamFuzzy
:
function
(
key
,
value
,
parentNode
)
{
if
(
!
key
)
return
null
;
return
data
.
getNodesByParamFuzzy
(
setting
,
parentNode
?
parentNode
[
setting
.
data
.
key
.
children
]
:
data
.
getNodes
(
setting
),
key
,
value
);
return
data
.
getNodesByParamFuzzy
(
setting
,
parentNode
?
data
.
nodeChildren
(
setting
,
parentNode
)
:
data
.
getNodes
(
setting
),
key
,
value
);
},
getNodesByFilter
:
function
(
filter
,
isSingle
,
parentNode
,
invokeParam
)
{
isSingle
=
!!
isSingle
;
if
(
!
filter
||
(
typeof
filter
!=
"
function
"
))
return
(
isSingle
?
null
:
[]);
return
data
.
getNodesByFilter
(
setting
,
parentNode
?
parentNode
[
setting
.
data
.
key
.
children
]
:
data
.
getNodes
(
setting
),
filter
,
isSingle
,
invokeParam
);
return
data
.
getNodesByFilter
(
setting
,
parentNode
?
data
.
nodeChildren
(
setting
,
parentNode
)
:
data
.
getNodes
(
setting
),
filter
,
isSingle
,
invokeParam
);
},
getNodeIndex
:
function
(
node
)
{
if
(
!
node
)
return
null
;
var
childKey
=
setting
.
data
.
key
.
children
,
parentNode
=
(
node
.
parentTId
)
?
node
.
getParentNode
()
:
data
.
getRoot
(
setting
);
for
(
var
i
=
0
,
l
=
parentNode
[
childKey
]
.
length
;
i
<
l
;
i
++
)
{
if
(
parentNode
[
childKey
]
[
i
]
==
node
)
return
i
;
var
parentNode
=
(
node
.
parentTId
)
?
node
.
getParentNode
()
:
data
.
getRoot
(
setting
);
var
children
=
data
.
nodeChildren
(
setting
,
parentNode
);
for
(
var
i
=
0
,
l
=
children
.
length
;
i
<
l
;
i
++
)
{
if
(
children
[
i
]
==
node
)
return
i
;
}
return
-
1
;
},
...
...
@@ -1840,12 +1884,12 @@
parentNode
=
data
.
getRoot
(
setting
);
}
if
(
reloadType
==
"
refresh
"
)
{
var
child
Key
=
this
.
setting
.
data
.
key
.
children
;
for
(
var
i
=
0
,
l
=
parentNode
[
childKey
]
?
parentNode
[
childKey
]
.
length
:
0
;
i
<
l
;
i
++
)
{
data
.
removeNodeCache
(
setting
,
parentNode
[
childKey
]
[
i
]);
var
child
ren
=
data
.
nodeChildren
(
setting
,
parentNode
)
;
for
(
var
i
=
0
,
l
=
children
?
children
.
length
:
0
;
i
<
l
;
i
++
)
{
data
.
removeNodeCache
(
setting
,
children
[
i
]);
}
data
.
removeSelectedNode
(
setting
);
parentNode
[
childKey
]
=
[]
;
data
.
nodeChildren
(
setting
,
parentNode
,
[])
;
if
(
isRoot
)
{
this
.
setting
.
treeObj
.
empty
();
}
else
{
...
...
@@ -1858,16 +1902,15 @@
refresh
:
function
()
{
this
.
setting
.
treeObj
.
empty
();
var
root
=
data
.
getRoot
(
setting
),
nodes
=
root
[
setting
.
data
.
key
.
children
]
nodes
=
data
.
nodeChildren
(
setting
,
root
);
data
.
initRoot
(
setting
);
root
[
setting
.
data
.
key
.
children
]
=
nodes
data
.
nodeChildren
(
setting
,
root
,
nodes
);
data
.
initCache
(
setting
);
view
.
createNodes
(
setting
,
0
,
root
[
setting
.
data
.
key
.
children
]
,
null
,
-
1
);
view
.
createNodes
(
setting
,
0
,
data
.
nodeChildren
(
setting
,
root
)
,
null
,
-
1
);
},
removeChildNodes
:
function
(
node
)
{
if
(
!
node
)
return
null
;
var
childKey
=
setting
.
data
.
key
.
children
,
nodes
=
node
[
childKey
];
var
nodes
=
data
.
nodeChildren
(
setting
,
node
);
view
.
removeChildNodes
(
setting
,
node
);
return
nodes
?
nodes
:
null
;
},
...
...
@@ -1920,12 +1963,12 @@
view
.
setNodeFontCss
(
setting
,
node
);
}
}
}
}
;
root
.
treeTools
=
zTreeTools
;
data
.
setZTreeTools
(
setting
,
zTreeTools
);
if
(
root
[
childKey
]
&&
root
[
childKey
]
.
length
>
0
)
{
view
.
createNodes
(
setting
,
0
,
root
[
childKey
]
,
null
,
-
1
);
var
children
=
data
.
nodeChildren
(
setting
,
root
);
if
(
children
&&
children
.
length
>
0
)
{
view
.
createNodes
(
setting
,
0
,
children
,
null
,
-
1
);
}
else
if
(
setting
.
async
.
enable
&&
setting
.
async
.
url
&&
setting
.
async
.
url
!==
''
)
{
view
.
asyncNode
(
setting
);
}
...
...
@@ -1938,7 +1981,7 @@
consts
=
zt
.
consts
;
})(
jQuery
);
/*
* JQuery zTree excheck v3.5.3
1
* JQuery zTree excheck v3.5.3
2
* http://treejs.cn/
*
* Copyright (c) 2010 Hunter.z
...
...
@@ -1947,7 +1990,7 @@
* http://www.opensource.org/licenses/mit-license.php
*
* email: hunter.z@263.net
* Date: 201
7-12-28
* Date: 201
8-01-06
*/
(
function
(
$
){
//default consts of excheck
...
...
@@ -2070,10 +2113,9 @@
//default init node of excheck
_initNode
=
function
(
setting
,
level
,
n
,
parentNode
,
isFirstNode
,
isLastNode
,
openFlag
)
{
if
(
!
n
)
return
;
var
checkedKey
=
setting
.
data
.
key
.
checked
;
if
(
typeof
n
[
checkedKey
]
==
"
string
"
)
n
[
checkedKey
]
=
tools
.
eqs
(
n
[
checkedKey
],
"
true
"
);
n
[
checkedKey
]
=
!!
n
[
checkedKey
];
n
.
checkedOld
=
n
[
checkedKey
];
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
"
);
...
...
@@ -2084,14 +2126,13 @@
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
&&
n
[
checkedKey
]
)
{
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
)
{
var
checkedKey
=
setting
.
data
.
key
.
checked
;
if
(
setting
.
check
.
enable
)
{
data
.
makeChkFlag
(
setting
,
node
);
html
.
push
(
"
<span ID='
"
,
node
.
tId
,
consts
.
id
.
CHECK
,
"
' class='
"
,
view
.
makeChkClass
(
setting
,
node
),
"
' treeNode
"
,
consts
.
id
.
CHECK
,
(
node
.
nocheck
===
true
?
"
style='display:none;'
"
:
""
),
"
></span>
"
);
...
...
@@ -2100,20 +2141,20 @@
//update zTreeObj, add method of check
_zTreeTools
=
function
(
setting
,
zTreeTools
)
{
zTreeTools
.
checkNode
=
function
(
node
,
checked
,
checkTypeFlag
,
callbackFlag
)
{
var
checkedKey
=
this
.
setting
.
data
.
key
.
checked
;
var
nodeChecked
=
data
.
nodeChecked
(
setting
,
node
)
;
if
(
node
.
chkDisabled
===
true
)
return
;
if
(
checked
!==
true
&&
checked
!==
false
)
{
checked
=
!
node
[
checkedKey
]
;
checked
=
!
node
Checked
;
}
callbackFlag
=
!!
callbackFlag
;
if
(
node
[
checkedKey
]
===
checked
&&
!
checkTypeFlag
)
{
if
(
node
Checked
===
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
)
{
node
[
checkedKey
]
=
checked
;
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
);
...
...
@@ -2129,14 +2170,14 @@
}
zTreeTools
.
getCheckedNodes
=
function
(
checked
)
{
var
ch
ildKey
=
this
.
setting
.
data
.
key
.
children
;
checked
=
(
checked
!==
false
);
return
data
.
getTreeCheckedNodes
(
this
.
setting
,
data
.
getRoot
(
this
.
setting
)[
childKey
]
,
checked
);
var
ch
ecked
=
(
checked
!==
false
)
;
var
children
=
data
.
nodeChildren
(
setting
,
data
.
getRoot
(
this
.
setting
)
);
return
data
.
getTreeCheckedNodes
(
this
.
setting
,
children
,
checked
);
}
zTreeTools
.
getChangeCheckedNodes
=
function
()
{
var
childKey
=
this
.
setting
.
data
.
key
.
children
;
return
data
.
getTreeChangeCheckedNodes
(
this
.
setting
,
data
.
getRoot
(
this
.
setting
)[
childKey
]
);
var
children
=
data
.
nodeChildren
(
setting
,
data
.
getRoot
(
this
.
setting
))
;
return
data
.
getTreeChangeCheckedNodes
(
this
.
setting
,
children
);
}
zTreeTools
.
setChkDisabled
=
function
(
node
,
disabled
,
inheritParent
,
inheritChildren
)
{
...
...
@@ -2174,27 +2215,28 @@
},
getCheckStatus
:
function
(
setting
,
node
)
{
if
(
!
setting
.
check
.
enable
||
node
.
nocheck
||
node
.
chkDisabled
)
return
null
;
var
checked
Key
=
setting
.
data
.
key
.
checked
,
var
checked
=
data
.
nodeChecked
(
setting
,
node
)
,
r
=
{
checked
:
node
[
checkedKey
]
,
half
:
node
.
halfCheck
?
node
.
halfCheck
:
(
setting
.
check
.
chkStyle
==
consts
.
radio
.
STYLE
?
(
node
.
check_Child_State
===
2
)
:
(
node
[
checkedKey
]
?
(
node
.
check_Child_State
>
-
1
&&
node
.
check_Child_State
<
2
)
:
(
node
.
check_Child_State
>
0
)))
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
childKey
=
setting
.
data
.
key
.
children
,
checkedKey
=
setting
.
data
.
key
.
checked
,
onlyOne
=
(
checked
&&
setting
.
check
.
chkStyle
==
consts
.
radio
.
STYLE
&&
setting
.
check
.
radioType
==
consts
.
radio
.
TYPE_ALL
);
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
++
)
{
if
(
nodes
[
i
].
nocheck
!==
true
&&
nodes
[
i
].
chkDisabled
!==
true
&&
nodes
[
i
][
checkedKey
]
==
checked
)
{
results
.
push
(
nodes
[
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
,
nodes
[
i
][
childKey
]
,
checked
,
results
);
data
.
getTreeCheckedNodes
(
setting
,
children
,
checked
,
results
);
if
(
onlyOne
&&
results
.
length
>
0
)
{
break
;
}
...
...
@@ -2203,32 +2245,33 @@
},
getTreeChangeCheckedNodes
:
function
(
setting
,
nodes
,
results
)
{
if
(
!
nodes
)
return
[];
var
childKey
=
setting
.
data
.
key
.
children
,
checkedKey
=
setting
.
data
.
key
.
checked
;
results
=
!
results
?
[]
:
results
;
for
(
var
i
=
0
,
l
=
nodes
.
length
;
i
<
l
;
i
++
)
{
if
(
nodes
[
i
].
nocheck
!==
true
&&
nodes
[
i
].
chkDisabled
!==
true
&&
nodes
[
i
][
checkedKey
]
!=
nodes
[
i
].
checkedOld
)
{
results
.
push
(
nodes
[
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
,
nodes
[
i
][
childKey
]
,
results
);
data
.
getTreeChangeCheckedNodes
(
setting
,
children
,
results
);
}
return
results
;
},
makeChkFlag
:
function
(
setting
,
node
)
{
if
(
!
node
)
return
;
var
ch
ildKey
=
setting
.
data
.
key
.
children
,
checkedKey
=
setting
.
data
.
key
.
checked
,
chkFlag
=
-
1
;
if
(
node
[
childKey
]
)
{
for
(
var
i
=
0
,
l
=
node
[
childKey
].
length
;
i
<
l
;
i
++
)
{
var
cNode
=
node
[
childKey
][
i
]
;
var
ch
kFlag
=
-
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
(
cNode
[
checkedKey
]
)
{
}
else
if
(
nodeChecked
)
{
tmp
=
2
;
}
else
{
tmp
=
cNode
.
check_Child_State
>
0
?
2
:
0
;
...
...
@@ -2243,7 +2286,7 @@
tmp
=
cNode
.
check_Child_State
;
}
else
if
(
cNode
.
halfCheck
===
true
)
{
tmp
=
1
;
}
else
if
(
cNode
[
checkedKey
]
)
{
}
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
;
...
...
@@ -2271,10 +2314,10 @@
_handler
=
{
onCheckNode
:
function
(
event
,
node
)
{
if
(
node
.
chkDisabled
===
true
)
return
false
;
var
setting
=
data
.
getSetting
(
event
.
data
.
treeId
),
checkedKey
=
setting
.
data
.
key
.
checked
;
var
setting
=
data
.
getSetting
(
event
.
data
.
treeId
);
if
(
tools
.
apply
(
setting
.
callback
.
beforeCheck
,
[
setting
.
treeId
,
node
],
true
)
==
false
)
return
true
;
node
[
checkedKey
]
=
!
node
[
checkedKey
];
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
);
...
...
@@ -2307,17 +2350,17 @@
_view
=
{
checkNodeRelation
:
function
(
setting
,
node
)
{
var
pNode
,
i
,
l
,
childKey
=
setting
.
data
.
key
.
children
,
checkedKey
=
setting
.
data
.
key
.
checked
,
r
=
consts
.
radio
;
var
nodeChecked
=
data
.
nodeChecked
(
setting
,
node
);
if
(
setting
.
check
.
chkStyle
==
r
.
STYLE
)
{
var
checkedList
=
data
.
getRadioCheckedList
(
setting
);
if
(
node
[
checkedKey
]
)
{
if
(
node
Checked
)
{
if
(
setting
.
check
.
radioType
==
r
.
TYPE_ALL
)
{
for
(
i
=
checkedList
.
length
-
1
;
i
>=
0
;
i
--
)
{
pNode
=
checkedList
[
i
];
if
(
pNode
[
checkedKey
]
&&
pNode
!=
node
)
{
pNode
[
checkedKey
]
=
false
;
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
);
...
...
@@ -2329,10 +2372,12 @@
checkedList
.
push
(
node
);
}
else
{
var
parentNode
=
(
node
.
parentTId
)
?
node
.
getParentNode
()
:
data
.
getRoot
(
setting
);
for
(
i
=
0
,
l
=
parentNode
[
childKey
].
length
;
i
<
l
;
i
++
)
{
pNode
=
parentNode
[
childKey
][
i
];
if
(
pNode
[
checkedKey
]
&&
pNode
!=
node
)
{
pNode
[
checkedKey
]
=
false
;
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
);
}
}
...
...
@@ -2347,24 +2392,25 @@
}
}
else
{
if
(
node
[
checkedKey
]
&&
(
!
node
[
childKey
]
||
node
[
childKey
].
length
==
0
||
setting
.
check
.
chkboxType
.
Y
.
indexOf
(
"
s
"
)
>
-
1
))
{
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
(
!
node
[
checkedKey
]
&&
(
!
node
[
childKey
]
||
node
[
childKey
]
.
length
==
0
||
setting
.
check
.
chkboxType
.
N
.
indexOf
(
"
s
"
)
>
-
1
))
{
if
(
!
node
Checked
&&
(
!
children
||
children
.
length
==
0
||
setting
.
check
.
chkboxType
.
N
.
indexOf
(
"
s
"
)
>
-
1
))
{
view
.
setSonNodeCheckBox
(
setting
,
node
,
false
);
}
if
(
node
[
checkedKey
]
&&
setting
.
check
.
chkboxType
.
Y
.
indexOf
(
"
p
"
)
>
-
1
)
{
if
(
node
Checked
&&
setting
.
check
.
chkboxType
.
Y
.
indexOf
(
"
p
"
)
>
-
1
)
{
view
.
setParentNodeCheckBox
(
setting
,
node
,
true
);
}
if
(
!
node
[
checkedKey
]
&&
setting
.
check
.
chkboxType
.
N
.
indexOf
(
"
p
"
)
>
-
1
)
{
if
(
!
node
Checked
&&
setting
.
check
.
chkboxType
.
N
.
indexOf
(
"
p
"
)
>
-
1
)
{
view
.
setParentNodeCheckBox
(
setting
,
node
,
false
);
}
}
},
makeChkClass
:
function
(
setting
,
node
)
{
var
checkedKey
=
setting
.
data
.
key
.
checked
,
c
=
consts
.
checkbox
,
r
=
consts
.
radio
,
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
)
{
...
...
@@ -2372,21 +2418,20 @@
}
else
if
(
setting
.
check
.
chkStyle
==
r
.
STYLE
)
{
fullStyle
=
(
node
.
check_Child_State
<
1
)?
c
.
FULL
:
c
.
PART
;
}
else
{
fullStyle
=
node
[
checkedKey
]
?
((
node
.
check_Child_State
===
2
||
node
.
check_Child_State
===
-
1
)
?
c
.
FULL
:
c
.
PART
)
:
((
node
.
check_Child_State
<
1
)?
c
.
FULL
:
c
.
PART
);
fullStyle
=
node
Checked
?
((
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
+
"
_
"
+
(
node
[
checkedKey
]
?
c
.
TRUE
:
c
.
FALSE
)
+
"
_
"
+
fullStyle
;
var
chkName
=
setting
.
check
.
chkStyle
+
"
_
"
+
(
node
Checked
?
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
checkedKey
=
setting
.
data
.
key
.
checked
,
childKey
=
setting
.
data
.
key
.
children
,
root
=
data
.
getRoot
(
setting
);
for
(
var
i
=
0
,
l
=
root
[
childKey
].
length
;
i
<
l
;
i
++
)
{
var
node
=
root
[
childKey
][
i
];
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
)
{
node
[
checkedKey
]
=
checked
;
data
.
nodeChecked
(
setting
,
node
,
checked
)
;
}
view
.
setSonNodeCheckBox
(
setting
,
node
,
checked
);
}
...
...
@@ -2408,23 +2453,23 @@
},
repairParentChkClassWithSelf
:
function
(
setting
,
node
)
{
if
(
!
node
)
return
;
var
childKey
=
setting
.
data
.
key
.
children
;
if
(
node
[
childKey
]
&&
node
[
childKey
]
.
length
>
0
)
{
view
.
repairParentChkClass
(
setting
,
node
[
childKey
]
[
0
]);
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
;
var
childKey
=
setting
.
data
.
key
.
children
;
if
(
node
.
chkDisabled
!=
chkDisabled
)
{
node
.
chkDisabled
=
chkDisabled
;
}
view
.
repairChkClass
(
setting
,
node
);
if
(
node
[
childKey
]
&&
inherit
)
{
for
(
var
i
=
0
,
l
=
node
[
childKey
].
length
;
i
<
l
;
i
++
)
{
var
sNode
=
node
[
childKey
][
i
];
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
);
}
}
...
...
@@ -2447,13 +2492,11 @@
obj
.
attr
(
'
class
'
,
view
.
makeChkClass
(
setting
,
node
));
},
setParentNodeCheckBox
:
function
(
setting
,
node
,
value
,
srcNode
)
{
var
childKey
=
setting
.
data
.
key
.
children
,
checkedKey
=
setting
.
data
.
key
.
checked
,
checkObj
=
$$
(
node
,
consts
.
id
.
CHECK
,
setting
);
var
checkObj
=
$$
(
node
,
consts
.
id
.
CHECK
,
setting
);
if
(
!
srcNode
)
srcNode
=
node
;
data
.
makeChkFlag
(
setting
,
node
);
if
(
node
.
nocheck
!==
true
&&
node
.
chkDisabled
!==
true
)
{
node
[
checkedKey
]
=
value
;
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
]);
...
...
@@ -2462,10 +2505,12 @@
if
(
node
.
parentTId
)
{
var
pSign
=
true
;
if
(
!
value
)
{
var
pNodes
=
node
.
getParentNode
()[
childKey
]
;
var
pNodes
=
data
.
nodeChildren
(
setting
,
node
.
getParentNode
())
;
for
(
var
i
=
0
,
l
=
pNodes
.
length
;
i
<
l
;
i
++
)
{
if
((
pNodes
[
i
].
nocheck
!==
true
&&
pNodes
[
i
].
chkDisabled
!==
true
&&
pNodes
[
i
][
checkedKey
])
||
((
pNodes
[
i
].
nocheck
===
true
||
pNodes
[
i
].
chkDisabled
===
true
)
&&
pNodes
[
i
].
check_Child_State
>
0
))
{
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
;
}
...
...
@@ -2478,15 +2523,14 @@
},
setSonNodeCheckBox
:
function
(
setting
,
node
,
value
,
srcNode
)
{
if
(
!
node
)
return
;
var
childKey
=
setting
.
data
.
key
.
children
,
checkedKey
=
setting
.
data
.
key
.
checked
,
checkObj
=
$$
(
node
,
consts
.
id
.
CHECK
,
setting
);
var
checkObj
=
$$
(
node
,
consts
.
id
.
CHECK
,
setting
);
if
(
!
srcNode
)
srcNode
=
node
;
var
hasDisable
=
false
;
if
(
node
[
childKey
])
{
for
(
var
i
=
0
,
l
=
node
[
childKey
].
length
;
i
<
l
;
i
++
)
{
var
sNode
=
node
[
childKey
][
i
];
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
;
}
...
...
@@ -2497,8 +2541,8 @@
data
.
makeChkFlag
(
setting
,
node
);
}
if
(
node
.
nocheck
!==
true
&&
node
.
chkDisabled
!==
true
)
{
node
[
checkedKey
]
=
value
;
if
(
!
hasDisable
)
node
.
check_Child_State
=
(
node
[
childKey
]
&&
node
[
childKey
]
.
length
>
0
)
?
(
value
?
2
:
0
)
:
-
1
;
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
;
}
...
...
@@ -2528,6 +2572,21 @@
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
(
checked
,
"
true
"
);
}
newChecked
=
!!
newChecked
;
node
[
key
]
=
newChecked
;
}
return
node
[
key
];
};
data
.
exSetting
(
_setting
);
data
.
addInitBind
(
_bindEvent
);
data
.
addInitUnBind
(
_unbindEvent
);
...
...
@@ -2566,7 +2625,7 @@
}
})(
jQuery
);
/*
* JQuery zTree exedit v3.5.3
1
* JQuery zTree exedit v3.5.3
2
* http://treejs.cn/
*
* Copyright (c) 2010 Hunter.z
...
...
@@ -2575,7 +2634,7 @@
* http://www.opensource.org/licenses/mit-license.php
*
* email: hunter.z@263.net
* Date: 201
7-12-28
* Date: 201
8-01-06
*/
(
function
(
$
){
//default consts of exedit
...
...
@@ -2750,7 +2809,8 @@
}
zTreeTools
.
copyNode
=
function
(
targetNode
,
node
,
moveType
,
isSilent
)
{
if
(
!
node
)
return
null
;
if
(
targetNode
&&
!
targetNode
.
isParent
&&
this
.
setting
.
data
.
keep
.
leaf
&&
moveType
===
consts
.
move
.
TYPE_INNER
)
return
null
;
var
isParent
=
data
.
nodeIsParent
(
setting
,
targetNode
);
if
(
targetNode
&&
!
isParent
&&
this
.
setting
.
data
.
keep
.
leaf
&&
moveType
===
consts
.
move
.
TYPE_INNER
)
return
null
;
var
_this
=
this
,
newNode
=
tools
.
clone
(
node
);
if
(
!
targetNode
)
{
...
...
@@ -2780,7 +2840,8 @@
}
zTreeTools
.
moveNode
=
function
(
targetNode
,
node
,
moveType
,
isSilent
)
{
if
(
!
node
)
return
node
;
if
(
targetNode
&&
!
targetNode
.
isParent
&&
this
.
setting
.
data
.
keep
.
leaf
&&
moveType
===
consts
.
move
.
TYPE_INNER
)
{
var
isParent
=
data
.
nodeIsParent
(
setting
,
targetNode
);
if
(
targetNode
&&
!
isParent
&&
this
.
setting
.
data
.
keep
.
leaf
&&
moveType
===
consts
.
move
.
TYPE_INNER
)
{
return
null
;
}
else
if
(
targetNode
&&
((
node
.
parentTId
==
targetNode
.
tId
&&
moveType
==
consts
.
move
.
TYPE_INNER
)
||
$$
(
node
,
this
.
setting
).
find
(
"
#
"
+
targetNode
.
tId
).
length
>
0
))
{
return
null
;
...
...
@@ -2807,11 +2868,11 @@
_data
=
{
setSonNodeLevel
:
function
(
setting
,
parentNode
,
node
)
{
if
(
!
node
)
return
;
var
childKey
=
setting
.
data
.
key
.
children
;
var
children
=
data
.
nodeChildren
(
setting
,
node
)
;
node
.
level
=
(
parentNode
)?
parentNode
.
level
+
1
:
0
;
if
(
!
node
[
childKey
]
)
return
;
for
(
var
i
=
0
,
l
=
node
[
childKey
]
.
length
;
i
<
l
;
i
++
)
{
if
(
node
[
childKey
][
i
])
data
.
setSonNodeLevel
(
setting
,
node
,
node
[
childKey
]
[
i
]);
if
(
!
children
)
return
;
for
(
var
i
=
0
,
l
=
children
.
length
;
i
<
l
;
i
++
)
{
if
(
children
[
i
])
data
.
setSonNodeLevel
(
setting
,
node
,
children
[
i
]);
}
}
},
...
...
@@ -2890,8 +2951,7 @@
&&
Math
.
abs
(
mouseDownY
-
event
.
clientY
)
<
setting
.
edit
.
drag
.
minMoveSize
)
{
return
true
;
}
var
i
,
l
,
tmpNode
,
tmpDom
,
tmpNodes
,
childKey
=
setting
.
data
.
key
.
children
;
var
i
,
l
,
tmpNode
,
tmpDom
,
tmpNodes
;
body
.
css
(
"
cursor
"
,
"
pointer
"
);
if
(
root
.
dragFlag
==
0
)
{
...
...
@@ -2905,7 +2965,7 @@
root
.
dragNodeShowBefore
=
[];
}
tmpNode
=
nodes
[
i
];
if
(
tmpNode
.
isParent
&&
tmpNode
.
open
)
{
if
(
data
.
nodeIsParent
(
setting
,
tmpNode
)
&&
tmpNode
.
open
)
{
view
.
expandCollapseNode
(
setting
,
tmpNode
,
!
tmpNode
.
open
);
root
.
dragNodeShowBefore
[
tmpNode
.
tId
]
=
true
;
}
else
{
...
...
@@ -2920,7 +2980,7 @@
//sort
var
isOrder
=
true
,
lastIndex
=
-
1
;
if
(
nodes
.
length
>
1
)
{
var
pNodes
=
nodes
[
0
].
parentTId
?
nodes
[
0
].
getParentNode
()[
childKey
]
:
data
.
getNodes
(
setting
);
var
pNodes
=
nodes
[
0
].
parentTId
?
data
.
nodeChildren
(
setting
,
nodes
[
0
].
getParentNode
())
:
data
.
getNodes
(
setting
);
tmpNodes
=
[];
for
(
i
=
0
,
l
=
pNodes
.
length
;
i
<
l
;
i
++
)
{
if
(
root
.
dragNodeShowBefore
[
pNodes
[
i
].
tId
]
!==
undefined
)
{
...
...
@@ -3081,7 +3141,7 @@
isInner
=
(
tmpNode
.
parentTId
&&
tmpNode
.
parentTId
==
tmpTargetNodeId
),
canPrev
=
(
isCopy
||
!
isNext
)
&&
tools
.
apply
(
targetSetting
.
edit
.
drag
.
prev
,
[
targetSetting
.
treeId
,
nodes
,
tmpTargetNode
],
!!
targetSetting
.
edit
.
drag
.
prev
),
canNext
=
(
isCopy
||
!
isPrev
)
&&
tools
.
apply
(
targetSetting
.
edit
.
drag
.
next
,
[
targetSetting
.
treeId
,
nodes
,
tmpTargetNode
],
!!
targetSetting
.
edit
.
drag
.
next
),
canInner
=
(
isCopy
||
!
isInner
)
&&
!
(
targetSetting
.
data
.
keep
.
leaf
&&
!
tmpTargetNode
.
isParent
)
&&
tools
.
apply
(
targetSetting
.
edit
.
drag
.
inner
,
[
targetSetting
.
treeId
,
nodes
,
tmpTargetNode
],
!!
targetSetting
.
edit
.
drag
.
inner
);
canInner
=
(
isCopy
||
!
isInner
)
&&
!
(
targetSetting
.
data
.
keep
.
leaf
&&
!
data
.
nodeIsParent
(
setting
,
tmpTargetNode
)
)
&&
tools
.
apply
(
targetSetting
.
edit
.
drag
.
inner
,
[
targetSetting
.
treeId
,
nodes
,
tmpTargetNode
],
!!
targetSetting
.
edit
.
drag
.
inner
);
function
clearMove
()
{
tmpTarget
=
null
;
...
...
@@ -3112,7 +3172,7 @@
moveType
=
consts
.
move
.
TYPE_PREV
;
}
else
if
((
nextPercent
==
0
||
dY_percent
>=
nextPercent
&&
dY_percent
<=
1.2
)
&&
canNext
)
{
dX
=
1
-
tmpArrow
.
width
();
dY
=
(
tmpNextA
==
null
||
(
tmpTargetNode
.
isParent
&&
tmpTargetNode
.
open
))
?
(
tmpTop
+
tmpTargetA
.
height
()
-
tmpArrow
.
height
()
/
2
)
:
(
tmpNextA
.
offset
().
top
-
tmpArrow
.
height
()
/
2
);
dY
=
(
tmpNextA
==
null
||
(
data
.
nodeIsParent
(
setting
,
tmpTargetNode
)
&&
tmpTargetNode
.
open
))
?
(
tmpTop
+
tmpTargetA
.
height
()
-
tmpArrow
.
height
()
/
2
)
:
(
tmpNextA
.
offset
().
top
-
tmpArrow
.
height
()
/
2
);
moveType
=
consts
.
move
.
TYPE_NEXT
;
}
else
if
(
canInner
)
{
dX
=
5
-
tmpArrow
.
width
();
...
...
@@ -3133,7 +3193,7 @@
if
(
preTmpTargetNodeId
!=
tmpTargetNodeId
||
preTmpMoveType
!=
moveType
)
{
startTime
=
(
new
Date
()).
getTime
();
}
if
(
tmpTargetNode
&&
tmpTargetNode
.
isParent
&&
moveType
==
consts
.
move
.
TYPE_INNER
)
{
if
(
tmpTargetNode
&&
data
.
nodeIsParent
(
setting
,
tmpTargetNode
)
&&
moveType
==
consts
.
move
.
TYPE_INNER
)
{
var
startTimer
=
true
;
if
(
window
.
zTreeMoveTimer
&&
window
.
zTreeMoveTargetNodeTId
!==
tmpTargetNode
.
tId
)
{
clearTimeout
(
window
.
zTreeMoveTimer
);
...
...
@@ -3144,7 +3204,7 @@
if
(
startTimer
)
{
window
.
zTreeMoveTimer
=
setTimeout
(
function
()
{
if
(
moveType
!=
consts
.
move
.
TYPE_INNER
)
return
;
if
(
tmpTargetNode
&&
tmpTargetNode
.
isParent
&&
!
tmpTargetNode
.
open
&&
(
new
Date
()).
getTime
()
-
startTime
>
targetSetting
.
edit
.
drag
.
autoOpenTime
if
(
tmpTargetNode
&&
data
.
nodeIsParent
(
setting
,
tmpTargetNode
)
&&
!
tmpTargetNode
.
open
&&
(
new
Date
()).
getTime
()
-
startTime
>
targetSetting
.
edit
.
drag
.
autoOpenTime
&&
tools
.
apply
(
targetSetting
.
callback
.
beforeDragOpen
,
[
targetSetting
.
treeId
,
tmpTargetNode
],
true
))
{
view
.
switchNode
(
targetSetting
,
tmpTargetNode
);
if
(
targetSetting
.
edit
.
drag
.
autoExpandTrigger
)
{
...
...
@@ -3206,7 +3266,7 @@
var
i
,
l
,
tmpNode
;
for
(
i
=
0
,
l
=
nodes
.
length
;
i
<
l
;
i
++
)
{
tmpNode
=
nodes
[
i
];
if
(
tmpNode
.
isParent
&&
root
.
dragNodeShowBefore
[
tmpNode
.
tId
]
&&
!
tmpNode
.
open
)
{
if
(
data
.
nodeIsParent
(
setting
,
tmpNode
)
&&
root
.
dragNodeShowBefore
[
tmpNode
.
tId
]
&&
!
tmpNode
.
open
)
{
view
.
expandCollapseNode
(
setting
,
tmpNode
,
!
tmpNode
.
open
);
delete
root
.
dragNodeShowBefore
[
tmpNode
.
tId
];
}
...
...
@@ -3398,16 +3458,15 @@
},
cancelCurEditNode
:
function
(
setting
,
forceName
,
isCancel
)
{
var
root
=
data
.
getRoot
(
setting
),
nameKey
=
setting
.
data
.
key
.
name
,
node
=
root
.
curEditNode
;
if
(
node
)
{
var
inputObj
=
root
.
curEditInput
,
newName
=
forceName
?
forceName
:(
isCancel
?
node
[
nameKey
]
:
inputObj
.
val
());
newName
=
forceName
?
forceName
:(
isCancel
?
data
.
nodeName
(
setting
,
node
)
:
inputObj
.
val
());
if
(
tools
.
apply
(
setting
.
callback
.
beforeRename
,
[
setting
.
treeId
,
node
,
newName
,
isCancel
],
true
)
===
false
)
{
return
false
;
}
node
[
nameKey
]
=
newName
;
data
.
nodeName
(
setting
,
node
,
newName
)
;
var
aObj
=
$$
(
node
,
consts
.
id
.
A
,
setting
);
aObj
.
removeClass
(
consts
.
node
.
CURSELECTED_EDIT
);
inputObj
.
unbind
();
...
...
@@ -3428,14 +3487,13 @@
setTimeout
(
function
()
{
tools
.
inputFocus
(
root
.
curEditInput
);},
0
);
return
;
}
var
nameKey
=
setting
.
data
.
key
.
name
;
node
.
editNameFlag
=
true
;
view
.
removeTreeDom
(
setting
,
node
);
view
.
cancelCurEditNode
(
setting
);
view
.
selectNode
(
setting
,
node
,
false
);
$$
(
node
,
consts
.
id
.
SPAN
,
setting
).
html
(
"
<input type=text class='rename' id='
"
+
node
.
tId
+
consts
.
id
.
INPUT
+
"
' treeNode
"
+
consts
.
id
.
INPUT
+
"
>
"
);
var
inputObj
=
$$
(
node
,
consts
.
id
.
INPUT
,
setting
);
inputObj
.
attr
(
"
value
"
,
node
[
nameKey
]
);
inputObj
.
attr
(
"
value
"
,
data
.
nodeName
(
setting
,
node
)
);
if
(
setting
.
edit
.
editNameSelectAll
)
{
tools
.
inputSelect
(
inputObj
);
}
else
{
...
...
@@ -3465,10 +3523,9 @@
root
.
curEditNode
=
node
;
},
moveNode
:
function
(
setting
,
targetNode
,
node
,
moveType
,
animateFlag
,
isSilent
)
{
var
root
=
data
.
getRoot
(
setting
),
childKey
=
setting
.
data
.
key
.
children
;
var
root
=
data
.
getRoot
(
setting
);
if
(
targetNode
==
node
)
return
;
if
(
setting
.
data
.
keep
.
leaf
&&
targetNode
&&
!
targetNode
.
isParent
&&
moveType
==
consts
.
move
.
TYPE_INNER
)
return
;
if
(
setting
.
data
.
keep
.
leaf
&&
targetNode
&&
!
data
.
nodeIsParent
(
setting
,
targetNode
)
&&
moveType
==
consts
.
move
.
TYPE_INNER
)
return
;
var
oldParentNode
=
(
node
.
parentTId
?
node
.
getParentNode
():
root
),
targetNodeIsRoot
=
(
targetNode
===
null
||
targetNode
==
root
);
if
(
targetNodeIsRoot
&&
targetNode
===
null
)
targetNode
=
root
;
...
...
@@ -3484,8 +3541,8 @@
//parentTId of root node is null
node
.
parentTId
=
null
;
}
else
{
if
(
!
targetNode
.
isParent
)
{
targetNode
.
isParent
=
true
;
if
(
!
data
.
nodeIsParent
(
setting
,
targetNode
)
)
{
data
.
nodeIsParent
(
setting
,
targetNode
,
true
)
;
targetNode
.
open
=
!!
targetNode
.
open
;
view
.
setNodeLineIcos
(
setting
,
targetNode
);
}
...
...
@@ -3534,43 +3591,48 @@
oldNeighbor
=
null
,
newNeighbor
=
null
,
oldLevel
=
node
.
level
;
var
oldChildren
=
data
.
nodeChildren
(
setting
,
oldParentNode
);
var
targetParentChildren
=
data
.
nodeChildren
(
setting
,
targetParentNode
);
var
targetChildren
=
data
.
nodeChildren
(
setting
,
targetNode
);
if
(
node
.
isFirstNode
)
{
tmpSrcIndex
=
0
;
if
(
old
ParentNode
[
childKey
]
.
length
>
1
)
{
oldNeighbor
=
old
ParentNode
[
childKey
]
[
1
];
if
(
old
Children
.
length
>
1
)
{
oldNeighbor
=
old
Children
[
1
];
oldNeighbor
.
isFirstNode
=
true
;
}
}
else
if
(
node
.
isLastNode
)
{
tmpSrcIndex
=
old
ParentNode
[
childKey
]
.
length
-
1
;
oldNeighbor
=
old
ParentNode
[
childKey
]
[
tmpSrcIndex
-
1
];
tmpSrcIndex
=
old
Children
.
length
-
1
;
oldNeighbor
=
old
Children
[
tmpSrcIndex
-
1
];
oldNeighbor
.
isLastNode
=
true
;
}
else
{
for
(
i
=
0
,
l
=
old
ParentNode
[
childKey
]
.
length
;
i
<
l
;
i
++
)
{
if
(
old
ParentNode
[
childKey
]
[
i
].
tId
==
node
.
tId
)
{
for
(
i
=
0
,
l
=
old
Children
.
length
;
i
<
l
;
i
++
)
{
if
(
old
Children
[
i
].
tId
==
node
.
tId
)
{
tmpSrcIndex
=
i
;
break
;
}
}
}
if
(
tmpSrcIndex
>=
0
)
{
old
ParentNode
[
childKey
]
.
splice
(
tmpSrcIndex
,
1
);
old
Children
.
splice
(
tmpSrcIndex
,
1
);
}
if
(
moveType
!=
consts
.
move
.
TYPE_INNER
)
{
for
(
i
=
0
,
l
=
targetParent
Node
[
childKey
]
.
length
;
i
<
l
;
i
++
)
{
if
(
targetParent
Node
[
childKey
]
[
i
].
tId
==
targetNode
.
tId
)
tmpTargetIndex
=
i
;
for
(
i
=
0
,
l
=
targetParent
Children
.
length
;
i
<
l
;
i
++
)
{
if
(
targetParent
Children
[
i
].
tId
==
targetNode
.
tId
)
tmpTargetIndex
=
i
;
}
}
if
(
moveType
==
consts
.
move
.
TYPE_INNER
)
{
if
(
!
targetNode
[
childKey
])
targetNode
[
childKey
]
=
new
Array
();
if
(
targetNode
[
childKey
].
length
>
0
)
{
newNeighbor
=
targetNode
[
childKey
][
targetNode
[
childKey
].
length
-
1
];
if
(
!
targetChildren
)
{
targetChildren
=
data
.
nodeChildren
(
setting
,
targetNode
,
[]);
}
if
(
targetChildren
.
length
>
0
)
{
newNeighbor
=
targetChildren
[
targetChildren
.
length
-
1
];
newNeighbor
.
isLastNode
=
false
;
}
target
Node
[
childKey
].
splice
(
targetNode
[
childKey
]
.
length
,
0
,
node
);
target
Children
.
splice
(
targetChildren
.
length
,
0
,
node
);
node
.
isLastNode
=
true
;
node
.
isFirstNode
=
(
target
Node
[
childKey
]
.
length
==
1
);
node
.
isFirstNode
=
(
target
Children
.
length
==
1
);
}
else
if
(
targetNode
.
isFirstNode
&&
moveType
==
consts
.
move
.
TYPE_PREV
)
{
targetParent
Node
[
childKey
]
.
splice
(
tmpTargetIndex
,
0
,
node
);
targetParent
Children
.
splice
(
tmpTargetIndex
,
0
,
node
);
newNeighbor
=
targetNode
;
newNeighbor
.
isFirstNode
=
false
;
node
.
parentTId
=
targetNode
.
parentTId
;
...
...
@@ -3578,7 +3640,7 @@
node
.
isLastNode
=
false
;
}
else
if
(
targetNode
.
isLastNode
&&
moveType
==
consts
.
move
.
TYPE_NEXT
)
{
targetParent
Node
[
childKey
]
.
splice
(
tmpTargetIndex
+
1
,
0
,
node
);
targetParent
Children
.
splice
(
tmpTargetIndex
+
1
,
0
,
node
);
newNeighbor
=
targetNode
;
newNeighbor
.
isLastNode
=
false
;
node
.
parentTId
=
targetNode
.
parentTId
;
...
...
@@ -3587,9 +3649,9 @@
}
else
{
if
(
moveType
==
consts
.
move
.
TYPE_PREV
)
{
targetParent
Node
[
childKey
]
.
splice
(
tmpTargetIndex
,
0
,
node
);
targetParent
Children
.
splice
(
tmpTargetIndex
,
0
,
node
);
}
else
{
targetParent
Node
[
childKey
]
.
splice
(
tmpTargetIndex
+
1
,
0
,
node
);
targetParent
Children
.
splice
(
tmpTargetIndex
+
1
,
0
,
node
);
}
node
.
parentTId
=
targetNode
.
parentTId
;
node
.
isFirstNode
=
false
;
...
...
@@ -3600,12 +3662,12 @@
//repair node what been moved
view
.
setNodeLineIcos
(
setting
,
node
);
view
.
repairNodeLevelClass
(
setting
,
node
,
oldLevel
)
view
.
repairNodeLevelClass
(
setting
,
node
,
oldLevel
)
;
//repair node's old parentNode dom
if
(
!
setting
.
data
.
keep
.
parent
&&
old
ParentNode
[
childKey
]
.
length
<
1
)
{
if
(
!
setting
.
data
.
keep
.
parent
&&
old
Children
.
length
<
1
)
{
//old parentNode has no child nodes
oldParentNode
.
isParent
=
false
;
data
.
nodeIsParent
(
setting
,
oldParentNode
,
false
)
;
oldParentNode
.
open
=
false
;
var
tmp_ulObj
=
$$
(
oldParentNode
,
consts
.
id
.
UL
,
setting
),
tmp_switchObj
=
$$
(
oldParentNode
,
consts
.
id
.
SWITCH
,
setting
),
...
...
js/jquery.ztree.all.min.js
浏览文件 @
ad144cf5
/*
* JQuery zTree core v3.5.3
1
* JQuery zTree core v3.5.3
2
* http://treejs.cn/
*
* Copyright (c) 2010 Hunter.z
...
...
@@ -9,74 +9,75 @@
* http://www.opensource.org/licenses/mit-license.php
*
* email: hunter.z@263.net
* Date: 201
7-12-28
* Date: 201
8-01-06
*/
(
function
(
q
){
var
H
,
I
,
J
,
K
,
L
,
M
,
u
,
s
=
{},
v
=
{},
w
=
{},
N
=
{
treeId
:
""
,
treeObj
:
null
,
view
:{
addDiyDom
:
null
,
autoCancelSelected
:
!
0
,
dblClickExpand
:
!
0
,
expandSpeed
:
"
fast
"
,
fontCss
:{},
nameIsHTML
:
!
1
,
selectedMulti
:
!
0
,
showIcon
:
!
0
,
showLine
:
!
0
,
showTitle
:
!
0
,
txtSelectedEnable
:
!
1
},
data
:{
key
:{
children
:
"
children
"
,
name
:
"
name
"
,
title
:
""
,
url
:
"
url
"
,
icon
:
"
icon
"
},
simpleData
:{
enable
:
!
1
,
idKey
:
"
id
"
,
pIdKey
:
"
pId
"
,
rootPId
:
null
},
keep
:{
parent
:
!
1
,
leaf
:
!
1
}},
async
:{
enable
:
!
1
,
contentType
:
"
application/x-www-form-urlencoded
"
,
type
:
"
post
"
,
dataType
:
"
text
"
,
url
:
""
,
autoParam
:[],
otherParam
:[],
dataFilter
:
null
},
callback
:{
beforeAsync
:
null
,
beforeClick
:
null
,
beforeDblClick
:
null
,
beforeRightClick
:
null
,
beforeMouseDown
:
null
,
beforeMouseUp
:
null
,
beforeExpand
:
null
,
beforeCollapse
:
null
,
beforeRemove
:
null
,
onAsyncError
:
null
,
onAsyncSuccess
:
null
,
onNodeCreated
:
null
,
onClick
:
null
,
onDblClick
:
null
,
onRightClick
:
null
,
onMouseDown
:
null
,
onMouseUp
:
null
,
onExpand
:
null
,
onCollapse
:
null
,
onRemove
:
null
}},
x
=
[
function
(
b
){
var
a
=
b
.
treeObj
,
c
=
f
.
event
;
a
.
bind
(
c
.
NODECREATED
,
function
(
a
,
c
,
h
){
i
.
apply
(
b
.
callback
.
onNodeCreated
,
[
a
,
c
,
h
])});
a
.
bind
(
c
.
CLICK
,
function
(
a
,
c
,
h
,
k
,
g
){
i
.
apply
(
b
.
callback
.
onClick
,[
c
,
h
,
k
,
g
])});
a
.
bind
(
c
.
EXPAND
,
function
(
a
,
c
,
h
){
i
.
apply
(
b
.
callback
.
onExpand
,[
a
,
c
,
h
])});
a
.
bind
(
c
.
COLLAPSE
,
function
(
a
,
c
,
h
){
i
.
apply
(
b
.
callback
.
onCollapse
,[
a
,
c
,
h
])});
a
.
bind
(
c
.
ASYNC_SUCCESS
,
function
(
a
,
c
,
h
,
k
){
i
.
apply
(
b
.
callback
.
onAsyncSuccess
,[
a
,
c
,
h
,
k
])});
a
.
bind
(
c
.
ASYNC_ERROR
,
function
(
a
,
c
,
h
,
k
,
g
,
f
){
i
.
apply
(
b
.
callback
.
onAsyncError
,[
a
,
c
,
h
,
k
,
g
,
f
])});
a
.
bind
(
c
.
REMOVE
,
function
(
a
,
c
,
h
){
i
.
apply
(
b
.
callback
.
onRemove
,[
a
,
c
,
h
])});
a
.
bind
(
c
.
SELECTED
,
function
(
a
,
c
,
h
){
i
.
apply
(
b
.
callback
.
onSelected
,[
c
,
h
])});
a
.
bind
(
c
.
UNSELECTED
,
function
(
a
,
c
,
h
){
i
.
apply
(
b
.
callback
.
onUnSelected
,[
c
,
h
])})}],
y
=
[
function
(
b
){
var
a
=
f
.
event
;
b
.
treeObj
.
unbind
(
a
.
NODECREATED
).
unbind
(
a
.
CLICK
).
unbind
(
a
.
EXPAND
).
unbind
(
a
.
COLLAPSE
).
unbind
(
a
.
ASYNC_SUCCESS
).
unbind
(
a
.
ASYNC_ERROR
).
unbind
(
a
.
REMOVE
).
unbind
(
a
.
SELECTED
).
unbind
(
a
.
UNSELECTED
)}],
z
=
[
function
(
b
){
var
a
=
g
.
getCache
(
b
);
a
||
(
a
=
{},
g
.
setCache
(
b
,
a
));
a
.
nodes
=
[];
a
.
doms
=
[]}],
A
=
[
function
(
b
,
a
,
c
,
d
,
e
,
h
){
if
(
c
){
var
k
=
g
.
getRoot
(
b
),
f
=
b
.
data
.
key
.
children
;
c
.
level
=
a
;
c
.
tId
=
b
.
treeId
+
"
_
"
+
++
k
.
zId
;
c
.
parentTId
=
d
?
d
.
tId
:
null
;
c
.
open
=
typeof
c
.
open
==
"
string
"
?
i
.
eqs
(
c
.
open
,
"
true
"
):
!!
c
.
open
;
i
.
isArray
(
c
[
f
])
&&!
(
c
.
isParent
===!
1
||
typeof
c
.
isParent
==
"
string
"
&&
i
.
eqs
(
c
.
isParent
,
"
false
"
))?(
c
.
isParent
=!
0
,
c
.
zAsync
=!
0
):(
c
.
isParent
=
typeof
c
.
isParent
==
"
string
"
?
i
.
eqs
(
c
.
isParent
,
"
true
"
):
!!
c
.
isParent
,
c
.
open
=
c
.
isParent
&&!
b
.
async
.
enable
?
c
.
open
:
!
1
,
c
.
zAsync
=!
c
.
isParent
);
c
.
isFirstNode
=
e
;
c
.
isLastNode
=
h
;
c
.
getParentNode
=
function
(){
return
g
.
getNodeCache
(
b
,
c
.
parentTId
)};
c
.
getPreNode
=
function
(){
return
g
.
getPreNode
(
b
,
c
)};
c
.
getNextNode
=
function
(){
return
g
.
getNextNode
(
b
,
c
)};
c
.
getIndex
=
function
(){
return
g
.
getNodeIndex
(
b
,
c
)};
c
.
getPath
=
function
(){
return
g
.
getNodePath
(
b
,
c
)};
c
.
isAjaxing
=!
1
;
g
.
fixPIdKeyValue
(
b
,
c
)}}],
t
=
[
function
(
b
){
var
a
=
b
.
target
,
c
=
g
.
getSetting
(
b
.
data
.
treeId
),
d
=
""
,
e
=
null
,
h
=
""
,
k
=
""
,
o
=
null
,
j
=
null
,
l
=
null
;
if
(
i
.
eqs
(
b
.
type
,
"
mousedown
"
))
k
=
"
mousedown
"
;
else
if
(
i
.
eqs
(
b
.
type
,
"
mouseup
"
))
k
=
"
mouseup
"
;
else
if
(
i
.
eqs
(
b
.
type
,
"
contextmenu
"
))
k
=
"
contextmenu
"
;
else
if
(
i
.
eqs
(
b
.
type
,
"
click
"
))
if
(
i
.
eqs
(
a
.
tagName
,
"
span
"
)
&&
a
.
getAttribute
(
"
treeNode
"
+
f
.
id
.
SWITCH
)
!==
null
)
d
=
i
.
getNodeMainDom
(
a
).
id
,
h
=
"
switchNode
"
;
else
{
if
(
l
=
i
.
getMDom
(
c
,
a
,[{
tagName
:
"
a
"
,
attrName
:
"
treeNode
"
+
f
.
id
.
A
}]))
d
=
i
.
getNodeMainDom
(
l
).
id
,
h
=
"
clickNode
"
}
else
if
(
i
.
eqs
(
b
.
type
,
"
dblclick
"
)
&&
(
k
=
"
dblclick
"
,
l
=
i
.
getMDom
(
c
,
a
,[{
tagName
:
"
a
"
,
attrName
:
"
treeNode
"
+
f
.
id
.
A
}])))
d
=
i
.
getNodeMainDom
(
l
).
id
,
h
=
"
switchNode
"
;
if
(
k
.
length
>
0
&&
d
.
length
==
0
&&
(
l
=
i
.
getMDom
(
c
,
a
,[{
tagName
:
"
a
"
,
attrName
:
"
treeNode
"
+
f
.
id
.
A
}])))
d
=
i
.
getNodeMainDom
(
l
).
id
;
if
(
d
.
length
>
0
)
switch
(
e
=
g
.
getNodeCache
(
c
,
d
),
h
){
case
"
switchNode
"
:
e
.
isParent
?
i
.
eqs
(
b
.
type
,
"
click
"
)
||
i
.
eqs
(
b
.
type
,
"
dblclick
"
)
&&
i
.
apply
(
c
.
view
.
dblClickExpand
,[
c
.
treeId
,
e
],
c
.
view
.
dblClickExpand
)?
o
=
H
:
h
=
""
:
h
=
""
;
break
;
case
"
clickNode
"
:
o
=
I
}
switch
(
k
){
case
"
mousedown
"
:
j
=
J
;
break
;
case
"
mouseup
"
:
j
=
K
;
break
;
case
"
dblclick
"
:
j
=
L
;
break
;
case
"
contextmenu
"
:
j
=
M
}
return
{
stop
:
!
1
,
node
:
e
,
nodeEventType
:
h
,
nodeEventCallback
:
o
,
treeEventType
:
k
,
treeEventCallback
:
j
}}],
B
=
[
function
(
b
){
var
a
=
g
.
getRoot
(
b
);
a
||
(
a
=
{},
g
.
setRoot
(
b
,
a
));
a
[
b
.
data
.
key
.
children
]
=
[];
a
.
expandTriggerFlag
=!
1
;
a
.
curSelectedList
=
[];
a
.
noSelection
=
!
0
;
a
.
createdNodes
=
[];
a
.
zId
=
0
;
a
.
_ver
=
(
new
Date
).
getTime
()}],
C
=
[],
D
=
[],
E
=
[],
F
=
[],
G
=
[],
g
=
{
addNodeCache
:
function
(
b
,
a
){
g
.
getCache
(
b
).
nodes
[
g
.
getNodeCacheId
(
a
.
tId
)]
=
a
},
getNodeCacheId
:
function
(
b
){
return
b
.
substring
(
b
.
lastIndexOf
(
"
_
"
)
+
1
)},
addAfterA
:
function
(
b
){
D
.
push
(
b
)},
addBeforeA
:
function
(
b
){
C
.
push
(
b
)},
addInnerAfterA
:
function
(
b
){
F
.
push
(
b
)},
addInnerBeforeA
:
function
(
b
){
E
.
push
(
b
)},
addInitBind
:
function
(
b
){
x
.
push
(
b
)},
addInitUnBind
:
function
(
b
){
y
.
push
(
b
)},
addInitCache
:
function
(
b
){
z
.
push
(
b
)},
addInitNode
:
function
(
b
){
A
.
push
(
b
)},
addInitProxy
:
function
(
b
,
a
){
a
?
t
.
splice
(
0
,
0
,
b
):
t
.
push
(
b
)},
addInitRoot
:
function
(
b
){
B
.
push
(
b
)},
addNodesData
:
function
(
b
,
a
,
c
,
d
){
var
e
=
b
.
data
.
key
.
children
;
a
[
e
]?
c
>=
a
[
e
].
length
&&
(
c
=-
1
):(
a
[
e
]
=
[],
c
=-
1
);
if
(
a
[
e
].
length
>
0
&&
c
===
0
)
a
[
e
][
0
].
isFirstNode
=!
1
,
j
.
setNodeLineIcos
(
b
,
a
[
e
][
0
]);
else
if
(
a
[
e
].
length
>
0
&&
c
<
0
)
a
[
e
][
a
[
e
].
length
-
1
].
isLastNode
=!
1
,
j
.
setNodeLineIcos
(
b
,
a
[
e
][
a
[
e
].
length
-
1
]);
a
.
isParent
=!
0
;
c
<
0
?
a
[
e
]
=
a
[
e
].
concat
(
d
):(
b
=
[
c
,
0
].
concat
(
d
),
a
[
e
].
splice
.
apply
(
a
[
e
],
b
))},
addSelectedNode
:
function
(
b
,
a
){
var
c
=
g
.
getRoot
(
b
);
g
.
isSelectedNode
(
b
,
a
)
||
c
.
curSelectedList
.
push
(
a
)},
addCreatedNode
:
function
(
b
,
a
){(
b
.
callback
.
onNodeCreated
||
b
.
view
.
addDiyDom
)
&&
g
.
getRoot
(
b
).
createdNodes
.
push
(
a
)},
addZTreeTools
:
function
(
b
){
G
.
push
(
b
)},
exSetting
:
function
(
b
){
q
.
extend
(
!
0
,
N
,
b
)},
fixPIdKeyValue
:
function
(
b
,
a
){
b
.
data
.
simpleData
.
enable
&&
(
a
[
b
.
data
.
simpleData
.
pIdKey
]
=
a
.
parentTId
?
a
.
getParentNode
()[
b
.
data
.
simpleData
.
idKey
]:
b
.
data
.
simpleData
.
rootPId
)},
getAfterA
:
function
(
b
,
a
,
c
){
for
(
var
d
=
0
,
e
=
D
.
length
;
d
<
e
;
d
++
)
D
[
d
].
apply
(
this
,
arguments
)},
getBeforeA
:
function
(
b
,
a
,
c
){
for
(
var
d
=
0
,
e
=
C
.
length
;
d
<
e
;
d
++
)
C
[
d
].
apply
(
this
,
arguments
)},
getInnerAfterA
:
function
(
b
,
a
,
c
){
for
(
var
d
=
0
,
e
=
F
.
length
;
d
<
e
;
d
++
)
F
[
d
].
apply
(
this
,
arguments
)},
getInnerBeforeA
:
function
(
b
,
a
,
c
){
for
(
var
d
=
0
,
e
=
E
.
length
;
d
<
e
;
d
++
)
E
[
d
].
apply
(
this
,
arguments
)},
getCache
:
function
(
b
){
return
w
[
b
.
treeId
]},
getNodeIndex
:
function
(
b
,
a
){
if
(
!
a
)
return
null
;
for
(
var
c
=
b
.
data
.
key
.
children
,
d
=
a
.
parentTId
?
a
.
getParentNode
():
g
.
getRoot
(
b
),
e
=
0
,
h
=
d
[
c
].
length
-
1
;
e
<=
h
;
e
++
)
if
(
d
[
c
][
e
]
===
a
)
return
e
;
return
-
1
},
getNextNode
:
function
(
b
,
a
){
if
(
!
a
)
return
null
;
for
(
var
c
=
b
.
data
.
key
.
children
,
d
=
a
.
parentTId
?
a
.
getParentNode
():
g
.
getRoot
(
b
),
e
=
0
,
h
=
d
[
c
].
length
-
1
;
e
<=
h
;
e
++
)
if
(
d
[
c
][
e
]
===
a
)
return
e
==
h
?
null
:
d
[
c
][
e
+
1
];
return
null
},
getNodeByParam
:
function
(
b
,
a
,
c
,
d
){
if
(
!
a
||!
c
)
return
null
;
for
(
var
e
=
b
.
data
.
key
.
children
,
h
=
0
,
k
=
a
.
length
;
h
<
k
;
h
++
){
if
(
a
[
h
][
c
]
==
d
)
return
a
[
h
];
var
f
=
g
.
getNodeByParam
(
b
,
a
[
h
][
e
],
c
,
d
);
if
(
f
)
return
f
}
return
null
},
getNodeCache
:
function
(
b
,
a
){
if
(
!
a
)
return
null
;
var
c
=
w
[
b
.
treeId
].
nodes
[
g
.
getNodeCacheId
(
a
)];
return
c
?
c
:
null
},
getNodeName
:
function
(
b
,
a
){
return
""
+
a
[
b
.
data
.
key
.
name
]},
getNodePath
:
function
(
b
,
a
){
if
(
!
a
)
return
null
;
var
c
;(
c
=
a
.
parentTId
?
a
.
getParentNode
().
getPath
():[])
&&
c
.
push
(
a
);
return
c
},
getNodeTitle
:
function
(
b
,
a
){
return
""
+
a
[
b
.
data
.
key
.
title
===
""
?
b
.
data
.
key
.
name
:
b
.
data
.
key
.
title
]},
getNodes
:
function
(
b
){
return
g
.
getRoot
(
b
)[
b
.
data
.
key
.
children
]},
getNodesByParam
:
function
(
b
,
a
,
c
,
d
){
if
(
!
a
||!
c
)
return
[];
for
(
var
e
=
b
.
data
.
key
.
children
,
h
=
[],
k
=
0
,
f
=
a
.
length
;
k
<
f
;
k
++
)
a
[
k
][
c
]
==
d
&&
h
.
push
(
a
[
k
]),
h
=
h
.
concat
(
g
.
getNodesByParam
(
b
,
a
[
k
][
e
],
c
,
d
));
return
h
},
getNodesByParamFuzzy
:
function
(
b
,
a
,
c
,
d
){
if
(
!
a
||!
c
)
return
[];
for
(
var
e
=
b
.
data
.
key
.
children
,
h
=
[],
d
=
d
.
toLowerCase
(),
k
=
0
,
f
=
a
.
length
;
k
<
f
;
k
++
)
typeof
a
[
k
][
c
]
==
"
string
"
&&
a
[
k
][
c
].
toLowerCase
().
indexOf
(
d
)
>-
1
&&
h
.
push
(
a
[
k
]),
h
=
h
.
concat
(
g
.
getNodesByParamFuzzy
(
b
,
a
[
k
][
e
],
c
,
d
));
return
h
},
getNodesByFilter
:
function
(
b
,
a
,
c
,
d
,
e
){
if
(
!
a
)
return
d
?
null
:[];
for
(
var
h
=
b
.
data
.
key
.
children
,
k
=
d
?
null
:[],
f
=
0
,
j
=
a
.
length
;
f
<
j
;
f
++
){
if
(
i
.
apply
(
c
,[
a
[
f
],
e
],
!
1
)){
if
(
d
)
return
a
[
f
];
k
.
push
(
a
[
f
])}
var
l
=
g
.
getNodesByFilter
(
b
,
a
[
f
][
h
],
c
,
d
,
e
);
if
(
d
&&
l
)
return
l
;
k
=
d
?
l
:
k
.
concat
(
l
)}
return
k
},
getPreNode
:
function
(
b
,
a
){
if
(
!
a
)
return
null
;
for
(
var
c
=
b
.
data
.
key
.
children
,
d
=
a
.
parentTId
?
a
.
getParentNode
():
g
.
getRoot
(
b
),
e
=
0
,
h
=
d
[
c
].
length
;
e
<
h
;
e
++
)
if
(
d
[
c
][
e
]
===
a
)
return
e
==
0
?
null
:
d
[
c
][
e
-
1
];
return
null
},
getRoot
:
function
(
b
){
return
b
?
v
[
b
.
treeId
]:
null
},
getRoots
:
function
(){
return
v
},
getSetting
:
function
(
b
){
return
s
[
b
]},
getSettings
:
function
(){
return
s
},
getZTreeTools
:
function
(
b
){
return
(
b
=
this
.
getRoot
(
this
.
getSetting
(
b
)))?
b
.
treeTools
:
null
},
initCache
:
function
(
b
){
for
(
var
a
=
0
,
c
=
z
.
length
;
a
<
c
;
a
++
)
z
[
a
].
apply
(
this
,
arguments
)},
initNode
:
function
(
b
,
a
,
c
,
d
,
e
,
h
){
for
(
var
k
=
0
,
f
=
A
.
length
;
k
<
f
;
k
++
)
A
[
k
].
apply
(
this
,
arguments
)},
initRoot
:
function
(
b
){
for
(
var
a
=
0
,
c
=
B
.
length
;
a
<
c
;
a
++
)
B
[
a
].
apply
(
this
,
arguments
)},
isSelectedNode
:
function
(
b
,
a
){
for
(
var
c
=
g
.
getRoot
(
b
),
d
=
0
,
e
=
c
.
curSelectedList
.
length
;
d
<
e
;
d
++
)
if
(
a
===
c
.
curSelectedList
[
d
])
return
!
0
;
return
!
1
},
removeNodeCache
:
function
(
b
,
a
){
var
c
=
b
.
data
.
key
.
children
;
if
(
a
[
c
])
for
(
var
d
=
0
,
e
=
a
[
c
].
length
;
d
<
e
;
d
++
)
g
.
removeNodeCache
(
b
,
a
[
c
][
d
]);
g
.
getCache
(
b
).
nodes
[
g
.
getNodeCacheId
(
a
.
tId
)]
=
null
},
removeSelectedNode
:
function
(
b
,
a
){
for
(
var
c
=
g
.
getRoot
(
b
),
d
=
0
,
e
=
c
.
curSelectedList
.
length
;
d
<
e
;
d
++
)
if
(
a
===
c
.
curSelectedList
[
d
]
||!
g
.
getNodeCache
(
b
,
c
.
curSelectedList
[
d
].
tId
))
c
.
curSelectedList
.
splice
(
d
,
1
),
b
.
treeObj
.
trigger
(
f
.
event
.
UNSELECTED
,[
b
.
treeId
,
a
]),
d
--
,
e
--
},
setCache
:
function
(
b
,
a
){
w
[
b
.
treeId
]
=
a
},
setRoot
:
function
(
b
,
a
){
v
[
b
.
treeId
]
=
a
},
setZTreeTools
:
function
(
b
,
a
){
for
(
var
c
=
0
,
d
=
G
.
length
;
c
<
d
;
c
++
)
G
[
c
].
apply
(
this
,
arguments
)},
transformToArrayFormat
:
function
(
b
,
a
){
if
(
!
a
)
return
[];
var
c
=
b
.
data
.
key
.
children
,
d
=
[];
if
(
i
.
isArray
(
a
))
for
(
var
e
=
0
,
h
=
a
.
length
;
e
<
h
;
e
++
)
d
.
push
(
a
[
e
]),
a
[
e
][
c
]
&&
(
d
=
d
.
concat
(
g
.
transformToArrayFormat
(
b
,
a
[
e
][
c
])));
else
d
.
push
(
a
),
a
[
c
]
&&
(
d
=
d
.
concat
(
g
.
transformToArrayFormat
(
b
,
a
[
c
])));
return
d
},
transformTozTreeFormat
:
function
(
b
,
a
){
var
c
,
d
,
e
=
b
.
data
.
simpleData
.
idKey
,
h
=
b
.
data
.
simpleData
.
pIdKey
,
k
=
b
.
data
.
key
.
children
;
if
(
!
e
||
e
==
""
||!
a
)
return
[];
if
(
i
.
isArray
(
a
)){
var
f
=
[],
g
=
{};
for
(
c
=
0
,
d
=
a
.
length
;
c
<
d
;
c
++
)
g
[
a
[
c
][
e
]]
=
a
[
c
];
for
(
c
=
0
,
d
=
a
.
length
;
c
<
d
;
c
++
)
g
[
a
[
c
][
h
]]
&&
a
[
c
][
e
]
!=
a
[
c
][
h
]?(
g
[
a
[
c
][
h
]][
k
]
||
(
g
[
a
[
c
][
h
]][
k
]
=
[]),
g
[
a
[
c
][
h
]][
k
].
push
(
a
[
c
])):
f
.
push
(
a
[
c
]);
return
f
}
else
return
[
a
]}},
m
=
{
bindEvent
:
function
(
b
){
for
(
var
a
=
0
,
c
=
x
.
length
;
a
<
c
;
a
++
)
x
[
a
].
apply
(
this
,
arguments
)},
unbindEvent
:
function
(
b
){
for
(
var
a
=
0
,
c
=
y
.
length
;
a
<
c
;
a
++
)
y
[
a
].
apply
(
this
,
arguments
)},
bindTree
:
function
(
b
){
var
a
=
{
treeId
:
b
.
treeId
},
c
=
b
.
treeObj
;
b
.
view
.
txtSelectedEnable
||
c
.
bind
(
"
selectstart
"
,
u
).
css
({
"
-moz-user-select
"
:
"
-moz-none
"
});
c
.
bind
(
"
click
"
,
a
,
m
.
proxy
);
c
.
bind
(
"
dblclick
"
,
a
,
m
.
proxy
);
c
.
bind
(
"
mouseover
"
,
a
,
m
.
proxy
);
c
.
bind
(
"
mouseout
"
,
a
,
m
.
proxy
);
c
.
bind
(
"
mousedown
"
,
a
,
m
.
proxy
);
c
.
bind
(
"
mouseup
"
,
a
,
m
.
proxy
);
c
.
bind
(
"
contextmenu
"
,
a
,
m
.
proxy
)},
unbindTree
:
function
(
b
){
b
.
treeObj
.
unbind
(
"
selectstart
"
,
u
).
unbind
(
"
click
"
,
m
.
proxy
).
unbind
(
"
dblclick
"
,
m
.
proxy
).
unbind
(
"
mouseover
"
,
m
.
proxy
).
unbind
(
"
mouseout
"
,
m
.
proxy
).
unbind
(
"
mousedown
"
,
m
.
proxy
).
unbind
(
"
mouseup
"
,
m
.
proxy
).
unbind
(
"
contextmenu
"
,
m
.
proxy
)},
doProxy
:
function
(
b
){
for
(
var
a
=
[],
c
=
0
,
d
=
t
.
length
;
c
<
d
;
c
++
){
var
e
=
t
[
c
].
apply
(
this
,
arguments
);
a
.
push
(
e
);
if
(
e
.
stop
)
break
}
return
a
},
proxy
:
function
(
b
){
var
a
=
g
.
getSetting
(
b
.
data
.
treeId
);
if
(
!
i
.
uCanDo
(
a
,
b
))
return
!
0
;
for
(
var
a
=
m
.
doProxy
(
b
),
c
=!
0
,
d
=
0
,
e
=
a
.
length
;
d
<
e
;
d
++
){
var
h
=
a
[
d
];
h
.
nodeEventCallback
&&
(
c
=
h
.
nodeEventCallback
.
apply
(
h
,[
b
,
h
.
node
])
&&
c
);
h
.
treeEventCallback
&&
(
c
=
h
.
treeEventCallback
.
apply
(
h
,[
b
,
h
.
node
])
&&
c
)}
return
c
}};
H
=
function
(
b
,
a
){
var
c
=
g
.
getSetting
(
b
.
data
.
treeId
);
if
(
a
.
open
){
if
(
i
.
apply
(
c
.
callback
.
beforeCollapse
,[
c
.
treeId
,
a
],
!
0
)
==!
1
)
return
!
0
}
else
if
(
i
.
apply
(
c
.
callback
.
beforeExpand
,[
c
.
treeId
,
a
],
!
0
)
==!
1
)
return
!
0
;
g
.
getRoot
(
c
).
expandTriggerFlag
=!
0
;
j
.
switchNode
(
c
,
a
);
return
!
0
};
I
=
function
(
b
,
a
){
var
c
=
g
.
getSetting
(
b
.
data
.
treeId
),
d
=
c
.
view
.
autoCancelSelected
&&
(
b
.
ctrlKey
||
b
.
metaKey
)
&&
g
.
isSelectedNode
(
c
,
a
)?
0
:
c
.
view
.
autoCancelSelected
&&
(
b
.
ctrlKey
||
b
.
metaKey
)
&&
c
.
view
.
selectedMulti
?
2
:
1
;
if
(
i
.
apply
(
c
.
callback
.
beforeClick
,[
c
.
treeId
,
a
,
d
],
!
0
)
==!
1
)
return
!
0
;
d
===
0
?
j
.
cancelPreSelectedNode
(
c
,
a
):
j
.
selectNode
(
c
,
a
,
d
===
2
);
c
.
treeObj
.
trigger
(
f
.
event
.
CLICK
,[
b
,
c
.
treeId
,
a
,
d
]);
return
!
0
};
J
=
function
(
b
,
a
){
var
c
=
g
.
getSetting
(
b
.
data
.
treeId
);
i
.
apply
(
c
.
callback
.
beforeMouseDown
,[
c
.
treeId
,
a
],
!
0
)
&&
i
.
apply
(
c
.
callback
.
onMouseDown
,[
b
,
c
.
treeId
,
a
]);
return
!
0
};
K
=
function
(
b
,
a
){
var
c
=
g
.
getSetting
(
b
.
data
.
treeId
);
i
.
apply
(
c
.
callback
.
beforeMouseUp
,[
c
.
treeId
,
a
],
!
0
)
&&
i
.
apply
(
c
.
callback
.
onMouseUp
,[
b
,
c
.
treeId
,
a
]);
return
!
0
};
L
=
function
(
b
,
a
){
var
c
=
g
.
getSetting
(
b
.
data
.
treeId
);
i
.
apply
(
c
.
callback
.
beforeDblClick
,[
c
.
treeId
,
a
],
!
0
)
&&
i
.
apply
(
c
.
callback
.
onDblClick
,[
b
,
c
.
treeId
,
a
]);
return
!
0
};
M
=
function
(
b
,
a
){
var
c
=
g
.
getSetting
(
b
.
data
.
treeId
);
i
.
apply
(
c
.
callback
.
beforeRightClick
,[
c
.
treeId
,
a
],
!
0
)
&&
i
.
apply
(
c
.
callback
.
onRightClick
,[
b
,
c
.
treeId
,
a
]);
return
typeof
c
.
callback
.
onRightClick
!=
"
function
"
};
u
=
function
(
b
){
b
=
b
.
originalEvent
.
srcElement
.
nodeName
.
toLowerCase
();
return
b
===
"
input
"
||
b
===
"
textarea
"
};
var
i
=
{
apply
:
function
(
b
,
a
,
c
){
return
typeof
b
==
"
function
"
?
b
.
apply
(
O
,
a
?
a
:[]):
c
},
canAsync
:
function
(
b
,
a
){
var
c
=
b
.
data
.
key
.
children
;
return
b
.
async
.
enable
&&
a
&&
a
.
isParent
&&!
(
a
.
zAsync
||
a
[
c
]
&&
a
[
c
].
length
>
0
)},
clone
:
function
(
b
){
if
(
b
===
null
)
return
null
;
var
a
=
i
.
isArray
(
b
)?[]:{},
c
;
for
(
c
in
b
)
a
[
c
]
=
b
[
c
]
instanceof
Date
?
new
Date
(
b
[
c
].
getTime
()):
typeof
b
[
c
]
===
"
object
"
?
i
.
clone
(
b
[
c
]):
b
[
c
];
return
a
},
eqs
:
function
(
b
,
a
){
return
b
.
toLowerCase
()
===
a
.
toLowerCase
()},
isArray
:
function
(
b
){
return
Object
.
prototype
.
toString
.
apply
(
b
)
===
"
[object Array]
"
},
isElement
:
function
(
b
){
return
typeof
HTMLElement
===
"
object
"
?
b
instanceof
HTMLElement
:
b
&&
typeof
b
===
"
object
"
&&
b
!==
null
&&
b
.
nodeType
===
1
&&
typeof
b
.
nodeName
===
"
string
"
},
$
:
function
(
b
,
a
,
c
){
a
&&
typeof
a
!=
"
string
"
&&
(
c
=
a
,
a
=
""
);
return
typeof
b
==
"
string
"
?
q
(
b
,
c
?
c
.
treeObj
.
get
(
0
).
ownerDocument
:
null
):
q
(
"
#
"
+
b
.
tId
+
a
,
c
?
c
.
treeObj
:
null
)},
getMDom
:
function
(
b
,
a
,
c
){
if
(
!
a
)
return
null
;
for
(;
a
&&
a
.
id
!==
b
.
treeId
;){
for
(
var
d
=
0
,
e
=
c
.
length
;
a
.
tagName
&&
d
<
e
;
d
++
)
if
(
i
.
eqs
(
a
.
tagName
,
c
[
d
].
tagName
)
&&
a
.
getAttribute
(
c
[
d
].
attrName
)
!==
null
)
return
a
;
a
=
a
.
parentNode
}
return
null
},
getNodeMainDom
:
function
(
b
){
return
q
(
b
).
parent
(
"
li
"
).
get
(
0
)
||
q
(
b
).
parentsUntil
(
"
li
"
).
parent
().
get
(
0
)},
isChildOrSelf
:
function
(
b
,
a
){
return
q
(
b
).
closest
(
"
#
"
+
a
).
length
>
0
},
uCanDo
:
function
(){
return
!
0
}},
j
=
{
addNodes
:
function
(
b
,
a
,
c
,
d
,
e
){
if
(
!
b
.
data
.
keep
.
leaf
||!
a
||
a
.
isParent
)
if
(
i
.
isArray
(
d
)
||
(
d
=
[
d
]),
b
.
data
.
simpleData
.
enable
&&
(
d
=
g
.
transformTozTreeFormat
(
b
,
d
)),
a
){
var
h
=
l
(
a
,
f
.
id
.
SWITCH
,
b
),
k
=
l
(
a
,
f
.
id
.
ICON
,
b
),
o
=
l
(
a
,
f
.
id
.
UL
,
b
);
if
(
!
a
.
open
)
j
.
replaceSwitchClass
(
a
,
h
,
f
.
folder
.
CLOSE
),
j
.
replaceIcoClass
(
a
,
k
,
f
.
folder
.
CLOSE
),
a
.
open
=!
1
,
o
.
css
({
display
:
"
none
"
});
g
.
addNodesData
(
b
,
a
,
c
,
d
);
j
.
createNodes
(
b
,
a
.
level
+
1
,
d
,
a
,
c
);
e
||
j
.
expandCollapseParentNode
(
b
,
a
,
!
0
)}
else
g
.
addNodesData
(
b
,
g
.
getRoot
(
b
),
c
,
d
),
j
.
createNodes
(
b
,
0
,
d
,
null
,
c
)},
appendNodes
:
function
(
b
,
a
,
c
,
d
,
e
,
h
,
k
){
if
(
!
c
)
return
[];
var
f
=
[],
i
=
b
.
data
.
key
.
children
,
l
=
(
d
?
d
:
g
.
getRoot
(
b
))[
i
],
r
,
P
;
if
(
!
l
||
e
>=
l
.
length
-
c
.
length
)
e
=-
1
;
for
(
var
m
=
0
,
q
=
c
.
length
;
m
<
q
;
m
++
){
var
n
=
c
[
m
];
h
&&
(
r
=
(
e
===
0
||
l
.
length
==
c
.
length
)
&&
m
==
0
,
P
=
e
<
0
&&
m
==
c
.
length
-
1
,
g
.
initNode
(
b
,
a
,
n
,
d
,
r
,
P
,
k
),
g
.
addNodeCache
(
b
,
n
));
r
=
[];
n
[
i
]
&&
n
[
i
].
length
>
0
&&
(
r
=
j
.
appendNodes
(
b
,
a
+
1
,
n
[
i
],
n
,
-
1
,
h
,
k
&&
n
.
open
));
k
&&
(
j
.
makeDOMNodeMainBefore
(
f
,
b
,
n
),
j
.
makeDOMNodeLine
(
f
,
b
,
n
),
g
.
getBeforeA
(
b
,
n
,
f
),
j
.
makeDOMNodeNameBefore
(
f
,
b
,
n
),
g
.
getInnerBeforeA
(
b
,
n
,
f
),
j
.
makeDOMNodeIcon
(
f
,
b
,
n
),
g
.
getInnerAfterA
(
b
,
n
,
f
),
j
.
makeDOMNodeNameAfter
(
f
,
b
,
n
),
g
.
getAfterA
(
b
,
n
,
f
),
n
.
isParent
&&
n
.
open
&&
j
.
makeUlHtml
(
b
,
n
,
f
,
r
.
join
(
""
)),
j
.
makeDOMNodeMainAfter
(
f
,
b
,
n
),
g
.
addCreatedNode
(
b
,
n
))}
return
f
},
appendParentULDom
:
function
(
b
,
a
){
var
c
=
[],
d
=
l
(
a
,
b
);
!
d
.
get
(
0
)
&&
a
.
parentTId
&&
(
j
.
appendParentULDom
(
b
,
a
.
getParentNode
()),
d
=
l
(
a
,
b
));
var
e
=
l
(
a
,
f
.
id
.
UL
,
b
);
e
.
get
(
0
)
&&
e
.
remove
();
e
=
j
.
appendNodes
(
b
,
a
.
level
+
1
,
a
[
b
.
data
.
key
.
children
],
a
,
-
1
,
!
1
,
!
0
);
j
.
makeUlHtml
(
b
,
a
,
c
,
e
.
join
(
""
));
d
.
append
(
c
.
join
(
""
))},
asyncNode
:
function
(
b
,
a
,
c
,
d
){
var
e
,
h
;
if
(
a
&&!
a
.
isParent
)
return
i
.
apply
(
d
),
!
1
;
else
if
(
a
&&
a
.
isAjaxing
)
return
!
1
;
else
if
(
i
.
apply
(
b
.
callback
.
beforeAsync
,[
b
.
treeId
,
a
],
!
0
)
==!
1
)
return
i
.
apply
(
d
),
!
1
;
if
(
a
)
a
.
isAjaxing
=
!
0
,
l
(
a
,
f
.
id
.
ICON
,
b
).
attr
({
style
:
""
,
"
class
"
:
f
.
className
.
BUTTON
+
"
"
+
f
.
className
.
ICO_LOADING
});
var
k
=
{};
for
(
e
=
0
,
h
=
b
.
async
.
autoParam
.
length
;
a
&&
e
<
h
;
e
++
){
var
o
=
b
.
async
.
autoParam
[
e
].
split
(
"
=
"
),
p
=
o
;
o
.
length
>
1
&&
(
p
=
o
[
1
],
o
=
o
[
0
]);
k
[
p
]
=
a
[
o
]}
if
(
i
.
isArray
(
b
.
async
.
otherParam
))
for
(
e
=
0
,
h
=
b
.
async
.
otherParam
.
length
;
e
<
h
;
e
+=
2
)
k
[
b
.
async
.
otherParam
[
e
]]
=
b
.
async
.
otherParam
[
e
+
1
];
else
for
(
var
m
in
b
.
async
.
otherParam
)
k
[
m
]
=
b
.
async
.
otherParam
[
m
];
var
r
=
g
.
getRoot
(
b
).
_ver
;
q
.
ajax
({
contentType
:
b
.
async
.
contentType
,
cache
:
!
1
,
type
:
b
.
async
.
type
,
url
:
i
.
apply
(
b
.
async
.
url
,[
b
.
treeId
,
a
],
b
.
async
.
url
),
data
:
b
.
async
.
contentType
.
indexOf
(
"
application/json
"
)
>-
1
?
JSON
.
stringify
(
k
):
k
,
dataType
:
b
.
async
.
dataType
,
success
:
function
(
h
){
if
(
r
==
g
.
getRoot
(
b
).
_ver
){
var
e
=
[];
try
{
e
=!
h
||
h
.
length
==
0
?[]:
typeof
h
==
"
string
"
?
eval
(
"
(
"
+
h
+
"
)
"
):
h
}
catch
(
k
){
e
=
h
}
if
(
a
)
a
.
isAjaxing
=
null
,
a
.
zAsync
=!
0
;
j
.
setNodeLineIcos
(
b
,
a
);
e
&&
e
!==
""
?(
e
=
i
.
apply
(
b
.
async
.
dataFilter
,[
b
.
treeId
,
a
,
e
],
e
),
j
.
addNodes
(
b
,
a
,
-
1
,
e
?
i
.
clone
(
e
):[],
!!
c
)):
j
.
addNodes
(
b
,
a
,
-
1
,[],
!!
c
);
b
.
treeObj
.
trigger
(
f
.
event
.
ASYNC_SUCCESS
,
[
b
.
treeId
,
a
,
h
]);
i
.
apply
(
d
)}},
error
:
function
(
c
,
d
,
h
){
if
(
r
==
g
.
getRoot
(
b
).
_ver
){
if
(
a
)
a
.
isAjaxing
=
null
;
j
.
setNodeLineIcos
(
b
,
a
);
b
.
treeObj
.
trigger
(
f
.
event
.
ASYNC_ERROR
,[
b
.
treeId
,
a
,
c
,
d
,
h
])}}});
return
!
0
},
cancelPreSelectedNode
:
function
(
b
,
a
,
c
){
var
d
=
g
.
getRoot
(
b
).
curSelectedList
,
e
,
h
;
for
(
e
=
d
.
length
-
1
;
e
>=
0
;
e
--
)
if
(
h
=
d
[
e
],
a
===
h
||!
a
&&
(
!
c
||
c
!==
h
))
if
(
l
(
h
,
f
.
id
.
A
,
b
).
removeClass
(
f
.
node
.
CURSELECTED
),
a
){
g
.
removeSelectedNode
(
b
,
a
);
break
}
else
d
.
splice
(
e
,
1
),
b
.
treeObj
.
trigger
(
f
.
event
.
UNSELECTED
,[
b
.
treeId
,
h
])},
createNodeCallback
:
function
(
b
){
if
(
b
.
callback
.
onNodeCreated
||
b
.
view
.
addDiyDom
)
for
(
var
a
=
g
.
getRoot
(
b
);
a
.
createdNodes
.
length
>
0
;){
var
c
=
a
.
createdNodes
.
shift
();
i
.
apply
(
b
.
view
.
addDiyDom
,[
b
.
treeId
,
c
]);
b
.
callback
.
onNodeCreated
&&
b
.
treeObj
.
trigger
(
f
.
event
.
NODECREATED
,[
b
.
treeId
,
c
])}},
createNodes
:
function
(
b
,
a
,
c
,
d
,
e
){
if
(
c
&&
c
.
length
!=
0
){
var
h
=
g
.
getRoot
(
b
),
k
=
b
.
data
.
key
.
children
,
k
=!
d
||
d
.
open
||!!
l
(
d
[
k
][
0
],
b
).
get
(
0
);
h
.
createdNodes
=
[];
var
a
=
j
.
appendNodes
(
b
,
a
,
c
,
d
,
e
,
!
0
,
k
),
i
,
p
;
d
?(
d
=
l
(
d
,
f
.
id
.
UL
,
b
),
d
.
get
(
0
)
&&
(
i
=
d
)):
i
=
b
.
treeObj
;
i
&&
(
e
>=
0
&&
(
p
=
i
.
children
()[
e
]),
e
>=
0
&&
p
?
q
(
p
).
before
(
a
.
join
(
""
)):
i
.
append
(
a
.
join
(
""
)));
j
.
createNodeCallback
(
b
)}},
destroy
:
function
(
b
){
b
&&
(
g
.
initCache
(
b
),
g
.
initRoot
(
b
),
m
.
unbindTree
(
b
),
m
.
unbindEvent
(
b
),
b
.
treeObj
.
empty
(),
delete
s
[
b
.
treeId
])},
expandCollapseNode
:
function
(
b
,
a
,
c
,
d
,
e
){
var
h
=
g
.
getRoot
(
b
),
k
=
b
.
data
.
key
.
children
,
o
;
if
(
a
){
if
(
h
.
expandTriggerFlag
)
o
=
e
,
e
=
function
(){
o
&&
o
();
a
.
open
?
b
.
treeObj
.
trigger
(
f
.
event
.
EXPAND
,[
b
.
treeId
,
a
]):
b
.
treeObj
.
trigger
(
f
.
event
.
COLLAPSE
,[
b
.
treeId
,
a
])},
h
.
expandTriggerFlag
=!
1
;
if
(
!
a
.
open
&&
a
.
isParent
&&
(
!
l
(
a
,
f
.
id
.
UL
,
b
).
get
(
0
)
||
a
[
k
]
&&
a
[
k
].
length
>
0
&&!
l
(
a
[
k
][
0
],
b
).
get
(
0
)))
j
.
appendParentULDom
(
b
,
a
),
j
.
createNodeCallback
(
b
);
if
(
a
.
open
==
c
)
i
.
apply
(
e
,[]);
else
{
var
c
=
l
(
a
,
f
.
id
.
UL
,
b
),
h
=
l
(
a
,
f
.
id
.
SWITCH
,
b
),
p
=
l
(
a
,
f
.
id
.
ICON
,
b
);
a
.
isParent
?(
a
.
open
=!
a
.
open
,
a
.
iconOpen
&&
a
.
iconClose
&&
p
.
attr
(
"
style
"
,
j
.
makeNodeIcoStyle
(
b
,
a
)),
a
.
open
?(
j
.
replaceSwitchClass
(
a
,
h
,
f
.
folder
.
OPEN
),
j
.
replaceIcoClass
(
a
,
p
,
f
.
folder
.
OPEN
),
d
==!
1
||
b
.
view
.
expandSpeed
==
""
?(
c
.
show
(),
i
.
apply
(
e
,[])):
a
[
k
]
&&
a
[
k
].
length
>
0
?
c
.
slideDown
(
b
.
view
.
expandSpeed
,
e
):(
c
.
show
(),
i
.
apply
(
e
,[]))):(
j
.
replaceSwitchClass
(
a
,
h
,
f
.
folder
.
CLOSE
),
j
.
replaceIcoClass
(
a
,
p
,
f
.
folder
.
CLOSE
),
d
==!
1
||
b
.
view
.
expandSpeed
==
""
||!
(
a
[
k
]
&&
a
[
k
].
length
>
0
)?(
c
.
hide
(),
i
.
apply
(
e
,[])):
c
.
slideUp
(
b
.
view
.
expandSpeed
,
e
))):
i
.
apply
(
e
,[])}}
else
i
.
apply
(
e
,[])},
expandCollapseParentNode
:
function
(
b
,
a
,
c
,
d
,
e
){
a
&&
(
a
.
parentTId
?(
j
.
expandCollapseNode
(
b
,
a
,
c
,
d
),
a
.
parentTId
&&
j
.
expandCollapseParentNode
(
b
,
a
.
getParentNode
(),
c
,
d
,
e
)):
j
.
expandCollapseNode
(
b
,
a
,
c
,
d
,
e
))},
expandCollapseSonNode
:
function
(
b
,
a
,
c
,
d
,
e
){
var
h
=
g
.
getRoot
(
b
),
k
=
b
.
data
.
key
.
children
,
h
=
a
?
a
[
k
]:
h
[
k
],
k
=
a
?
!
1
:
d
,
f
=
g
.
getRoot
(
b
).
expandTriggerFlag
;
g
.
getRoot
(
b
).
expandTriggerFlag
=!
1
;
if
(
h
)
for
(
var
i
=
0
,
l
=
h
.
length
;
i
<
l
;
i
++
)
h
[
i
]
&&
j
.
expandCollapseSonNode
(
b
,
h
[
i
],
c
,
k
);
g
.
getRoot
(
b
).
expandTriggerFlag
=
f
;
j
.
expandCollapseNode
(
b
,
a
,
c
,
d
,
e
)},
isSelectedNode
:
function
(
b
,
a
){
if
(
!
a
)
return
!
1
;
var
c
=
g
.
getRoot
(
b
).
curSelectedList
,
d
;
for
(
d
=
c
.
length
-
1
;
d
>=
0
;
d
--
)
if
(
a
===
c
[
d
])
return
!
0
;
return
!
1
},
makeDOMNodeIcon
:
function
(
b
,
a
,
c
){
var
d
=
g
.
getNodeName
(
a
,
c
),
d
=
a
.
view
.
nameIsHTML
?
d
:
d
.
replace
(
/&/g
,
"
&
"
).
replace
(
/</g
,
"
<
"
).
replace
(
/>/g
,
"
>
"
);
b
.
push
(
"
<span id='
"
,
c
.
tId
,
f
.
id
.
ICON
,
"
' title='' treeNode
"
,
f
.
id
.
ICON
,
"
class='
"
,
j
.
makeNodeIcoClass
(
a
,
c
),
"
' style='
"
,
j
.
makeNodeIcoStyle
(
a
,
c
),
"
'></span><span id='
"
,
c
.
tId
,
f
.
id
.
SPAN
,
"
' class='
"
,
f
.
className
.
NAME
,
"
'>
"
,
d
,
"
</span>
"
)},
makeDOMNodeLine
:
function
(
b
,
a
,
c
){
b
.
push
(
"
<span id='
"
,
c
.
tId
,
f
.
id
.
SWITCH
,
"
' title='' class='
"
,
j
.
makeNodeLineClass
(
a
,
c
),
"
' treeNode
"
,
f
.
id
.
SWITCH
,
"
></span>
"
)},
makeDOMNodeMainAfter
:
function
(
b
){
b
.
push
(
"
</li>
"
)},
makeDOMNodeMainBefore
:
function
(
b
,
a
,
c
){
b
.
push
(
"
<li id='
"
,
c
.
tId
,
"
' class='
"
,
f
.
className
.
LEVEL
,
c
.
level
,
"
' tabindex='0' hidefocus='true' treenode>
"
)},
makeDOMNodeNameAfter
:
function
(
b
){
b
.
push
(
"
</a>
"
)},
makeDOMNodeNameBefore
:
function
(
b
,
a
,
c
){
var
d
=
g
.
getNodeTitle
(
a
,
c
),
e
=
j
.
makeNodeUrl
(
a
,
c
),
h
=
j
.
makeNodeFontCss
(
a
,
c
),
k
=
[],
o
;
for
(
o
in
h
)
k
.
push
(
o
,
"
:
"
,
h
[
o
],
"
;
"
);
b
.
push
(
"
<a id='
"
,
c
.
tId
,
f
.
id
.
A
,
"
' class='
"
,
f
.
className
.
LEVEL
,
c
.
level
,
"
' treeNode
"
,
f
.
id
.
A
,
'
onclick="
'
,
c
.
click
||
""
,
'
"
'
,
e
!=
null
&&
e
.
length
>
0
?
"
href='
"
+
e
+
"
'
"
:
""
,
"
target='
"
,
j
.
makeNodeTarget
(
c
),
"
' style='
"
,
k
.
join
(
""
),
"
'
"
);
i
.
apply
(
a
.
view
.
showTitle
,[
a
.
treeId
,
c
],
a
.
view
.
showTitle
)
&&
d
&&
b
.
push
(
"
title='
"
,
d
.
replace
(
/'/g
,
"
'
"
).
replace
(
/</g
,
"
<
"
).
replace
(
/>/g
,
"
>
"
),
"
'
"
);
b
.
push
(
"
>
"
)},
makeNodeFontCss
:
function
(
b
,
a
){
var
c
=
i
.
apply
(
b
.
view
.
fontCss
,[
b
.
treeId
,
a
],
b
.
view
.
fontCss
);
return
c
&&
typeof
c
!=
"
function
"
?
c
:{}},
makeNodeIcoClass
:
function
(
b
,
a
){
var
c
=
[
"
ico
"
];
a
.
isAjaxing
||
(
c
[
0
]
=
(
a
.
iconSkin
?
a
.
iconSkin
+
"
_
"
:
""
)
+
c
[
0
],
a
.
isParent
?
c
.
push
(
a
.
open
?
f
.
folder
.
OPEN
:
f
.
folder
.
CLOSE
):
c
.
push
(
f
.
folder
.
DOCU
));
return
f
.
className
.
BUTTON
+
"
"
+
c
.
join
(
"
_
"
)},
makeNodeIcoStyle
:
function
(
b
,
a
){
var
c
=
[];
if
(
!
a
.
isAjaxing
){
var
d
=
a
.
isParent
&&
a
.
iconOpen
&&
a
.
iconClose
?
a
.
open
?
a
.
iconOpen
:
a
.
iconClose
:
a
[
b
.
data
.
key
.
icon
];
d
&&
c
.
push
(
"
background:url(
"
,
d
,
"
) 0 0 no-repeat;
"
);(
b
.
view
.
showIcon
==!
1
||!
i
.
apply
(
b
.
view
.
showIcon
,[
b
.
treeId
,
a
],
!
0
))
&&
c
.
push
(
"
width:0px;height:0px;
"
)}
return
c
.
join
(
""
)},
makeNodeLineClass
:
function
(
b
,
a
){
var
c
=
[];
b
.
view
.
showLine
?
a
.
level
==
0
&&
a
.
isFirstNode
&&
a
.
isLastNode
?
c
.
push
(
f
.
line
.
ROOT
):
a
.
level
==
0
&&
a
.
isFirstNode
?
c
.
push
(
f
.
line
.
ROOTS
):
a
.
isLastNode
?
c
.
push
(
f
.
line
.
BOTTOM
):
c
.
push
(
f
.
line
.
CENTER
):
c
.
push
(
f
.
line
.
NOLINE
);
a
.
isParent
?
c
.
push
(
a
.
open
?
f
.
folder
.
OPEN
:
f
.
folder
.
CLOSE
):
c
.
push
(
f
.
folder
.
DOCU
);
return
j
.
makeNodeLineClassEx
(
a
)
+
c
.
join
(
"
_
"
)},
makeNodeLineClassEx
:
function
(
b
){
return
f
.
className
.
BUTTON
+
"
"
+
f
.
className
.
LEVEL
+
b
.
level
+
"
"
+
f
.
className
.
SWITCH
+
"
"
},
makeNodeTarget
:
function
(
b
){
return
b
.
target
||
"
_blank
"
},
makeNodeUrl
:
function
(
b
,
a
){
var
c
=
b
.
data
.
key
.
url
;
return
a
[
c
]?
a
[
c
]:
null
},
makeUlHtml
:
function
(
b
,
a
,
c
,
d
){
c
.
push
(
"
<ul id='
"
,
a
.
tId
,
f
.
id
.
UL
,
"
' class='
"
,
f
.
className
.
LEVEL
,
a
.
level
,
"
"
,
j
.
makeUlLineClass
(
b
,
a
),
"
' style='display:
"
,
a
.
open
?
"
block
"
:
"
none
"
,
"
'>
"
);
c
.
push
(
d
);
c
.
push
(
"
</ul>
"
)},
makeUlLineClass
:
function
(
b
,
a
){
return
b
.
view
.
showLine
&&!
a
.
isLastNode
?
f
.
line
.
LINE
:
""
},
removeChildNodes
:
function
(
b
,
a
){
if
(
a
){
var
c
=
b
.
data
.
key
.
children
,
d
=
a
[
c
];
if
(
d
){
for
(
var
e
=
0
,
h
=
d
.
length
;
e
<
h
;
e
++
)
g
.
removeNodeCache
(
b
,
d
[
e
]);
g
.
removeSelectedNode
(
b
);
delete
a
[
c
];
b
.
data
.
keep
.
parent
?
l
(
a
,
f
.
id
.
UL
,
b
).
empty
():(
a
.
isParent
=!
1
,
a
.
open
=!
1
,
c
=
l
(
a
,
f
.
id
.
SWITCH
,
b
),
d
=
l
(
a
,
f
.
id
.
ICON
,
b
),
j
.
replaceSwitchClass
(
a
,
c
,
f
.
folder
.
DOCU
),
j
.
replaceIcoClass
(
a
,
d
,
f
.
folder
.
DOCU
),
l
(
a
,
f
.
id
.
UL
,
b
).
remove
())}}},
scrollIntoView
:
function
(
b
,
a
){
if
(
a
)
if
(
typeof
Element
===
"
undefined
"
){
var
c
=
b
.
treeObj
.
get
(
0
).
getBoundingClientRect
(),
d
=
a
.
getBoundingClientRect
();(
d
.
top
<
c
.
top
||
d
.
bottom
>
c
.
bottom
||
d
.
right
>
c
.
right
||
d
.
left
<
c
.
left
)
&&
a
.
scrollIntoView
()}
else
{
if
(
!
Element
.
prototype
.
scrollIntoViewIfNeeded
)
Element
.
prototype
.
scrollIntoViewIfNeeded
=
function
(
a
){
function
b
(
a
,
c
,
d
,
e
){
return
{
left
:
a
,
top
:
c
,
width
:
d
,
height
:
e
,
right
:
a
+
d
,
bottom
:
c
+
e
,
translate
:
function
(
f
,
k
){
return
b
(
f
+
a
,
k
+
c
,
d
,
e
)},
relativeFromTo
:
function
(
k
,
g
){
var
j
=
a
,
i
=
c
,
k
=
k
.
offsetParent
,
g
=
g
.
offsetParent
;
if
(
k
===
g
)
return
f
;
for
(;
k
;
k
=
k
.
offsetParent
)
j
+=
k
.
offsetLeft
+
k
.
clientLeft
,
i
+=
k
.
offsetTop
+
k
.
clientTop
;
for
(;
g
;
g
=
g
.
offsetParent
)
j
-=
g
.
offsetLeft
+
g
.
clientLeft
,
i
-=
g
.
offsetTop
+
g
.
clientTop
;
return
b
(
j
,
i
,
d
,
e
)}}}
for
(
var
c
,
d
=
this
,
f
=
b
(
this
.
offsetLeft
,
this
.
offsetTop
,
this
.
offsetWidth
,
this
.
offsetHeight
);
i
.
isElement
(
c
=
d
.
parentNode
);){
var
g
=
c
.
offsetLeft
+
c
.
clientLeft
,
j
=
c
.
offsetTop
+
c
.
clientTop
,
f
=
f
.
relativeFromTo
(
d
,
c
).
translate
(
-
g
,
-
j
);
c
.
scrollLeft
=!
1
===
a
||
f
.
left
<=
c
.
scrollLeft
+
c
.
clientWidth
&&
c
.
scrollLeft
<=
f
.
right
-
c
.
clientWidth
+
c
.
clientWidth
?
Math
.
min
(
f
.
left
,
Math
.
max
(
f
.
right
-
c
.
clientWidth
,
c
.
scrollLeft
)):(
f
.
right
-
c
.
clientWidth
+
f
.
left
)
/
2
;
c
.
scrollTop
=!
1
===
a
||
f
.
top
<=
c
.
scrollTop
+
c
.
clientHeight
&&
c
.
scrollTop
<=
f
.
bottom
-
c
.
clientHeight
+
c
.
clientHeight
?
Math
.
min
(
f
.
top
,
Math
.
max
(
f
.
bottom
-
c
.
clientHeight
,
c
.
scrollTop
)):(
f
.
bottom
-
c
.
clientHeight
+
f
.
top
)
/
2
;
f
=
f
.
translate
(
g
-
c
.
scrollLeft
,
j
-
c
.
scrollTop
);
d
=
c
}};
a
.
scrollIntoViewIfNeeded
()}},
setFirstNode
:
function
(
b
,
a
){
var
c
=
b
.
data
.
key
.
children
;
if
(
a
[
c
].
length
>
0
)
a
[
c
][
0
].
isFirstNode
=
!
0
},
setLastNode
:
function
(
b
,
a
){
var
c
=
b
.
data
.
key
.
children
,
d
=
a
[
c
].
length
;
if
(
d
>
0
)
a
[
c
][
d
-
1
].
isLastNode
=!
0
},
removeNode
:
function
(
b
,
a
){
var
c
=
g
.
getRoot
(
b
),
d
=
b
.
data
.
key
.
children
,
e
=
a
.
parentTId
?
a
.
getParentNode
():
c
;
a
.
isFirstNode
=!
1
;
a
.
isLastNode
=!
1
;
a
.
getPreNode
=
function
(){
return
null
};
a
.
getNextNode
=
function
(){
return
null
};
if
(
g
.
getNodeCache
(
b
,
a
.
tId
)){
l
(
a
,
b
).
remove
();
g
.
removeNodeCache
(
b
,
a
);
g
.
removeSelectedNode
(
b
,
a
);
for
(
var
h
=
0
,
k
=
e
[
d
].
length
;
h
<
k
;
h
++
)
if
(
e
[
d
][
h
].
tId
==
a
.
tId
){
e
[
d
].
splice
(
h
,
1
);
break
}
j
.
setFirstNode
(
b
,
e
);
j
.
setLastNode
(
b
,
e
);
var
i
,
h
=
e
[
d
].
length
;
if
(
!
b
.
data
.
keep
.
parent
&&
h
==
0
)
e
.
isParent
=!
1
,
e
.
open
=!
1
,
delete
e
[
d
],
h
=
l
(
e
,
f
.
id
.
UL
,
b
),
k
=
l
(
e
,
f
.
id
.
SWITCH
,
b
),
i
=
l
(
e
,
f
.
id
.
ICON
,
b
),
j
.
replaceSwitchClass
(
e
,
k
,
f
.
folder
.
DOCU
),
j
.
replaceIcoClass
(
e
,
i
,
f
.
folder
.
DOCU
),
h
.
css
(
"
display
"
,
"
none
"
);
else
if
(
b
.
view
.
showLine
&&
h
>
0
){
var
p
=
e
[
d
][
h
-
1
],
h
=
l
(
p
,
f
.
id
.
UL
,
b
),
k
=
l
(
p
,
f
.
id
.
SWITCH
,
b
);
i
=
l
(
p
,
f
.
id
.
ICON
,
b
);
e
==
c
?
e
[
d
].
length
==
1
?
j
.
replaceSwitchClass
(
p
,
k
,
f
.
line
.
ROOT
):(
c
=
l
(
e
[
d
][
0
],
f
.
id
.
SWITCH
,
b
),
j
.
replaceSwitchClass
(
e
[
d
][
0
],
c
,
f
.
line
.
ROOTS
),
j
.
replaceSwitchClass
(
p
,
k
,
f
.
line
.
BOTTOM
)):
j
.
replaceSwitchClass
(
p
,
k
,
f
.
line
.
BOTTOM
);
h
.
removeClass
(
f
.
line
.
LINE
)}}},
replaceIcoClass
:
function
(
b
,
a
,
c
){
if
(
a
&&!
b
.
isAjaxing
&&
(
b
=
a
.
attr
(
"
class
"
),
b
!=
void
0
)){
b
=
b
.
split
(
"
_
"
);
switch
(
c
){
case
f
.
folder
.
OPEN
:
case
f
.
folder
.
CLOSE
:
case
f
.
folder
.
DOCU
:
b
[
b
.
length
-
1
]
=
c
}
a
.
attr
(
"
class
"
,
b
.
join
(
"
_
"
))}},
replaceSwitchClass
:
function
(
b
,
a
,
c
){
if
(
a
){
var
d
=
a
.
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
]
=
j
.
makeNodeLineClassEx
(
b
)
+
c
;
break
;
case
f
.
folder
.
OPEN
:
case
f
.
folder
.
CLOSE
:
case
f
.
folder
.
DOCU
:
d
[
1
]
=
c
}
a
.
attr
(
"
class
"
,
d
.
join
(
"
_
"
));
c
!==
f
.
folder
.
DOCU
?
a
.
removeAttr
(
"
disabled
"
):
a
.
attr
(
"
disabled
"
,
"
disabled
"
)}}},
selectNode
:
function
(
b
,
a
,
c
){
c
||
j
.
cancelPreSelectedNode
(
b
,
null
,
a
);
l
(
a
,
f
.
id
.
A
,
b
).
addClass
(
f
.
node
.
CURSELECTED
);
g
.
addSelectedNode
(
b
,
a
);
b
.
treeObj
.
trigger
(
f
.
event
.
SELECTED
,[
b
.
treeId
,
a
])},
setNodeFontCss
:
function
(
b
,
a
){
var
c
=
l
(
a
,
f
.
id
.
A
,
b
),
d
=
j
.
makeNodeFontCss
(
b
,
a
);
d
&&
c
.
css
(
d
)},
setNodeLineIcos
:
function
(
b
,
a
){
if
(
a
){
var
c
=
l
(
a
,
f
.
id
.
SWITCH
,
b
),
d
=
l
(
a
,
f
.
id
.
UL
,
b
),
e
=
l
(
a
,
f
.
id
.
ICON
,
b
),
h
=
j
.
makeUlLineClass
(
b
,
a
);
h
.
length
==
0
?
d
.
removeClass
(
f
.
line
.
LINE
):
d
.
addClass
(
h
);
c
.
attr
(
"
class
"
,
j
.
makeNodeLineClass
(
b
,
a
));
a
.
isParent
?
c
.
removeAttr
(
"
disabled
"
):
c
.
attr
(
"
disabled
"
,
"
disabled
"
);
e
.
removeAttr
(
"
style
"
);
e
.
attr
(
"
style
"
,
j
.
makeNodeIcoStyle
(
b
,
a
));
e
.
attr
(
"
class
"
,
j
.
makeNodeIcoClass
(
b
,
a
))}},
setNodeName
:
function
(
b
,
a
){
var
c
=
g
.
getNodeTitle
(
b
,
a
),
d
=
l
(
a
,
f
.
id
.
SPAN
,
b
);
d
.
empty
();
b
.
view
.
nameIsHTML
?
d
.
html
(
g
.
getNodeName
(
b
,
a
)):
d
.
text
(
g
.
getNodeName
(
b
,
a
));
i
.
apply
(
b
.
view
.
showTitle
,
[
b
.
treeId
,
a
],
b
.
view
.
showTitle
)
&&
l
(
a
,
f
.
id
.
A
,
b
).
attr
(
"
title
"
,
!
c
?
""
:
c
)},
setNodeTarget
:
function
(
b
,
a
){
l
(
a
,
f
.
id
.
A
,
b
).
attr
(
"
target
"
,
j
.
makeNodeTarget
(
a
))},
setNodeUrl
:
function
(
b
,
a
){
var
c
=
l
(
a
,
f
.
id
.
A
,
b
),
d
=
j
.
makeNodeUrl
(
b
,
a
);
d
==
null
||
d
.
length
==
0
?
c
.
removeAttr
(
"
href
"
):
c
.
attr
(
"
href
"
,
d
)},
switchNode
:
function
(
b
,
a
){
a
.
open
||!
i
.
canAsync
(
b
,
a
)?
j
.
expandCollapseNode
(
b
,
a
,
!
a
.
open
):
b
.
async
.
enable
?
j
.
asyncNode
(
b
,
a
)
||
j
.
expandCollapseNode
(
b
,
a
,
!
a
.
open
):
a
&&
j
.
expandCollapseNode
(
b
,
a
,
!
a
.
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
"
,
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
:
i
,
view
:
j
,
event
:
m
,
data
:
g
},
getZTreeObj
:
function
(
b
){
return
(
b
=
g
.
getZTreeTools
(
b
))?
b
:
null
},
destroy
:
function
(
b
){
if
(
b
&&
b
.
length
>
0
)
j
.
destroy
(
g
.
getSetting
(
b
));
else
for
(
var
a
in
s
)
j
.
destroy
(
s
[
a
])},
init
:
function
(
b
,
a
,
c
){
var
d
=
i
.
clone
(
N
);
q
.
extend
(
!
0
,
d
,
a
);
d
.
treeId
=
b
.
attr
(
"
id
"
);
d
.
treeObj
=
b
;
d
.
treeObj
.
empty
();
s
[
d
.
treeId
]
=
d
;
if
(
typeof
document
.
body
.
style
.
maxHeight
===
"
undefined
"
)
d
.
view
.
expandSpeed
=
""
;
g
.
initRoot
(
d
);
b
=
g
.
getRoot
(
d
);
a
=
d
.
data
.
key
.
children
;
c
=
c
?
i
.
clone
(
i
.
isArray
(
c
)?
c
:[
c
]):[];
b
[
a
]
=
d
.
data
.
simpleData
.
enable
?
g
.
transformTozTreeFormat
(
d
,
c
):
c
;
g
.
initCache
(
d
);
m
.
unbindTree
(
d
);
m
.
bindTree
(
d
);
m
.
unbindEvent
(
d
);
m
.
bindEvent
(
d
);
var
e
=
{
setting
:
d
,
addNodes
:
function
(
a
,
b
,
c
,
e
){
function
f
(){
j
.
addNodes
(
d
,
a
,
b
,
l
,
e
==!
0
)}
a
||
(
a
=
null
);
if
(
a
&&!
a
.
isParent
&&
d
.
data
.
keep
.
leaf
)
return
null
;
var
g
=
parseInt
(
b
,
10
);
isNaN
(
g
)?(
e
=!!
c
,
c
=
b
,
b
=-
1
):
b
=
g
;
if
(
!
c
)
return
null
;
var
l
=
i
.
clone
(
i
.
isArray
(
c
)?
c
:[
c
]);
i
.
canAsync
(
d
,
a
)?
j
.
asyncNode
(
d
,
a
,
e
,
f
):
f
();
return
l
},
cancelSelectedNode
:
function
(
a
){
j
.
cancelPreSelectedNode
(
d
,
a
)},
destroy
:
function
(){
j
.
destroy
(
d
)},
expandAll
:
function
(
a
){
a
=!!
a
;
j
.
expandCollapseSonNode
(
d
,
null
,
a
,
!
0
);
return
a
},
expandNode
:
function
(
a
,
b
,
c
,
e
,
f
){
function
m
(){
var
b
=
l
(
a
,
d
).
get
(
0
);
b
&&
e
!==!
1
&&
j
.
scrollIntoView
(
d
,
b
)}
if
(
!
a
||!
a
.
isParent
)
return
null
;
b
!==!
0
&&
b
!==!
1
&&
(
b
=!
a
.
open
);
if
((
f
=!!
f
)
&&
b
&&
i
.
apply
(
d
.
callback
.
beforeExpand
,[
d
.
treeId
,
a
],
!
0
)
==!
1
)
return
null
;
else
if
(
f
&&!
b
&&
i
.
apply
(
d
.
callback
.
beforeCollapse
,[
d
.
treeId
,
a
],
!
0
)
==!
1
)
return
null
;
b
&&
a
.
parentTId
&&
j
.
expandCollapseParentNode
(
d
,
a
.
getParentNode
(),
b
,
!
1
);
if
(
b
===
a
.
open
&&!
c
)
return
null
;
g
.
getRoot
(
d
).
expandTriggerFlag
=
f
;
!
i
.
canAsync
(
d
,
a
)
&&
c
?
j
.
expandCollapseSonNode
(
d
,
a
,
b
,
!
0
,
m
):(
a
.
open
=!
b
,
j
.
switchNode
(
this
.
setting
,
a
),
m
());
return
b
},
getNodes
:
function
(){
return
g
.
getNodes
(
d
)},
getNodeByParam
:
function
(
a
,
b
,
c
){
return
!
a
?
null
:
g
.
getNodeByParam
(
d
,
c
?
c
[
d
.
data
.
key
.
children
]:
g
.
getNodes
(
d
),
a
,
b
)},
getNodeByTId
:
function
(
a
){
return
g
.
getNodeCache
(
d
,
a
)},
getNodesByParam
:
function
(
a
,
b
,
c
){
return
!
a
?
null
:
g
.
getNodesByParam
(
d
,
c
?
c
[
d
.
data
.
key
.
children
]:
g
.
getNodes
(
d
),
a
,
b
)},
getNodesByParamFuzzy
:
function
(
a
,
b
,
c
){
return
!
a
?
null
:
g
.
getNodesByParamFuzzy
(
d
,
c
?
c
[
d
.
data
.
key
.
children
]:
g
.
getNodes
(
d
),
a
,
b
)},
getNodesByFilter
:
function
(
a
,
b
,
c
,
e
){
b
=!!
b
;
return
!
a
||
typeof
a
!=
"
function
"
?
b
?
null
:[]:
g
.
getNodesByFilter
(
d
,
c
?
c
[
d
.
data
.
key
.
children
]:
g
.
getNodes
(
d
),
a
,
b
,
e
)},
getNodeIndex
:
function
(
a
){
if
(
!
a
)
return
null
;
for
(
var
b
=
d
.
data
.
key
.
children
,
c
=
a
.
parentTId
?
a
.
getParentNode
():
g
.
getRoot
(
d
),
e
=
0
,
f
=
c
[
b
].
length
;
e
<
f
;
e
++
)
if
(
c
[
b
][
e
]
==
a
)
return
e
;
return
-
1
},
getSelectedNodes
:
function
(){
for
(
var
a
=
[],
b
=
g
.
getRoot
(
d
).
curSelectedList
,
c
=
0
,
e
=
b
.
length
;
c
<
e
;
c
++
)
a
.
push
(
b
[
c
]);
return
a
},
isSelectedNode
:
function
(
a
){
return
g
.
isSelectedNode
(
d
,
a
)},
reAsyncChildNodesPromise
:
function
(
a
,
b
,
c
){
return
new
Promise
(
function
(
d
,
f
){
try
{
e
.
reAsyncChildNodes
(
a
,
b
,
c
,
function
(){
d
(
a
)})}
catch
(
g
){
f
(
g
)}})},
reAsyncChildNodes
:
function
(
a
,
b
,
c
,
e
){
if
(
this
.
setting
.
async
.
enable
){
var
i
=!
a
;
i
&&
(
a
=
g
.
getRoot
(
d
));
if
(
b
==
"
refresh
"
){
for
(
var
b
=
this
.
setting
.
data
.
key
.
children
,
m
=
0
,
q
=
a
[
b
]?
a
[
b
].
length
:
0
;
m
<
q
;
m
++
)
g
.
removeNodeCache
(
d
,
a
[
b
][
m
]);
g
.
removeSelectedNode
(
d
);
a
[
b
]
=
[];
i
?
this
.
setting
.
treeObj
.
empty
():
l
(
a
,
f
.
id
.
UL
,
d
).
empty
()}
j
.
asyncNode
(
this
.
setting
,
i
?
null
:
a
,
!!
c
,
e
)}},
refresh
:
function
(){
this
.
setting
.
treeObj
.
empty
();
var
a
=
g
.
getRoot
(
d
),
b
=
a
[
d
.
data
.
key
.
children
];
g
.
initRoot
(
d
);
a
[
d
.
data
.
key
.
children
]
=
b
;
g
.
initCache
(
d
);
j
.
createNodes
(
d
,
0
,
a
[
d
.
data
.
key
.
children
],
null
,
-
1
)},
removeChildNodes
:
function
(
a
){
if
(
!
a
)
return
null
;
var
b
=
a
[
d
.
data
.
key
.
children
];
j
.
removeChildNodes
(
d
,
a
);
return
b
?
b
:
null
},
removeNode
:
function
(
a
,
b
){
a
&&
(
b
=!!
b
,
b
&&
i
.
apply
(
d
.
callback
.
beforeRemove
,[
d
.
treeId
,
a
],
!
0
)
==!
1
||
(
j
.
removeNode
(
d
,
a
),
b
&&
this
.
setting
.
treeObj
.
trigger
(
f
.
event
.
REMOVE
,
[
d
.
treeId
,
a
])))},
selectNode
:
function
(
a
,
b
,
c
){
function
e
(){
if
(
!
c
){
var
b
=
l
(
a
,
d
).
get
(
0
);
j
.
scrollIntoView
(
d
,
b
)}}
if
(
a
&&
i
.
uCanDo
(
d
)){
b
=
d
.
view
.
selectedMulti
&&
b
;
if
(
a
.
parentTId
)
j
.
expandCollapseParentNode
(
d
,
a
.
getParentNode
(),
!
0
,
!
1
,
e
);
else
if
(
!
c
)
try
{
l
(
a
,
d
).
focus
().
blur
()}
catch
(
f
){}
j
.
selectNode
(
d
,
a
,
b
)}},
transformTozTreeNodes
:
function
(
a
){
return
g
.
transformTozTreeFormat
(
d
,
a
)},
transformToArray
:
function
(
a
){
return
g
.
transformToArrayFormat
(
d
,
a
)},
updateNode
:
function
(
a
){
a
&&
l
(
a
,
d
).
get
(
0
)
&&
i
.
uCanDo
(
d
)
&&
(
j
.
setNodeName
(
d
,
a
),
j
.
setNodeTarget
(
d
,
a
),
j
.
setNodeUrl
(
d
,
a
),
j
.
setNodeLineIcos
(
d
,
a
),
j
.
setNodeFontCss
(
d
,
a
))}};
b
.
treeTools
=
e
;
g
.
setZTreeTools
(
d
,
e
);
b
[
a
]
&&
b
[
a
].
length
>
0
?
j
.
createNodes
(
d
,
0
,
b
[
a
],
null
,
-
1
):
d
.
async
.
enable
&&
d
.
async
.
url
&&
d
.
async
.
url
!==
""
&&
j
.
asyncNode
(
d
);
return
e
}};
var
O
=
q
.
fn
.
zTree
,
l
=
i
.
$
,
f
=
O
.
consts
})(
jQuery
);
(
function
(
q
){
var
H
,
I
,
J
,
K
,
L
,
M
,
u
,
s
=
{},
v
=
{},
w
=
{},
N
=
{
treeId
:
""
,
treeObj
:
null
,
view
:{
addDiyDom
:
null
,
autoCancelSelected
:
!
0
,
dblClickExpand
:
!
0
,
expandSpeed
:
"
fast
"
,
fontCss
:{},
nameIsHTML
:
!
1
,
selectedMulti
:
!
0
,
showIcon
:
!
0
,
showLine
:
!
0
,
showTitle
:
!
0
,
txtSelectedEnable
:
!
1
},
data
:{
key
:{
isParent
:
"
isParent
"
,
children
:
"
children
"
,
name
:
"
name
"
,
title
:
""
,
url
:
"
url
"
,
icon
:
"
icon
"
},
simpleData
:{
enable
:
!
1
,
idKey
:
"
id
"
,
pIdKey
:
"
pId
"
,
rootPId
:
null
},
keep
:{
parent
:
!
1
,
leaf
:
!
1
}},
async
:{
enable
:
!
1
,
contentType
:
"
application/x-www-form-urlencoded
"
,
type
:
"
post
"
,
dataType
:
"
text
"
,
url
:
""
,
autoParam
:[],
otherParam
:[],
dataFilter
:
null
},
callback
:{
beforeAsync
:
null
,
beforeClick
:
null
,
beforeDblClick
:
null
,
beforeRightClick
:
null
,
beforeMouseDown
:
null
,
beforeMouseUp
:
null
,
beforeExpand
:
null
,
beforeCollapse
:
null
,
beforeRemove
:
null
,
onAsyncError
:
null
,
onAsyncSuccess
:
null
,
onNodeCreated
:
null
,
onClick
:
null
,
onDblClick
:
null
,
onRightClick
:
null
,
onMouseDown
:
null
,
onMouseUp
:
null
,
onExpand
:
null
,
onCollapse
:
null
,
onRemove
:
null
}},
x
=
[
function
(
a
){
var
b
=
a
.
treeObj
,
c
=
f
.
event
;
b
.
bind
(
c
.
NODECREATED
,
function
(
b
,
c
,
h
){
j
.
apply
(
a
.
callback
.
onNodeCreated
,[
b
,
c
,
h
])});
b
.
bind
(
c
.
CLICK
,
function
(
b
,
c
,
h
,
e
,
m
){
j
.
apply
(
a
.
callback
.
onClick
,[
c
,
h
,
e
,
m
])});
b
.
bind
(
c
.
EXPAND
,
function
(
b
,
c
,
h
){
j
.
apply
(
a
.
callback
.
onExpand
,[
b
,
c
,
h
])});
b
.
bind
(
c
.
COLLAPSE
,
function
(
b
,
c
,
h
){
j
.
apply
(
a
.
callback
.
onCollapse
,[
b
,
c
,
h
])});
b
.
bind
(
c
.
ASYNC_SUCCESS
,
function
(
b
,
c
,
h
,
e
){
j
.
apply
(
a
.
callback
.
onAsyncSuccess
,[
b
,
c
,
h
,
e
])});
b
.
bind
(
c
.
ASYNC_ERROR
,
function
(
b
,
c
,
h
,
e
,
m
,
f
){
j
.
apply
(
a
.
callback
.
onAsyncError
,[
b
,
c
,
h
,
e
,
m
,
f
])});
b
.
bind
(
c
.
REMOVE
,
function
(
b
,
c
,
h
){
j
.
apply
(
a
.
callback
.
onRemove
,
[
b
,
c
,
h
])});
b
.
bind
(
c
.
SELECTED
,
function
(
b
,
c
,
h
){
j
.
apply
(
a
.
callback
.
onSelected
,[
c
,
h
])});
b
.
bind
(
c
.
UNSELECTED
,
function
(
b
,
c
,
h
){
j
.
apply
(
a
.
callback
.
onUnSelected
,[
c
,
h
])})}],
y
=
[
function
(
a
){
var
b
=
f
.
event
;
a
.
treeObj
.
unbind
(
b
.
NODECREATED
).
unbind
(
b
.
CLICK
).
unbind
(
b
.
EXPAND
).
unbind
(
b
.
COLLAPSE
).
unbind
(
b
.
ASYNC_SUCCESS
).
unbind
(
b
.
ASYNC_ERROR
).
unbind
(
b
.
REMOVE
).
unbind
(
b
.
SELECTED
).
unbind
(
b
.
UNSELECTED
)}],
z
=
[
function
(
a
){
var
b
=
e
.
getCache
(
a
);
b
||
(
b
=
{},
e
.
setCache
(
a
,
b
));
b
.
nodes
=
[];
b
.
doms
=
[]}],
A
=
[
function
(
a
,
b
,
c
,
d
,
g
,
h
){
if
(
c
){
var
k
=
e
.
getRoot
(
a
),
m
=
e
.
nodeChildren
(
a
,
c
);
c
.
level
=
b
;
c
.
tId
=
a
.
treeId
+
"
_
"
+
++
k
.
zId
;
c
.
parentTId
=
d
?
d
.
tId
:
null
;
c
.
open
=
typeof
c
.
open
==
"
string
"
?
j
.
eqs
(
c
.
open
,
"
true
"
):
!!
c
.
open
;
b
=
e
.
nodeIsParent
(
a
,
c
);
j
.
isArray
(
m
)
&&!
(
b
===!
1
||
typeof
b
==
"
string
"
&&
j
.
eqs
(
b
,
"
false
"
))?(
e
.
nodeIsParent
(
a
,
c
,
!
0
),
c
.
zAsync
=!
0
):(
b
=
e
.
nodeIsParent
(
a
,
c
,
b
),
c
.
open
=
b
&&!
a
.
async
.
enable
?
c
.
open
:
!
1
,
c
.
zAsync
=!
b
);
c
.
isFirstNode
=
g
;
c
.
isLastNode
=
h
;
c
.
getParentNode
=
function
(){
return
e
.
getNodeCache
(
a
,
c
.
parentTId
)};
c
.
getPreNode
=
function
(){
return
e
.
getPreNode
(
a
,
c
)};
c
.
getNextNode
=
function
(){
return
e
.
getNextNode
(
a
,
c
)};
c
.
getIndex
=
function
(){
return
e
.
getNodeIndex
(
a
,
c
)};
c
.
getPath
=
function
(){
return
e
.
getNodePath
(
a
,
c
)};
c
.
isAjaxing
=!
1
;
e
.
fixPIdKeyValue
(
a
,
c
)}}],
t
=
[
function
(
a
){
var
b
=
a
.
target
,
c
=
e
.
getSetting
(
a
.
data
.
treeId
),
d
=
""
,
g
=
null
,
h
=
""
,
k
=
""
,
m
=
null
,
i
=
null
,
o
=
null
;
if
(
j
.
eqs
(
a
.
type
,
"
mousedown
"
))
k
=
"
mousedown
"
;
else
if
(
j
.
eqs
(
a
.
type
,
"
mouseup
"
))
k
=
"
mouseup
"
;
else
if
(
j
.
eqs
(
a
.
type
,
"
contextmenu
"
))
k
=
"
contextmenu
"
;
else
if
(
j
.
eqs
(
a
.
type
,
"
click
"
))
if
(
j
.
eqs
(
b
.
tagName
,
"
span
"
)
&&
b
.
getAttribute
(
"
treeNode
"
+
f
.
id
.
SWITCH
)
!==
null
)
d
=
j
.
getNodeMainDom
(
b
).
id
,
h
=
"
switchNode
"
;
else
{
if
(
o
=
j
.
getMDom
(
c
,
b
,[{
tagName
:
"
a
"
,
attrName
:
"
treeNode
"
+
f
.
id
.
A
}]))
d
=
j
.
getNodeMainDom
(
o
).
id
,
h
=
"
clickNode
"
}
else
if
(
j
.
eqs
(
a
.
type
,
"
dblclick
"
)
&&
(
k
=
"
dblclick
"
,
o
=
j
.
getMDom
(
c
,
b
,[{
tagName
:
"
a
"
,
attrName
:
"
treeNode
"
+
f
.
id
.
A
}])))
d
=
j
.
getNodeMainDom
(
o
).
id
,
h
=
"
switchNode
"
;
if
(
k
.
length
>
0
&&
d
.
length
==
0
&&
(
o
=
j
.
getMDom
(
c
,
b
,[{
tagName
:
"
a
"
,
attrName
:
"
treeNode
"
+
f
.
id
.
A
}])))
d
=
j
.
getNodeMainDom
(
o
).
id
;
if
(
d
.
length
>
0
)
switch
(
g
=
e
.
getNodeCache
(
c
,
d
),
h
){
case
"
switchNode
"
:
e
.
nodeIsParent
(
c
,
g
)?
j
.
eqs
(
a
.
type
,
"
click
"
)
||
j
.
eqs
(
a
.
type
,
"
dblclick
"
)
&&
j
.
apply
(
c
.
view
.
dblClickExpand
,[
c
.
treeId
,
g
],
c
.
view
.
dblClickExpand
)?
m
=
H
:
h
=
""
:
h
=
""
;
break
;
case
"
clickNode
"
:
m
=
I
}
switch
(
k
){
case
"
mousedown
"
:
i
=
J
;
break
;
case
"
mouseup
"
:
i
=
K
;
break
;
case
"
dblclick
"
:
i
=
L
;
break
;
case
"
contextmenu
"
:
i
=
M
}
return
{
stop
:
!
1
,
node
:
g
,
nodeEventType
:
h
,
nodeEventCallback
:
m
,
treeEventType
:
k
,
treeEventCallback
:
i
}}],
B
=
[
function
(
a
){
var
b
=
e
.
getRoot
(
a
);
b
||
(
b
=
{},
e
.
setRoot
(
a
,
b
));
e
.
nodeChildren
(
a
,
b
,[]);
b
.
expandTriggerFlag
=!
1
;
b
.
curSelectedList
=
[];
b
.
noSelection
=
!
0
;
b
.
createdNodes
=
[];
b
.
zId
=
0
;
b
.
_ver
=
(
new
Date
).
getTime
()}],
C
=
[],
D
=
[],
E
=
[],
F
=
[],
G
=
[],
e
=
{
addNodeCache
:
function
(
a
,
b
){
e
.
getCache
(
a
).
nodes
[
e
.
getNodeCacheId
(
b
.
tId
)]
=
b
},
getNodeCacheId
:
function
(
a
){
return
a
.
substring
(
a
.
lastIndexOf
(
"
_
"
)
+
1
)},
addAfterA
:
function
(
a
){
D
.
push
(
a
)},
addBeforeA
:
function
(
a
){
C
.
push
(
a
)},
addInnerAfterA
:
function
(
a
){
F
.
push
(
a
)},
addInnerBeforeA
:
function
(
a
){
E
.
push
(
a
)},
addInitBind
:
function
(
a
){
x
.
push
(
a
)},
addInitUnBind
:
function
(
a
){
y
.
push
(
a
)},
addInitCache
:
function
(
a
){
z
.
push
(
a
)},
addInitNode
:
function
(
a
){
A
.
push
(
a
)},
addInitProxy
:
function
(
a
,
b
){
b
?
t
.
splice
(
0
,
0
,
a
):
t
.
push
(
a
)},
addInitRoot
:
function
(
a
){
B
.
push
(
a
)},
addNodesData
:
function
(
a
,
b
,
c
,
d
){
var
g
=
e
.
nodeChildren
(
a
,
b
);
g
?
c
>=
g
.
length
&&
(
c
=-
1
):(
g
=
e
.
nodeChildren
(
a
,
b
,[]),
c
=-
1
);
if
(
g
.
length
>
0
&&
c
===
0
)
g
[
0
].
isFirstNode
=!
1
,
i
.
setNodeLineIcos
(
a
,
g
[
0
]);
else
if
(
g
.
length
>
0
&&
c
<
0
)
g
[
g
.
length
-
1
].
isLastNode
=!
1
,
i
.
setNodeLineIcos
(
a
,
g
[
g
.
length
-
1
]);
e
.
nodeIsParent
(
a
,
b
,
!
0
);
c
<
0
?
e
.
nodeChildren
(
a
,
b
,
g
.
concat
(
d
)):(
a
=
[
c
,
0
].
concat
(
d
),
g
.
splice
.
apply
(
g
,
a
))},
addSelectedNode
:
function
(
a
,
b
){
var
c
=
e
.
getRoot
(
a
);
e
.
isSelectedNode
(
a
,
b
)
||
c
.
curSelectedList
.
push
(
b
)},
addCreatedNode
:
function
(
a
,
b
){(
a
.
callback
.
onNodeCreated
||
a
.
view
.
addDiyDom
)
&&
e
.
getRoot
(
a
).
createdNodes
.
push
(
b
)},
addZTreeTools
:
function
(
a
){
G
.
push
(
a
)},
exSetting
:
function
(
a
){
q
.
extend
(
!
0
,
N
,
a
)},
fixPIdKeyValue
:
function
(
a
,
b
){
a
.
data
.
simpleData
.
enable
&&
(
b
[
a
.
data
.
simpleData
.
pIdKey
]
=
b
.
parentTId
?
b
.
getParentNode
()[
a
.
data
.
simpleData
.
idKey
]:
a
.
data
.
simpleData
.
rootPId
)},
getAfterA
:
function
(
a
,
b
,
c
){
for
(
var
d
=
0
,
e
=
D
.
length
;
d
<
e
;
d
++
)
D
[
d
].
apply
(
this
,
arguments
)},
getBeforeA
:
function
(
a
,
b
,
c
){
for
(
var
d
=
0
,
e
=
C
.
length
;
d
<
e
;
d
++
)
C
[
d
].
apply
(
this
,
arguments
)},
getInnerAfterA
:
function
(
a
,
b
,
c
){
for
(
var
d
=
0
,
e
=
F
.
length
;
d
<
e
;
d
++
)
F
[
d
].
apply
(
this
,
arguments
)},
getInnerBeforeA
:
function
(
a
,
b
,
c
){
for
(
var
d
=
0
,
e
=
E
.
length
;
d
<
e
;
d
++
)
E
[
d
].
apply
(
this
,
arguments
)},
getCache
:
function
(
a
){
return
w
[
a
.
treeId
]},
getNodeIndex
:
function
(
a
,
b
){
if
(
!
b
)
return
null
;
for
(
var
c
=
b
.
parentTId
?
b
.
getParentNode
():
e
.
getRoot
(
a
),
c
=
e
.
nodeChildren
(
a
,
c
),
d
=
0
,
g
=
c
.
length
-
1
;
d
<=
g
;
d
++
)
if
(
c
[
d
]
===
b
)
return
d
;
return
-
1
},
getNextNode
:
function
(
a
,
b
){
if
(
!
b
)
return
null
;
for
(
var
c
=
b
.
parentTId
?
b
.
getParentNode
():
e
.
getRoot
(
a
),
c
=
e
.
nodeChildren
(
a
,
c
),
d
=
0
,
g
=
c
.
length
-
1
;
d
<=
g
;
d
++
)
if
(
c
[
d
]
===
b
)
return
d
==
g
?
null
:
c
[
d
+
1
];
return
null
},
getNodeByParam
:
function
(
a
,
b
,
c
,
d
){
if
(
!
b
||!
c
)
return
null
;
for
(
var
g
=
0
,
h
=
b
.
length
;
g
<
h
;
g
++
){
var
k
=
b
[
g
];
if
(
k
[
c
]
==
d
)
return
b
[
g
];
k
=
e
.
nodeChildren
(
a
,
k
);
if
(
k
=
e
.
getNodeByParam
(
a
,
k
,
c
,
d
))
return
k
}
return
null
},
getNodeCache
:
function
(
a
,
b
){
if
(
!
b
)
return
null
;
var
c
=
w
[
a
.
treeId
].
nodes
[
e
.
getNodeCacheId
(
b
)];
return
c
?
c
:
null
},
getNodePath
:
function
(
a
,
b
){
if
(
!
b
)
return
null
;
var
c
;
(
c
=
b
.
parentTId
?
b
.
getParentNode
().
getPath
():[])
&&
c
.
push
(
b
);
return
c
},
getNodes
:
function
(
a
){
return
e
.
nodeChildren
(
a
,
e
.
getRoot
(
a
))},
getNodesByParam
:
function
(
a
,
b
,
c
,
d
){
if
(
!
b
||!
c
)
return
[];
for
(
var
g
=
[],
h
=
0
,
k
=
b
.
length
;
h
<
k
;
h
++
){
var
m
=
b
[
h
];
m
[
c
]
==
d
&&
g
.
push
(
m
);
m
=
e
.
nodeChildren
(
a
,
m
);
g
=
g
.
concat
(
e
.
getNodesByParam
(
a
,
m
,
c
,
d
))}
return
g
},
getNodesByParamFuzzy
:
function
(
a
,
b
,
c
,
d
){
if
(
!
b
||!
c
)
return
[];
for
(
var
g
=
[],
d
=
d
.
toLowerCase
(),
h
=
0
,
k
=
b
.
length
;
h
<
k
;
h
++
){
var
m
=
b
[
h
];
typeof
m
[
c
]
==
"
string
"
&&
b
[
h
][
c
].
toLowerCase
().
indexOf
(
d
)
>-
1
&&
g
.
push
(
m
);
m
=
e
.
nodeChildren
(
a
,
m
);
g
=
g
.
concat
(
e
.
getNodesByParamFuzzy
(
a
,
m
,
c
,
d
))}
return
g
},
getNodesByFilter
:
function
(
a
,
b
,
c
,
d
,
g
){
if
(
!
b
)
return
d
?
null
:[];
for
(
var
h
=
d
?
null
:[],
k
=
0
,
m
=
b
.
length
;
k
<
m
;
k
++
){
var
f
=
b
[
k
];
if
(
j
.
apply
(
c
,[
f
,
g
],
!
1
)){
if
(
d
)
return
f
;
h
.
push
(
f
)}
f
=
e
.
nodeChildren
(
a
,
f
);
f
=
e
.
getNodesByFilter
(
a
,
f
,
c
,
d
,
g
);
if
(
d
&&
f
)
return
f
;
h
=
d
?
f
:
h
.
concat
(
f
)}
return
h
},
getPreNode
:
function
(
a
,
b
){
if
(
!
b
)
return
null
;
for
(
var
c
=
b
.
parentTId
?
b
.
getParentNode
():
e
.
getRoot
(
a
),
c
=
e
.
nodeChildren
(
a
,
c
),
d
=
0
,
g
=
c
.
length
;
d
<
g
;
d
++
)
if
(
c
[
d
]
===
b
)
return
d
==
0
?
null
:
c
[
d
-
1
];
return
null
},
getRoot
:
function
(
a
){
return
a
?
v
[
a
.
treeId
]:
null
},
getRoots
:
function
(){
return
v
},
getSetting
:
function
(
a
){
return
s
[
a
]},
getSettings
:
function
(){
return
s
},
getZTreeTools
:
function
(
a
){
return
(
a
=
this
.
getRoot
(
this
.
getSetting
(
a
)))?
a
.
treeTools
:
null
},
initCache
:
function
(
a
){
for
(
var
b
=
0
,
c
=
z
.
length
;
b
<
c
;
b
++
)
z
[
b
].
apply
(
this
,
arguments
)},
initNode
:
function
(
a
,
b
,
c
,
d
,
e
,
h
){
for
(
var
k
=
0
,
f
=
A
.
length
;
k
<
f
;
k
++
)
A
[
k
].
apply
(
this
,
arguments
)},
initRoot
:
function
(
a
){
for
(
var
b
=
0
,
c
=
B
.
length
;
b
<
c
;
b
++
)
B
[
b
].
apply
(
this
,
arguments
)},
isSelectedNode
:
function
(
a
,
b
){
for
(
var
c
=
e
.
getRoot
(
a
),
d
=
0
,
g
=
c
.
curSelectedList
.
length
;
d
<
g
;
d
++
)
if
(
b
===
c
.
curSelectedList
[
d
])
return
!
0
;
return
!
1
},
nodeChildren
:
function
(
a
,
b
,
c
){
if
(
!
b
)
return
null
;
a
=
a
.
data
.
key
.
children
;
typeof
c
!==
"
undefined
"
&&
(
b
[
a
]
=
c
);
return
b
[
a
]},
nodeIsParent
:
function
(
a
,
b
,
c
){
if
(
!
b
)
return
!
1
;
a
=
a
.
data
.
key
.
isParent
;
typeof
c
!==
"
undefined
"
&&
(
typeof
c
===
"
string
"
&&
(
c
=
j
.
eqs
(
checked
,
"
true
"
)),
b
[
a
]
=!!
c
);
return
b
[
a
]},
nodeName
:
function
(
a
,
b
,
c
){
a
=
a
.
data
.
key
.
name
;
typeof
c
!==
"
undefined
"
&&
(
b
[
a
]
=
c
);
return
""
+
b
[
a
]},
nodeTitle
:
function
(
a
,
b
){
return
""
+
b
[
a
.
data
.
key
.
title
===
""
?
a
.
data
.
key
.
name
:
a
.
data
.
key
.
title
]},
removeNodeCache
:
function
(
a
,
b
){
var
c
=
e
.
nodeChildren
(
a
,
b
);
if
(
c
)
for
(
var
d
=
0
,
g
=
c
.
length
;
d
<
g
;
d
++
)
e
.
removeNodeCache
(
a
,
c
[
d
]);
e
.
getCache
(
a
).
nodes
[
e
.
getNodeCacheId
(
b
.
tId
)]
=
null
},
removeSelectedNode
:
function
(
a
,
b
){
for
(
var
c
=
e
.
getRoot
(
a
),
d
=
0
,
g
=
c
.
curSelectedList
.
length
;
d
<
g
;
d
++
)
if
(
b
===
c
.
curSelectedList
[
d
]
||!
e
.
getNodeCache
(
a
,
c
.
curSelectedList
[
d
].
tId
))
c
.
curSelectedList
.
splice
(
d
,
1
),
a
.
treeObj
.
trigger
(
f
.
event
.
UNSELECTED
,[
a
.
treeId
,
b
]),
d
--
,
g
--
},
setCache
:
function
(
a
,
b
){
w
[
a
.
treeId
]
=
b
},
setRoot
:
function
(
a
,
b
){
v
[
a
.
treeId
]
=
b
},
setZTreeTools
:
function
(
a
,
b
){
for
(
var
c
=
0
,
d
=
G
.
length
;
c
<
d
;
c
++
)
G
[
c
].
apply
(
this
,
arguments
)},
transformToArrayFormat
:
function
(
a
,
b
){
function
c
(
b
){
d
.
push
(
b
);(
b
=
e
.
nodeChildren
(
a
,
b
))
&&
(
d
=
d
.
concat
(
e
.
transformToArrayFormat
(
a
,
b
)))}
if
(
!
b
)
return
[];
var
d
=
[];
if
(
j
.
isArray
(
b
))
for
(
var
g
=
0
,
h
=
b
.
length
;
g
<
h
;
g
++
)
c
(
b
[
g
]);
else
c
(
b
);
return
d
},
transformTozTreeFormat
:
function
(
a
,
b
){
var
c
,
d
,
g
=
a
.
data
.
simpleData
.
idKey
,
h
=
a
.
data
.
simpleData
.
pIdKey
;
if
(
!
g
||
g
==
""
||!
b
)
return
[];
if
(
j
.
isArray
(
b
)){
var
k
=
[],
f
=
{};
for
(
c
=
0
,
d
=
b
.
length
;
c
<
d
;
c
++
)
f
[
b
[
c
][
g
]]
=
b
[
c
];
for
(
c
=
0
,
d
=
b
.
length
;
c
<
d
;
c
++
){
var
i
=
f
[
b
[
c
][
h
]];
if
(
i
&&
b
[
c
][
g
]
!=
b
[
c
][
h
]){
var
o
=
e
.
nodeChildren
(
a
,
i
);
o
||
(
o
=
e
.
nodeChildren
(
a
,
i
,[]));
o
.
push
(
b
[
c
])}
else
k
.
push
(
b
[
c
])}
return
k
}
else
return
[
b
]}},
n
=
{
bindEvent
:
function
(
a
){
for
(
var
b
=
0
,
c
=
x
.
length
;
b
<
c
;
b
++
)
x
[
b
].
apply
(
this
,
arguments
)},
unbindEvent
:
function
(
a
){
for
(
var
b
=
0
,
c
=
y
.
length
;
b
<
c
;
b
++
)
y
[
b
].
apply
(
this
,
arguments
)},
bindTree
:
function
(
a
){
var
b
=
{
treeId
:
a
.
treeId
},
c
=
a
.
treeObj
;
a
.
view
.
txtSelectedEnable
||
c
.
bind
(
"
selectstart
"
,
u
).
css
({
"
-moz-user-select
"
:
"
-moz-none
"
});
c
.
bind
(
"
click
"
,
b
,
n
.
proxy
);
c
.
bind
(
"
dblclick
"
,
b
,
n
.
proxy
);
c
.
bind
(
"
mouseover
"
,
b
,
n
.
proxy
);
c
.
bind
(
"
mouseout
"
,
b
,
n
.
proxy
);
c
.
bind
(
"
mousedown
"
,
b
,
n
.
proxy
);
c
.
bind
(
"
mouseup
"
,
b
,
n
.
proxy
);
c
.
bind
(
"
contextmenu
"
,
b
,
n
.
proxy
)},
unbindTree
:
function
(
a
){
a
.
treeObj
.
unbind
(
"
selectstart
"
,
u
).
unbind
(
"
click
"
,
n
.
proxy
).
unbind
(
"
dblclick
"
,
n
.
proxy
).
unbind
(
"
mouseover
"
,
n
.
proxy
).
unbind
(
"
mouseout
"
,
n
.
proxy
).
unbind
(
"
mousedown
"
,
n
.
proxy
).
unbind
(
"
mouseup
"
,
n
.
proxy
).
unbind
(
"
contextmenu
"
,
n
.
proxy
)},
doProxy
:
function
(
a
){
for
(
var
b
=
[],
c
=
0
,
d
=
t
.
length
;
c
<
d
;
c
++
){
var
e
=
t
[
c
].
apply
(
this
,
arguments
);
b
.
push
(
e
);
if
(
e
.
stop
)
break
}
return
b
},
proxy
:
function
(
a
){
var
b
=
e
.
getSetting
(
a
.
data
.
treeId
);
if
(
!
j
.
uCanDo
(
b
,
a
))
return
!
0
;
for
(
var
b
=
n
.
doProxy
(
a
),
c
=!
0
,
d
=
0
,
g
=
b
.
length
;
d
<
g
;
d
++
){
var
h
=
b
[
d
];
h
.
nodeEventCallback
&&
(
c
=
h
.
nodeEventCallback
.
apply
(
h
,[
a
,
h
.
node
])
&&
c
);
h
.
treeEventCallback
&&
(
c
=
h
.
treeEventCallback
.
apply
(
h
,[
a
,
h
.
node
])
&&
c
)}
return
c
}};
H
=
function
(
a
,
b
){
var
c
=
e
.
getSetting
(
a
.
data
.
treeId
);
if
(
b
.
open
){
if
(
j
.
apply
(
c
.
callback
.
beforeCollapse
,[
c
.
treeId
,
b
],
!
0
)
==!
1
)
return
!
0
}
else
if
(
j
.
apply
(
c
.
callback
.
beforeExpand
,[
c
.
treeId
,
b
],
!
0
)
==!
1
)
return
!
0
;
e
.
getRoot
(
c
).
expandTriggerFlag
=!
0
;
i
.
switchNode
(
c
,
b
);
return
!
0
};
I
=
function
(
a
,
b
){
var
c
=
e
.
getSetting
(
a
.
data
.
treeId
),
d
=
c
.
view
.
autoCancelSelected
&&
(
a
.
ctrlKey
||
a
.
metaKey
)
&&
e
.
isSelectedNode
(
c
,
b
)?
0
:
c
.
view
.
autoCancelSelected
&&
(
a
.
ctrlKey
||
a
.
metaKey
)
&&
c
.
view
.
selectedMulti
?
2
:
1
;
if
(
j
.
apply
(
c
.
callback
.
beforeClick
,[
c
.
treeId
,
b
,
d
],
!
0
)
==!
1
)
return
!
0
;
d
===
0
?
i
.
cancelPreSelectedNode
(
c
,
b
):
i
.
selectNode
(
c
,
b
,
d
===
2
);
c
.
treeObj
.
trigger
(
f
.
event
.
CLICK
,[
a
,
c
.
treeId
,
b
,
d
]);
return
!
0
};
J
=
function
(
a
,
b
){
var
c
=
e
.
getSetting
(
a
.
data
.
treeId
);
j
.
apply
(
c
.
callback
.
beforeMouseDown
,[
c
.
treeId
,
b
],
!
0
)
&&
j
.
apply
(
c
.
callback
.
onMouseDown
,[
a
,
c
.
treeId
,
b
]);
return
!
0
};
K
=
function
(
a
,
b
){
var
c
=
e
.
getSetting
(
a
.
data
.
treeId
);
j
.
apply
(
c
.
callback
.
beforeMouseUp
,[
c
.
treeId
,
b
],
!
0
)
&&
j
.
apply
(
c
.
callback
.
onMouseUp
,[
a
,
c
.
treeId
,
b
]);
return
!
0
};
L
=
function
(
a
,
b
){
var
c
=
e
.
getSetting
(
a
.
data
.
treeId
);
j
.
apply
(
c
.
callback
.
beforeDblClick
,[
c
.
treeId
,
b
],
!
0
)
&&
j
.
apply
(
c
.
callback
.
onDblClick
,[
a
,
c
.
treeId
,
b
]);
return
!
0
};
M
=
function
(
a
,
b
){
var
c
=
e
.
getSetting
(
a
.
data
.
treeId
);
j
.
apply
(
c
.
callback
.
beforeRightClick
,[
c
.
treeId
,
b
],
!
0
)
&&
j
.
apply
(
c
.
callback
.
onRightClick
,[
a
,
c
.
treeId
,
b
]);
return
typeof
c
.
callback
.
onRightClick
!=
"
function
"
};
u
=
function
(
a
){
a
=
a
.
originalEvent
.
srcElement
.
nodeName
.
toLowerCase
();
return
a
===
"
input
"
||
a
===
"
textarea
"
};
var
j
=
{
apply
:
function
(
a
,
b
,
c
){
return
typeof
a
==
"
function
"
?
a
.
apply
(
O
,
b
?
b
:[]):
c
},
canAsync
:
function
(
a
,
b
){
var
c
=
e
.
nodeChildren
(
a
,
b
),
d
=
e
.
nodeIsParent
(
a
,
b
);
return
a
.
async
.
enable
&&
b
&&
d
&&!
(
b
.
zAsync
||
c
&&
c
.
length
>
0
)},
clone
:
function
(
a
){
if
(
a
===
null
)
return
null
;
var
b
=
j
.
isArray
(
a
)?[]:{},
c
;
for
(
c
in
a
)
b
[
c
]
=
a
[
c
]
instanceof
Date
?
new
Date
(
a
[
c
].
getTime
()):
typeof
a
[
c
]
===
"
object
"
?
j
.
clone
(
a
[
c
]):
a
[
c
];
return
b
},
eqs
:
function
(
a
,
b
){
return
a
.
toLowerCase
()
===
b
.
toLowerCase
()},
isArray
:
function
(
a
){
return
Object
.
prototype
.
toString
.
apply
(
a
)
===
"
[object Array]
"
},
isElement
:
function
(
a
){
return
typeof
HTMLElement
===
"
object
"
?
a
instanceof
HTMLElement
:
a
&&
typeof
a
===
"
object
"
&&
a
!==
null
&&
a
.
nodeType
===
1
&&
typeof
a
.
nodeName
===
"
string
"
},
$
:
function
(
a
,
b
,
c
){
b
&&
typeof
b
!=
"
string
"
&&
(
c
=
b
,
b
=
""
);
return
typeof
a
==
"
string
"
?
q
(
a
,
c
?
c
.
treeObj
.
get
(
0
).
ownerDocument
:
null
):
q
(
"
#
"
+
a
.
tId
+
b
,
c
?
c
.
treeObj
:
null
)},
getMDom
:
function
(
a
,
b
,
c
){
if
(
!
b
)
return
null
;
for
(;
b
&&
b
.
id
!==
a
.
treeId
;){
for
(
var
d
=
0
,
e
=
c
.
length
;
b
.
tagName
&&
d
<
e
;
d
++
)
if
(
j
.
eqs
(
b
.
tagName
,
c
[
d
].
tagName
)
&&
b
.
getAttribute
(
c
[
d
].
attrName
)
!==
null
)
return
b
;
b
=
b
.
parentNode
}
return
null
},
getNodeMainDom
:
function
(
a
){
return
q
(
a
).
parent
(
"
li
"
).
get
(
0
)
||
q
(
a
).
parentsUntil
(
"
li
"
).
parent
().
get
(
0
)},
isChildOrSelf
:
function
(
a
,
b
){
return
q
(
a
).
closest
(
"
#
"
+
b
).
length
>
0
},
uCanDo
:
function
(){
return
!
0
}},
i
=
{
addNodes
:
function
(
a
,
b
,
c
,
d
,
g
){
var
h
=
e
.
nodeIsParent
(
a
,
b
);
if
(
!
a
.
data
.
keep
.
leaf
||!
b
||
h
)
if
(
j
.
isArray
(
d
)
||
(
d
=
[
d
]),
a
.
data
.
simpleData
.
enable
&&
(
d
=
e
.
transformTozTreeFormat
(
a
,
d
)),
b
){
var
h
=
l
(
b
,
f
.
id
.
SWITCH
,
a
),
k
=
l
(
b
,
f
.
id
.
ICON
,
a
),
m
=
l
(
b
,
f
.
id
.
UL
,
a
);
if
(
!
b
.
open
)
i
.
replaceSwitchClass
(
b
,
h
,
f
.
folder
.
CLOSE
),
i
.
replaceIcoClass
(
b
,
k
,
f
.
folder
.
CLOSE
),
b
.
open
=!
1
,
m
.
css
({
display
:
"
none
"
});
e
.
addNodesData
(
a
,
b
,
c
,
d
);
i
.
createNodes
(
a
,
b
.
level
+
1
,
d
,
b
,
c
);
g
||
i
.
expandCollapseParentNode
(
a
,
b
,
!
0
)}
else
e
.
addNodesData
(
a
,
e
.
getRoot
(
a
),
c
,
d
),
i
.
createNodes
(
a
,
0
,
d
,
null
,
c
)},
appendNodes
:
function
(
a
,
b
,
c
,
d
,
g
,
h
,
k
){
if
(
!
c
)
return
[];
var
f
=
[],
j
=
d
?
d
:
e
.
getRoot
(
a
),
j
=
e
.
nodeChildren
(
a
,
j
),
o
,
l
;
if
(
!
j
||
g
>=
j
.
length
-
c
.
length
)
g
=-
1
;
for
(
var
n
=
0
,
Q
=
c
.
length
;
n
<
Q
;
n
++
){
var
p
=
c
[
n
];
h
&&
(
o
=
(
g
===
0
||
j
.
length
==
c
.
length
)
&&
n
==
0
,
l
=
g
<
0
&&
n
==
c
.
length
-
1
,
e
.
initNode
(
a
,
b
,
p
,
d
,
o
,
l
,
k
),
e
.
addNodeCache
(
a
,
p
));
o
=
e
.
nodeIsParent
(
a
,
p
);
l
=
[];
var
q
=
e
.
nodeChildren
(
a
,
p
);
q
&&
q
.
length
>
0
&&
(
l
=
i
.
appendNodes
(
a
,
b
+
1
,
q
,
p
,
-
1
,
h
,
k
&&
p
.
open
));
k
&&
(
i
.
makeDOMNodeMainBefore
(
f
,
a
,
p
),
i
.
makeDOMNodeLine
(
f
,
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
,
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
&&
g
<
h
;
g
++
){
var
r
=
m
[
g
].
split
(
"
=
"
),
o
=
r
;
r
.
length
>
1
&&
(
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
<
h
;
g
+=
2
)
k
[
m
[
g
]]
=
m
[
g
+
1
];
else
for
(
var
n
in
m
)
k
[
n
]
=
m
[
n
];
var
P
=
e
.
getRoot
(
a
).
_ver
;
q
.
ajax
({
contentType
:
a
.
async
.
contentType
,
cache
:
!
1
,
type
:
a
.
async
.
type
,
url
:
j
.
apply
(
a
.
async
.
url
,[
a
.
treeId
,
b
],
a
.
async
.
url
),
data
:
a
.
async
.
contentType
.
indexOf
(
"
application/json
"
)
>-
1
?
JSON
.
stringify
(
k
):
k
,
dataType
:
a
.
async
.
dataType
,
success
:
function
(
h
){
if
(
P
==
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
])}}});
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
&&
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
])},
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
,
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
,
[])},
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
<
l
;
j
++
)
h
[
j
]
&&
i
.
expandCollapseSonNode
(
a
,
h
[
j
],
c
,
k
);
e
.
getRoot
(
a
).
expandTriggerFlag
=
f
;
i
.
expandCollapseNode
(
a
,
b
,
c
,
d
,
g
)},
isSelectedNode
:
function
(
a
,
b
){
if
(
!
b
)
return
!
1
;
var
c
=
e
.
getRoot
(
a
).
curSelectedList
,
d
;
for
(
d
=
c
.
length
-
1
;
d
>=
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
,
"
<
"
).
replace
(
/>/g
,
"
>
"
);
a
.
push
(
"
<span id='
"
,
c
.
tId
,
f
.
id
.
ICON
,
"
' title='' treeNode
"
,
f
.
id
.
ICON
,
"
class='
"
,
i
.
makeNodeIcoClass
(
b
,
c
),
"
' style='
"
,
i
.
makeNodeIcoStyle
(
b
,
c
),
"
'></span><span id='
"
,
c
.
tId
,
f
.
id
.
SPAN
,
"
' class='
"
,
f
.
className
.
NAME
,
"
'>
"
,
d
,
"
</span>
"
)},
makeDOMNodeLine
:
function
(
a
,
b
,
c
){
a
.
push
(
"
<span id='
"
,
c
.
tId
,
f
.
id
.
SWITCH
,
"
' title='' class='
"
,
i
.
makeNodeLineClass
(
b
,
c
),
"
' treeNode
"
,
f
.
id
.
SWITCH
,
"
></span>
"
)},
makeDOMNodeMainAfter
:
function
(
a
){
a
.
push
(
"
</li>
"
)},
makeDOMNodeMainBefore
:
function
(
a
,
b
,
c
){
a
.
push
(
"
<li id='
"
,
c
.
tId
,
"
' class='
"
,
f
.
className
.
LEVEL
,
c
.
level
,
"
' tabindex='0' hidefocus='true' treenode>
"
)},
makeDOMNodeNameAfter
:
function
(
a
){
a
.
push
(
"
</a>
"
)},
makeDOMNodeNameBefore
:
function
(
a
,
b
,
c
){
var
d
=
e
.
nodeTitle
(
b
,
c
),
g
=
i
.
makeNodeUrl
(
b
,
c
),
h
=
i
.
makeNodeFontCss
(
b
,
c
),
k
=
[],
m
;
for
(
m
in
h
)
k
.
push
(
m
,
"
:
"
,
h
[
m
],
"
;
"
);
a
.
push
(
"
<a id='
"
,
c
.
tId
,
f
.
id
.
A
,
"
' class='
"
,
f
.
className
.
LEVEL
,
c
.
level
,
"
' treeNode
"
,
f
.
id
.
A
,
'
onclick="
'
,
c
.
click
||
""
,
'
"
'
,
g
!=
null
&&
g
.
length
>
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
,
"
<
"
).
replace
(
/>/g
,
"
>
"
),
"
'
"
);
a
.
push
(
"
>
"
)},
makeNodeFontCss
:
function
(
a
,
b
){
var
c
=
j
.
apply
(
a
.
view
.
fontCss
,[
a
.
treeId
,
b
],
a
.
view
.
fontCss
);
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
==
!
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
+
"
"
+
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
(
"
<ul id='
"
,
b
.
tId
,
f
.
id
.
UL
,
"
' class='
"
,
f
.
className
.
LEVEL
,
b
.
level
,
"
"
,
i
.
makeUlLineClass
(
a
,
b
),
"
' style='display:
"
,
b
.
open
?
"
block
"
:
"
none
"
,
"
'>
"
);
c
.
push
(
d
);
c
.
push
(
"
</ul>
"
)},
makeUlLineClass
:
function
(
a
,
b
){
return
a
.
view
.
showLine
&&!
b
.
isLastNode
?
f
.
line
.
LINE
:
""
},
removeChildNodes
:
function
(
a
,
b
){
if
(
b
){
var
c
=
e
.
nodeChildren
(
a
,
b
);
if
(
c
){
for
(
var
d
=
0
,
g
=
c
.
length
;
d
<
g
;
d
++
)
e
.
removeNodeCache
(
a
,
c
[
d
]);
e
.
removeSelectedNode
(
a
);
delete
b
[
a
.
data
.
key
.
children
];
a
.
data
.
keep
.
parent
?
l
(
b
,
f
.
id
.
UL
,
a
).
empty
():(
e
.
nodeIsParent
(
a
,
b
,
!
1
),
b
.
open
=!
1
,
c
=
l
(
b
,
f
.
id
.
SWITCH
,
a
),
d
=
l
(
b
,
f
.
id
.
ICON
,
a
),
i
.
replaceSwitchClass
(
b
,
c
,
f
.
folder
.
DOCU
),
i
.
replaceIcoClass
(
b
,
d
,
f
.
folder
.
DOCU
),
l
(
b
,
f
.
id
.
UL
,
a
).
remove
())}}},
scrollIntoView
:
function
(
a
,
b
){
if
(
b
)
if
(
typeof
Element
===
"
undefined
"
){
var
c
=
a
.
treeObj
.
get
(
0
).
getBoundingClientRect
(),
d
=
b
.
getBoundingClientRect
();(
d
.
top
<
c
.
top
||
d
.
bottom
>
c
.
bottom
||
d
.
right
>
c
.
right
||
d
.
left
<
c
.
left
)
&&
b
.
scrollIntoView
()}
else
{
if
(
!
Element
.
prototype
.
scrollIntoViewIfNeeded
)
Element
.
prototype
.
scrollIntoViewIfNeeded
=
function
(
a
){
function
b
(
a
,
c
,
d
,
f
){
return
{
left
:
a
,
top
:
c
,
width
:
d
,
height
:
f
,
right
:
a
+
d
,
bottom
:
c
+
f
,
translate
:
function
(
e
,
g
){
return
b
(
e
+
a
,
g
+
c
,
d
,
f
)},
relativeFromTo
:
function
(
g
,
k
){
var
i
=
a
,
j
=
c
,
g
=
g
.
offsetParent
,
k
=
k
.
offsetParent
;
if
(
g
===
k
)
return
e
;
for
(;
g
;
g
=
g
.
offsetParent
)
i
+=
g
.
offsetLeft
+
g
.
clientLeft
,
j
+=
g
.
offsetTop
+
g
.
clientTop
;
for
(;
k
;
k
=
k
.
offsetParent
)
i
-=
k
.
offsetLeft
+
k
.
clientLeft
,
j
-=
k
.
offsetTop
+
k
.
clientTop
;
return
b
(
i
,
j
,
d
,
f
)}}}
for
(
var
c
,
d
=
this
,
e
=
b
(
this
.
offsetLeft
,
this
.
offsetTop
,
this
.
offsetWidth
,
this
.
offsetHeight
);
j
.
isElement
(
c
=
d
.
parentNode
);){
var
f
=
c
.
offsetLeft
+
c
.
clientLeft
,
i
=
c
.
offsetTop
+
c
.
clientTop
,
e
=
e
.
relativeFromTo
(
d
,
c
).
translate
(
-
f
,
-
i
);
c
.
scrollLeft
=!
1
===
a
||
e
.
left
<=
c
.
scrollLeft
+
c
.
clientWidth
&&
c
.
scrollLeft
<=
e
.
right
-
c
.
clientWidth
+
c
.
clientWidth
?
Math
.
min
(
e
.
left
,
Math
.
max
(
e
.
right
-
c
.
clientWidth
,
c
.
scrollLeft
)):(
e
.
right
-
c
.
clientWidth
+
e
.
left
)
/
2
;
c
.
scrollTop
=
!
1
===
a
||
e
.
top
<=
c
.
scrollTop
+
c
.
clientHeight
&&
c
.
scrollTop
<=
e
.
bottom
-
c
.
clientHeight
+
c
.
clientHeight
?
Math
.
min
(
e
.
top
,
Math
.
max
(
e
.
bottom
-
c
.
clientHeight
,
c
.
scrollTop
)):(
e
.
bottom
-
c
.
clientHeight
+
e
.
top
)
/
2
;
e
=
e
.
translate
(
f
-
c
.
scrollLeft
,
i
-
c
.
scrollTop
);
d
=
c
}};
b
.
scrollIntoViewIfNeeded
()}},
setFirstNode
:
function
(
a
,
b
){
var
c
=
e
.
nodeChildren
(
a
,
b
);
if
(
c
.
length
>
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
?
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
<
k
;
h
++
)
if
(
g
[
h
].
tId
==
b
.
tId
){
g
.
splice
(
h
,
1
);
break
}
i
.
setFirstNode
(
a
,
d
);
i
.
setLastNode
(
a
,
d
);
var
j
,
h
=
g
.
length
;
if
(
!
a
.
data
.
keep
.
parent
&&
h
==
0
)
e
.
nodeIsParent
(
a
,
d
,
!
1
),
d
.
open
=!
1
,
delete
d
[
a
.
data
.
key
.
children
],
h
=
l
(
d
,
f
.
id
.
UL
,
a
),
k
=
l
(
d
,
f
.
id
.
SWITCH
,
a
),
j
=
l
(
d
,
f
.
id
.
ICON
,
a
),
i
.
replaceSwitchClass
(
d
,
k
,
f
.
folder
.
DOCU
),
i
.
replaceIcoClass
(
d
,
j
,
f
.
folder
.
DOCU
),
h
.
css
(
"
display
"
,
"
none
"
);
else
if
(
a
.
view
.
showLine
&&
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
&&
(
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
?
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
"
,
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
))},
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
"
,
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
))?
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
);
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
);
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
,
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
,
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
<
f
;
c
++
)
if
(
b
[
c
]
==
a
)
return
c
;
return
-
1
},
getSelectedNodes
:
function
(){
for
(
var
a
=
[],
b
=
e
.
getRoot
(
d
).
curSelectedList
,
c
=
0
,
f
=
b
.
length
;
c
<
f
;
c
++
)
a
.
push
(
b
[
c
]);
return
a
},
isSelectedNode
:
function
(
a
){
return
e
.
isSelectedNode
(
d
,
a
)},
reAsyncChildNodesPromise
:
function
(
a
,
b
,
c
){
return
new
Promise
(
function
(
d
,
e
){
try
{
g
.
reAsyncChildNodes
(
a
,
b
,
c
,
function
(){
d
(
a
)})}
catch
(
f
){
e
(
f
)}})},
reAsyncChildNodes
:
function
(
a
,
b
,
c
,
g
){
if
(
this
.
setting
.
async
.
enable
){
var
j
=!
a
;
j
&&
(
a
=
e
.
getRoot
(
d
));
if
(
b
==
"
refresh
"
){
for
(
var
b
=
e
.
nodeChildren
(
d
,
a
),
n
=
0
,
q
=
b
?
b
.
length
:
0
;
n
<
q
;
n
++
)
e
.
removeNodeCache
(
d
,
b
[
n
]);
e
.
removeSelectedNode
(
d
);
e
.
nodeChildren
(
d
,
a
,[]);
j
?
this
.
setting
.
treeObj
.
empty
():
l
(
a
,
f
.
id
.
UL
,
d
).
empty
()}
i
.
asyncNode
(
this
.
setting
,
j
?
null
:
a
,
!!
c
,
g
)}},
refresh
:
function
(){
this
.
setting
.
treeObj
.
empty
();
var
a
=
e
.
getRoot
(
d
),
b
=
e
.
nodeChildren
(
d
,
a
);
e
.
initRoot
(
d
);
e
.
nodeChildren
(
d
,
a
,
b
);
e
.
initCache
(
d
);
i
.
createNodes
(
d
,
0
,
e
.
nodeChildren
(
d
,
a
),
null
,
-
1
)},
removeChildNodes
:
function
(
a
){
if
(
!
a
)
return
null
;
var
b
=
e
.
nodeChildren
(
d
,
a
);
i
.
removeChildNodes
(
d
,
a
);
return
b
?
b
:
null
},
removeNode
:
function
(
a
,
b
){
a
&&
(
b
=!!
b
,
b
&&
j
.
apply
(
d
.
callback
.
beforeRemove
,[
d
.
treeId
,
a
],
!
0
)
==!
1
||
(
i
.
removeNode
(
d
,
a
),
b
&&
this
.
setting
.
treeObj
.
trigger
(
f
.
event
.
REMOVE
,[
d
.
treeId
,
a
])))},
selectNode
:
function
(
a
,
b
,
c
){
function
e
(){
if
(
!
c
){
var
b
=
l
(
a
,
d
).
get
(
0
);
i
.
scrollIntoView
(
d
,
b
)}}
if
(
a
&&
j
.
uCanDo
(
d
)){
b
=
d
.
view
.
selectedMulti
&&
b
;
if
(
a
.
parentTId
)
i
.
expandCollapseParentNode
(
d
,
a
.
getParentNode
(),
!
0
,
!
1
,
e
);
else
if
(
!
c
)
try
{
l
(
a
,
d
).
focus
().
blur
()}
catch
(
f
){}
i
.
selectNode
(
d
,
a
,
b
)}},
transformTozTreeNodes
:
function
(
a
){
return
e
.
transformTozTreeFormat
(
d
,
a
)},
transformToArray
:
function
(
a
){
return
e
.
transformToArrayFormat
(
d
,
a
)},
updateNode
:
function
(
a
){
a
&&
l
(
a
,
d
).
get
(
0
)
&&
j
.
uCanDo
(
d
)
&&
(
i
.
setNodeName
(
d
,
a
),
i
.
setNodeTarget
(
d
,
a
),
i
.
setNodeUrl
(
d
,
a
),
i
.
setNodeLineIcos
(
d
,
a
),
i
.
setNodeFontCss
(
d
,
a
))}};
a
.
treeTools
=
g
;
e
.
setZTreeTools
(
d
,
g
);(
c
=
e
.
nodeChildren
(
d
,
a
))
&&
c
.
length
>
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
);
/*
* JQuery zTree excheck v3.5.3
1
* JQuery zTree excheck v3.5.3
2
* http://treejs.cn/
*
* Copyright (c) 2010 Hunter.z
...
...
@@ -85,33 +86,33 @@ a),j.setNodeTarget(d,a),j.setNodeUrl(d,a),j.setNodeLineIcos(d,a),j.setNodeFontCs
* http://www.opensource.org/licenses/mit-license.php
*
* email: hunter.z@263.net
* Date: 201
7-12-28
* Date: 201
8-01-06
*/
(
function
(
m
){
var
p
,
q
,
r
,
o
=
{
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
"
}},
v
=
{
check
:{
enable
:
!
1
,
autoCheckTrigger
:
!
1
,
chkStyle
:
o
.
checkbox
.
STYLE
,
nocheckInherit
:
!
1
,
chkDisabledInherit
:
!
1
,
radioType
:
o
.
radio
.
TYPE_LEVEL
,
chkboxType
:{
Y
:
"
ps
"
,
N
:
"
ps
"
}},
data
:{
key
:{
checked
:
"
checked
"
}},
callback
:{
beforeCheck
:
null
,
onCheck
:
null
}};
p
=
function
(
c
,
a
){
if
(
a
.
chkDisabled
===!
0
)
return
!
1
;
var
b
=
g
.
getSetting
(
c
.
data
.
treeId
),
d
=
b
.
data
.
key
.
checked
;
if
(
k
.
apply
(
b
.
callback
.
beforeCheck
,[
b
.
treeId
,
a
],
!
0
)
==!
1
)
return
!
0
;
a
[
d
]
=!
a
[
d
];
e
.
checkNodeRelation
(
b
,
a
);
d
=
n
(
a
,
j
.
id
.
CHECK
,
b
);
e
.
setChkClass
(
b
,
d
,
a
);
e
.
repairParentChkClassWithSelf
(
b
,
a
);
b
.
treeObj
.
trigger
(
j
.
event
.
CHECK
,[
c
,
b
.
treeId
,
a
]);
return
!
0
};
q
=
function
(
c
,
a
){
if
(
a
.
chkDisabled
===!
0
)
return
!
1
;
var
b
=
g
.
getSetting
(
c
.
data
.
treeId
),
d
=
n
(
a
,
j
.
id
.
CHECK
,
b
);
a
.
check_Focus
=!
0
;
e
.
setChkClass
(
b
,
d
,
a
);
return
!
0
};
r
=
function
(
c
,
a
){
if
(
a
.
chkDisabled
===
!
0
)
return
!
1
;
var
b
=
g
.
getSetting
(
c
.
data
.
treeId
),
d
=
n
(
a
,
j
.
id
.
CHECK
,
b
);
a
.
check_Focus
=!
1
;
e
.
setChkClass
(
b
,
d
,
a
);
return
!
0
};
m
.
extend
(
!
0
,
m
.
fn
.
zTree
.
consts
,
o
);
m
.
extend
(
!
0
,
m
.
fn
.
zTree
.
_z
,{
tools
:{},
view
:{
checkNodeRelation
:
function
(
c
,
a
){
var
b
,
d
,
h
,
i
=
c
.
data
.
key
.
children
,
l
=
c
.
data
.
key
.
checked
;
b
=
j
.
radio
;
if
(
c
.
check
.
chkStyle
==
b
.
STYLE
){
var
f
=
g
.
getRadioCheckedList
(
c
);
if
(
a
[
l
])
if
(
c
.
check
.
radioType
==
b
.
TYPE_ALL
){
for
(
d
=
f
.
length
-
1
;
d
>=
0
;
d
--
)
b
=
f
[
d
],
b
[
l
]
&&
b
!=
a
&&
(
b
[
l
]
=!
1
,
f
.
splice
(
d
,
1
),
e
.
setChkClass
(
c
,
n
(
b
,
j
.
id
.
CHECK
,
c
),
b
),
b
.
parentTId
!=
a
.
parentTId
&&
e
.
repairParentChkClassWithSelf
(
c
,
b
));
f
.
push
(
a
)}
else
{
f
=
a
.
parentTId
?
a
.
getParentNode
():
g
.
getRoot
(
c
);
for
(
d
=
0
,
h
=
f
[
i
].
length
;
d
<
h
;
d
++
)
b
=
f
[
i
][
d
],
b
[
l
]
&&
b
!=
a
&&
(
b
[
l
]
=!
1
,
e
.
setChkClass
(
c
,
n
(
b
,
j
.
id
.
CHECK
,
c
),
b
))}
else
if
(
c
.
check
.
radioType
==
b
.
TYPE_ALL
)
for
(
d
=
0
,
h
=
f
.
length
;
d
<
h
;
d
++
)
if
(
a
==
f
[
d
]){
f
.
splice
(
d
,
1
);
break
}}
else
a
[
l
]
&&
(
!
a
[
i
]
||
a
[
i
].
length
==
0
||
c
.
check
.
chkboxType
.
Y
.
indexOf
(
"
s
"
)
>-
1
)
&&
e
.
setSonNodeCheckBox
(
c
,
a
,
!
0
),
!
a
[
l
]
&&
(
!
a
[
i
]
||
a
[
i
].
length
==
0
||
c
.
check
.
chkboxType
.
N
.
indexOf
(
"
s
"
)
>-
1
)
&&
e
.
setSonNodeCheckBox
(
c
,
a
,
!
1
),
a
[
l
]
&&
c
.
check
.
chkboxType
.
Y
.
indexOf
(
"
p
"
)
>-
1
&&
e
.
setParentNodeCheckBox
(
c
,
a
,
!
0
),
!
a
[
l
]
&&
c
.
check
.
chkboxType
.
N
.
indexOf
(
"
p
"
)
>-
1
&&
e
.
setParentNodeCheckBox
(
c
,
a
,
!
1
)},
makeChkClass
:
function
(
c
,
a
){
var
b
=
c
.
data
.
key
.
checked
,
d
=
j
.
checkbox
,
h
=
j
.
radio
,
i
=
""
,
i
=
a
.
chkDisabled
===!
0
?
d
.
DISABLED
:
a
.
halfCheck
?
d
.
PART
:
c
.
check
.
chkStyle
==
h
.
STYLE
?
a
.
check_Child_State
<
1
?
d
.
FULL
:
d
.
PART
:
a
[
b
]?
a
.
check_Child_State
===
2
||
a
.
check_Child_State
===-
1
?
d
.
FULL
:
d
.
PART
:
a
.
check_Child_State
<
1
?
d
.
FULL
:
d
.
PART
,
b
=
c
.
check
.
chkStyle
+
"
_
"
+
(
a
[
b
]?
d
.
TRUE
:
d
.
FALSE
)
+
"
_
"
+
i
,
b
=
a
.
check_Focus
&&
a
.
chkDisabled
!==!
0
?
b
+
"
_
"
+
d
.
FOCUS
:
b
;
return
j
.
className
.
BUTTON
+
"
"
+
d
.
DEFAULT
+
"
"
+
b
},
repairAllChk
:
function
(
c
,
a
){
if
(
c
.
check
.
enable
&&
c
.
check
.
chkStyle
===
j
.
checkbox
.
STYLE
)
for
(
var
b
=
c
.
data
.
key
.
checked
,
d
=
c
.
data
.
key
.
children
,
h
=
g
.
getRoot
(
c
),
i
=
0
,
l
=
h
[
d
].
length
;
i
<
l
;
i
++
){
var
f
=
h
[
d
][
i
];
f
.
nocheck
!==!
0
&&
f
.
chkDisabled
!==!
0
&&
(
f
[
b
]
=
a
);
e
.
setSonNodeCheckBox
(
c
,
f
,
a
)}},
repairChkClass
:
function
(
c
,
a
){
if
(
a
&&
(
g
.
makeChkFlag
(
c
,
a
),
a
.
nocheck
!==!
0
)){
var
b
=
n
(
a
,
j
.
id
.
CHECK
,
c
);
e
.
setChkClass
(
c
,
b
,
a
)}},
repairParentChkClass
:
function
(
c
,
a
){
if
(
a
&&
a
.
parentTId
){
var
b
=
a
.
getParentNode
();
e
.
repairChkClass
(
c
,
b
);
e
.
repairParentChkClass
(
c
,
b
)}},
repairParentChkClassWithSelf
:
function
(
c
,
a
){
if
(
a
){
var
b
=
c
.
data
.
key
.
children
;
a
[
b
]
&&
a
[
b
].
length
>
0
?
e
.
repairParentChkClass
(
c
,
a
[
b
][
0
]):
e
.
repairParentChkClass
(
c
,
a
)}},
repairSonChkDisabled
:
function
(
c
,
a
,
b
,
d
){
if
(
a
){
var
h
=
c
.
data
.
key
.
children
;
if
(
a
.
chkDisabled
!=
b
)
a
.
chkDisabled
=
b
;
e
.
repairChkClass
(
c
,
a
);
if
(
a
[
h
]
&&
d
)
for
(
var
i
=
0
,
l
=
a
[
h
].
length
;
i
<
l
;
i
++
)
e
.
repairSonChkDisabled
(
c
,
a
[
h
][
i
],
b
,
d
)}},
repairParentChkDisabled
:
function
(
c
,
a
,
b
,
d
){
if
(
a
){
if
(
a
.
chkDisabled
!=
b
&&
d
)
a
.
chkDisabled
=
b
;
e
.
repairChkClass
(
c
,
a
);
e
.
repairParentChkDisabled
(
c
,
a
.
getParentNode
(),
b
,
d
)}},
setChkClass
:
function
(
c
,
a
,
b
){
a
&&
(
b
.
nocheck
===!
0
?
a
.
hide
():
a
.
show
(),
a
.
attr
(
"
class
"
,
e
.
makeChkClass
(
c
,
b
)))},
setParentNodeCheckBox
:
function
(
c
,
a
,
b
,
d
){
var
h
=
c
.
data
.
key
.
children
,
i
=
c
.
data
.
key
.
checked
,
l
=
n
(
a
,
j
.
id
.
CHECK
,
c
);
d
||
(
d
=
a
);
g
.
makeChkFlag
(
c
,
a
);
a
.
nocheck
!==!
0
&&
a
.
chkDisabled
!==!
0
&&
(
a
[
i
]
=
b
,
e
.
setChkClass
(
c
,
l
,
a
),
c
.
check
.
autoCheckTrigger
&&
a
!=
d
&&
c
.
treeObj
.
trigger
(
j
.
event
.
CHECK
,[
null
,
c
.
treeId
,
a
]));
if
(
a
.
parentTId
){
l
=!
0
;
if
(
!
b
)
for
(
var
h
=
a
.
getParentNode
()[
h
],
f
=
0
,
k
=
h
.
length
;
f
<
k
;
f
++
)
if
(
h
[
f
].
nocheck
!==!
0
&&
h
[
f
].
chkDisabled
!==!
0
&&
h
[
f
][
i
]
||
(
h
[
f
].
nocheck
===!
0
||
h
[
f
].
chkDisabled
===!
0
)
&&
h
[
f
].
check_Child_State
>
0
){
l
=!
1
;
break
}
l
&&
e
.
setParentNodeCheckBox
(
c
,
a
.
getParentNode
(),
b
,
d
)}},
setSonNodeCheckBox
:
function
(
c
,
a
,
b
,
d
){
if
(
a
){
var
h
=
c
.
data
.
key
.
children
,
i
=
c
.
data
.
key
.
checked
,
l
=
n
(
a
,
j
.
id
.
CHECK
,
c
);
d
||
(
d
=
a
);
var
f
=!
1
;
if
(
a
[
h
])
for
(
var
k
=
0
,
m
=
a
[
h
].
length
;
k
<
m
;
k
++
){
var
o
=
a
[
h
][
k
];
e
.
setSonNodeCheckBox
(
c
,
o
,
b
,
d
);
o
.
chkDisabled
===
!
0
&&
(
f
=!
0
)}
if
(
a
!=
g
.
getRoot
(
c
)
&&
a
.
chkDisabled
!==!
0
){
f
&&
a
.
nocheck
!==!
0
&&
g
.
makeChkFlag
(
c
,
a
);
if
(
a
.
nocheck
!==!
0
&&
a
.
chkDisabled
!==!
0
){
if
(
a
[
i
]
=
b
,
!
f
)
a
.
check_Child_State
=
a
[
h
]
&&
a
[
h
].
length
>
0
?
b
?
2
:
0
:
-
1
}
else
a
.
check_Child_State
=-
1
;
e
.
setChkClass
(
c
,
l
,
a
);
c
.
check
.
autoCheckTrigger
&&
a
!=
d
&&
a
.
nocheck
!==!
0
&&
a
.
chkDisabled
!==!
0
&&
c
.
treeObj
.
trigger
(
j
.
event
.
CHECK
,[
null
,
c
.
treeId
,
a
])}}}},
event
:{},
data
:{
getRadioCheckedList
:
function
(
c
){
for
(
var
a
=
g
.
getRoot
(
c
).
radioCheckedList
,
b
=
0
,
d
=
a
.
length
;
b
<
d
;
b
++
)
g
.
getNodeCache
(
c
,
a
[
b
].
tId
)
||
(
a
.
splice
(
b
,
1
),
b
--
,
d
--
);
return
a
},
getCheckStatus
:
function
(
c
,
a
){
if
(
!
c
.
check
.
enable
||
a
.
nocheck
||
a
.
chkDisabled
)
return
null
;
var
b
=
c
.
data
.
key
.
checked
;
return
{
checked
:
a
[
b
],
half
:
a
.
halfCheck
?
a
.
halfCheck
:
c
.
check
.
chkStyle
==
j
.
radio
.
STYLE
?
a
.
check_Child_State
===
2
:
a
[
b
]?
a
.
check_Child_State
>-
1
&&
a
.
check_Child_State
<
2
:
a
.
check_Child_State
>
0
}},
getTreeCheckedNodes
:
function
(
c
,
a
,
b
,
d
){
if
(
!
a
)
return
[];
for
(
var
h
=
c
.
data
.
key
.
children
,
i
=
c
.
data
.
key
.
checked
,
e
=
b
&&
c
.
check
.
chkStyle
==
j
.
radio
.
STYLE
&&
c
.
check
.
radioType
==
j
.
radio
.
TYPE_ALL
,
d
=!
d
?[]:
d
,
f
=
0
,
k
=
a
.
length
;
f
<
k
;
f
++
){
if
(
a
[
f
].
nocheck
!==!
0
&&
a
[
f
].
chkDisabled
!==!
0
&&
a
[
f
][
i
]
==
b
&&
(
d
.
push
(
a
[
f
]),
e
))
break
;
g
.
getTreeCheckedNodes
(
c
,
a
[
f
][
h
],
b
,
d
);
if
(
e
&&
d
.
length
>
0
)
break
}
return
d
},
getTreeChangeCheckedNodes
:
function
(
c
,
a
,
b
){
if
(
!
a
)
return
[];
for
(
var
d
=
c
.
data
.
key
.
children
,
h
=
c
.
data
.
key
.
checked
,
b
=!
b
?[]:
b
,
i
=
0
,
e
=
a
.
length
;
i
<
e
;
i
++
)
a
[
i
].
nocheck
!==!
0
&&
a
[
i
].
chkDisabled
!==!
0
&&
a
[
i
][
h
]
!=
a
[
i
].
checkedOld
&&
b
.
push
(
a
[
i
]),
g
.
getTreeChangeCheckedNodes
(
c
,
a
[
i
][
d
],
b
);
return
b
},
makeChkFlag
:
function
(
c
,
a
){
if
(
a
){
var
b
=
c
.
data
.
key
.
children
,
d
=
c
.
data
.
key
.
checked
,
h
=-
1
;
if
(
a
[
b
])
for
(
var
i
=
0
,
e
=
a
[
b
].
length
;
i
<
e
;
i
++
){
var
f
=
a
[
b
][
i
],
g
=-
1
;
if
(
c
.
check
.
chkStyle
==
j
.
radio
.
STYLE
)
if
(
g
=
f
.
nocheck
===!
0
||
f
.
chkDisabled
===!
0
?
f
.
check_Child_State
:
f
.
halfCheck
===!
0
?
2
:
f
[
d
]?
2
:
f
.
check_Child_State
>
0
?
2
:
0
,
g
==
2
){
h
=
2
;
break
}
else
g
==
0
&&
(
h
=
0
);
else
if
(
c
.
check
.
chkStyle
==
j
.
checkbox
.
STYLE
)
if
(
g
=
f
.
nocheck
===!
0
||
f
.
chkDisabled
===!
0
?
f
.
check_Child_State
:
f
.
halfCheck
===!
0
?
1
:
f
[
d
]?
f
.
check_Child_State
===-
1
||
f
.
check_Child_State
===
2
?
2
:
1
:
f
.
check_Child_State
>
0
?
1
:
0
,
g
===
1
){
h
=
1
;
break
}
else
if
(
g
=
==
2
&&
h
>-
1
&&
i
>
0
&&
g
!==
h
){
h
=
1
;
break
}
else
if
(
h
===
2
&&
g
>-
1
&&
g
<
2
){
h
=
1
;
break
}
else
g
>-
1
&&
(
h
=
g
)}
a
.
check_Child_State
=
h
}}}});
var
m
=
m
.
fn
.
zTree
,
k
=
m
.
_z
.
tools
,
j
=
m
.
consts
,
e
=
m
.
_z
.
view
,
g
=
m
.
_z
.
data
,
n
=
k
.
$
;
g
.
exSetting
(
v
);
g
.
addInitBind
(
function
(
c
){
c
.
treeObj
.
bind
(
j
.
event
.
CHECK
,
function
(
a
,
b
,
d
,
h
){
a
.
srcEvent
=
b
;
k
.
apply
(
c
.
callback
.
onCheck
,[
a
,
d
,
h
])})});
g
.
addInitUnBind
(
function
(
c
){
c
.
treeObj
.
unbind
(
j
.
event
.
CHECK
)});
g
.
addInitCache
(
function
(){});
g
.
addInitNode
(
function
(
c
,
a
,
b
,
d
){
if
(
b
){
a
=
c
.
data
.
key
.
checked
;
typeof
b
[
a
]
==
"
string
"
&&
(
b
[
a
]
=
k
.
eqs
(
b
[
a
],
"
true
"
));
b
[
a
]
=!!
b
[
a
];
b
.
checkedOld
=
b
[
a
];
if
(
typeof
b
.
nocheck
==
"
string
"
)
b
.
nocheck
=
k
.
eqs
(
b
.
nocheck
,
"
true
"
);
b
.
nocheck
=!!
b
.
nocheck
||
c
.
check
.
nocheckInherit
&&
d
&&!!
d
.
nocheck
;
if
(
typeof
b
.
chkDisabled
==
"
string
"
)
b
.
chkDisabled
=
k
.
eqs
(
b
.
chkDisabled
,
"
true
"
);
b
.
chkDisabled
=!!
b
.
chkDisabled
||
c
.
check
.
chkDisabledInherit
&&
d
&&!!
d
.
chkDisabled
;
if
(
typeof
b
.
halfCheck
==
"
string
"
)
b
.
halfCheck
=
k
.
eqs
(
b
.
halfCheck
,
"
true
"
);
b
.
halfCheck
=!!
b
.
halfCheck
;
b
.
check_Child_State
=-
1
;
b
.
check_Focus
=!
1
;
b
.
getCheckStatus
=
function
(){
return
g
.
getCheckStatus
(
c
,
b
)};
c
.
check
.
chkStyle
==
j
.
radio
.
STYLE
&&
c
.
check
.
radioType
==
j
.
radio
.
TYPE_ALL
&&
b
[
a
]
&&
g
.
getRoot
(
c
).
radioCheckedList
.
push
(
b
)}});
g
.
addInitProxy
(
function
(
c
){
var
a
=
c
.
target
,
b
=
g
.
getSetting
(
c
.
data
.
treeId
),
d
=
""
,
h
=
null
,
e
=
""
,
l
=
null
;
if
(
k
.
eqs
(
c
.
type
,
"
mouseover
"
)){
if
(
b
.
check
.
enable
&&
k
.
eqs
(
a
.
tagName
,
"
span
"
)
&&
a
.
getAttribute
(
"
treeNode
"
+
j
.
id
.
CHECK
)
!==
null
)
d
=
k
.
getNodeMainDom
(
a
).
id
,
e
=
"
mouseoverCheck
"
}
else
if
(
k
.
eqs
(
c
.
type
,
"
mouseout
"
)){
if
(
b
.
check
.
enable
&&
k
.
eqs
(
a
.
tagName
,
"
span
"
)
&&
a
.
getAttribute
(
"
treeNode
"
+
j
.
id
.
CHECK
)
!==
null
)
d
=
k
.
getNodeMainDom
(
a
).
id
,
e
=
"
mouseoutCheck
"
}
else
if
(
k
.
eqs
(
c
.
type
,
"
click
"
)
&&
b
.
check
.
enable
&&
k
.
eqs
(
a
.
tagName
,
"
span
"
)
&&
a
.
getAttribute
(
"
treeNode
"
+
j
.
id
.
CHECK
)
!==
null
)
d
=
k
.
getNodeMainDom
(
a
).
id
,
e
=
"
checkNode
"
;
if
(
d
.
length
>
0
)
switch
(
h
=
g
.
getNodeCache
(
b
,
d
),
e
){
case
"
checkNode
"
:
l
=
p
;
break
;
case
"
mouseoverCheck
"
:
l
=
q
;
break
;
case
"
mouseoutCheck
"
:
l
=
r
}
return
{
stop
:
e
===
"
checkNode
"
,
node
:
h
,
nodeEventType
:
e
,
nodeEventCallback
:
l
,
treeEventType
:
""
,
treeEventCallback
:
null
}},
!
0
);
g
.
addInitRoot
(
function
(
c
){
g
.
getRoot
(
c
).
radioCheckedList
=
[]});
g
.
addBeforeA
(
function
(
c
,
a
,
b
){
c
.
check
.
enable
&&
(
g
.
makeChkFlag
(
c
,
a
),
b
.
push
(
"
<span ID='
"
,
a
.
tId
,
j
.
id
.
CHECK
,
"
' class='
"
,
e
.
makeChkClass
(
c
,
a
),
"
' treeNode
"
,
j
.
id
.
CHECK
,
a
.
nocheck
===!
0
?
"
style='display:none;'
"
:
""
,
"
></span>
"
))});
g
.
addZTreeTools
(
function
(
c
,
a
){
a
.
checkNode
=
function
(
a
,
b
,
c
,
g
){
var
f
=
this
.
setting
.
data
.
key
.
checked
;
if
(
a
.
chkDisabled
!==!
0
&&
(
b
!==!
0
&&
b
!==!
1
&&
(
b
=!
a
[
f
]),
g
=!!
g
,(
a
[
f
]
!==
b
||
c
)
&&!
(
g
&&
k
.
apply
(
this
.
setting
.
callback
.
beforeCheck
,[
this
.
setting
.
treeId
,
a
],
!
0
)
==!
1
)
&&
k
.
uCanDo
(
this
.
setting
)
&&
this
.
setting
.
check
.
enable
&&
a
.
nocheck
!==!
0
))
a
[
f
]
=
b
,
b
=
n
(
a
,
j
.
id
.
CHECK
,
this
.
setting
),(
c
||
this
.
setting
.
check
.
chkStyle
===
j
.
radio
.
STYLE
)
&&
e
.
checkNodeRelation
(
this
.
setting
,
a
),
e
.
setChkClass
(
this
.
setting
,
b
,
a
),
e
.
repairParentChkClassWithSelf
(
this
.
setting
,
a
),
g
&&
this
.
setting
.
treeObj
.
trigger
(
j
.
event
.
CHECK
,[
null
,
this
.
setting
.
treeId
,
a
])};
a
.
checkAllNodes
=
function
(
a
){
e
.
repairAllChk
(
this
.
setting
,
!!
a
)};
a
.
getCheckedNodes
=
function
(
a
){
var
b
=
this
.
setting
.
data
.
key
.
children
;
return
g
.
getTreeCheckedNodes
(
this
.
setting
,
g
.
getRoot
(
this
.
setting
)[
b
],
a
!==!
1
)}
;
a
.
getChangeCheckedNodes
=
function
(){
var
a
=
this
.
setting
.
data
.
key
.
children
;
return
g
.
getTreeChangeCheckedNodes
(
this
.
setting
,
g
.
getRoot
(
this
.
setting
)[
a
])};
a
.
setChkDisabled
=
function
(
a
,
b
,
c
,
g
){
b
=!!
b
;
c
=!!
c
;
e
.
repairSonChkDisabled
(
this
.
setting
,
a
,
b
,
!!
g
);
e
.
repairParentChkDisabled
(
this
.
setting
,
a
.
getParentNode
(),
b
,
c
)};
var
b
=
a
.
updateNode
;
a
.
updateNode
=
function
(
c
,
g
){
b
&&
b
.
apply
(
a
,
arguments
);
if
(
c
&&
this
.
setting
.
check
.
enable
&&
n
(
c
,
this
.
setting
).
get
(
0
)
&&
k
.
uCanDo
(
this
.
setting
)){
var
i
=
n
(
c
,
j
.
id
.
CHECK
,
this
.
setting
);(
g
==!
0
||
this
.
setting
.
check
.
chkStyle
===
j
.
radio
.
STYLE
)
&&
e
.
checkNodeRelation
(
this
.
setting
,
c
);
e
.
setChkClass
(
this
.
setting
,
i
,
c
);
e
.
repairParentChkClassWithSelf
(
this
.
setting
,
c
)}}});
var
s
=
e
.
createNodes
;
e
.
createNodes
=
function
(
c
,
a
,
b
,
d
,
g
){
s
&&
s
.
apply
(
e
,
arguments
);
b
&&
e
.
repairParentChkClassWithSelf
(
c
,
d
)};
var
t
=
e
.
removeNode
;
e
.
removeNode
=
function
(
c
,
a
){
var
b
=
a
.
getParentNode
();
t
&&
t
.
apply
(
e
,
arguments
);
a
&&
b
&&
(
e
.
repairChkClass
(
c
,
b
),
e
.
repairParentChkClass
(
c
,
b
))};
var
u
=
e
.
appendNodes
;
e
.
appendNodes
=
function
(
c
,
a
,
b
,
d
,
h
,
i
,
j
){
var
f
=
""
;
u
&&
(
f
=
u
.
apply
(
e
,
arguments
));
d
&&
g
.
makeChkFlag
(
c
,
d
);
return
f
}})(
jQuery
);
(
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
,
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
,
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
,
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
<
j
;
d
++
)
if
(
b
=
g
[
d
],(
k
=
e
.
nodeChecked
(
c
,
b
))
&&
b
!=
a
)
e
.
nodeChecked
(
c
,
b
,
!
1
),
f
.
setChkClass
(
c
,
m
(
b
,
h
.
id
.
CHECK
,
c
),
b
)}
else
if
(
c
.
check
.
radioType
==
d
.
TYPE_ALL
)
for
(
d
=
0
,
j
=
g
.
length
;
d
<
j
;
d
++
)
if
(
a
==
g
[
d
]){
g
.
splice
(
d
,
1
);
break
}}
else
g
=
e
.
nodeChildren
(
c
,
a
),
b
&&
(
!
g
||
g
.
length
==
0
||
c
.
check
.
chkboxType
.
Y
.
indexOf
(
"
s
"
)
>-
1
)
&&
f
.
setSonNodeCheckBox
(
c
,
a
,
!
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
:
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
<
j
;
d
++
){
var
g
=
b
[
d
];
g
.
nocheck
!==!
0
&&
g
.
chkDisabled
!==!
0
&&
e
.
nodeChecked
(
c
,
g
,
a
);
f
.
setSonNodeCheckBox
(
c
,
g
,
a
)}},
repairChkClass
:
function
(
c
,
a
){
if
(
a
&&
(
e
.
makeChkFlag
(
c
,
a
),
a
.
nocheck
!==!
0
)){
var
b
=
m
(
a
,
h
.
id
.
CHECK
,
c
);
f
.
setChkClass
(
c
,
b
,
a
)}},
repairParentChkClass
:
function
(
c
,
a
){
if
(
a
&&
a
.
parentTId
){
var
b
=
a
.
getParentNode
();
f
.
repairChkClass
(
c
,
b
);
f
.
repairParentChkClass
(
c
,
b
)}},
repairParentChkClassWithSelf
:
function
(
c
,
a
){
if
(
a
){
var
b
=
e
.
nodeChildren
(
c
,
a
);
b
&&
b
.
length
>
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
<
g
;
j
++
)
f
.
repairSonChkDisabled
(
c
,
a
[
j
],
b
,
d
)}},
repairParentChkDisabled
:
function
(
c
,
a
,
b
,
d
){
if
(
a
){
if
(
a
.
chkDisabled
!=
b
&&
d
)
a
.
chkDisabled
=
b
;
f
.
repairChkClass
(
c
,
a
);
f
.
repairParentChkDisabled
(
c
,
a
.
getParentNode
(),
b
,
d
)}},
setChkClass
:
function
(
c
,
a
,
b
){
a
&&
(
b
.
nocheck
===!
0
?
a
.
hide
():
a
.
show
(),
a
.
attr
(
"
class
"
,
f
.
makeChkClass
(
c
,
b
)))},
setParentNodeCheckBox
:
function
(
c
,
a
,
b
,
d
){
var
j
=
m
(
a
,
h
.
id
.
CHECK
,
c
);
d
||
(
d
=
a
);
e
.
makeChkFlag
(
c
,
a
);
a
.
nocheck
!==!
0
&&
a
.
chkDisabled
!==!
0
&&
(
e
.
nodeChecked
(
c
,
a
,
b
),
f
.
setChkClass
(
c
,
j
,
a
),
c
.
check
.
autoCheckTrigger
&&
a
!=
d
&&
c
.
treeObj
.
trigger
(
h
.
event
.
CHECK
,
[
null
,
c
.
treeId
,
a
]));
if
(
a
.
parentTId
){
j
=!
0
;
if
(
!
b
)
for
(
var
g
=
e
.
nodeChildren
(
c
,
a
.
getParentNode
()),
k
=
0
,
o
=
g
.
length
;
k
<
o
;
k
++
){
var
l
=
g
[
k
],
i
=
e
.
nodeChecked
(
c
,
l
);
if
(
l
.
nocheck
!==!
0
&&
l
.
chkDisabled
!==!
0
&&
i
||
(
l
.
nocheck
===!
0
||
l
.
chkDisabled
===!
0
)
&&
l
.
check_Child_State
>
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
<
l
;
o
++
){
var
i
=
k
[
o
];
f
.
setSonNodeCheckBox
(
c
,
i
,
b
,
d
);
i
.
chkDisabled
===!
0
&&
(
g
=!
0
)}
if
(
a
!=
e
.
getRoot
(
c
)
&&
a
.
chkDisabled
!==!
0
){
g
&&
a
.
nocheck
!==!
0
&&
e
.
makeChkFlag
(
c
,
a
);
if
(
a
.
nocheck
!==!
0
&&
a
.
chkDisabled
!==!
0
){
if
(
e
.
nodeChecked
(
c
,
a
,
b
),
!
g
)
a
.
check_Child_State
=
k
&&
k
.
length
>
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
<
d
;
b
++
)
e
.
getNodeCache
(
c
,
a
[
b
].
tId
)
||
(
a
.
splice
(
b
,
1
),
b
--
,
d
--
);
return
a
},
getCheckStatus
:
function
(
c
,
a
){
if
(
!
c
.
check
.
enable
||
a
.
nocheck
||
a
.
chkDisabled
)
return
null
;
var
b
=
e
.
nodeChecked
(
c
,
a
);
return
{
checked
:
b
,
half
:
a
.
halfCheck
?
a
.
halfCheck
:
c
.
check
.
chkStyle
==
h
.
radio
.
STYLE
?
a
.
check_Child_State
===
2
:
b
?
a
.
check_Child_State
>-
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
<
f
;
g
++
){
var
i
=
a
[
g
],
l
=
e
.
nodeChildren
(
c
,
i
),
m
=
e
.
nodeChecked
(
c
,
i
);
if
(
i
.
nocheck
!==!
0
&&
i
.
chkDisabled
!==!
0
&&
m
==
b
&&
(
d
.
push
(
i
),
j
))
break
;
e
.
getTreeCheckedNodes
(
c
,
l
,
b
,
d
);
if
(
j
&&
d
.
length
>
0
)
break
}
return
d
},
getTreeChangeCheckedNodes
:
function
(
c
,
a
,
b
){
if
(
!
a
)
return
[];
for
(
var
b
=!
b
?[]:
b
,
d
=
0
,
j
=
a
.
length
;
d
<
j
;
d
++
){
var
g
=
a
[
d
],
f
=
e
.
nodeChildren
(
c
,
g
),
h
=
e
.
nodeChecked
(
c
,
g
);
g
.
nocheck
!==!
0
&&
g
.
chkDisabled
!==!
0
&&
h
!=
g
.
checkedOld
&&
b
.
push
(
g
);
e
.
getTreeChangeCheckedNodes
(
c
,
f
,
b
)}
return
b
},
makeChkFlag
:
function
(
c
,
a
){
if
(
a
){
var
b
=-
1
,
d
=
e
.
nodeChildren
(
c
,
a
);
if
(
d
)
for
(
var
j
=
0
,
g
=
d
.
length
;
j
<
g
;
j
++
){
var
f
=
d
[
j
],
i
=
e
.
nodeChecked
(
c
,
f
),
l
=-
1
;
if
(
c
.
check
.
chkStyle
==
h
.
radio
.
STYLE
)
if
(
l
=
f
.
nocheck
===!
0
||
f
.
chkDisabled
===!
0
?
f
.
check_Child_State
:
f
.
halfCheck
===!
0
?
2
:
i
?
2
:
f
.
check_Child_State
>
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
!
==
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
(
checked
,
"
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
)});
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
;
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
&&
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
}},
!
0
);
e
.
addInitRoot
(
function
(
c
){
e
.
getRoot
(
c
).
radioCheckedList
=
[]});
e
.
addBeforeA
(
function
(
c
,
a
,
b
){
c
.
check
.
enable
&&
(
e
.
makeChkFlag
(
c
,
a
),
b
.
push
(
"
<span ID='
"
,
a
.
tId
,
h
.
id
.
CHECK
,
"
' class='
"
,
f
.
makeChkClass
(
c
,
a
),
"
' treeNode
"
,
h
.
id
.
CHECK
,
a
.
nocheck
===!
0
?
"
style='display:none;'
"
:
""
,
"
></span>
"
))});
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
],
!
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
))
;
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
,
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
=
function
(
c
,
a
,
b
,
d
,
h
,
g
,
i
){
var
m
=
""
;
v
&&
(
m
=
v
.
apply
(
f
,
arguments
));
d
&&
e
.
makeChkFlag
(
c
,
d
);
return
m
}})(
jQuery
);
/*
* JQuery zTree exedit v3.5.3
1
* JQuery zTree exedit v3.5.3
2
* http://treejs.cn/
*
* Copyright (c) 2010 Hunter.z
...
...
@@ -120,47 +121,47 @@ d&&g.makeChkFlag(c,d);return f}})(jQuery);
* http://www.opensource.org/licenses/mit-license.php
*
* email: hunter.z@263.net
* Date: 201
7-12-28
* Date: 201
8-01-06
*/
(
function
(
v
){
var
J
=
{
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
"
}},
x
=
{
onHoverOverNode
:
function
(
b
,
a
){
var
c
=
m
.
getSetting
(
b
.
data
.
treeId
),
d
=
m
.
getRoot
(
c
);
if
(
d
.
curHoverNode
!=
a
)
x
.
onHoverOutNode
(
b
);
d
.
curHoverNode
=
a
;
f
.
addHoverDom
(
c
,
a
)},
onHoverOutNode
:
function
(
b
){
var
b
=
m
.
getSetting
(
b
.
data
.
treeId
),
a
=
m
.
getRoot
(
b
);
if
(
a
.
curHoverNode
&&!
m
.
isSelectedNode
(
b
,
a
.
curHoverNode
))
f
.
removeTreeDom
(
b
,
a
.
curHoverNode
),
a
.
curHoverNode
=
null
},
onMousedownNode
:
function
(
b
,
a
){
function
c
(
b
){
if
(
B
.
dragFlag
==
0
&&
Math
.
abs
(
O
-
b
.
clientX
)
<
e
.
edit
.
drag
.
minMoveSize
&&
Math
.
abs
(
P
-
b
.
clientY
)
<
e
.
edit
.
drag
.
minMoveSize
)
return
!
0
;
var
a
,
c
,
n
,
k
,
i
;
i
=
e
.
data
.
key
.
children
;
M
.
css
(
"
cursor
"
,
"
pointer
"
);
if
(
B
.
dragFlag
==
0
){
if
(
g
.
apply
(
e
.
callback
.
beforeDrag
,[
e
.
treeId
,
l
],
!
0
)
==!
1
)
return
r
(
b
),
!
0
;
for
(
a
=
0
,
c
=
l
.
length
;
a
<
c
;
a
++
){
if
(
a
==
0
)
B
.
dragNodeShowBefore
=
[];
n
=
l
[
a
];
n
.
isParent
&&
n
.
open
?(
f
.
expandCollapseNode
(
e
,
n
,
!
n
.
open
),
B
.
dragNodeShowBefore
[
n
.
tId
]
=!
0
):
B
.
dragNodeShowBefore
[
n
.
tId
]
=!
1
}
B
.
dragFlag
=
1
;
t
.
showHoverDom
=!
1
;
g
.
showIfameMask
(
e
,
!
0
);
n
=!
0
;
k
=-
1
;
if
(
l
.
length
>
1
){
var
j
=
l
[
0
].
parentTId
?
l
[
0
].
getParentNode
()[
i
]:
m
.
getNodes
(
e
);
i
=
[];
for
(
a
=
0
,
c
=
j
.
length
;
a
<
c
;
a
++
)
if
(
B
.
dragNodeShowBefore
[
j
[
a
].
tId
]
!==
void
0
&&
(
n
&&
k
>-
1
&&
k
+
1
!==
a
&&
(
n
=!
1
),
i
.
push
(
j
[
a
]),
k
=
a
),
l
.
length
===
i
.
length
){
l
=
i
;
break
}}
n
&&
(
I
=
l
[
0
].
getPreNode
(),
R
=
l
[
l
.
length
-
1
].
getNextNode
());
D
=
o
(
"
<ul class='zTreeDragUL'></ul>
"
,
e
);
for
(
a
=
0
,
c
=
l
.
length
;
a
<
c
;
a
++
)
n
=
l
[
a
],
n
.
editNameFlag
=!
1
,
f
.
selectNode
(
e
,
n
,
a
>
0
),
f
.
removeTreeDom
(
e
,
n
),
a
>
e
.
edit
.
drag
.
maxShowNodeNum
-
1
||
(
k
=
o
(
"
<li id='
"
+
n
.
tId
+
"
_tmp'></li>
"
,
e
),
k
.
append
(
o
(
n
,
d
.
id
.
A
,
e
).
clone
()),
k
.
css
(
"
padding
"
,
"
0
"
),
k
.
children
(
"
#
"
+
n
.
tId
+
d
.
id
.
A
).
removeClass
(
d
.
node
.
CURSELECTED
),
D
.
append
(
k
),
a
==
e
.
edit
.
drag
.
maxShowNodeNum
-
1
&&
(
k
=
o
(
"
<li id='
"
+
n
.
tId
+
"
_moretmp'><a> ... </a></li>
"
,
e
),
D
.
append
(
k
)));
D
.
attr
(
"
id
"
,
l
[
0
].
tId
+
d
.
id
.
UL
+
"
_tmp
"
);
D
.
addClass
(
e
.
treeObj
.
attr
(
"
class
"
));
D
.
appendTo
(
M
);
A
=
o
(
"
<span class='tmpzTreeMove_arrow'></span>
"
,
e
);
A
.
attr
(
"
id
"
,
"
zTreeMove_arrow_tmp
"
);
A
.
appendTo
(
M
);
e
.
treeObj
.
trigger
(
d
.
event
.
DRAG
,[
b
,
e
.
treeId
,
l
])}
if
(
B
.
dragFlag
==
1
){
s
&&
A
.
attr
(
"
id
"
)
==
b
.
target
.
id
&&
u
&&
b
.
clientX
+
G
.
scrollLeft
()
+
2
>
v
(
"
#
"
+
u
+
d
.
id
.
A
,
s
).
offset
().
left
?(
n
=
v
(
"
#
"
+
u
+
d
.
id
.
A
,
s
),
b
.
target
=
n
.
length
>
0
?
n
.
get
(
0
):
b
.
target
):
s
&&
(
s
.
removeClass
(
d
.
node
.
TMPTARGET_TREE
),
u
&&
v
(
"
#
"
+
u
+
d
.
id
.
A
,
s
).
removeClass
(
d
.
node
.
TMPTARGET_NODE
+
"
_
"
+
d
.
move
.
TYPE_PREV
).
removeClass
(
d
.
node
.
TMPTARGET_NODE
+
"
_
"
+
J
.
move
.
TYPE_NEXT
).
removeClass
(
d
.
node
.
TMPTARGET_NODE
+
"
_
"
+
J
.
move
.
TYPE_INNER
));
u
=
s
=
null
;
K
=!
1
;
h
=
e
;
n
=
m
.
getSettings
();
for
(
var
y
in
n
)
if
(
n
[
y
].
treeId
&&
n
[
y
].
edit
.
enable
&&
n
[
y
].
treeId
!=
e
.
treeId
&&
(
b
.
target
.
id
==
n
[
y
].
treeId
||
v
(
b
.
target
).
parents
(
"
#
"
+
n
[
y
].
treeId
).
length
>
0
))
K
=!
0
,
h
=
n
[
y
];
y
=
G
.
scrollTop
();
k
=
G
.
scrollLeft
();
i
=
h
.
treeObj
.
offset
();
a
=
h
.
treeObj
.
get
(
0
).
scrollHeight
;
n
=
h
.
treeObj
.
get
(
0
).
scrollWidth
;
c
=
b
.
clientY
+
y
-
i
.
top
;
var
p
=
h
.
treeObj
.
height
()
+
i
.
top
-
b
.
clientY
-
y
,
q
=
b
.
clientX
+
k
-
i
.
left
,
H
=
h
.
treeObj
.
width
()
+
i
.
left
-
b
.
clientX
-
k
;
i
=
c
<
e
.
edit
.
drag
.
borderMax
&&
c
>
e
.
edit
.
drag
.
borderMin
;
var
j
=
p
<
e
.
edit
.
drag
.
borderMax
&&
p
>
e
.
edit
.
drag
.
borderMin
,
F
=
q
<
e
.
edit
.
drag
.
borderMax
&&
q
>
e
.
edit
.
drag
.
borderMin
,
x
=
H
<
e
.
edit
.
drag
.
borderMax
&&
H
>
e
.
edit
.
drag
.
borderMin
,
p
=
c
>
e
.
edit
.
drag
.
borderMin
&&
p
>
e
.
edit
.
drag
.
borderMin
&&
q
>
e
.
edit
.
drag
.
borderMin
&&
H
>
e
.
edit
.
drag
.
borderMin
,
q
=
i
&&
h
.
treeObj
.
scrollTop
()
<=
0
,
H
=
j
&&
h
.
treeObj
.
scrollTop
()
+
h
.
treeObj
.
height
()
+
10
>=
a
,
N
=
F
&&
h
.
treeObj
.
scrollLeft
()
<=
0
,
Q
=
x
&&
h
.
treeObj
.
scrollLeft
()
+
h
.
treeObj
.
width
()
+
10
>=
n
;
if
(
b
.
target
&&
g
.
isChildOrSelf
(
b
.
target
,
h
.
treeId
)){
for
(
var
E
=
b
.
target
;
E
&&
E
.
tagName
&&!
g
.
eqs
(
E
.
tagName
,
"
li
"
)
&&
E
.
id
!=
h
.
treeId
;)
E
=
E
.
parentNode
;
var
S
=!
0
;
for
(
a
=
0
,
c
=
l
.
length
;
a
<
c
;
a
++
)
if
(
n
=
l
[
a
],
E
.
id
===
n
.
tId
){
S
=!
1
;
break
}
else
if
(
o
(
n
,
e
).
find
(
"
#
"
+
E
.
id
).
length
>
0
){
S
=!
1
;
break
}
if
(
S
&&
b
.
target
&&
g
.
isChildOrSelf
(
b
.
target
,
E
.
id
+
d
.
id
.
A
))
s
=
v
(
E
),
u
=
E
.
id
}
n
=
l
[
0
];
if
(
p
&&
g
.
isChildOrSelf
(
b
.
target
,
h
.
treeId
)){
if
(
!
s
&&
(
b
.
target
.
id
==
h
.
treeId
||
q
||
H
||
N
||
Q
)
&&
(
K
||!
K
&&
n
.
parentTId
))
s
=
h
.
treeObj
;
i
?
h
.
treeObj
.
scrollTop
(
h
.
treeObj
.
scrollTop
()
-
10
):
j
&&
h
.
treeObj
.
scrollTop
(
h
.
treeObj
.
scrollTop
()
+
10
);
F
?
h
.
treeObj
.
scrollLeft
(
h
.
treeObj
.
scrollLeft
()
-
10
):
x
&&
h
.
treeObj
.
scrollLeft
(
h
.
treeObj
.
scrollLeft
()
+
10
);
s
&&
s
!=
h
.
treeObj
&&
s
.
offset
().
left
<
h
.
treeObj
.
offset
().
left
&&
h
.
treeObj
.
scrollLeft
(
h
.
treeObj
.
scrollLeft
()
+
s
.
offset
().
left
-
h
.
treeObj
.
offset
().
left
)}
D
.
css
({
top
:
b
.
clientY
+
y
+
3
+
"
px
"
,
left
:
b
.
clientX
+
k
+
3
+
"
px
"
});
c
=
a
=
0
;
if
(
s
&&
s
.
attr
(
"
id
"
)
!=
h
.
treeId
){
var
z
=
u
==
null
?
null
:
m
.
getNodeCache
(
h
,
u
);
i
=
(
b
.
ctrlKey
||
b
.
metaKey
)
&&
e
.
edit
.
drag
.
isMove
&&
e
.
edit
.
drag
.
isCopy
||!
e
.
edit
.
drag
.
isMove
&&
e
.
edit
.
drag
.
isCopy
;
k
=!!
(
I
&&
u
===
I
.
tId
);
F
=!!
(
R
&&
u
===
R
.
tId
);
j
=
n
.
parentTId
&&
n
.
parentTId
==
u
;
n
=
(
i
||!
F
)
&&
g
.
apply
(
h
.
edit
.
drag
.
prev
,[
h
.
treeId
,
l
,
z
],
!!
h
.
edit
.
drag
.
prev
);
k
=
(
i
||!
k
)
&&
g
.
apply
(
h
.
edit
.
drag
.
next
,[
h
.
treeId
,
l
,
z
],
!!
h
.
edit
.
drag
.
next
);
i
=
(
i
||!
j
)
&&!
(
h
.
data
.
keep
.
leaf
&&!
z
.
isParent
)
&&
g
.
apply
(
h
.
edit
.
drag
.
inner
,[
h
.
treeId
,
l
,
z
],
!!
h
.
edit
.
drag
.
inner
);
j
=
function
(){
s
=
null
;
u
=
""
;
w
=
d
.
move
.
TYPE_INNER
;
A
.
css
({
display
:
"
none
"
});
if
(
window
.
zTreeMoveTimer
)
clearTimeout
(
window
.
zTreeMoveTimer
),
window
.
zTreeMoveTargetNodeTId
=
null
};
if
(
!
n
&&!
k
&&!
i
)
j
();
else
if
(
F
=
v
(
"
#
"
+
u
+
d
.
id
.
A
,
s
),
x
=
z
.
isLastNode
?
null
:
v
(
"
#
"
+
z
.
getNextNode
().
tId
+
d
.
id
.
A
,
s
.
next
()),
p
=
F
.
offset
().
top
,
q
=
F
.
offset
().
left
,
H
=
n
?
i
?
0.25
:
k
?
0.5
:
1
:
-
1
,
N
=
k
?
i
?
0.75
:
n
?
0.5
:
0
:
-
1
,
y
=
(
b
.
clientY
+
y
-
p
)
/
F
.
height
(),(
H
==
1
||
y
<=
H
&&
y
>=-
0.2
)
&&
n
?(
a
=
1
-
A
.
width
(),
c
=
p
-
A
.
height
()
/
2
,
w
=
d
.
move
.
TYPE_PREV
):(
N
==
0
||
y
>=
N
&&
y
<=
1.2
)
&&
k
?(
a
=
1
-
A
.
width
(),
c
=
x
==
null
||
z
.
isParent
&&
z
.
open
?
p
+
F
.
height
()
-
A
.
height
()
/
2
:
x
.
offset
().
top
-
A
.
height
()
/
2
,
w
=
d
.
move
.
TYPE_NEXT
):
i
?(
a
=
5
-
A
.
width
(),
c
=
p
,
w
=
d
.
move
.
TYPE_INNER
):
j
(),
s
){
A
.
css
({
display
:
"
block
"
,
top
:
c
+
"
px
"
,
left
:
q
+
a
+
"
px
"
});
F
.
addClass
(
d
.
node
.
TMPTARGET_NODE
+
"
_
"
+
w
);
if
(
T
!=
u
||
U
!=
w
)
L
=
(
new
Date
).
getTime
();
if
(
z
&&
z
.
isParent
&&
w
==
d
.
move
.
TYPE_INNER
&&
(
y
=!
0
,
window
.
zTreeMoveTimer
&&
window
.
zTreeMoveTargetNodeTId
!==
z
.
tId
?(
clearTimeout
(
window
.
zTreeMoveTimer
),
window
.
zTreeMoveTargetNodeTId
=
null
):
window
.
zTreeMoveTimer
&&
window
.
zTreeMoveTargetNodeTId
===
z
.
tId
&&
(
y
=!
1
),
y
))
window
.
zTreeMoveTimer
=
setTimeout
(
function
(){
w
==
d
.
move
.
TYPE_INNER
&&
z
&&
z
.
isParent
&&!
z
.
open
&&
(
new
Date
).
getTime
()
-
L
>
h
.
edit
.
drag
.
autoOpenTime
&&
g
.
apply
(
h
.
callback
.
beforeDragOpen
,[
h
.
treeId
,
z
],
!
0
)
&&
(
f
.
switchNode
(
h
,
z
),
h
.
edit
.
drag
.
autoExpandTrigger
&&
h
.
treeObj
.
trigger
(
d
.
event
.
EXPAND
,[
h
.
treeId
,
z
]))}
,
h
.
edit
.
drag
.
autoOpenTime
+
50
),
window
.
zTreeMoveTargetNodeTId
=
z
.
tId
}}
else
if
(
w
=
d
.
move
.
TYPE_INNER
,
s
&&
g
.
apply
(
h
.
edit
.
drag
.
inner
,[
h
.
treeId
,
l
,
null
],
!!
h
.
edit
.
drag
.
inner
)?
s
.
addClass
(
d
.
node
.
TMPTARGET_TREE
):
s
=
null
,
A
.
css
({
display
:
"
none
"
}),
window
.
zTreeMoveTimer
)
clearTimeout
(
window
.
zTreeMoveTimer
),
window
.
zTreeMoveTargetNodeTId
=
null
;
T
=
u
;
U
=
w
;
e
.
treeObj
.
trigger
(
d
.
event
.
DRAGMOVE
,[
b
,
e
.
treeId
,
l
])}
return
!
1
}
function
r
(
b
){
if
(
window
.
zTreeMoveTimer
)
clearTimeout
(
window
.
zTreeMoveTimer
),
window
.
zTreeMoveTargetNodeTId
=
null
;
U
=
T
=
null
;
G
.
unbind
(
"
mousemove
"
,
c
);
G
.
unbind
(
"
mouseup
"
,
r
);
G
.
unbind
(
"
selectstart
"
,
k
);
M
.
css
(
"
cursor
"
,
""
);
s
&&
(
s
.
removeClass
(
d
.
node
.
TMPTARGET_TREE
),
u
&&
v
(
"
#
"
+
u
+
d
.
id
.
A
,
s
).
removeClass
(
d
.
node
.
TMPTARGET_NODE
+
"
_
"
+
d
.
move
.
TYPE_PREV
).
removeClass
(
d
.
node
.
TMPTARGET_NODE
+
"
_
"
+
J
.
move
.
TYPE_NEXT
).
removeClass
(
d
.
node
.
TMPTARGET_NODE
+
"
_
"
+
J
.
move
.
TYPE_INNER
));
g
.
showIfameMask
(
e
,
!
1
);
t
.
showHoverDom
=!
0
;
if
(
B
.
dragFlag
!=
0
){
B
.
dragFlag
=
0
;
var
a
,
i
,
j
;
for
(
a
=
0
,
i
=
l
.
length
;
a
<
i
;
a
++
)
j
=
l
[
a
],
j
.
isParent
&&
B
.
dragNodeShowBefore
[
j
.
tId
]
&&!
j
.
open
&&
(
f
.
expandCollapseNode
(
e
,
j
,
!
j
.
open
),
delete
B
.
dragNodeShowBefore
[
j
.
tId
]);
D
&&
D
.
remove
();
A
&&
A
.
remove
();
var
p
=
(
b
.
ctrlKey
||
b
.
metaKey
)
&&
e
.
edit
.
drag
.
isMove
&&
e
.
edit
.
drag
.
isCopy
||!
e
.
edit
.
drag
.
isMove
&&
e
.
edit
.
drag
.
isCopy
;
!
p
&&
s
&&
u
&&
l
[
0
].
parentTId
&&
u
==
l
[
0
].
parentTId
&&
w
==
d
.
move
.
TYPE_INNER
&&
(
s
=
null
);
if
(
s
){
var
q
=
u
==
null
?
null
:
m
.
getNodeCache
(
h
,
u
);
if
(
g
.
apply
(
e
.
callback
.
beforeDrop
,[
h
.
treeId
,
l
,
q
,
w
,
p
],
!
0
)
==!
1
)
f
.
selectNodes
(
x
,
l
);
else
{
var
C
=
p
?
g
.
clone
(
l
):
l
;
a
=
function
(){
if
(
K
){
if
(
!
p
)
for
(
var
a
=
0
,
c
=
l
.
length
;
a
<
c
;
a
++
)
f
.
removeNode
(
e
,
l
[
a
]);
w
==
d
.
move
.
TYPE_INNER
?
f
.
addNodes
(
h
,
q
,
-
1
,
C
):
f
.
addNodes
(
h
,
q
.
getParentNode
(),
w
==
d
.
move
.
TYPE_PREV
?
q
.
getIndex
():
q
.
getIndex
()
+
1
,
C
)}
else
if
(
p
&&
w
==
d
.
move
.
TYPE_INNER
)
f
.
addNodes
(
h
,
q
,
-
1
,
C
);
else
if
(
p
)
f
.
addNodes
(
h
,
q
.
getParentNode
(),
w
==
d
.
move
.
TYPE_PREV
?
q
.
getIndex
():
q
.
getIndex
()
+
1
,
C
);
else
if
(
w
!=
d
.
move
.
TYPE_NEXT
)
for
(
a
=
0
,
c
=
C
.
length
;
a
<
c
;
a
++
)
f
.
moveNode
(
h
,
q
,
C
[
a
],
w
,
!
1
);
else
for
(
a
=-
1
,
c
=
C
.
length
-
1
;
a
<
c
;
c
--
)
f
.
moveNode
(
h
,
q
,
C
[
c
],
w
,
!
1
);
f
.
selectNodes
(
h
,
C
);
a
=
o
(
C
[
0
],
e
).
get
(
0
);
f
.
scrollIntoView
(
e
,
a
);
e
.
treeObj
.
trigger
(
d
.
event
.
DROP
,[
b
,
h
.
treeId
,
C
,
q
,
w
,
p
])};
w
==
d
.
move
.
TYPE_INNER
&&
g
.
canAsync
(
h
,
q
)?
f
.
asyncNode
(
h
,
q
,
!
1
,
a
):
a
()}}
else
f
.
selectNodes
(
x
,
l
),
e
.
treeObj
.
trigger
(
d
.
event
.
DROP
,[
b
,
e
.
treeId
,
l
,
null
,
null
,
null
])}}
function
k
(){
return
!
1
}
var
i
,
j
,
e
=
m
.
getSetting
(
b
.
data
.
treeId
),
B
=
m
.
getRoot
(
e
),
t
=
m
.
getRoots
();
if
(
b
.
button
==
2
||!
e
.
edit
.
enable
||!
e
.
edit
.
drag
.
isCopy
&&!
e
.
edit
.
drag
.
isMove
)
return
!
0
;
var
p
=
b
.
target
,
q
=
m
.
getRoot
(
e
).
curSelectedList
,
l
=
[];
if
(
m
.
isSelectedNode
(
e
,
a
))
for
(
i
=
0
,
j
=
q
.
length
;
i
<
j
;
i
++
){
if
(
q
[
i
].
editNameFlag
&&
g
.
eqs
(
p
.
tagName
,
"
input
"
)
&&
p
.
getAttribute
(
"
treeNode
"
+
d
.
id
.
INPUT
)
!==
null
)
return
!
0
;
l
.
push
(
q
[
i
]);
if
(
l
[
0
].
parentTId
!==
q
[
i
].
parentTId
){
l
=
[
a
];
break
}}
else
l
=
[
a
];
f
.
editNodeBlur
=!
0
;
f
.
cancelCurEditNode
(
e
);
var
G
=
v
(
e
.
treeObj
.
get
(
0
).
ownerDocument
),
M
=
v
(
e
.
treeObj
.
get
(
0
).
ownerDocument
.
body
),
D
,
A
,
s
,
K
=!
1
,
h
=
e
,
x
=
e
,
I
,
R
,
T
=
null
,
U
=
null
,
u
=
null
,
w
=
d
.
move
.
TYPE_INNER
,
O
=
b
.
clientX
,
P
=
b
.
clientY
,
L
=
(
new
Date
).
getTime
();
g
.
uCanDo
(
e
)
&&
G
.
bind
(
"
mousemove
"
,
c
);
G
.
bind
(
"
mouseup
"
,
r
);
G
.
bind
(
"
selectstart
"
,
k
);
b
.
preventDefault
&&
b
.
preventDefault
();
return
!
0
}};
v
.
extend
(
!
0
,
v
.
fn
.
zTree
.
consts
,
J
);
v
.
extend
(
!
0
,
v
.
fn
.
zTree
.
_z
,{
tools
:{
getAbs
:
function
(
b
){
b
=
b
.
getBoundingClientRect
();
return
[
b
.
left
+
(
document
.
body
.
scrollLeft
+
document
.
documentElement
.
scrollLeft
),
b
.
top
+
(
document
.
body
.
scrollTop
+
document
.
documentElement
.
scrollTop
)]},
inputFocus
:
function
(
b
){
b
.
get
(
0
)
&&
(
b
.
focus
(),
g
.
setCursorPosition
(
b
.
get
(
0
),
b
.
val
().
length
))},
inputSelect
:
function
(
b
){
b
.
get
(
0
)
&&
(
b
.
focus
(),
b
.
select
())},
setCursorPosition
:
function
(
b
,
a
){
if
(
b
.
setSelectionRange
)
b
.
focus
(),
b
.
setSelectionRange
(
a
,
a
);
else
if
(
b
.
createTextRange
){
var
c
=
b
.
createTextRange
();
c
.
collapse
(
!
0
);
c
.
moveEnd
(
"
character
"
,
a
);
c
.
moveStart
(
"
character
"
,
a
);
c
.
select
()}},
showIfameMask
:
function
(
b
,
a
){
for
(
var
c
=
m
.
getRoot
(
b
);
c
.
dragMaskList
.
length
>
0
;)
c
.
dragMaskList
[
0
].
remove
(),
c
.
dragMaskList
.
shift
();
if
(
a
)
for
(
var
d
=
o
(
"
iframe
"
,
b
),
f
=
0
,
i
=
d
.
length
;
f
<
i
;
f
++
){
var
j
=
d
.
get
(
f
),
e
=
g
.
getAbs
(
j
),
j
=
o
(
"
<div id='zTreeMask_
"
+
f
+
"
' class='zTreeMask' style='top:
"
+
e
[
1
]
+
"
px; left:
"
+
e
[
0
]
+
"
px; width:
"
+
j
.
offsetWidth
+
"
px; height:
"
+
j
.
offsetHeight
+
"
px;'></div>
"
,
b
);
j
.
appendTo
(
o
(
"
body
"
,
b
));
c
.
dragMaskList
.
push
(
j
)}}},
view
:{
addEditBtn
:
function
(
b
,
a
){
if
(
!
(
a
.
editNameFlag
||
o
(
a
,
d
.
id
.
EDIT
,
b
).
length
>
0
)
&&
g
.
apply
(
b
.
edit
.
showRenameBtn
,[
b
.
treeId
,
a
],
b
.
edit
.
showRenameBtn
)){
var
c
=
o
(
a
,
d
.
id
.
A
,
b
),
r
=
"
<span class='
"
+
d
.
className
.
BUTTON
+
"
edit' id='
"
+
a
.
tId
+
d
.
id
.
EDIT
+
"
' title='
"
+
g
.
apply
(
b
.
edit
.
renameTitle
,[
b
.
treeId
,
a
],
b
.
edit
.
renameTitle
)
+
"
' treeNode
"
+
d
.
id
.
EDIT
+
"
style='display:none;'></span>
"
;
c
.
append
(
r
);
o
(
a
,
d
.
id
.
EDIT
,
b
).
bind
(
"
click
"
,
function
(){
if
(
!
g
.
uCanDo
(
b
)
||
g
.
apply
(
b
.
callback
.
beforeEditName
,[
b
.
treeId
,
a
],
!
0
)
==!
1
)
return
!
1
;
f
.
editNode
(
b
,
a
);
return
!
1
}).
show
()}},
addRemoveBtn
:
function
(
b
,
a
){
if
(
!
(
a
.
editNameFlag
||
o
(
a
,
d
.
id
.
REMOVE
,
b
).
length
>
0
)
&&
g
.
apply
(
b
.
edit
.
showRemoveBtn
,[
b
.
treeId
,
a
],
b
.
edit
.
showRemoveBtn
)){
var
c
=
o
(
a
,
d
.
id
.
A
,
b
),
r
=
"
<span class='
"
+
d
.
className
.
BUTTON
+
"
remove' id='
"
+
a
.
tId
+
d
.
id
.
REMOVE
+
"
' title='
"
+
g
.
apply
(
b
.
edit
.
removeTitle
,[
b
.
treeId
,
a
],
b
.
edit
.
removeTitle
)
+
"
' treeNode
"
+
d
.
id
.
REMOVE
+
"
style='display:none;'></span>
"
;
c
.
append
(
r
);
o
(
a
,
d
.
id
.
REMOVE
,
b
).
bind
(
"
click
"
,
function
(){
if
(
!
g
.
uCanDo
(
b
)
||
g
.
apply
(
b
.
callback
.
beforeRemove
,[
b
.
treeId
,
a
],
!
0
)
==!
1
)
return
!
1
;
f
.
removeNode
(
b
,
a
);
b
.
treeObj
.
trigger
(
d
.
event
.
REMOVE
,[
b
.
treeId
,
a
]);
return
!
1
}).
bind
(
"
mousedown
"
,
function
(){
return
!
0
}).
show
()}},
addHoverDom
:
function
(
b
,
a
){
if
(
m
.
getRoots
().
showHoverDom
)
a
.
isHover
=!
0
,
b
.
edit
.
enable
&&
(
f
.
addEditBtn
(
b
,
a
),
f
.
addRemoveBtn
(
b
,
a
)),
g
.
apply
(
b
.
view
.
addHoverDom
,[
b
.
treeId
,
a
])},
cancelCurEditNode
:
function
(
b
,
a
,
c
){
var
r
=
m
.
getRoot
(
b
),
k
=
b
.
data
.
key
.
name
,
i
=
r
.
curEditNode
;
if
(
i
){
var
j
=
r
.
curEditInput
,
a
=
a
?
a
:
c
?
i
[
k
]:
j
.
val
();
if
(
g
.
apply
(
b
.
callback
.
beforeRename
,[
b
.
treeId
,
i
,
a
,
c
],
!
0
)
===!
1
)
return
!
1
;
i
[
k
]
=
a
;
o
(
i
,
d
.
id
.
A
,
b
).
removeClass
(
d
.
node
.
CURSELECTED_EDIT
);
j
.
unbind
();
f
.
setNodeName
(
b
,
i
);
i
.
editNameFlag
=!
1
;
r
.
curEditNode
=
null
;
r
.
curEditInput
=
null
;
f
.
selectNode
(
b
,
i
,
!
1
);
b
.
treeObj
.
trigger
(
d
.
event
.
RENAME
,[
b
.
treeId
,
i
,
c
])}
return
r
.
noSelection
=!
0
},
editNode
:
function
(
b
,
a
){
var
c
=
m
.
getRoot
(
b
);
f
.
editNodeBlur
=!
1
;
if
(
m
.
isSelectedNode
(
b
,
a
)
&&
c
.
curEditNode
==
a
&&
a
.
editNameFlag
)
setTimeout
(
function
(){
g
.
inputFocus
(
c
.
curEditInput
)},
0
);
else
{
var
r
=
b
.
data
.
key
.
name
;
a
.
editNameFlag
=!
0
;
f
.
removeTreeDom
(
b
,
a
);
f
.
cancelCurEditNode
(
b
);
f
.
selectNode
(
b
,
a
,
!
1
);
o
(
a
,
d
.
id
.
SPAN
,
b
).
html
(
"
<input type=text class='rename' id='
"
+
a
.
tId
+
d
.
id
.
INPUT
+
"
' treeNode
"
+
d
.
id
.
INPUT
+
"
>
"
);
var
k
=
o
(
a
,
d
.
id
.
INPUT
,
b
);
k
.
attr
(
"
value
"
,
a
[
r
]);
b
.
edit
.
editNameSelectAll
?
g
.
inputSelect
(
k
):
g
.
inputFocus
(
k
);
k
.
bind
(
"
blur
"
,
function
(){
f
.
editNodeBlur
||
f
.
cancelCurEditNode
(
b
)}).
bind
(
"
keydown
"
,
function
(
a
){
a
.
keyCode
==
"
13
"
?(
f
.
editNodeBlur
=!
0
,
f
.
cancelCurEditNode
(
b
)):
a
.
keyCode
==
"
27
"
&&
f
.
cancelCurEditNode
(
b
,
null
,
!
0
)}).
bind
(
"
click
"
,
function
(){
return
!
1
}).
bind
(
"
dblclick
"
,
function
(){
return
!
1
});
o
(
a
,
d
.
id
.
A
,
b
).
addClass
(
d
.
node
.
CURSELECTED_EDIT
);
c
.
curEditInput
=
k
;
c
.
noSelection
=
!
1
;
c
.
curEditNode
=
a
}},
moveNode
:
function
(
b
,
a
,
c
,
r
,
k
,
i
){
var
j
=
m
.
getRoot
(
b
),
e
=
b
.
data
.
key
.
children
;
if
(
a
!=
c
&&
(
!
b
.
data
.
keep
.
leaf
||!
a
||
a
.
isParent
||
r
!=
d
.
move
.
TYPE_INNER
)){
var
g
=
c
.
parentTId
?
c
.
getParentNode
():
j
,
t
=
a
===
null
||
a
==
j
;
t
&&
a
===
null
&&
(
a
=
j
);
if
(
t
)
r
=
d
.
move
.
TYPE_INNER
;
j
=
a
.
parentTId
?
a
.
getParentNode
():
j
;
if
(
r
!=
d
.
move
.
TYPE_PREV
&&
r
!=
d
.
move
.
TYPE_NEXT
)
r
=
d
.
move
.
TYPE_INNER
;
if
(
r
==
d
.
move
.
TYPE_INNER
)
if
(
t
)
c
.
parentTId
=
null
;
else
{
if
(
!
a
.
isParent
)
a
.
isParent
=!
0
,
a
.
open
=!!
a
.
open
,
f
.
setNodeLineIcos
(
b
,
a
);
c
.
parentTId
=
a
.
tId
}
var
p
;
t
?
p
=
t
=
b
.
treeObj
:(
!
i
&&
r
==
d
.
move
.
TYPE_INNER
?
f
.
expandCollapseNode
(
b
,
a
,
!
0
,
!
1
):
i
||
f
.
expandCollapseNode
(
b
,
a
.
getParentNode
(),
!
0
,
!
1
),
t
=
o
(
a
,
b
),
p
=
o
(
a
,
d
.
id
.
UL
,
b
),
t
.
get
(
0
)
&&!
p
.
get
(
0
)
&&
(
p
=
[],
f
.
makeUlHtml
(
b
,
a
,
p
,
""
),
t
.
append
(
p
.
join
(
""
))),
p
=
o
(
a
,
d
.
id
.
UL
,
b
));
var
q
=
o
(
c
,
b
);
q
.
get
(
0
)?
t
.
get
(
0
)
||
q
.
remove
():
q
=
f
.
appendNodes
(
b
,
c
.
level
,[
c
],
null
,
-
1
,
!
1
,
!
0
).
join
(
""
);
p
.
get
(
0
)
&&
r
==
d
.
move
.
TYPE_INNER
?
p
.
append
(
q
):
t
.
get
(
0
)
&&
r
==
d
.
move
.
TYPE_PREV
?
t
.
before
(
q
):
t
.
get
(
0
)
&&
r
==
d
.
move
.
TYPE_NEXT
&&
t
.
after
(
q
);
var
l
=-
1
,
v
=
0
,
x
=
null
,
t
=
null
,
D
=
c
.
level
;
if
(
c
.
isFirstNode
){
if
(
l
=
0
,
g
[
e
].
length
>
1
)
x
=
g
[
e
][
1
],
x
.
isFirstNode
=!
0
}
else
if
(
c
.
isLastNode
)
l
=
g
[
e
].
length
-
1
,
x
=
g
[
e
][
l
-
1
],
x
.
isLastNode
=!
0
;
else
for
(
p
=
0
,
q
=
g
[
e
].
length
;
p
<
q
;
p
++
)
if
(
g
[
e
][
p
].
tId
==
c
.
tId
){
l
=
p
;
break
}
l
>=
0
&&
g
[
e
].
splice
(
l
,
1
);
if
(
r
!=
d
.
move
.
TYPE_INNER
)
for
(
p
=
0
,
q
=
j
[
e
].
length
;
p
<
q
;
p
++
)
j
[
e
][
p
].
tId
==
a
.
tId
&&
(
v
=
p
);
if
(
r
==
d
.
move
.
TYPE_INNER
){
a
[
e
]
||
(
a
[
e
]
=
[]);
if
(
a
[
e
].
length
>
0
)
t
=
a
[
e
][
a
[
e
].
length
-
1
],
t
.
isLastNode
=!
1
;
a
[
e
].
splice
(
a
[
e
].
length
,
0
,
c
);
c
.
isLastNode
=!
0
;
c
.
isFirstNode
=
a
[
e
].
length
==
1
}
else
a
.
isFirstNode
&&
r
==
d
.
move
.
TYPE_PREV
?
(
j
[
e
].
splice
(
v
,
0
,
c
),
t
=
a
,
t
.
isFirstNode
=!
1
,
c
.
parentTId
=
a
.
parentTId
,
c
.
isFirstNode
=!
0
,
c
.
isLastNode
=!
1
):
a
.
isLastNode
&&
r
==
d
.
move
.
TYPE_NEXT
?(
j
[
e
].
splice
(
v
+
1
,
0
,
c
),
t
=
a
,
t
.
isLastNode
=!
1
,
c
.
parentTId
=
a
.
parentTId
,
c
.
isFirstNode
=!
1
,
c
.
isLastNode
=!
0
):(
r
==
d
.
move
.
TYPE_PREV
?
j
[
e
].
splice
(
v
,
0
,
c
):
j
[
e
].
splice
(
v
+
1
,
0
,
c
),
c
.
parentTId
=
a
.
parentTId
,
c
.
isFirstNode
=!
1
,
c
.
isLastNode
=!
1
);
m
.
fixPIdKeyValue
(
b
,
c
);
m
.
setSonNodeLevel
(
b
,
c
.
getParentNode
(),
c
);
f
.
setNodeLineIcos
(
b
,
c
);
f
.
repairNodeLevelClass
(
b
,
c
,
D
);
!
b
.
data
.
keep
.
parent
&&
g
[
e
].
length
<
1
?(
g
.
isParent
=!
1
,
g
.
open
=!
1
,
a
=
o
(
g
,
d
.
id
.
UL
,
b
),
r
=
o
(
g
,
d
.
id
.
SWITCH
,
b
),
e
=
o
(
g
,
d
.
id
.
ICON
,
b
),
f
.
replaceSwitchClass
(
g
,
r
,
d
.
folder
.
DOCU
),
f
.
replaceIcoClass
(
g
,
e
,
d
.
folder
.
DOCU
),
a
.
css
(
"
display
"
,
"
none
"
)):
x
&&
f
.
setNodeLineIcos
(
b
,
x
);
t
&&
f
.
setNodeLineIcos
(
b
,
t
);
b
.
check
&&
b
.
check
.
enable
&&
f
.
repairChkClass
&&
(
f
.
repairChkClass
(
b
,
g
),
f
.
repairParentChkClassWithSelf
(
b
,
g
),
g
!=
c
.
parent
&&
f
.
repairParentChkClassWithSelf
(
b
,
c
));
i
||
f
.
expandCollapseParentNode
(
b
,
c
.
getParentNode
(),
!
0
,
k
)}},
removeEditBtn
:
function
(
b
,
a
){
o
(
a
,
d
.
id
.
EDIT
,
b
).
unbind
().
remove
()}
,
removeRemoveBtn
:
function
(
b
,
a
){
o
(
a
,
d
.
id
.
REMOVE
,
b
).
unbind
().
remove
()},
removeTreeDom
:
function
(
b
,
a
){
a
.
isHover
=!
1
;
f
.
removeEditBtn
(
b
,
a
);
f
.
removeRemoveBtn
(
b
,
a
);
g
.
apply
(
b
.
view
.
removeHoverDom
,[
b
.
treeId
,
a
])},
repairNodeLevelClass
:
function
(
b
,
a
,
c
){
if
(
c
!==
a
.
level
){
var
f
=
o
(
a
,
b
),
g
=
o
(
a
,
d
.
id
.
A
,
b
),
b
=
o
(
a
,
d
.
id
.
UL
,
b
),
c
=
d
.
className
.
LEVEL
+
c
,
a
=
d
.
className
.
LEVEL
+
a
.
level
;
f
.
removeClass
(
c
);
f
.
addClass
(
a
);
g
.
removeClass
(
c
);
g
.
addClass
(
a
);
b
.
removeClass
(
c
);
b
.
addClass
(
a
)}},
selectNodes
:
function
(
b
,
a
){
for
(
var
c
=
0
,
d
=
a
.
length
;
c
<
d
;
c
++
)
f
.
selectNode
(
b
,
a
[
c
],
c
>
0
)}},
event
:{},
data
:{
setSonNodeLevel
:
function
(
b
,
a
,
c
){
if
(
c
){
var
d
=
b
.
data
.
key
.
children
;
c
.
level
=
a
?
a
.
level
+
1
:
0
;
if
(
c
[
d
])
for
(
var
a
=
0
,
f
=
c
[
d
].
length
;
a
<
f
;
a
++
)
c
[
d
][
a
]
&&
m
.
setSonNodeLevel
(
b
,
c
,
c
[
d
][
a
])}}}});
var
I
=
v
.
fn
.
zTree
,
g
=
I
.
_z
.
tools
,
d
=
I
.
consts
,
f
=
I
.
_z
.
view
,
m
=
I
.
_z
.
data
,
o
=
g
.
$
;
m
.
exSetting
({
edit
:{
enable
:
!
1
,
editNameSelectAll
:
!
1
,
showRemoveBtn
:
!
0
,
showRenameBtn
:
!
0
,
removeTitle
:
"
remove
"
,
renameTitle
:
"
rename
"
,
drag
:{
autoExpandTrigger
:
!
1
,
isCopy
:
!
0
,
isMove
:
!
0
,
prev
:
!
0
,
next
:
!
0
,
inner
:
!
0
,
minMoveSize
:
5
,
borderMax
:
10
,
borderMin
:
-
5
,
m
axShowNodeNum
:
5
,
autoOpenTime
:
500
}},
view
:{
addHoverDom
:
null
,
removeHoverDom
:
null
},
callback
:{
beforeDrag
:
null
,
beforeDragOpen
:
null
,
beforeDrop
:
null
,
beforeEditName
:
null
,
beforeRename
:
null
,
onDrag
:
null
,
onDragMove
:
null
,
onDrop
:
null
,
onRename
:
null
}});
m
.
addInitBind
(
function
(
b
){
var
a
=
b
.
treeObj
,
c
=
d
.
event
;
a
.
bind
(
c
.
RENAME
,
function
(
a
,
c
,
d
,
f
){
g
.
apply
(
b
.
callback
.
onRename
,[
a
,
c
,
d
,
f
])});
a
.
bind
(
c
.
DRAG
,
function
(
a
,
c
,
d
,
f
){
g
.
apply
(
b
.
callback
.
onDrag
,[
c
,
d
,
f
])});
a
.
bind
(
c
.
DRAGMOVE
,
function
(
a
,
c
,
d
,
f
){
g
.
apply
(
b
.
callback
.
onDragMove
,[
c
,
d
,
f
])});
a
.
bind
(
c
.
DROP
,
function
(
a
,
c
,
d
,
f
,
e
,
m
,
o
){
g
.
apply
(
b
.
callback
.
onDrop
,[
c
,
d
,
f
,
e
,
m
,
o
])})});
m
.
addInitUnBind
(
function
(
b
){
var
b
=
b
.
treeObj
,
a
=
d
.
event
;
b
.
unbind
(
a
.
RENAME
);
b
.
unbind
(
a
.
DRAG
);
b
.
unbind
(
a
.
DRAGMOVE
);
b
.
unbind
(
a
.
DROP
)});
m
.
addInitCache
(
function
(){});
m
.
addInitNode
(
function
(
b
,
a
,
c
){
if
(
c
)
c
.
isHover
=!
1
,
c
.
editNameFlag
=!
1
});
m
.
addInitProxy
(
function
(
b
){
var
a
=
b
.
target
,
c
=
m
.
getSetting
(
b
.
data
.
treeId
),
f
=
b
.
relatedTarget
,
k
=
""
,
i
=
null
,
j
=
""
,
e
=
null
,
o
=
null
;
if
(
g
.
eqs
(
b
.
type
,
"
mouseover
"
)){
if
(
o
=
g
.
getMDom
(
c
,
a
,[{
tagName
:
"
a
"
,
attrName
:
"
treeNode
"
+
d
.
id
.
A
}]))
k
=
g
.
getNodeMainDom
(
o
).
id
,
j
=
"
hoverOverNode
"
}
else
if
(
g
.
eqs
(
b
.
type
,
"
mouseout
"
))
o
=
g
.
getMDom
(
c
,
f
,[{
tagName
:
"
a
"
,
attrName
:
"
treeNode
"
+
d
.
id
.
A
}]),
o
||
(
k
=
"
remove
"
,
j
=
"
hoverOutNode
"
);
else
if
(
g
.
eqs
(
b
.
type
,
"
mousedown
"
)
&&
(
o
=
g
.
getMDom
(
c
,
a
,[{
tagName
:
"
a
"
,
attrName
:
"
treeNode
"
+
d
.
id
.
A
}])))
k
=
g
.
getNodeMainDom
(
o
).
id
,
j
=
"
mousedownNode
"
;
if
(
k
.
length
>
0
)
switch
(
i
=
m
.
getNodeCache
(
c
,
k
),
j
){
case
"
mousedownNode
"
:
e
=
x
.
onMousedownNode
;
break
;
case
"
hoverOverNode
"
:
e
=
x
.
onHoverOverNode
;
break
;
case
"
hoverOutNode
"
:
e
=
x
.
onHoverOutNode
}
return
{
stop
:
!
1
,
node
:
i
,
nodeEventType
:
j
,
nodeEventCallback
:
e
,
treeEventType
:
""
,
treeEventCallback
:
null
}});
m
.
addInitRoot
(
function
(
b
){
var
b
=
m
.
getRoot
(
b
),
a
=
m
.
getRoots
();
b
.
curEditNode
=
null
;
b
.
curEditInput
=
null
;
b
.
curHoverNode
=
null
;
b
.
dragFlag
=
0
;
b
.
dragNodeShowBefore
=
[];
b
.
dragMaskList
=
[];
a
.
showHoverDom
=!
0
});
m
.
addZTreeTools
(
function
(
b
,
a
){
a
.
cancelEditName
=
function
(
a
){
m
.
getRoot
(
this
.
setting
).
curEditNode
&&
f
.
cancelCurEditNode
(
this
.
setting
,
a
?
a
:
null
,
!
0
)};
a
.
copyNode
=
function
(
a
,
b
,
k
,
i
){
if
(
!
b
)
return
null
;
if
(
a
&&!
a
.
isParent
&&
this
.
setting
.
data
.
keep
.
leaf
&&
k
===
d
.
move
.
TYPE_INNER
)
return
null
;
var
j
=
this
,
e
=
g
.
clone
(
b
);
if
(
!
a
)
a
=
null
,
k
=
d
.
move
.
TYPE_INNER
;
k
==
d
.
move
.
TYPE_INNER
?(
b
=
function
(){
f
.
addNodes
(
j
.
setting
,
a
,
-
1
,[
e
],
i
)},
g
.
canAsync
(
this
.
setting
,
a
)?
f
.
asyncNode
(
this
.
setting
,
a
,
i
,
b
):
b
()):(
f
.
addNodes
(
this
.
setting
,
a
.
parentNode
,
-
1
,[
e
],
i
),
f
.
moveNode
(
this
.
setting
,
a
,
e
,
k
,
!
1
,
i
));
return
e
};
a
.
editName
=
function
(
a
){
a
&&
a
.
tId
&&
a
===
m
.
getNodeCache
(
this
.
setting
,
a
.
tId
)
&&
(
a
.
parentTId
&&
f
.
expandCollapseParentNode
(
this
.
setting
,
a
.
getParentNode
()
,
!
0
),
f
.
editNode
(
this
.
setting
,
a
))};
a
.
moveNode
=
function
(
a
,
b
,
k
,
i
){
function
j
(){
f
.
moveNode
(
e
.
setting
,
a
,
b
,
k
,
!
1
,
i
)}
if
(
!
b
)
return
b
;
if
(
a
&&!
a
.
isParent
&&
this
.
setting
.
data
.
keep
.
leaf
&&
k
===
d
.
move
.
TYPE_INNER
)
return
null
;
else
if
(
a
&&
(
b
.
parentTId
==
a
.
tId
&&
k
==
d
.
move
.
TYPE_INNER
||
o
(
b
,
this
.
setting
).
find
(
"
#
"
+
a
.
tId
).
length
>
0
))
return
null
;
else
a
||
(
a
=
null
);
var
e
=
this
;
g
.
canAsync
(
this
.
setting
,
a
)
&&
k
===
d
.
move
.
TYPE_INNER
?
f
.
asyncNode
(
this
.
setting
,
a
,
i
,
j
):
j
();
return
b
};
a
.
setEditable
=
function
(
a
){
this
.
setting
.
edit
.
enable
=
a
;
return
this
.
refresh
()}});
var
O
=
f
.
cancelPreSelectedNode
;
f
.
cancelPreSelectedNode
=
function
(
b
,
a
){
for
(
var
c
=
m
.
getRoot
(
b
).
curSelectedList
,
d
=
0
,
g
=
c
.
length
;
d
<
g
;
d
++
)
if
(
!
a
||
a
===
c
[
d
])
if
(
f
.
removeTreeDom
(
b
,
c
[
d
]),
a
)
break
;
O
&&
O
.
apply
(
f
,
arguments
)};
var
P
=
f
.
createNodes
;
f
.
createNodes
=
function
(
b
,
a
,
c
,
d
,
g
){
P
&&
P
.
apply
(
f
,
arguments
);
c
&&
f
.
repairParentChkClassWithSelf
&&
f
.
repairParentChkClassWithSelf
(
b
,
d
)};
var
W
=
f
.
makeNodeUrl
;
f
.
makeNodeUrl
=
function
(
b
,
a
){
return
b
.
edit
.
enable
?
null
:
W
.
apply
(
f
,
arguments
)};
var
L
=
f
.
removeNode
;
f
.
removeNode
=
function
(
b
,
a
){
var
c
=
m
.
getRoot
(
b
);
if
(
c
.
curEditNode
===
a
)
c
.
curEditNode
=
null
;
L
&&
L
.
apply
(
f
,
arguments
)};
var
Q
=
f
.
selectNode
;
f
.
selectNode
=
function
(
b
,
a
,
c
){
var
d
=
m
.
getRoot
(
b
);
if
(
m
.
isSelectedNode
(
b
,
a
)
&&
d
.
curEditNode
==
a
&&
a
.
editNameFlag
)
return
!
1
;
Q
&&
Q
.
apply
(
f
,
arguments
);
f
.
addHoverDom
(
b
,
a
);
return
!
0
};
var
V
=
g
.
uCanDo
;
g
.
uCanDo
=
function
(
b
,
a
){
var
c
=
m
.
getRoot
(
b
);
if
(
a
&&
(
g
.
eqs
(
a
.
type
,
"
mouseover
"
)
||
g
.
eqs
(
a
.
type
,
"
mouseout
"
)
||
g
.
eqs
(
a
.
type
,
"
mousedown
"
)
||
g
.
eqs
(
a
.
type
,
"
mouseup
"
)))
return
!
0
;
if
(
c
.
curEditNode
)
f
.
editNodeBlur
=!
1
,
c
.
curEditInput
.
focus
();
return
!
c
.
curEditNode
&&
(
V
?
V
.
apply
(
f
,
arguments
):
!
0
)}})(
jQuery
);
(
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
=
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
)
<
f
.
edit
.
drag
.
minMoveSize
&&
Math
.
abs
(
O
-
a
.
clientY
)
<
f
.
edit
.
drag
.
minMoveSize
)
return
!
0
;
var
b
,
c
,
g
,
j
;
L
.
css
(
"
cursor
"
,
"
pointer
"
);
if
(
m
.
dragFlag
==
0
){
if
(
k
.
apply
(
f
.
callback
.
beforeDrag
,[
f
.
treeId
,
n
],
!
0
)
==!
1
)
return
l
(
a
),
!
0
;
for
(
b
=
0
,
c
=
n
.
length
;
b
<
c
;
b
++
){
if
(
b
==
0
)
m
.
dragNodeShowBefore
=
[];
g
=
n
[
b
];
i
.
nodeIsParent
(
f
,
g
)
&&
g
.
open
?(
e
.
expandCollapseNode
(
f
,
g
,
!
g
.
open
),
m
.
dragNodeShowBefore
[
g
.
tId
]
=!
0
):
m
.
dragNodeShowBefore
[
g
.
tId
]
=!
1
}
m
.
dragFlag
=
1
;
y
.
showHoverDom
=!
1
;
k
.
showIfameMask
(
f
,
!
0
);
j
=!
0
;
var
p
=-
1
;
if
(
n
.
length
>
1
){
var
o
=
n
[
0
].
parentTId
?
i
.
nodeChildren
(
f
,
n
[
0
].
getParentNode
()):
i
.
getNodes
(
f
);
g
=
[];
for
(
b
=
0
,
c
=
o
.
length
;
b
<
c
;
b
++
)
if
(
m
.
dragNodeShowBefore
[
o
[
b
].
tId
]
!==
void
0
&&
(
j
&&
p
>-
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
(
"
<ul class='zTreeDragUL'></ul>
"
,
f
);
for
(
b
=
0
,
c
=
n
.
length
;
b
<
c
;
b
++
)
g
=
n
[
b
],
g
.
editNameFlag
=!
1
,
e
.
selectNode
(
f
,
g
,
b
>
0
),
e
.
removeTreeDom
(
f
,
g
),
b
>
f
.
edit
.
drag
.
maxShowNodeNum
-
1
||
(
j
=
q
(
"
<li id='
"
+
g
.
tId
+
"
_tmp'></li>
"
,
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
(
"
<li id='
"
+
g
.
tId
+
"
_moretmp'><a> ... </a></li>
"
,
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
(
"
<span class='tmpzTreeMove_arrow'></span>
"
,
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
));
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
=
c
<
f
.
edit
.
drag
.
borderMax
&&
c
>
f
.
edit
.
drag
.
borderMin
,
o
=
E
<
f
.
edit
.
drag
.
borderMax
&&
E
>
f
.
edit
.
drag
.
borderMin
,
F
=
r
<
f
.
edit
.
drag
.
borderMax
&&
r
>
f
.
edit
.
drag
.
borderMin
,
v
=
s
<
f
.
edit
.
drag
.
borderMax
&&
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
!=
h
.
treeId
;)
D
=
D
.
parentNode
;
var
R
=!
0
;
for
(
b
=
0
,
c
=
n
.
length
;
b
<
c
;
b
++
)
if
(
g
=
n
[
b
],
D
.
id
===
g
.
tId
){
R
=!
1
;
break
}
else
if
(
q
(
g
,
f
).
find
(
"
#
"
+
D
.
id
).
length
>
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
()
+
10
);
t
&&
t
!=
h
.
treeObj
&&
t
.
offset
().
left
<
h
.
treeObj
.
offset
().
left
&&
h
.
treeObj
.
scrollLeft
(
h
.
treeObj
.
scrollLeft
()
+
t
.
offset
().
left
-
h
.
treeObj
.
offset
().
left
)}
C
.
css
({
top
:
a
.
clientY
+
z
+
3
+
"
px
"
,
left
:
a
.
clientX
+
j
+
3
+
"
px
"
});
b
=
j
=
0
;
if
(
t
&&
t
.
attr
(
"
id
"
)
!=
h
.
treeId
){
var
A
=
w
==
null
?
null
:
i
.
getNodeCache
(
h
,
w
),
p
=
(
a
.
ctrlKey
||
a
.
metaKey
)
&&
f
.
edit
.
drag
.
isMove
&&
f
.
edit
.
drag
.
isCopy
||!
f
.
edit
.
drag
.
isMove
&&
f
.
edit
.
drag
.
isCopy
;
c
=!!
(
H
&&
w
===
H
.
tId
);
F
=!!
(
Q
&&
w
===
Q
.
tId
);
o
=
g
.
parentTId
&&
g
.
parentTId
==
w
;
g
=
(
p
||!
F
)
&&
k
.
apply
(
h
.
edit
.
drag
.
prev
,[
h
.
treeId
,
n
,
A
],
!!
h
.
edit
.
drag
.
prev
);
c
=
(
p
||!
c
)
&&
k
.
apply
(
h
.
edit
.
drag
.
next
,[
h
.
treeId
,
n
,
A
],
!!
h
.
edit
.
drag
.
next
);
p
=
(
p
||!
o
)
&&!
(
h
.
data
.
keep
.
leaf
&&!
i
.
nodeIsParent
(
f
,
A
))
&&
k
.
apply
(
h
.
edit
.
drag
.
inner
,[
h
.
treeId
,
n
,
A
],
!!
h
.
edit
.
drag
.
inner
);
o
=
function
(){
t
=
null
;
w
=
""
;
x
=
d
.
move
.
TYPE_INNER
;
u
.
css
({
display
:
"
none
"
});
if
(
window
.
zTreeMoveTimer
)
clearTimeout
(
window
.
zTreeMoveTimer
),
window
.
zTreeMoveTargetNodeTId
=
null
};
if
(
!
g
&&!
c
&&!
p
)
o
();
else
if
(
F
=
B
(
"
#
"
+
w
+
d
.
id
.
A
,
t
),
v
=
A
.
isLastNode
?
null
:
B
(
"
#
"
+
A
.
getNextNode
().
tId
+
d
.
id
.
A
,
t
.
next
()),
E
=
F
.
offset
().
top
,
r
=
F
.
offset
().
left
,
s
=
g
?
p
?
0.25
:
c
?
0.5
:
1
:
-
1
,
M
=
c
?
p
?
0.75
:
g
?
0.5
:
0
:
-
1
,
z
=
(
a
.
clientY
+
z
-
E
)
/
F
.
height
(),(
s
==
1
||
z
<=
s
&&
z
>=-
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
,
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
,
[
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
=
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
<
j
;
b
++
)
o
=
n
[
b
],
i
.
nodeIsParent
(
f
,
o
)
&&
m
.
dragNodeShowBefore
[
o
.
tId
]
&&
!
o
.
open
&&
(
e
.
expandCollapseNode
(
f
,
o
,
!
o
.
open
),
delete
m
.
dragNodeShowBefore
[
o
.
tId
]);
C
&&
C
.
remove
();
u
&&
u
.
remove
();
var
r
=
(
a
.
ctrlKey
||
a
.
metaKey
)
&&
f
.
edit
.
drag
.
isMove
&&
f
.
edit
.
drag
.
isCopy
||!
f
.
edit
.
drag
.
isMove
&&
f
.
edit
.
drag
.
isCopy
;
!
r
&&
t
&&
w
&&
n
[
0
].
parentTId
&&
w
==
n
[
0
].
parentTId
&&
x
==
d
.
move
.
TYPE_INNER
&&
(
t
=
null
);
if
(
t
){
var
p
=
w
==
null
?
null
:
i
.
getNodeCache
(
h
,
w
);
if
(
k
.
apply
(
f
.
callback
.
beforeDrop
,[
h
.
treeId
,
n
,
p
,
x
,
r
],
!
0
)
==!
1
)
e
.
selectNodes
(
v
,
n
);
else
{
var
s
=
r
?
k
.
clone
(
n
):
n
;
b
=
function
(){
if
(
J
){
if
(
!
r
)
for
(
var
b
=
0
,
c
=
n
.
length
;
b
<
c
;
b
++
)
e
.
removeNode
(
f
,
n
[
b
]);
x
==
d
.
move
.
TYPE_INNER
?
e
.
addNodes
(
h
,
p
,
-
1
,
s
):
e
.
addNodes
(
h
,
p
.
getParentNode
(),
x
==
d
.
move
.
TYPE_PREV
?
p
.
getIndex
():
p
.
getIndex
()
+
1
,
s
)}
else
if
(
r
&&
x
==
d
.
move
.
TYPE_INNER
)
e
.
addNodes
(
h
,
p
,
-
1
,
s
);
else
if
(
r
)
e
.
addNodes
(
h
,
p
.
getParentNode
(),
x
==
d
.
move
.
TYPE_PREV
?
p
.
getIndex
():
p
.
getIndex
()
+
1
,
s
);
else
if
(
x
!=
d
.
move
.
TYPE_NEXT
)
for
(
b
=
0
,
c
=
s
.
length
;
b
<
c
;
b
++
)
e
.
moveNode
(
h
,
p
,
s
[
b
],
x
,
!
1
);
else
for
(
b
=-
1
,
c
=
s
.
length
-
1
;
b
<
c
;
c
--
)
e
.
moveNode
(
h
,
p
,
s
[
c
],
x
,
!
1
);
e
.
selectNodes
(
h
,
s
);
b
=
q
(
s
[
0
],
f
).
get
(
0
);
e
.
scrollIntoView
(
f
,
b
);
f
.
treeObj
.
trigger
(
d
.
event
.
DROP
,
[
a
,
h
.
treeId
,
s
,
p
,
x
,
r
])};
x
==
d
.
move
.
TYPE_INNER
&&
k
.
canAsync
(
h
,
p
)?
e
.
asyncNode
(
h
,
p
,
!
1
,
b
):
b
()}}
else
e
.
selectNodes
(
v
,
n
),
f
.
treeObj
.
trigger
(
d
.
event
.
DROP
,[
a
,
f
.
treeId
,
n
,
null
,
null
,
null
])}}
function
g
(){
return
!
1
}
var
o
,
j
,
f
=
i
.
getSetting
(
a
.
data
.
treeId
),
m
=
i
.
getRoot
(
f
),
y
=
i
.
getRoots
();
if
(
a
.
button
==
2
||!
f
.
edit
.
enable
||!
f
.
edit
.
drag
.
isCopy
&&!
f
.
edit
.
drag
.
isMove
)
return
!
0
;
var
r
=
a
.
target
,
s
=
i
.
getRoot
(
f
).
curSelectedList
,
n
=
[];
if
(
i
.
isSelectedNode
(
f
,
b
))
for
(
o
=
0
,
j
=
s
.
length
;
o
<
j
;
o
++
){
if
(
s
[
o
].
editNameFlag
&&
k
.
eqs
(
r
.
tagName
,
"
input
"
)
&&
r
.
getAttribute
(
"
treeNode
"
+
d
.
id
.
INPUT
)
!==
null
)
return
!
0
;
n
.
push
(
s
[
o
]);
if
(
n
[
0
].
parentTId
!==
s
[
o
].
parentTId
){
n
=
[
b
];
break
}}
else
n
=
[
b
];
e
.
editNodeBlur
=!
0
;
e
.
cancelCurEditNode
(
f
);
var
G
=
B
(
f
.
treeObj
.
get
(
0
).
ownerDocument
),
L
=
B
(
f
.
treeObj
.
get
(
0
).
ownerDocument
.
body
),
C
,
u
,
t
,
J
=!
1
,
h
=
f
,
v
=
f
,
H
,
Q
,
S
=
null
,
T
=
null
,
w
=
null
,
x
=
d
.
move
.
TYPE_INNER
,
N
=
a
.
clientX
,
O
=
a
.
clientY
,
K
=
(
new
Date
).
getTime
();
k
.
uCanDo
(
f
)
&&
G
.
bind
(
"
mousemove
"
,
c
);
G
.
bind
(
"
mouseup
"
,
l
);
G
.
bind
(
"
selectstart
"
,
g
);
a
.
preventDefault
&&
a
.
preventDefault
();
return
!
0
}};
B
.
extend
(
!
0
,
B
.
fn
.
zTree
.
consts
,
I
);
B
.
extend
(
!
0
,
B
.
fn
.
zTree
.
_z
,{
tools
:{
getAbs
:
function
(
a
){
a
=
a
.
getBoundingClientRect
();
return
[
a
.
left
+
(
document
.
body
.
scrollLeft
+
document
.
documentElement
.
scrollLeft
),
a
.
top
+
(
document
.
body
.
scrollTop
+
document
.
documentElement
.
scrollTop
)]},
inputFocus
:
function
(
a
){
a
.
get
(
0
)
&&
(
a
.
focus
(),
k
.
setCursorPosition
(
a
.
get
(
0
),
a
.
val
().
length
))},
inputSelect
:
function
(
a
){
a
.
get
(
0
)
&&
(
a
.
focus
(),
a
.
select
())},
setCursorPosition
:
function
(
a
,
b
){
if
(
a
.
setSelectionRange
)
a
.
focus
(),
a
.
setSelectionRange
(
b
,
b
);
else
if
(
a
.
createTextRange
){
var
c
=
a
.
createTextRange
();
c
.
collapse
(
!
0
);
c
.
moveEnd
(
"
character
"
,
b
);
c
.
moveStart
(
"
character
"
,
b
);
c
.
select
()}},
showIfameMask
:
function
(
a
,
b
){
for
(
var
c
=
i
.
getRoot
(
a
);
c
.
dragMaskList
.
length
>
0
;)
c
.
dragMaskList
[
0
].
remove
(),
c
.
dragMaskList
.
shift
();
if
(
b
)
for
(
var
d
=
q
(
"
iframe
"
,
a
),
g
=
0
,
e
=
d
.
length
;
g
<
e
;
g
++
){
var
j
=
d
.
get
(
g
),
f
=
k
.
getAbs
(
j
),
j
=
q
(
"
<div id='zTreeMask_
"
+
g
+
"
' class='zTreeMask' style='top:
"
+
f
[
1
]
+
"
px; left:
"
+
f
[
0
]
+
"
px; width:
"
+
j
.
offsetWidth
+
"
px; height:
"
+
j
.
offsetHeight
+
"
px;'></div>
"
,
a
);
j
.
appendTo
(
q
(
"
body
"
,
a
));
c
.
dragMaskList
.
push
(
j
)}}},
view
:{
addEditBtn
:
function
(
a
,
b
){
if
(
!
(
b
.
editNameFlag
||
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
=
"
<span class='
"
+
d
.
className
.
BUTTON
+
"
edit' id='
"
+
b
.
tId
+
d
.
id
.
EDIT
+
"
' title='
"
+
k
.
apply
(
a
.
edit
.
renameTitle
,[
a
.
treeId
,
b
],
a
.
edit
.
renameTitle
)
+
"
' treeNode
"
+
d
.
id
.
EDIT
+
"
style='display:none;'></span>
"
;
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
,
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
=
"
<span class='
"
+
d
.
className
.
BUTTON
+
"
remove' id='
"
+
b
.
tId
+
d
.
id
.
REMOVE
+
"
' title='
"
+
k
.
apply
(
a
.
edit
.
removeTitle
,[
a
.
treeId
,
b
],
a
.
edit
.
removeTitle
)
+
"
' treeNode
"
+
d
.
id
.
REMOVE
+
"
style='display:none;'></span>
"
;
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
,[
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
);
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
(
"
<input type=text class='rename' id='
"
+
b
.
tId
+
d
.
id
.
INPUT
+
"
' treeNode
"
+
d
.
id
.
INPUT
+
"
>
"
);
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
;
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
=
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
,
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
<
s
;
j
++
)
if
(
v
[
j
].
tId
==
c
.
tId
){
y
=
j
;
break
}
y
>=
0
&&
v
.
splice
(
y
,
1
);
if
(
l
!=
d
.
move
.
TYPE_INNER
)
for
(
j
=
0
,
s
=
C
.
length
;
j
<
s
;
j
++
)
C
[
j
].
tId
==
b
.
tId
&&
(
r
=
j
);
if
(
l
==
d
.
move
.
TYPE_INNER
){
u
||
(
u
=
i
.
nodeChildren
(
a
,
b
,[]));
if
(
u
.
length
>
0
)
m
=
u
[
u
.
length
-
1
],
m
.
isLastNode
=!
1
;
u
.
splice
(
u
.
length
,
0
,
c
);
c
.
isLastNode
=!
0
;
c
.
isFirstNode
=
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
,
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
,
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
,
b
){
for
(
var
c
=
0
,
d
=
b
.
length
;
c
<
d
;
c
++
)
e
.
selectNode
(
a
,
b
[
c
],
c
>
0
)}},
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
<
g
;
b
++
)
d
[
b
]
&&
i
.
setSonNodeLevel
(
a
,
c
,
d
[
b
])}}}});
var
H
=
B
.
fn
.
zTree
,
k
=
H
.
_z
.
tools
,
d
=
H
.
consts
,
e
=
H
.
_z
.
view
,
i
=
H
.
_z
.
data
,
q
=
k
.
$
;
i
.
exSetting
({
edit
:{
enable
:
!
1
,
editNameSelectAll
:
!
1
,
showRemoveBtn
:
!
0
,
showRenameBtn
:
!
0
,
removeTitle
:
"
remove
"
,
renameTitle
:
"
rename
"
,
drag
:{
autoExpandTrigger
:
!
1
,
isCopy
:
!
0
,
isMove
:
!
0
,
prev
:
!
0
,
next
:
!
0
,
inner
:
!
0
,
m
inMoveSize
:
5
,
borderMax
:
10
,
borderMin
:
-
5
,
maxShowNodeNum
:
5
,
autoOpenTime
:
500
}},
view
:{
addHoverDom
:
null
,
removeHoverDom
:
null
},
callback
:{
beforeDrag
:
null
,
beforeDragOpen
:
null
,
beforeDrop
:
null
,
beforeEditName
:
null
,
beforeRename
:
null
,
onDrag
:
null
,
onDragMove
:
null
,
onDrop
:
null
,
onRename
:
null
}});
i
.
addInitBind
(
function
(
a
){
var
b
=
a
.
treeObj
,
c
=
d
.
event
;
b
.
bind
(
c
.
RENAME
,
function
(
b
,
c
,
d
,
e
){
k
.
apply
(
a
.
callback
.
onRename
,[
b
,
c
,
d
,
e
])});
b
.
bind
(
c
.
DRAG
,
function
(
b
,
c
,
d
,
e
){
k
.
apply
(
a
.
callback
.
onDrag
,[
c
,
d
,
e
])});
b
.
bind
(
c
.
DRAGMOVE
,
function
(
b
,
c
,
d
,
e
){
k
.
apply
(
a
.
callback
.
onDragMove
,[
c
,
d
,
e
])});
b
.
bind
(
c
.
DROP
,
function
(
b
,
c
,
d
,
e
,
f
,
i
,
q
){
k
.
apply
(
a
.
callback
.
onDrop
,[
c
,
d
,
e
,
f
,
i
,
q
])})});
i
.
addInitUnBind
(
function
(
a
){
var
a
=
a
.
treeObj
,
b
=
d
.
event
;
a
.
unbind
(
b
.
RENAME
);
a
.
unbind
(
b
.
DRAG
);
a
.
unbind
(
b
.
DRAGMOVE
);
a
.
unbind
(
b
.
DROP
)});
i
.
addInitCache
(
function
(){});
i
.
addInitNode
(
function
(
a
,
b
,
c
){
if
(
c
)
c
.
isHover
=!
1
,
c
.
editNameFlag
=!
1
});
i
.
addInitProxy
(
function
(
a
){
var
b
=
a
.
target
,
c
=
i
.
getSetting
(
a
.
data
.
treeId
),
e
=
a
.
relatedTarget
,
g
=
""
,
o
=
null
,
j
=
""
,
f
=
null
,
m
=
null
;
if
(
k
.
eqs
(
a
.
type
,
"
mouseover
"
)){
if
(
m
=
k
.
getMDom
(
c
,
b
,[{
tagName
:
"
a
"
,
attrName
:
"
treeNode
"
+
d
.
id
.
A
}]))
g
=
k
.
getNodeMainDom
(
m
).
id
,
j
=
"
hoverOverNode
"
}
else
if
(
k
.
eqs
(
a
.
type
,
"
mouseout
"
))
m
=
k
.
getMDom
(
c
,
e
,[{
tagName
:
"
a
"
,
attrName
:
"
treeNode
"
+
d
.
id
.
A
}]),
m
||
(
g
=
"
remove
"
,
j
=
"
hoverOutNode
"
);
else
if
(
k
.
eqs
(
a
.
type
,
"
mousedown
"
)
&&
(
m
=
k
.
getMDom
(
c
,
b
,[{
tagName
:
"
a
"
,
attrName
:
"
treeNode
"
+
d
.
id
.
A
}])))
g
=
k
.
getNodeMainDom
(
m
).
id
,
j
=
"
mousedownNode
"
;
if
(
g
.
length
>
0
)
switch
(
o
=
i
.
getNodeCache
(
c
,
g
),
j
){
case
"
mousedownNode
"
:
f
=
v
.
onMousedownNode
;
break
;
case
"
hoverOverNode
"
:
f
=
v
.
onHoverOverNode
;
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
,
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
,
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
=
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
<
g
;
d
++
)
if
(
!
b
||
b
===
c
[
d
])
if
(
e
.
removeTreeDom
(
a
,
c
[
d
]),
b
)
break
;
N
&&
N
.
apply
(
e
,
arguments
)};
var
O
=
e
.
createNodes
;
e
.
createNodes
=
function
(
a
,
b
,
c
,
d
,
g
){
O
&&
O
.
apply
(
e
,
arguments
);
c
&&
e
.
repairParentChkClassWithSelf
&&
e
.
repairParentChkClassWithSelf
(
a
,
d
)};
var
V
=
e
.
makeNodeUrl
;
e
.
makeNodeUrl
=
function
(
a
,
b
){
return
a
.
edit
.
enable
?
null
:
V
.
apply
(
e
,
arguments
)};
var
K
=
e
.
removeNode
;
e
.
removeNode
=
function
(
a
,
b
){
var
c
=
i
.
getRoot
(
a
);
if
(
c
.
curEditNode
===
b
)
c
.
curEditNode
=
null
;
K
&&
K
.
apply
(
e
,
arguments
)};
var
P
=
e
.
selectNode
;
e
.
selectNode
=
function
(
a
,
b
,
c
){
var
d
=
i
.
getRoot
(
a
);
if
(
i
.
isSelectedNode
(
a
,
b
)
&&
d
.
curEditNode
==
b
&&
b
.
editNameFlag
)
return
!
1
;
P
&&
P
.
apply
(
e
,
arguments
);
e
.
addHoverDom
(
a
,
b
);
return
!
0
};
var
U
=
k
.
uCanDo
;
k
.
uCanDo
=
function
(
a
,
b
){
var
c
=
i
.
getRoot
(
a
);
if
(
b
&&
(
k
.
eqs
(
b
.
type
,
"
mouseover
"
)
||
k
.
eqs
(
b
.
type
,
"
mouseout
"
)
||
k
.
eqs
(
b
.
type
,
"
mousedown
"
)
||
k
.
eqs
(
b
.
type
,
"
mouseup
"
)))
return
!
0
;
if
(
c
.
curEditNode
)
e
.
editNodeBlur
=!
1
,
c
.
curEditInput
.
focus
();
return
!
c
.
curEditNode
&&
(
U
?
U
.
apply
(
e
,
arguments
):
!
0
)}})(
jQuery
);
js/jquery.ztree.core.js
浏览文件 @
ad144cf5
/*
* JQuery zTree core v3.5.3
1
* JQuery zTree core v3.5.3
2
* http://treejs.cn/
*
* Copyright (c) 2010 Hunter.z
...
...
@@ -8,7 +8,7 @@
* http://www.opensource.org/licenses/mit-license.php
*
* email: hunter.z@263.net
* Date: 201
7-12-28
* Date: 201
8-01-06
*/
(
function
(
$
)
{
var
settings
=
{},
roots
=
{},
caches
=
{},
...
...
@@ -75,6 +75,7 @@
},
data
:
{
key
:
{
isParent
:
"
isParent
"
,
children
:
"
children
"
,
name
:
"
name
"
,
title
:
""
,
...
...
@@ -134,7 +135,7 @@
r
=
{};
data
.
setRoot
(
setting
,
r
);
}
r
[
setting
.
data
.
key
.
children
]
=
[]
;
data
.
nodeChildren
(
setting
,
r
,
[])
;
r
.
expandTriggerFlag
=
false
;
r
.
curSelectedList
=
[];
r
.
noSelection
=
true
;
...
...
@@ -249,7 +250,8 @@
node
=
data
.
getNodeCache
(
setting
,
tId
);
switch
(
nodeEventType
)
{
case
"
switchNode
"
:
if
(
!
node
.
isParent
)
{
var
isParent
=
data
.
nodeIsParent
(
setting
,
node
);
if
(
!
isParent
)
{
nodeEventType
=
""
;
}
else
if
(
tools
.
eqs
(
event
.
type
,
"
click
"
)
||
(
tools
.
eqs
(
event
.
type
,
"
dblclick
"
)
&&
tools
.
apply
(
setting
.
view
.
dblClickExpand
,
[
setting
.
treeId
,
node
],
setting
.
view
.
dblClickExpand
)))
{
...
...
@@ -292,20 +294,20 @@
_initNode
=
function
(
setting
,
level
,
n
,
parentNode
,
isFirstNode
,
isLastNode
,
openFlag
)
{
if
(
!
n
)
return
;
var
r
=
data
.
getRoot
(
setting
),
child
Key
=
setting
.
data
.
key
.
children
;
child
ren
=
data
.
nodeChildren
(
setting
,
n
)
;
n
.
level
=
level
;
n
.
tId
=
setting
.
treeId
+
"
_
"
+
(
++
r
.
zId
);
n
.
parentTId
=
parentNode
?
parentNode
.
tId
:
null
;
n
.
open
=
(
typeof
n
.
open
==
"
string
"
)
?
tools
.
eqs
(
n
.
open
,
"
true
"
)
:
!!
n
.
open
;
// if (n[childKey] && n[childKey].length > 0) {
if
(
tools
.
isArray
(
n
[
childKey
]
)
&&
!
(
n
.
isParent
===
false
||
(
typeof
n
.
isParent
==
"
string
"
&&
tools
.
eqs
(
n
.
isParent
,
"
false
"
))))
{
n
.
isParent
=
true
;
var
isParent
=
data
.
nodeIsParent
(
setting
,
n
);
if
(
tools
.
isArray
(
children
)
&&
!
(
isParent
===
false
||
(
typeof
isParent
==
"
string
"
&&
tools
.
eqs
(
isParent
,
"
false
"
))))
{
data
.
nodeIsParent
(
setting
,
n
,
true
)
;
n
.
zAsync
=
true
;
}
else
{
n
.
isParent
=
(
typeof
n
.
isParent
==
"
string
"
)
?
tools
.
eqs
(
n
.
isParent
,
"
true
"
)
:
!!
n
.
isParent
;
n
.
open
=
(
n
.
isParent
&&
!
setting
.
async
.
enable
)
?
n
.
open
:
false
;
n
.
zAsync
=
!
n
.
isParent
;
isParent
=
data
.
nodeIsParent
(
setting
,
n
,
isParent
)
;
n
.
open
=
(
isParent
&&
!
setting
.
async
.
enable
)
?
n
.
open
:
false
;
n
.
zAsync
=
!
isParent
;
}
n
.
isFirstNode
=
isFirstNode
;
n
.
isLastNode
=
isLastNode
;
...
...
@@ -383,28 +385,28 @@
_init
.
roots
.
push
(
initRoot
);
},
addNodesData
:
function
(
setting
,
parentNode
,
index
,
nodes
)
{
var
child
Key
=
setting
.
data
.
key
.
children
,
params
;
if
(
!
parentNode
[
childKey
]
)
{
parentNode
[
childKey
]
=
[]
;
var
child
ren
=
data
.
nodeChildren
(
setting
,
parentNode
)
,
params
;
if
(
!
children
)
{
children
=
data
.
nodeChildren
(
setting
,
parentNode
,
[])
;
index
=
-
1
;
}
else
if
(
index
>=
parentNode
[
childKey
]
.
length
)
{
}
else
if
(
index
>=
children
.
length
)
{
index
=
-
1
;
}
if
(
parentNode
[
childKey
]
.
length
>
0
&&
index
===
0
)
{
parentNode
[
childKey
]
[
0
].
isFirstNode
=
false
;
view
.
setNodeLineIcos
(
setting
,
parentNode
[
childKey
]
[
0
]);
}
else
if
(
parentNode
[
childKey
]
.
length
>
0
&&
index
<
0
)
{
parentNode
[
childKey
][
parentNode
[
childKey
]
.
length
-
1
].
isLastNode
=
false
;
view
.
setNodeLineIcos
(
setting
,
parentNode
[
childKey
][
parentNode
[
childKey
]
.
length
-
1
]);
}
parentNode
.
isParent
=
true
;
if
(
children
.
length
>
0
&&
index
===
0
)
{
children
[
0
].
isFirstNode
=
false
;
view
.
setNodeLineIcos
(
setting
,
children
[
0
]);
}
else
if
(
children
.
length
>
0
&&
index
<
0
)
{
children
[
children
.
length
-
1
].
isLastNode
=
false
;
view
.
setNodeLineIcos
(
setting
,
children
[
children
.
length
-
1
]);
}
data
.
nodeIsParent
(
setting
,
parentNode
,
true
)
;
if
(
index
<
0
)
{
parentNode
[
childKey
]
=
parentNode
[
childKey
].
concat
(
nodes
);
data
.
nodeChildren
(
setting
,
parentNode
,
children
.
concat
(
nodes
)
);
}
else
{
params
=
[
index
,
0
].
concat
(
nodes
);
parentNode
[
childKey
].
splice
.
apply
(
parentNode
[
childKey
]
,
params
);
children
.
splice
.
apply
(
children
,
params
);
}
},
addSelectedNode
:
function
(
setting
,
node
)
{
...
...
@@ -455,10 +457,10 @@
},
getNodeIndex
:
function
(
setting
,
node
)
{
if
(
!
node
)
return
null
;
var
childKey
=
setting
.
data
.
key
.
children
,
p
=
node
.
parentTId
?
node
.
getParentNode
()
:
data
.
getRoot
(
setting
);
for
(
var
i
=
0
,
l
=
p
[
childKey
]
.
length
-
1
;
i
<=
l
;
i
++
)
{
if
(
p
[
childKey
]
[
i
]
===
node
)
{
var
p
=
node
.
parentTId
?
node
.
getParentNode
()
:
data
.
getRoot
(
setting
)
,
children
=
data
.
nodeChildren
(
setting
,
p
);
for
(
var
i
=
0
,
l
=
children
.
length
-
1
;
i
<=
l
;
i
++
)
{
if
(
children
[
i
]
===
node
)
{
return
i
;
}
}
...
...
@@ -466,23 +468,24 @@
},
getNextNode
:
function
(
setting
,
node
)
{
if
(
!
node
)
return
null
;
var
childKey
=
setting
.
data
.
key
.
children
,
p
=
node
.
parentTId
?
node
.
getParentNode
()
:
data
.
getRoot
(
setting
);
for
(
var
i
=
0
,
l
=
p
[
childKey
]
.
length
-
1
;
i
<=
l
;
i
++
)
{
if
(
p
[
childKey
]
[
i
]
===
node
)
{
return
(
i
==
l
?
null
:
p
[
childKey
]
[
i
+
1
]);
var
p
=
node
.
parentTId
?
node
.
getParentNode
()
:
data
.
getRoot
(
setting
)
,
children
=
data
.
nodeChildren
(
setting
,
p
);
for
(
var
i
=
0
,
l
=
children
.
length
-
1
;
i
<=
l
;
i
++
)
{
if
(
children
[
i
]
===
node
)
{
return
(
i
==
l
?
null
:
children
[
i
+
1
]);
}
}
return
null
;
},
getNodeByParam
:
function
(
setting
,
nodes
,
key
,
value
)
{
if
(
!
nodes
||
!
key
)
return
null
;
var
childKey
=
setting
.
data
.
key
.
children
;
for
(
var
i
=
0
,
l
=
nodes
.
length
;
i
<
l
;
i
++
)
{
if
(
nodes
[
i
][
key
]
==
value
)
{
var
node
=
nodes
[
i
];
if
(
node
[
key
]
==
value
)
{
return
nodes
[
i
];
}
var
tmp
=
data
.
getNodeByParam
(
setting
,
nodes
[
i
][
childKey
],
key
,
value
);
var
children
=
data
.
nodeChildren
(
setting
,
node
);
var
tmp
=
data
.
getNodeByParam
(
setting
,
children
,
key
,
value
);
if
(
tmp
)
return
tmp
;
}
return
null
;
...
...
@@ -492,10 +495,6 @@
var
n
=
caches
[
setting
.
treeId
].
nodes
[
data
.
getNodeCacheId
(
tId
)];
return
n
?
n
:
null
;
},
getNodeName
:
function
(
setting
,
node
)
{
var
nameKey
=
setting
.
data
.
key
.
name
;
return
""
+
node
[
nameKey
];
},
getNodePath
:
function
(
setting
,
node
)
{
if
(
!
node
)
return
null
;
...
...
@@ -512,50 +511,49 @@
return
path
;
},
getNodeTitle
:
function
(
setting
,
node
)
{
var
t
=
setting
.
data
.
key
.
title
===
""
?
setting
.
data
.
key
.
name
:
setting
.
data
.
key
.
title
;
return
""
+
node
[
t
];
},
getNodes
:
function
(
setting
)
{
return
data
.
getRoot
(
setting
)[
setting
.
data
.
key
.
children
]
;
return
data
.
nodeChildren
(
setting
,
data
.
getRoot
(
setting
))
;
},
getNodesByParam
:
function
(
setting
,
nodes
,
key
,
value
)
{
if
(
!
nodes
||
!
key
)
return
[];
var
childKey
=
setting
.
data
.
key
.
children
,
result
=
[];
var
result
=
[];
for
(
var
i
=
0
,
l
=
nodes
.
length
;
i
<
l
;
i
++
)
{
if
(
nodes
[
i
][
key
]
==
value
)
{
result
.
push
(
nodes
[
i
]);
var
node
=
nodes
[
i
];
if
(
node
[
key
]
==
value
)
{
result
.
push
(
node
);
}
result
=
result
.
concat
(
data
.
getNodesByParam
(
setting
,
nodes
[
i
][
childKey
],
key
,
value
));
var
children
=
data
.
nodeChildren
(
setting
,
node
);
result
=
result
.
concat
(
data
.
getNodesByParam
(
setting
,
children
,
key
,
value
));
}
return
result
;
},
getNodesByParamFuzzy
:
function
(
setting
,
nodes
,
key
,
value
)
{
if
(
!
nodes
||
!
key
)
return
[];
var
childKey
=
setting
.
data
.
key
.
children
,
result
=
[];
var
result
=
[];
value
=
value
.
toLowerCase
();
for
(
var
i
=
0
,
l
=
nodes
.
length
;
i
<
l
;
i
++
)
{
if
(
typeof
nodes
[
i
][
key
]
==
"
string
"
&&
nodes
[
i
][
key
].
toLowerCase
().
indexOf
(
value
)
>
-
1
)
{
result
.
push
(
nodes
[
i
]);
var
node
=
nodes
[
i
];
if
(
typeof
node
[
key
]
==
"
string
"
&&
nodes
[
i
][
key
].
toLowerCase
().
indexOf
(
value
)
>
-
1
)
{
result
.
push
(
node
);
}
result
=
result
.
concat
(
data
.
getNodesByParamFuzzy
(
setting
,
nodes
[
i
][
childKey
],
key
,
value
));
var
children
=
data
.
nodeChildren
(
setting
,
node
);
result
=
result
.
concat
(
data
.
getNodesByParamFuzzy
(
setting
,
children
,
key
,
value
));
}
return
result
;
},
getNodesByFilter
:
function
(
setting
,
nodes
,
filter
,
isSingle
,
invokeParam
)
{
if
(
!
nodes
)
return
(
isSingle
?
null
:
[]);
var
childKey
=
setting
.
data
.
key
.
children
,
result
=
isSingle
?
null
:
[];
var
result
=
isSingle
?
null
:
[];
for
(
var
i
=
0
,
l
=
nodes
.
length
;
i
<
l
;
i
++
)
{
if
(
tools
.
apply
(
filter
,
[
nodes
[
i
],
invokeParam
],
false
))
{
var
node
=
nodes
[
i
];
if
(
tools
.
apply
(
filter
,
[
node
,
invokeParam
],
false
))
{
if
(
isSingle
)
{
return
node
s
[
i
]
;
return
node
;
}
result
.
push
(
node
s
[
i
]
);
result
.
push
(
node
);
}
var
tmpResult
=
data
.
getNodesByFilter
(
setting
,
nodes
[
i
][
childKey
],
filter
,
isSingle
,
invokeParam
);
var
children
=
data
.
nodeChildren
(
setting
,
node
);
var
tmpResult
=
data
.
getNodesByFilter
(
setting
,
children
,
filter
,
isSingle
,
invokeParam
);
if
(
isSingle
&&
!!
tmpResult
)
{
return
tmpResult
;
}
...
...
@@ -565,11 +563,11 @@
},
getPreNode
:
function
(
setting
,
node
)
{
if
(
!
node
)
return
null
;
var
childKey
=
setting
.
data
.
key
.
children
,
p
=
node
.
parentTId
?
node
.
getParentNode
()
:
data
.
getRoot
(
setting
);
for
(
var
i
=
0
,
l
=
p
[
childKey
]
.
length
;
i
<
l
;
i
++
)
{
if
(
p
[
childKey
]
[
i
]
===
node
)
{
return
(
i
==
0
?
null
:
p
[
childKey
]
[
i
-
1
]);
var
p
=
node
.
parentTId
?
node
.
getParentNode
()
:
data
.
getRoot
(
setting
)
,
children
=
data
.
nodeChildren
(
setting
,
p
);
for
(
var
i
=
0
,
l
=
children
.
length
;
i
<
l
;
i
++
)
{
if
(
children
[
i
]
===
node
)
{
return
(
i
==
0
?
null
:
children
[
i
-
1
]);
}
}
return
null
;
...
...
@@ -612,11 +610,46 @@
}
return
false
;
},
nodeChildren
:
function
(
setting
,
node
,
newChildren
)
{
if
(
!
node
)
{
return
null
;
}
var
key
=
setting
.
data
.
key
.
children
;
if
(
typeof
newChildren
!==
'
undefined
'
)
{
node
[
key
]
=
newChildren
;
}
return
node
[
key
];
},
nodeIsParent
:
function
(
setting
,
node
,
newIsParent
)
{
if
(
!
node
)
{
return
false
;
}
var
key
=
setting
.
data
.
key
.
isParent
;
if
(
typeof
newIsParent
!==
'
undefined
'
)
{
if
(
typeof
newIsParent
===
"
string
"
)
{
newIsParent
=
tools
.
eqs
(
checked
,
"
true
"
);
}
newIsParent
=
!!
newIsParent
;
node
[
key
]
=
newIsParent
;
}
return
node
[
key
];
},
nodeName
:
function
(
setting
,
node
,
newName
)
{
var
key
=
setting
.
data
.
key
.
name
;
if
(
typeof
newName
!==
'
undefined
'
)
{
node
[
key
]
=
newName
;
}
return
""
+
node
[
key
];
},
nodeTitle
:
function
(
setting
,
node
)
{
var
t
=
setting
.
data
.
key
.
title
===
""
?
setting
.
data
.
key
.
name
:
setting
.
data
.
key
.
title
;
return
""
+
node
[
t
];
},
removeNodeCache
:
function
(
setting
,
node
)
{
var
child
Key
=
setting
.
data
.
key
.
children
;
if
(
node
[
childKey
]
)
{
for
(
var
i
=
0
,
l
=
node
[
childKey
]
.
length
;
i
<
l
;
i
++
)
{
data
.
removeNodeCache
(
setting
,
node
[
childKey
]
[
i
]);
var
child
ren
=
data
.
nodeChildren
(
setting
,
node
)
;
if
(
children
)
{
for
(
var
i
=
0
,
l
=
children
.
length
;
i
<
l
;
i
++
)
{
data
.
removeNodeCache
(
setting
,
children
[
i
]);
}
}
data
.
getCache
(
setting
).
nodes
[
data
.
getNodeCacheId
(
node
.
tId
)]
=
null
;
...
...
@@ -645,26 +678,29 @@
},
transformToArrayFormat
:
function
(
setting
,
nodes
)
{
if
(
!
nodes
)
return
[];
var
childKey
=
setting
.
data
.
key
.
children
,
r
=
[];
var
r
=
[];
if
(
tools
.
isArray
(
nodes
))
{
for
(
var
i
=
0
,
l
=
nodes
.
length
;
i
<
l
;
i
++
)
{
r
.
push
(
nodes
[
i
]);
if
(
nodes
[
i
][
childKey
])
r
=
r
.
concat
(
data
.
transformToArrayFormat
(
setting
,
nodes
[
i
][
childKey
]));
var
node
=
nodes
[
i
];
_do
(
node
);
}
}
else
{
r
.
push
(
nodes
);
if
(
nodes
[
childKey
])
r
=
r
.
concat
(
data
.
transformToArrayFormat
(
setting
,
nodes
[
childKey
]));
_do
(
nodes
);
}
return
r
;
function
_do
(
_node
)
{
r
.
push
(
_node
);
var
children
=
data
.
nodeChildren
(
setting
,
_node
);
if
(
children
)
{
r
=
r
.
concat
(
data
.
transformToArrayFormat
(
setting
,
children
));
}
}
},
transformTozTreeFormat
:
function
(
setting
,
sNodes
)
{
var
i
,
l
,
key
=
setting
.
data
.
simpleData
.
idKey
,
parentKey
=
setting
.
data
.
simpleData
.
pIdKey
,
childKey
=
setting
.
data
.
key
.
children
;
parentKey
=
setting
.
data
.
simpleData
.
pIdKey
;
if
(
!
key
||
key
==
""
||
!
sNodes
)
return
[];
if
(
tools
.
isArray
(
sNodes
))
{
...
...
@@ -674,10 +710,13 @@
tmpMap
[
sNodes
[
i
][
key
]]
=
sNodes
[
i
];
}
for
(
i
=
0
,
l
=
sNodes
.
length
;
i
<
l
;
i
++
)
{
if
(
tmpMap
[
sNodes
[
i
][
parentKey
]]
&&
sNodes
[
i
][
key
]
!=
sNodes
[
i
][
parentKey
])
{
if
(
!
tmpMap
[
sNodes
[
i
][
parentKey
]][
childKey
])
tmpMap
[
sNodes
[
i
][
parentKey
]][
childKey
]
=
[];
tmpMap
[
sNodes
[
i
][
parentKey
]][
childKey
].
push
(
sNodes
[
i
]);
var
p
=
tmpMap
[
sNodes
[
i
][
parentKey
]];
if
(
p
&&
sNodes
[
i
][
key
]
!=
sNodes
[
i
][
parentKey
])
{
var
children
=
data
.
nodeChildren
(
setting
,
p
);
if
(
!
children
)
{
children
=
data
.
nodeChildren
(
setting
,
p
,
[]);
}
children
.
push
(
sNodes
[
i
]);
}
else
{
r
.
push
(
sNodes
[
i
]);
}
...
...
@@ -829,8 +868,9 @@
return
defaultValue
;
},
canAsync
:
function
(
setting
,
node
)
{
var
childKey
=
setting
.
data
.
key
.
children
;
return
(
setting
.
async
.
enable
&&
node
&&
node
.
isParent
&&
!
(
node
.
zAsync
||
(
node
[
childKey
]
&&
node
[
childKey
].
length
>
0
)));
var
children
=
data
.
nodeChildren
(
setting
,
node
);
var
isParent
=
data
.
nodeIsParent
(
setting
,
node
);
return
(
setting
.
async
.
enable
&&
node
&&
isParent
&&
!
(
node
.
zAsync
||
(
children
&&
children
.
length
>
0
)));
},
clone
:
function
(
obj
)
{
if
(
obj
===
null
)
return
null
;
...
...
@@ -888,7 +928,8 @@
//method of operate ztree dom
view
=
{
addNodes
:
function
(
setting
,
parentNode
,
index
,
newNodes
,
isSilent
)
{
if
(
setting
.
data
.
keep
.
leaf
&&
parentNode
&&
!
parentNode
.
isParent
)
{
var
isParent
=
data
.
nodeIsParent
(
setting
,
parentNode
);
if
(
setting
.
data
.
keep
.
leaf
&&
parentNode
&&
!
isParent
)
{
return
;
}
if
(
!
tools
.
isArray
(
newNodes
))
{
...
...
@@ -923,11 +964,10 @@
},
appendNodes
:
function
(
setting
,
level
,
nodes
,
parentNode
,
index
,
initFlag
,
openFlag
)
{
if
(
!
nodes
)
return
[];
var
html
=
[],
childKey
=
setting
.
data
.
key
.
children
;
var
html
=
[];
var
tmpPNode
=
(
parentNode
)
?
parentNode
:
data
.
getRoot
(
setting
),
tmpPChild
=
tmpPNode
[
childKey
]
,
tmpPChild
=
data
.
nodeChildren
(
setting
,
tmpPNode
)
,
isFirstNode
,
isLastNode
;
if
(
!
tmpPChild
||
index
>=
tmpPChild
.
length
-
nodes
.
length
)
{
...
...
@@ -942,14 +982,15 @@
data
.
initNode
(
setting
,
level
,
node
,
parentNode
,
isFirstNode
,
isLastNode
,
openFlag
);
data
.
addNodeCache
(
setting
,
node
);
}
var
isParent
=
data
.
nodeIsParent
(
setting
,
node
);
var
childHtml
=
[];
if
(
node
[
childKey
]
&&
node
[
childKey
].
length
>
0
)
{
var
children
=
data
.
nodeChildren
(
setting
,
node
);
if
(
children
&&
children
.
length
>
0
)
{
//make child html first, because checkType
childHtml
=
view
.
appendNodes
(
setting
,
level
+
1
,
node
[
childKey
]
,
node
,
-
1
,
initFlag
,
openFlag
&&
node
.
open
);
childHtml
=
view
.
appendNodes
(
setting
,
level
+
1
,
children
,
node
,
-
1
,
initFlag
,
openFlag
&&
node
.
open
);
}
if
(
openFlag
)
{
view
.
makeDOMNodeMainBefore
(
html
,
setting
,
node
);
view
.
makeDOMNodeLine
(
html
,
setting
,
node
);
data
.
getBeforeA
(
setting
,
node
,
html
);
...
...
@@ -959,7 +1000,7 @@
data
.
getInnerAfterA
(
setting
,
node
,
html
);
view
.
makeDOMNodeNameAfter
(
html
,
setting
,
node
);
data
.
getAfterA
(
setting
,
node
,
html
);
if
(
node
.
isParent
&&
node
.
open
)
{
if
(
isParent
&&
node
.
open
)
{
view
.
makeUlHtml
(
setting
,
node
,
html
,
childHtml
.
join
(
''
));
}
view
.
makeDOMNodeMainAfter
(
html
,
setting
,
node
);
...
...
@@ -979,14 +1020,15 @@
if
(
ulObj
.
get
(
0
))
{
ulObj
.
remove
();
}
var
child
Key
=
setting
.
data
.
key
.
children
,
childHtml
=
view
.
appendNodes
(
setting
,
node
.
level
+
1
,
node
[
childKey
]
,
node
,
-
1
,
false
,
true
);
var
child
ren
=
data
.
nodeChildren
(
setting
,
node
)
,
childHtml
=
view
.
appendNodes
(
setting
,
node
.
level
+
1
,
children
,
node
,
-
1
,
false
,
true
);
view
.
makeUlHtml
(
setting
,
node
,
html
,
childHtml
.
join
(
''
));
nObj
.
append
(
html
.
join
(
''
));
},
asyncNode
:
function
(
setting
,
node
,
isSilent
,
callback
)
{
var
i
,
l
;
if
(
node
&&
!
node
.
isParent
)
{
var
isParent
=
data
.
nodeIsParent
(
setting
,
node
);
if
(
node
&&
!
isParent
)
{
tools
.
apply
(
callback
);
return
false
;
}
else
if
(
node
&&
node
.
isAjaxing
)
{
...
...
@@ -1002,21 +1044,23 @@
}
var
tmpParam
=
{};
for
(
i
=
0
,
l
=
setting
.
async
.
autoParam
.
length
;
node
&&
i
<
l
;
i
++
)
{
var
pKey
=
setting
.
async
.
autoParam
[
i
].
split
(
"
=
"
),
spKey
=
pKey
;
var
autoParam
=
tools
.
apply
(
setting
.
async
.
autoParam
,
[
setting
.
treeId
,
node
],
setting
.
async
.
autoParam
);
for
(
i
=
0
,
l
=
autoParam
.
length
;
node
&&
i
<
l
;
i
++
)
{
var
pKey
=
autoParam
[
i
].
split
(
"
=
"
),
spKey
=
pKey
;
if
(
pKey
.
length
>
1
)
{
spKey
=
pKey
[
1
];
pKey
=
pKey
[
0
];
}
tmpParam
[
spKey
]
=
node
[
pKey
];
}
if
(
tools
.
isArray
(
setting
.
async
.
otherParam
))
{
for
(
i
=
0
,
l
=
setting
.
async
.
otherParam
.
length
;
i
<
l
;
i
+=
2
)
{
tmpParam
[
setting
.
async
.
otherParam
[
i
]]
=
setting
.
async
.
otherParam
[
i
+
1
];
var
otherParam
=
tools
.
apply
(
setting
.
async
.
otherParam
,
[
setting
.
treeId
,
node
],
setting
.
async
.
otherParam
);
if
(
tools
.
isArray
(
otherParam
))
{
for
(
i
=
0
,
l
=
otherParam
.
length
;
i
<
l
;
i
+=
2
)
{
tmpParam
[
otherParam
[
i
]]
=
otherParam
[
i
+
1
];
}
}
else
{
for
(
var
p
in
setting
.
async
.
otherParam
)
{
tmpParam
[
p
]
=
setting
.
async
.
otherParam
[
p
];
for
(
var
p
in
otherParam
)
{
tmpParam
[
p
]
=
otherParam
[
p
];
}
}
...
...
@@ -1102,8 +1146,7 @@
createNodes
:
function
(
setting
,
level
,
nodes
,
parentNode
,
index
)
{
if
(
!
nodes
||
nodes
.
length
==
0
)
return
;
var
root
=
data
.
getRoot
(
setting
),
childKey
=
setting
.
data
.
key
.
children
,
openFlag
=
!
parentNode
||
parentNode
.
open
||
!!
$$
(
parentNode
[
childKey
][
0
],
setting
).
get
(
0
);
openFlag
=
!
parentNode
||
parentNode
.
open
||
!!
$$
(
data
.
nodeChildren
(
setting
,
parentNode
)[
0
],
setting
).
get
(
0
);
root
.
createdNodes
=
[];
var
zTreeHtml
=
view
.
appendNodes
(
setting
,
level
,
nodes
,
parentNode
,
index
,
true
,
openFlag
),
parentObj
,
nextObj
;
...
...
@@ -1141,13 +1184,14 @@
delete
settings
[
setting
.
treeId
];
},
expandCollapseNode
:
function
(
setting
,
node
,
expandFlag
,
animateFlag
,
callback
)
{
var
root
=
data
.
getRoot
(
setting
),
childKey
=
setting
.
data
.
key
.
children
;
var
root
=
data
.
getRoot
(
setting
);
var
tmpCb
,
_callback
;
if
(
!
node
)
{
tools
.
apply
(
callback
,
[]);
return
;
}
var
children
=
data
.
nodeChildren
(
setting
,
node
);
var
isParent
=
data
.
nodeIsParent
(
setting
,
node
);
if
(
root
.
expandTriggerFlag
)
{
_callback
=
callback
;
tmpCb
=
function
()
{
...
...
@@ -1161,7 +1205,7 @@
callback
=
tmpCb
;
root
.
expandTriggerFlag
=
false
;
}
if
(
!
node
.
open
&&
node
.
isParent
&&
((
!
$$
(
node
,
consts
.
id
.
UL
,
setting
).
get
(
0
))
||
(
node
[
childKey
]
&&
node
[
childKey
].
length
>
0
&&
!
$$
(
node
[
childKey
]
[
0
],
setting
).
get
(
0
))))
{
if
(
!
node
.
open
&&
isParent
&&
((
!
$$
(
node
,
consts
.
id
.
UL
,
setting
).
get
(
0
))
||
(
children
&&
children
.
length
>
0
&&
!
$$
(
children
[
0
],
setting
).
get
(
0
))))
{
view
.
appendParentULDom
(
setting
,
node
);
view
.
createNodeCallback
(
setting
);
}
...
...
@@ -1173,7 +1217,7 @@
switchObj
=
$$
(
node
,
consts
.
id
.
SWITCH
,
setting
),
icoObj
=
$$
(
node
,
consts
.
id
.
ICON
,
setting
);
if
(
node
.
isParent
)
{
if
(
isParent
)
{
node
.
open
=
!
node
.
open
;
if
(
node
.
iconOpen
&&
node
.
iconClose
)
{
icoObj
.
attr
(
"
style
"
,
view
.
makeNodeIcoStyle
(
setting
,
node
));
...
...
@@ -1186,7 +1230,7 @@
ulObj
.
show
();
tools
.
apply
(
callback
,
[]);
}
else
{
if
(
node
[
childKey
]
&&
node
[
childKey
]
.
length
>
0
)
{
if
(
children
&&
children
.
length
>
0
)
{
ulObj
.
slideDown
(
setting
.
view
.
expandSpeed
,
callback
);
}
else
{
ulObj
.
show
();
...
...
@@ -1196,7 +1240,7 @@
}
else
{
view
.
replaceSwitchClass
(
node
,
switchObj
,
consts
.
folder
.
CLOSE
);
view
.
replaceIcoClass
(
node
,
icoObj
,
consts
.
folder
.
CLOSE
);
if
(
animateFlag
==
false
||
setting
.
view
.
expandSpeed
==
""
||
!
(
node
[
childKey
]
&&
node
[
childKey
]
.
length
>
0
))
{
if
(
animateFlag
==
false
||
setting
.
view
.
expandSpeed
==
""
||
!
(
children
&&
children
.
length
>
0
))
{
ulObj
.
hide
();
tools
.
apply
(
callback
,
[]);
}
else
{
...
...
@@ -1221,8 +1265,7 @@
},
expandCollapseSonNode
:
function
(
setting
,
node
,
expandFlag
,
animateFlag
,
callback
)
{
var
root
=
data
.
getRoot
(
setting
),
childKey
=
setting
.
data
.
key
.
children
,
treeNodes
=
(
node
)
?
node
[
childKey
]
:
root
[
childKey
],
treeNodes
=
(
node
)
?
data
.
nodeChildren
(
setting
,
node
)
:
data
.
nodeChildren
(
setting
,
root
),
selfAnimateSign
=
(
node
)
?
false
:
animateFlag
,
expandTriggerFlag
=
data
.
getRoot
(
setting
).
expandTriggerFlag
;
data
.
getRoot
(
setting
).
expandTriggerFlag
=
false
;
...
...
@@ -1248,7 +1291,7 @@
return
false
;
},
makeDOMNodeIcon
:
function
(
html
,
setting
,
node
)
{
var
nameStr
=
data
.
getN
odeName
(
setting
,
node
),
var
nameStr
=
data
.
n
odeName
(
setting
,
node
),
name
=
setting
.
view
.
nameIsHTML
?
nameStr
:
nameStr
.
replace
(
/&/g
,
'
&
'
).
replace
(
/</g
,
'
<
'
).
replace
(
/>/g
,
'
>
'
);
html
.
push
(
"
<span id='
"
,
node
.
tId
,
consts
.
id
.
ICON
,
"
' title='' treeNode
"
,
consts
.
id
.
ICON
,
"
class='
"
,
view
.
makeNodeIcoClass
(
setting
,
node
),
...
...
@@ -1269,7 +1312,7 @@
html
.
push
(
"
</a>
"
);
},
makeDOMNodeNameBefore
:
function
(
html
,
setting
,
node
)
{
var
title
=
data
.
getN
odeTitle
(
setting
,
node
),
var
title
=
data
.
n
odeTitle
(
setting
,
node
),
url
=
view
.
makeNodeUrl
(
setting
,
node
),
fontcss
=
view
.
makeNodeFontCss
(
setting
,
node
),
fontStyle
=
[];
...
...
@@ -1291,8 +1334,9 @@
makeNodeIcoClass
:
function
(
setting
,
node
)
{
var
icoCss
=
[
"
ico
"
];
if
(
!
node
.
isAjaxing
)
{
var
isParent
=
data
.
nodeIsParent
(
setting
,
node
);
icoCss
[
0
]
=
(
node
.
iconSkin
?
node
.
iconSkin
+
"
_
"
:
""
)
+
icoCss
[
0
];
if
(
node
.
isParent
)
{
if
(
isParent
)
{
icoCss
.
push
(
node
.
open
?
consts
.
folder
.
OPEN
:
consts
.
folder
.
CLOSE
);
}
else
{
icoCss
.
push
(
consts
.
folder
.
DOCU
);
...
...
@@ -1303,7 +1347,8 @@
makeNodeIcoStyle
:
function
(
setting
,
node
)
{
var
icoStyle
=
[];
if
(
!
node
.
isAjaxing
)
{
var
icon
=
(
node
.
isParent
&&
node
.
iconOpen
&&
node
.
iconClose
)
?
(
node
.
open
?
node
.
iconOpen
:
node
.
iconClose
)
:
node
[
setting
.
data
.
key
.
icon
];
var
isParent
=
data
.
nodeIsParent
(
setting
,
node
);
var
icon
=
(
isParent
&&
node
.
iconOpen
&&
node
.
iconClose
)
?
(
node
.
open
?
node
.
iconOpen
:
node
.
iconClose
)
:
node
[
setting
.
data
.
key
.
icon
];
if
(
icon
)
icoStyle
.
push
(
"
background:url(
"
,
icon
,
"
) 0 0 no-repeat;
"
);
if
(
setting
.
view
.
showIcon
==
false
||
!
tools
.
apply
(
setting
.
view
.
showIcon
,
[
setting
.
treeId
,
node
],
true
))
{
icoStyle
.
push
(
"
width:0px;height:0px;
"
);
...
...
@@ -1326,7 +1371,7 @@
}
else
{
lineClass
.
push
(
consts
.
line
.
NOLINE
);
}
if
(
node
.
isParent
)
{
if
(
data
.
nodeIsParent
(
setting
,
node
)
)
{
lineClass
.
push
(
node
.
open
?
consts
.
folder
.
OPEN
:
consts
.
folder
.
CLOSE
);
}
else
{
lineClass
.
push
(
consts
.
folder
.
DOCU
);
...
...
@@ -1353,18 +1398,17 @@
},
removeChildNodes
:
function
(
setting
,
node
)
{
if
(
!
node
)
return
;
var
childKey
=
setting
.
data
.
key
.
children
,
nodes
=
node
[
childKey
];
var
nodes
=
data
.
nodeChildren
(
setting
,
node
);
if
(
!
nodes
)
return
;
for
(
var
i
=
0
,
l
=
nodes
.
length
;
i
<
l
;
i
++
)
{
data
.
removeNodeCache
(
setting
,
nodes
[
i
]);
}
data
.
removeSelectedNode
(
setting
);
delete
node
[
childKey
];
delete
node
[
setting
.
data
.
key
.
children
];
if
(
!
setting
.
data
.
keep
.
parent
)
{
node
.
isParent
=
false
;
data
.
nodeIsParent
(
setting
,
node
,
false
)
;
node
.
open
=
false
;
var
tmp_switchObj
=
$$
(
node
,
consts
.
id
.
SWITCH
,
setting
),
tmp_icoObj
=
$$
(
node
,
consts
.
id
.
ICON
,
setting
);
...
...
@@ -1457,20 +1501,19 @@
dom
.
scrollIntoViewIfNeeded
();
},
setFirstNode
:
function
(
setting
,
parentNode
)
{
var
child
Key
=
setting
.
data
.
key
.
children
,
childLength
=
parentNode
[
childKey
].
length
;
if
(
child
L
ength
>
0
)
{
parentNode
[
childKey
]
[
0
].
isFirstNode
=
true
;
var
child
ren
=
data
.
nodeChildren
(
setting
,
parentNode
)
;
if
(
child
ren
.
l
ength
>
0
)
{
children
[
0
].
isFirstNode
=
true
;
}
},
setLastNode
:
function
(
setting
,
parentNode
)
{
var
child
Key
=
setting
.
data
.
key
.
children
,
childLength
=
parentNode
[
childKey
].
length
;
if
(
child
L
ength
>
0
)
{
parentNode
[
childKey
][
childL
ength
-
1
].
isLastNode
=
true
;
var
child
ren
=
data
.
nodeChildren
(
setting
,
parentNode
)
;
if
(
child
ren
.
l
ength
>
0
)
{
children
[
children
.
l
ength
-
1
].
isLastNode
=
true
;
}
},
removeNode
:
function
(
setting
,
node
)
{
var
root
=
data
.
getRoot
(
setting
),
childKey
=
setting
.
data
.
key
.
children
,
parentNode
=
(
node
.
parentTId
)
?
node
.
getParentNode
()
:
root
;
node
.
isFirstNode
=
false
;
...
...
@@ -1490,9 +1533,10 @@
data
.
removeNodeCache
(
setting
,
node
);
data
.
removeSelectedNode
(
setting
,
node
);
for
(
var
i
=
0
,
l
=
parentNode
[
childKey
].
length
;
i
<
l
;
i
++
)
{
if
(
parentNode
[
childKey
][
i
].
tId
==
node
.
tId
)
{
parentNode
[
childKey
].
splice
(
i
,
1
);
var
children
=
data
.
nodeChildren
(
setting
,
parentNode
);
for
(
var
i
=
0
,
l
=
children
.
length
;
i
<
l
;
i
++
)
{
if
(
children
[
i
].
tId
==
node
.
tId
)
{
children
.
splice
(
i
,
1
);
break
;
}
}
...
...
@@ -1500,14 +1544,14 @@
view
.
setLastNode
(
setting
,
parentNode
);
var
tmp_ulObj
,
tmp_switchObj
,
tmp_icoObj
,
childLength
=
parentNode
[
childKey
]
.
length
;
childLength
=
children
.
length
;
//repair nodes old parent
if
(
!
setting
.
data
.
keep
.
parent
&&
childLength
==
0
)
{
//old parentNode has no child nodes
parentNode
.
isParent
=
false
;
data
.
nodeIsParent
(
setting
,
parentNode
,
false
)
;
parentNode
.
open
=
false
;
delete
parentNode
[
childKey
];
delete
parentNode
[
setting
.
data
.
key
.
children
];
tmp_ulObj
=
$$
(
parentNode
,
consts
.
id
.
UL
,
setting
);
tmp_switchObj
=
$$
(
parentNode
,
consts
.
id
.
SWITCH
,
setting
);
tmp_icoObj
=
$$
(
parentNode
,
consts
.
id
.
ICON
,
setting
);
...
...
@@ -1517,17 +1561,17 @@
}
else
if
(
setting
.
view
.
showLine
&&
childLength
>
0
)
{
//old parentNode has child nodes
var
newLast
=
parentNode
[
childKey
]
[
childLength
-
1
];
var
newLast
=
children
[
childLength
-
1
];
tmp_ulObj
=
$$
(
newLast
,
consts
.
id
.
UL
,
setting
);
tmp_switchObj
=
$$
(
newLast
,
consts
.
id
.
SWITCH
,
setting
);
tmp_icoObj
=
$$
(
newLast
,
consts
.
id
.
ICON
,
setting
);
if
(
parentNode
==
root
)
{
if
(
parentNode
[
childKey
]
.
length
==
1
)
{
if
(
children
.
length
==
1
)
{
//node was root, and ztree has only one root after move node
view
.
replaceSwitchClass
(
newLast
,
tmp_switchObj
,
consts
.
line
.
ROOT
);
}
else
{
var
tmp_first_switchObj
=
$$
(
parentNode
[
childKey
]
[
0
],
consts
.
id
.
SWITCH
,
setting
);
view
.
replaceSwitchClass
(
parentNode
[
childKey
]
[
0
],
tmp_first_switchObj
,
consts
.
line
.
ROOTS
);
var
tmp_first_switchObj
=
$$
(
children
[
0
],
consts
.
id
.
SWITCH
,
setting
);
view
.
replaceSwitchClass
(
children
[
0
],
tmp_first_switchObj
,
consts
.
line
.
ROOTS
);
view
.
replaceSwitchClass
(
newLast
,
tmp_switchObj
,
consts
.
line
.
BOTTOM
);
}
}
else
{
...
...
@@ -1603,7 +1647,7 @@
ulObj
.
addClass
(
ulLine
);
}
switchObj
.
attr
(
"
class
"
,
view
.
makeNodeLineClass
(
setting
,
node
));
if
(
node
.
isParent
)
{
if
(
data
.
nodeIsParent
(
setting
,
node
)
)
{
switchObj
.
removeAttr
(
"
disabled
"
);
}
else
{
switchObj
.
attr
(
"
disabled
"
,
"
disabled
"
);
...
...
@@ -1613,13 +1657,13 @@
icoObj
.
attr
(
"
class
"
,
view
.
makeNodeIcoClass
(
setting
,
node
));
},
setNodeName
:
function
(
setting
,
node
)
{
var
title
=
data
.
getN
odeTitle
(
setting
,
node
),
var
title
=
data
.
n
odeTitle
(
setting
,
node
),
nObj
=
$$
(
node
,
consts
.
id
.
SPAN
,
setting
);
nObj
.
empty
();
if
(
setting
.
view
.
nameIsHTML
)
{
nObj
.
html
(
data
.
getN
odeName
(
setting
,
node
));
nObj
.
html
(
data
.
n
odeName
(
setting
,
node
));
}
else
{
nObj
.
text
(
data
.
getN
odeName
(
setting
,
node
));
nObj
.
text
(
data
.
n
odeName
(
setting
,
node
));
}
if
(
tools
.
apply
(
setting
.
view
.
showTitle
,
[
setting
.
treeId
,
node
],
setting
.
view
.
showTitle
))
{
var
aObj
=
$$
(
node
,
consts
.
id
.
A
,
setting
);
...
...
@@ -1686,13 +1730,12 @@
setting
.
view
.
expandSpeed
=
""
;
}
data
.
initRoot
(
setting
);
var
root
=
data
.
getRoot
(
setting
),
childKey
=
setting
.
data
.
key
.
children
;
var
root
=
data
.
getRoot
(
setting
);
zNodes
=
zNodes
?
tools
.
clone
(
tools
.
isArray
(
zNodes
)
?
zNodes
:
[
zNodes
])
:
[];
if
(
setting
.
data
.
simpleData
.
enable
)
{
root
[
childKey
]
=
data
.
transformTozTreeFormat
(
setting
,
zNodes
);
data
.
nodeChildren
(
setting
,
root
,
data
.
transformTozTreeFormat
(
setting
,
zNodes
)
);
}
else
{
root
[
childKey
]
=
zNodes
;
data
.
nodeChildren
(
setting
,
root
,
zNodes
)
;
}
data
.
initCache
(
setting
);
...
...
@@ -1705,7 +1748,8 @@
setting
:
setting
,
addNodes
:
function
(
parentNode
,
index
,
newNodes
,
isSilent
)
{
if
(
!
parentNode
)
parentNode
=
null
;
if
(
parentNode
&&
!
parentNode
.
isParent
&&
setting
.
data
.
keep
.
leaf
)
return
null
;
var
isParent
=
data
.
nodeIsParent
(
setting
,
parentNode
);
if
(
parentNode
&&
!
isParent
&&
setting
.
data
.
keep
.
leaf
)
return
null
;
var
i
=
parseInt
(
index
,
10
);
if
(
isNaN
(
i
))
{
...
...
@@ -1743,7 +1787,7 @@
return
expandFlag
;
},
expandNode
:
function
(
node
,
expandFlag
,
sonSign
,
focus
,
callbackFlag
)
{
if
(
!
node
||
!
node
.
isParent
)
return
null
;
if
(
!
node
||
!
data
.
nodeIsParent
(
setting
,
node
)
)
return
null
;
if
(
expandFlag
!==
true
&&
expandFlag
!==
false
)
{
expandFlag
=
!
node
.
open
;
}
...
...
@@ -1783,30 +1827,30 @@
},
getNodeByParam
:
function
(
key
,
value
,
parentNode
)
{
if
(
!
key
)
return
null
;
return
data
.
getNodeByParam
(
setting
,
parentNode
?
parentNode
[
setting
.
data
.
key
.
children
]
:
data
.
getNodes
(
setting
),
key
,
value
);
return
data
.
getNodeByParam
(
setting
,
parentNode
?
data
.
nodeChildren
(
setting
,
parentNode
)
:
data
.
getNodes
(
setting
),
key
,
value
);
},
getNodeByTId
:
function
(
tId
)
{
return
data
.
getNodeCache
(
setting
,
tId
);
},
getNodesByParam
:
function
(
key
,
value
,
parentNode
)
{
if
(
!
key
)
return
null
;
return
data
.
getNodesByParam
(
setting
,
parentNode
?
parentNode
[
setting
.
data
.
key
.
children
]
:
data
.
getNodes
(
setting
),
key
,
value
);
return
data
.
getNodesByParam
(
setting
,
parentNode
?
data
.
nodeChildren
(
setting
,
parentNode
)
:
data
.
getNodes
(
setting
),
key
,
value
);
},
getNodesByParamFuzzy
:
function
(
key
,
value
,
parentNode
)
{
if
(
!
key
)
return
null
;
return
data
.
getNodesByParamFuzzy
(
setting
,
parentNode
?
parentNode
[
setting
.
data
.
key
.
children
]
:
data
.
getNodes
(
setting
),
key
,
value
);
return
data
.
getNodesByParamFuzzy
(
setting
,
parentNode
?
data
.
nodeChildren
(
setting
,
parentNode
)
:
data
.
getNodes
(
setting
),
key
,
value
);
},
getNodesByFilter
:
function
(
filter
,
isSingle
,
parentNode
,
invokeParam
)
{
isSingle
=
!!
isSingle
;
if
(
!
filter
||
(
typeof
filter
!=
"
function
"
))
return
(
isSingle
?
null
:
[]);
return
data
.
getNodesByFilter
(
setting
,
parentNode
?
parentNode
[
setting
.
data
.
key
.
children
]
:
data
.
getNodes
(
setting
),
filter
,
isSingle
,
invokeParam
);
return
data
.
getNodesByFilter
(
setting
,
parentNode
?
data
.
nodeChildren
(
setting
,
parentNode
)
:
data
.
getNodes
(
setting
),
filter
,
isSingle
,
invokeParam
);
},
getNodeIndex
:
function
(
node
)
{
if
(
!
node
)
return
null
;
var
childKey
=
setting
.
data
.
key
.
children
,
parentNode
=
(
node
.
parentTId
)
?
node
.
getParentNode
()
:
data
.
getRoot
(
setting
);
for
(
var
i
=
0
,
l
=
parentNode
[
childKey
]
.
length
;
i
<
l
;
i
++
)
{
if
(
parentNode
[
childKey
]
[
i
]
==
node
)
return
i
;
var
parentNode
=
(
node
.
parentTId
)
?
node
.
getParentNode
()
:
data
.
getRoot
(
setting
);
var
children
=
data
.
nodeChildren
(
setting
,
parentNode
);
for
(
var
i
=
0
,
l
=
children
.
length
;
i
<
l
;
i
++
)
{
if
(
children
[
i
]
==
node
)
return
i
;
}
return
-
1
;
},
...
...
@@ -1839,12 +1883,12 @@
parentNode
=
data
.
getRoot
(
setting
);
}
if
(
reloadType
==
"
refresh
"
)
{
var
child
Key
=
this
.
setting
.
data
.
key
.
children
;
for
(
var
i
=
0
,
l
=
parentNode
[
childKey
]
?
parentNode
[
childKey
]
.
length
:
0
;
i
<
l
;
i
++
)
{
data
.
removeNodeCache
(
setting
,
parentNode
[
childKey
]
[
i
]);
var
child
ren
=
data
.
nodeChildren
(
setting
,
parentNode
)
;
for
(
var
i
=
0
,
l
=
children
?
children
.
length
:
0
;
i
<
l
;
i
++
)
{
data
.
removeNodeCache
(
setting
,
children
[
i
]);
}
data
.
removeSelectedNode
(
setting
);
parentNode
[
childKey
]
=
[]
;
data
.
nodeChildren
(
setting
,
parentNode
,
[])
;
if
(
isRoot
)
{
this
.
setting
.
treeObj
.
empty
();
}
else
{
...
...
@@ -1857,16 +1901,15 @@
refresh
:
function
()
{
this
.
setting
.
treeObj
.
empty
();
var
root
=
data
.
getRoot
(
setting
),
nodes
=
root
[
setting
.
data
.
key
.
children
]
nodes
=
data
.
nodeChildren
(
setting
,
root
);
data
.
initRoot
(
setting
);
root
[
setting
.
data
.
key
.
children
]
=
nodes
data
.
nodeChildren
(
setting
,
root
,
nodes
);
data
.
initCache
(
setting
);
view
.
createNodes
(
setting
,
0
,
root
[
setting
.
data
.
key
.
children
]
,
null
,
-
1
);
view
.
createNodes
(
setting
,
0
,
data
.
nodeChildren
(
setting
,
root
)
,
null
,
-
1
);
},
removeChildNodes
:
function
(
node
)
{
if
(
!
node
)
return
null
;
var
childKey
=
setting
.
data
.
key
.
children
,
nodes
=
node
[
childKey
];
var
nodes
=
data
.
nodeChildren
(
setting
,
node
);
view
.
removeChildNodes
(
setting
,
node
);
return
nodes
?
nodes
:
null
;
},
...
...
@@ -1919,12 +1962,12 @@
view
.
setNodeFontCss
(
setting
,
node
);
}
}
}
}
;
root
.
treeTools
=
zTreeTools
;
data
.
setZTreeTools
(
setting
,
zTreeTools
);
if
(
root
[
childKey
]
&&
root
[
childKey
]
.
length
>
0
)
{
view
.
createNodes
(
setting
,
0
,
root
[
childKey
]
,
null
,
-
1
);
var
children
=
data
.
nodeChildren
(
setting
,
root
);
if
(
children
&&
children
.
length
>
0
)
{
view
.
createNodes
(
setting
,
0
,
children
,
null
,
-
1
);
}
else
if
(
setting
.
async
.
enable
&&
setting
.
async
.
url
&&
setting
.
async
.
url
!==
''
)
{
view
.
asyncNode
(
setting
);
}
...
...
js/jquery.ztree.core.min.js
浏览文件 @
ad144cf5
/*
* JQuery zTree core v3.5.3
1
* JQuery zTree core v3.5.3
2
* http://treejs.cn/
*
* Copyright (c) 2010 Hunter.z
...
...
@@ -8,68 +8,69 @@
* http://www.opensource.org/licenses/mit-license.php
*
* email: hunter.z@263.net
* Date: 201
7-12-28
* Date: 201
8-01-06
*/
(
function
(
q
){
var
H
,
I
,
J
,
K
,
L
,
M
,
u
,
s
=
{},
v
=
{},
w
=
{},
N
=
{
treeId
:
""
,
treeObj
:
null
,
view
:{
addDiyDom
:
null
,
autoCancelSelected
:
!
0
,
dblClickExpand
:
!
0
,
expandSpeed
:
"
fast
"
,
fontCss
:{},
nameIsHTML
:
!
1
,
selectedMulti
:
!
0
,
showIcon
:
!
0
,
showLine
:
!
0
,
showTitle
:
!
0
,
txtSelectedEnable
:
!
1
},
data
:{
key
:{
children
:
"
children
"
,
name
:
"
name
"
,
title
:
""
,
url
:
"
url
"
,
icon
:
"
icon
"
},
simpleData
:{
enable
:
!
1
,
idKey
:
"
id
"
,
pIdKey
:
"
pId
"
,
rootPId
:
null
},
keep
:{
parent
:
!
1
,
leaf
:
!
1
}},
async
:{
enable
:
!
1
,
contentType
:
"
application/x-www-form-urlencoded
"
,
type
:
"
post
"
,
dataType
:
"
text
"
,
url
:
""
,
autoParam
:[],
otherParam
:[],
dataFilter
:
null
},
callback
:{
beforeAsync
:
null
,
beforeClick
:
null
,
beforeDblClick
:
null
,
beforeRightClick
:
null
,
beforeMouseDown
:
null
,
beforeMouseUp
:
null
,
beforeExpand
:
null
,
beforeCollapse
:
null
,
beforeRemove
:
null
,
onAsyncError
:
null
,
onAsyncSuccess
:
null
,
onNodeCreated
:
null
,
onClick
:
null
,
onDblClick
:
null
,
onRightClick
:
null
,
onMouseDown
:
null
,
onMouseUp
:
null
,
onExpand
:
null
,
onCollapse
:
null
,
onRemove
:
null
}},
x
=
[
function
(
b
){
var
a
=
b
.
treeObj
,
c
=
f
.
event
;
a
.
bind
(
c
.
NODECREATED
,
function
(
a
,
c
,
h
){
i
.
apply
(
b
.
callback
.
onNodeCreated
,
[
a
,
c
,
h
])});
a
.
bind
(
c
.
CLICK
,
function
(
a
,
c
,
h
,
k
,
g
){
i
.
apply
(
b
.
callback
.
onClick
,[
c
,
h
,
k
,
g
])});
a
.
bind
(
c
.
EXPAND
,
function
(
a
,
c
,
h
){
i
.
apply
(
b
.
callback
.
onExpand
,[
a
,
c
,
h
])});
a
.
bind
(
c
.
COLLAPSE
,
function
(
a
,
c
,
h
){
i
.
apply
(
b
.
callback
.
onCollapse
,[
a
,
c
,
h
])});
a
.
bind
(
c
.
ASYNC_SUCCESS
,
function
(
a
,
c
,
h
,
k
){
i
.
apply
(
b
.
callback
.
onAsyncSuccess
,[
a
,
c
,
h
,
k
])});
a
.
bind
(
c
.
ASYNC_ERROR
,
function
(
a
,
c
,
h
,
k
,
g
,
f
){
i
.
apply
(
b
.
callback
.
onAsyncError
,[
a
,
c
,
h
,
k
,
g
,
f
])});
a
.
bind
(
c
.
REMOVE
,
function
(
a
,
c
,
h
){
i
.
apply
(
b
.
callback
.
onRemove
,[
a
,
c
,
h
])});
a
.
bind
(
c
.
SELECTED
,
function
(
a
,
c
,
h
){
i
.
apply
(
b
.
callback
.
onSelected
,[
c
,
h
])});
a
.
bind
(
c
.
UNSELECTED
,
function
(
a
,
c
,
h
){
i
.
apply
(
b
.
callback
.
onUnSelected
,[
c
,
h
])})}],
y
=
[
function
(
b
){
var
a
=
f
.
event
;
b
.
treeObj
.
unbind
(
a
.
NODECREATED
).
unbind
(
a
.
CLICK
).
unbind
(
a
.
EXPAND
).
unbind
(
a
.
COLLAPSE
).
unbind
(
a
.
ASYNC_SUCCESS
).
unbind
(
a
.
ASYNC_ERROR
).
unbind
(
a
.
REMOVE
).
unbind
(
a
.
SELECTED
).
unbind
(
a
.
UNSELECTED
)}],
z
=
[
function
(
b
){
var
a
=
g
.
getCache
(
b
);
a
||
(
a
=
{},
g
.
setCache
(
b
,
a
));
a
.
nodes
=
[];
a
.
doms
=
[]}],
A
=
[
function
(
b
,
a
,
c
,
d
,
e
,
h
){
if
(
c
){
var
k
=
g
.
getRoot
(
b
),
f
=
b
.
data
.
key
.
children
;
c
.
level
=
a
;
c
.
tId
=
b
.
treeId
+
"
_
"
+
++
k
.
zId
;
c
.
parentTId
=
d
?
d
.
tId
:
null
;
c
.
open
=
typeof
c
.
open
==
"
string
"
?
i
.
eqs
(
c
.
open
,
"
true
"
):
!!
c
.
open
;
i
.
isArray
(
c
[
f
])
&&!
(
c
.
isParent
===!
1
||
typeof
c
.
isParent
==
"
string
"
&&
i
.
eqs
(
c
.
isParent
,
"
false
"
))?(
c
.
isParent
=!
0
,
c
.
zAsync
=!
0
):(
c
.
isParent
=
typeof
c
.
isParent
==
"
string
"
?
i
.
eqs
(
c
.
isParent
,
"
true
"
):
!!
c
.
isParent
,
c
.
open
=
c
.
isParent
&&!
b
.
async
.
enable
?
c
.
open
:
!
1
,
c
.
zAsync
=!
c
.
isParent
);
c
.
isFirstNode
=
e
;
c
.
isLastNode
=
h
;
c
.
getParentNode
=
function
(){
return
g
.
getNodeCache
(
b
,
c
.
parentTId
)};
c
.
getPreNode
=
function
(){
return
g
.
getPreNode
(
b
,
c
)};
c
.
getNextNode
=
function
(){
return
g
.
getNextNode
(
b
,
c
)};
c
.
getIndex
=
function
(){
return
g
.
getNodeIndex
(
b
,
c
)};
c
.
getPath
=
function
(){
return
g
.
getNodePath
(
b
,
c
)};
c
.
isAjaxing
=!
1
;
g
.
fixPIdKeyValue
(
b
,
c
)}}],
t
=
[
function
(
b
){
var
a
=
b
.
target
,
c
=
g
.
getSetting
(
b
.
data
.
treeId
),
d
=
""
,
e
=
null
,
h
=
""
,
k
=
""
,
o
=
null
,
j
=
null
,
l
=
null
;
if
(
i
.
eqs
(
b
.
type
,
"
mousedown
"
))
k
=
"
mousedown
"
;
else
if
(
i
.
eqs
(
b
.
type
,
"
mouseup
"
))
k
=
"
mouseup
"
;
else
if
(
i
.
eqs
(
b
.
type
,
"
contextmenu
"
))
k
=
"
contextmenu
"
;
else
if
(
i
.
eqs
(
b
.
type
,
"
click
"
))
if
(
i
.
eqs
(
a
.
tagName
,
"
span
"
)
&&
a
.
getAttribute
(
"
treeNode
"
+
f
.
id
.
SWITCH
)
!==
null
)
d
=
i
.
getNodeMainDom
(
a
).
id
,
h
=
"
switchNode
"
;
else
{
if
(
l
=
i
.
getMDom
(
c
,
a
,[{
tagName
:
"
a
"
,
attrName
:
"
treeNode
"
+
f
.
id
.
A
}]))
d
=
i
.
getNodeMainDom
(
l
).
id
,
h
=
"
clickNode
"
}
else
if
(
i
.
eqs
(
b
.
type
,
"
dblclick
"
)
&&
(
k
=
"
dblclick
"
,
l
=
i
.
getMDom
(
c
,
a
,[{
tagName
:
"
a
"
,
attrName
:
"
treeNode
"
+
f
.
id
.
A
}])))
d
=
i
.
getNodeMainDom
(
l
).
id
,
h
=
"
switchNode
"
;
if
(
k
.
length
>
0
&&
d
.
length
==
0
&&
(
l
=
i
.
getMDom
(
c
,
a
,[{
tagName
:
"
a
"
,
attrName
:
"
treeNode
"
+
f
.
id
.
A
}])))
d
=
i
.
getNodeMainDom
(
l
).
id
;
if
(
d
.
length
>
0
)
switch
(
e
=
g
.
getNodeCache
(
c
,
d
),
h
){
case
"
switchNode
"
:
e
.
isParent
?
i
.
eqs
(
b
.
type
,
"
click
"
)
||
i
.
eqs
(
b
.
type
,
"
dblclick
"
)
&&
i
.
apply
(
c
.
view
.
dblClickExpand
,[
c
.
treeId
,
e
],
c
.
view
.
dblClickExpand
)?
o
=
H
:
h
=
""
:
h
=
""
;
break
;
case
"
clickNode
"
:
o
=
I
}
switch
(
k
){
case
"
mousedown
"
:
j
=
J
;
break
;
case
"
mouseup
"
:
j
=
K
;
break
;
case
"
dblclick
"
:
j
=
L
;
break
;
case
"
contextmenu
"
:
j
=
M
}
return
{
stop
:
!
1
,
node
:
e
,
nodeEventType
:
h
,
nodeEventCallback
:
o
,
treeEventType
:
k
,
treeEventCallback
:
j
}}],
B
=
[
function
(
b
){
var
a
=
g
.
getRoot
(
b
);
a
||
(
a
=
{},
g
.
setRoot
(
b
,
a
));
a
[
b
.
data
.
key
.
children
]
=
[];
a
.
expandTriggerFlag
=!
1
;
a
.
curSelectedList
=
[];
a
.
noSelection
=
!
0
;
a
.
createdNodes
=
[];
a
.
zId
=
0
;
a
.
_ver
=
(
new
Date
).
getTime
()}],
C
=
[],
D
=
[],
E
=
[],
F
=
[],
G
=
[],
g
=
{
addNodeCache
:
function
(
b
,
a
){
g
.
getCache
(
b
).
nodes
[
g
.
getNodeCacheId
(
a
.
tId
)]
=
a
},
getNodeCacheId
:
function
(
b
){
return
b
.
substring
(
b
.
lastIndexOf
(
"
_
"
)
+
1
)},
addAfterA
:
function
(
b
){
D
.
push
(
b
)},
addBeforeA
:
function
(
b
){
C
.
push
(
b
)},
addInnerAfterA
:
function
(
b
){
F
.
push
(
b
)},
addInnerBeforeA
:
function
(
b
){
E
.
push
(
b
)},
addInitBind
:
function
(
b
){
x
.
push
(
b
)},
addInitUnBind
:
function
(
b
){
y
.
push
(
b
)},
addInitCache
:
function
(
b
){
z
.
push
(
b
)},
addInitNode
:
function
(
b
){
A
.
push
(
b
)},
addInitProxy
:
function
(
b
,
a
){
a
?
t
.
splice
(
0
,
0
,
b
):
t
.
push
(
b
)},
addInitRoot
:
function
(
b
){
B
.
push
(
b
)},
addNodesData
:
function
(
b
,
a
,
c
,
d
){
var
e
=
b
.
data
.
key
.
children
;
a
[
e
]?
c
>=
a
[
e
].
length
&&
(
c
=-
1
):(
a
[
e
]
=
[],
c
=-
1
);
if
(
a
[
e
].
length
>
0
&&
c
===
0
)
a
[
e
][
0
].
isFirstNode
=!
1
,
j
.
setNodeLineIcos
(
b
,
a
[
e
][
0
]);
else
if
(
a
[
e
].
length
>
0
&&
c
<
0
)
a
[
e
][
a
[
e
].
length
-
1
].
isLastNode
=!
1
,
j
.
setNodeLineIcos
(
b
,
a
[
e
][
a
[
e
].
length
-
1
]);
a
.
isParent
=!
0
;
c
<
0
?
a
[
e
]
=
a
[
e
].
concat
(
d
):(
b
=
[
c
,
0
].
concat
(
d
),
a
[
e
].
splice
.
apply
(
a
[
e
],
b
))},
addSelectedNode
:
function
(
b
,
a
){
var
c
=
g
.
getRoot
(
b
);
g
.
isSelectedNode
(
b
,
a
)
||
c
.
curSelectedList
.
push
(
a
)},
addCreatedNode
:
function
(
b
,
a
){(
b
.
callback
.
onNodeCreated
||
b
.
view
.
addDiyDom
)
&&
g
.
getRoot
(
b
).
createdNodes
.
push
(
a
)},
addZTreeTools
:
function
(
b
){
G
.
push
(
b
)},
exSetting
:
function
(
b
){
q
.
extend
(
!
0
,
N
,
b
)},
fixPIdKeyValue
:
function
(
b
,
a
){
b
.
data
.
simpleData
.
enable
&&
(
a
[
b
.
data
.
simpleData
.
pIdKey
]
=
a
.
parentTId
?
a
.
getParentNode
()[
b
.
data
.
simpleData
.
idKey
]:
b
.
data
.
simpleData
.
rootPId
)},
getAfterA
:
function
(
b
,
a
,
c
){
for
(
var
d
=
0
,
e
=
D
.
length
;
d
<
e
;
d
++
)
D
[
d
].
apply
(
this
,
arguments
)},
getBeforeA
:
function
(
b
,
a
,
c
){
for
(
var
d
=
0
,
e
=
C
.
length
;
d
<
e
;
d
++
)
C
[
d
].
apply
(
this
,
arguments
)},
getInnerAfterA
:
function
(
b
,
a
,
c
){
for
(
var
d
=
0
,
e
=
F
.
length
;
d
<
e
;
d
++
)
F
[
d
].
apply
(
this
,
arguments
)},
getInnerBeforeA
:
function
(
b
,
a
,
c
){
for
(
var
d
=
0
,
e
=
E
.
length
;
d
<
e
;
d
++
)
E
[
d
].
apply
(
this
,
arguments
)},
getCache
:
function
(
b
){
return
w
[
b
.
treeId
]},
getNodeIndex
:
function
(
b
,
a
){
if
(
!
a
)
return
null
;
for
(
var
c
=
b
.
data
.
key
.
children
,
d
=
a
.
parentTId
?
a
.
getParentNode
():
g
.
getRoot
(
b
),
e
=
0
,
h
=
d
[
c
].
length
-
1
;
e
<=
h
;
e
++
)
if
(
d
[
c
][
e
]
===
a
)
return
e
;
return
-
1
},
getNextNode
:
function
(
b
,
a
){
if
(
!
a
)
return
null
;
for
(
var
c
=
b
.
data
.
key
.
children
,
d
=
a
.
parentTId
?
a
.
getParentNode
():
g
.
getRoot
(
b
),
e
=
0
,
h
=
d
[
c
].
length
-
1
;
e
<=
h
;
e
++
)
if
(
d
[
c
][
e
]
===
a
)
return
e
==
h
?
null
:
d
[
c
][
e
+
1
];
return
null
},
getNodeByParam
:
function
(
b
,
a
,
c
,
d
){
if
(
!
a
||!
c
)
return
null
;
for
(
var
e
=
b
.
data
.
key
.
children
,
h
=
0
,
k
=
a
.
length
;
h
<
k
;
h
++
){
if
(
a
[
h
][
c
]
==
d
)
return
a
[
h
];
var
f
=
g
.
getNodeByParam
(
b
,
a
[
h
][
e
],
c
,
d
);
if
(
f
)
return
f
}
return
null
},
getNodeCache
:
function
(
b
,
a
){
if
(
!
a
)
return
null
;
var
c
=
w
[
b
.
treeId
].
nodes
[
g
.
getNodeCacheId
(
a
)];
return
c
?
c
:
null
},
getNodeName
:
function
(
b
,
a
){
return
""
+
a
[
b
.
data
.
key
.
name
]},
getNodePath
:
function
(
b
,
a
){
if
(
!
a
)
return
null
;
var
c
;(
c
=
a
.
parentTId
?
a
.
getParentNode
().
getPath
():[])
&&
c
.
push
(
a
);
return
c
},
getNodeTitle
:
function
(
b
,
a
){
return
""
+
a
[
b
.
data
.
key
.
title
===
""
?
b
.
data
.
key
.
name
:
b
.
data
.
key
.
title
]},
getNodes
:
function
(
b
){
return
g
.
getRoot
(
b
)[
b
.
data
.
key
.
children
]},
getNodesByParam
:
function
(
b
,
a
,
c
,
d
){
if
(
!
a
||!
c
)
return
[];
for
(
var
e
=
b
.
data
.
key
.
children
,
h
=
[],
k
=
0
,
f
=
a
.
length
;
k
<
f
;
k
++
)
a
[
k
][
c
]
==
d
&&
h
.
push
(
a
[
k
]),
h
=
h
.
concat
(
g
.
getNodesByParam
(
b
,
a
[
k
][
e
],
c
,
d
));
return
h
},
getNodesByParamFuzzy
:
function
(
b
,
a
,
c
,
d
){
if
(
!
a
||!
c
)
return
[];
for
(
var
e
=
b
.
data
.
key
.
children
,
h
=
[],
d
=
d
.
toLowerCase
(),
k
=
0
,
f
=
a
.
length
;
k
<
f
;
k
++
)
typeof
a
[
k
][
c
]
==
"
string
"
&&
a
[
k
][
c
].
toLowerCase
().
indexOf
(
d
)
>-
1
&&
h
.
push
(
a
[
k
]),
h
=
h
.
concat
(
g
.
getNodesByParamFuzzy
(
b
,
a
[
k
][
e
],
c
,
d
));
return
h
},
getNodesByFilter
:
function
(
b
,
a
,
c
,
d
,
e
){
if
(
!
a
)
return
d
?
null
:[];
for
(
var
h
=
b
.
data
.
key
.
children
,
k
=
d
?
null
:[],
f
=
0
,
j
=
a
.
length
;
f
<
j
;
f
++
){
if
(
i
.
apply
(
c
,[
a
[
f
],
e
],
!
1
)){
if
(
d
)
return
a
[
f
];
k
.
push
(
a
[
f
])}
var
l
=
g
.
getNodesByFilter
(
b
,
a
[
f
][
h
],
c
,
d
,
e
);
if
(
d
&&
l
)
return
l
;
k
=
d
?
l
:
k
.
concat
(
l
)}
return
k
},
getPreNode
:
function
(
b
,
a
){
if
(
!
a
)
return
null
;
for
(
var
c
=
b
.
data
.
key
.
children
,
d
=
a
.
parentTId
?
a
.
getParentNode
():
g
.
getRoot
(
b
),
e
=
0
,
h
=
d
[
c
].
length
;
e
<
h
;
e
++
)
if
(
d
[
c
][
e
]
===
a
)
return
e
==
0
?
null
:
d
[
c
][
e
-
1
];
return
null
},
getRoot
:
function
(
b
){
return
b
?
v
[
b
.
treeId
]:
null
},
getRoots
:
function
(){
return
v
},
getSetting
:
function
(
b
){
return
s
[
b
]},
getSettings
:
function
(){
return
s
},
getZTreeTools
:
function
(
b
){
return
(
b
=
this
.
getRoot
(
this
.
getSetting
(
b
)))?
b
.
treeTools
:
null
},
initCache
:
function
(
b
){
for
(
var
a
=
0
,
c
=
z
.
length
;
a
<
c
;
a
++
)
z
[
a
].
apply
(
this
,
arguments
)},
initNode
:
function
(
b
,
a
,
c
,
d
,
e
,
h
){
for
(
var
k
=
0
,
f
=
A
.
length
;
k
<
f
;
k
++
)
A
[
k
].
apply
(
this
,
arguments
)},
initRoot
:
function
(
b
){
for
(
var
a
=
0
,
c
=
B
.
length
;
a
<
c
;
a
++
)
B
[
a
].
apply
(
this
,
arguments
)},
isSelectedNode
:
function
(
b
,
a
){
for
(
var
c
=
g
.
getRoot
(
b
),
d
=
0
,
e
=
c
.
curSelectedList
.
length
;
d
<
e
;
d
++
)
if
(
a
===
c
.
curSelectedList
[
d
])
return
!
0
;
return
!
1
},
removeNodeCache
:
function
(
b
,
a
){
var
c
=
b
.
data
.
key
.
children
;
if
(
a
[
c
])
for
(
var
d
=
0
,
e
=
a
[
c
].
length
;
d
<
e
;
d
++
)
g
.
removeNodeCache
(
b
,
a
[
c
][
d
]);
g
.
getCache
(
b
).
nodes
[
g
.
getNodeCacheId
(
a
.
tId
)]
=
null
},
removeSelectedNode
:
function
(
b
,
a
){
for
(
var
c
=
g
.
getRoot
(
b
),
d
=
0
,
e
=
c
.
curSelectedList
.
length
;
d
<
e
;
d
++
)
if
(
a
===
c
.
curSelectedList
[
d
]
||!
g
.
getNodeCache
(
b
,
c
.
curSelectedList
[
d
].
tId
))
c
.
curSelectedList
.
splice
(
d
,
1
),
b
.
treeObj
.
trigger
(
f
.
event
.
UNSELECTED
,[
b
.
treeId
,
a
]),
d
--
,
e
--
},
setCache
:
function
(
b
,
a
){
w
[
b
.
treeId
]
=
a
},
setRoot
:
function
(
b
,
a
){
v
[
b
.
treeId
]
=
a
},
setZTreeTools
:
function
(
b
,
a
){
for
(
var
c
=
0
,
d
=
G
.
length
;
c
<
d
;
c
++
)
G
[
c
].
apply
(
this
,
arguments
)},
transformToArrayFormat
:
function
(
b
,
a
){
if
(
!
a
)
return
[];
var
c
=
b
.
data
.
key
.
children
,
d
=
[];
if
(
i
.
isArray
(
a
))
for
(
var
e
=
0
,
h
=
a
.
length
;
e
<
h
;
e
++
)
d
.
push
(
a
[
e
]),
a
[
e
][
c
]
&&
(
d
=
d
.
concat
(
g
.
transformToArrayFormat
(
b
,
a
[
e
][
c
])));
else
d
.
push
(
a
),
a
[
c
]
&&
(
d
=
d
.
concat
(
g
.
transformToArrayFormat
(
b
,
a
[
c
])));
return
d
},
transformTozTreeFormat
:
function
(
b
,
a
){
var
c
,
d
,
e
=
b
.
data
.
simpleData
.
idKey
,
h
=
b
.
data
.
simpleData
.
pIdKey
,
k
=
b
.
data
.
key
.
children
;
if
(
!
e
||
e
==
""
||!
a
)
return
[];
if
(
i
.
isArray
(
a
)){
var
f
=
[],
g
=
{};
for
(
c
=
0
,
d
=
a
.
length
;
c
<
d
;
c
++
)
g
[
a
[
c
][
e
]]
=
a
[
c
];
for
(
c
=
0
,
d
=
a
.
length
;
c
<
d
;
c
++
)
g
[
a
[
c
][
h
]]
&&
a
[
c
][
e
]
!=
a
[
c
][
h
]?(
g
[
a
[
c
][
h
]][
k
]
||
(
g
[
a
[
c
][
h
]][
k
]
=
[]),
g
[
a
[
c
][
h
]][
k
].
push
(
a
[
c
])):
f
.
push
(
a
[
c
]);
return
f
}
else
return
[
a
]}},
m
=
{
bindEvent
:
function
(
b
){
for
(
var
a
=
0
,
c
=
x
.
length
;
a
<
c
;
a
++
)
x
[
a
].
apply
(
this
,
arguments
)},
unbindEvent
:
function
(
b
){
for
(
var
a
=
0
,
c
=
y
.
length
;
a
<
c
;
a
++
)
y
[
a
].
apply
(
this
,
arguments
)},
bindTree
:
function
(
b
){
var
a
=
{
treeId
:
b
.
treeId
},
c
=
b
.
treeObj
;
b
.
view
.
txtSelectedEnable
||
c
.
bind
(
"
selectstart
"
,
u
).
css
({
"
-moz-user-select
"
:
"
-moz-none
"
});
c
.
bind
(
"
click
"
,
a
,
m
.
proxy
);
c
.
bind
(
"
dblclick
"
,
a
,
m
.
proxy
);
c
.
bind
(
"
mouseover
"
,
a
,
m
.
proxy
);
c
.
bind
(
"
mouseout
"
,
a
,
m
.
proxy
);
c
.
bind
(
"
mousedown
"
,
a
,
m
.
proxy
);
c
.
bind
(
"
mouseup
"
,
a
,
m
.
proxy
);
c
.
bind
(
"
contextmenu
"
,
a
,
m
.
proxy
)},
unbindTree
:
function
(
b
){
b
.
treeObj
.
unbind
(
"
selectstart
"
,
u
).
unbind
(
"
click
"
,
m
.
proxy
).
unbind
(
"
dblclick
"
,
m
.
proxy
).
unbind
(
"
mouseover
"
,
m
.
proxy
).
unbind
(
"
mouseout
"
,
m
.
proxy
).
unbind
(
"
mousedown
"
,
m
.
proxy
).
unbind
(
"
mouseup
"
,
m
.
proxy
).
unbind
(
"
contextmenu
"
,
m
.
proxy
)},
doProxy
:
function
(
b
){
for
(
var
a
=
[],
c
=
0
,
d
=
t
.
length
;
c
<
d
;
c
++
){
var
e
=
t
[
c
].
apply
(
this
,
arguments
);
a
.
push
(
e
);
if
(
e
.
stop
)
break
}
return
a
},
proxy
:
function
(
b
){
var
a
=
g
.
getSetting
(
b
.
data
.
treeId
);
if
(
!
i
.
uCanDo
(
a
,
b
))
return
!
0
;
for
(
var
a
=
m
.
doProxy
(
b
),
c
=!
0
,
d
=
0
,
e
=
a
.
length
;
d
<
e
;
d
++
){
var
h
=
a
[
d
];
h
.
nodeEventCallback
&&
(
c
=
h
.
nodeEventCallback
.
apply
(
h
,[
b
,
h
.
node
])
&&
c
);
h
.
treeEventCallback
&&
(
c
=
h
.
treeEventCallback
.
apply
(
h
,[
b
,
h
.
node
])
&&
c
)}
return
c
}};
H
=
function
(
b
,
a
){
var
c
=
g
.
getSetting
(
b
.
data
.
treeId
);
if
(
a
.
open
){
if
(
i
.
apply
(
c
.
callback
.
beforeCollapse
,[
c
.
treeId
,
a
],
!
0
)
==!
1
)
return
!
0
}
else
if
(
i
.
apply
(
c
.
callback
.
beforeExpand
,[
c
.
treeId
,
a
],
!
0
)
==!
1
)
return
!
0
;
g
.
getRoot
(
c
).
expandTriggerFlag
=!
0
;
j
.
switchNode
(
c
,
a
);
return
!
0
};
I
=
function
(
b
,
a
){
var
c
=
g
.
getSetting
(
b
.
data
.
treeId
),
d
=
c
.
view
.
autoCancelSelected
&&
(
b
.
ctrlKey
||
b
.
metaKey
)
&&
g
.
isSelectedNode
(
c
,
a
)?
0
:
c
.
view
.
autoCancelSelected
&&
(
b
.
ctrlKey
||
b
.
metaKey
)
&&
c
.
view
.
selectedMulti
?
2
:
1
;
if
(
i
.
apply
(
c
.
callback
.
beforeClick
,[
c
.
treeId
,
a
,
d
],
!
0
)
==!
1
)
return
!
0
;
d
===
0
?
j
.
cancelPreSelectedNode
(
c
,
a
):
j
.
selectNode
(
c
,
a
,
d
===
2
);
c
.
treeObj
.
trigger
(
f
.
event
.
CLICK
,[
b
,
c
.
treeId
,
a
,
d
]);
return
!
0
};
J
=
function
(
b
,
a
){
var
c
=
g
.
getSetting
(
b
.
data
.
treeId
);
i
.
apply
(
c
.
callback
.
beforeMouseDown
,[
c
.
treeId
,
a
],
!
0
)
&&
i
.
apply
(
c
.
callback
.
onMouseDown
,[
b
,
c
.
treeId
,
a
]);
return
!
0
};
K
=
function
(
b
,
a
){
var
c
=
g
.
getSetting
(
b
.
data
.
treeId
);
i
.
apply
(
c
.
callback
.
beforeMouseUp
,[
c
.
treeId
,
a
],
!
0
)
&&
i
.
apply
(
c
.
callback
.
onMouseUp
,[
b
,
c
.
treeId
,
a
]);
return
!
0
};
L
=
function
(
b
,
a
){
var
c
=
g
.
getSetting
(
b
.
data
.
treeId
);
i
.
apply
(
c
.
callback
.
beforeDblClick
,[
c
.
treeId
,
a
],
!
0
)
&&
i
.
apply
(
c
.
callback
.
onDblClick
,[
b
,
c
.
treeId
,
a
]);
return
!
0
};
M
=
function
(
b
,
a
){
var
c
=
g
.
getSetting
(
b
.
data
.
treeId
);
i
.
apply
(
c
.
callback
.
beforeRightClick
,[
c
.
treeId
,
a
],
!
0
)
&&
i
.
apply
(
c
.
callback
.
onRightClick
,[
b
,
c
.
treeId
,
a
]);
return
typeof
c
.
callback
.
onRightClick
!=
"
function
"
};
u
=
function
(
b
){
b
=
b
.
originalEvent
.
srcElement
.
nodeName
.
toLowerCase
();
return
b
===
"
input
"
||
b
===
"
textarea
"
};
var
i
=
{
apply
:
function
(
b
,
a
,
c
){
return
typeof
b
==
"
function
"
?
b
.
apply
(
O
,
a
?
a
:[]):
c
},
canAsync
:
function
(
b
,
a
){
var
c
=
b
.
data
.
key
.
children
;
return
b
.
async
.
enable
&&
a
&&
a
.
isParent
&&!
(
a
.
zAsync
||
a
[
c
]
&&
a
[
c
].
length
>
0
)},
clone
:
function
(
b
){
if
(
b
===
null
)
return
null
;
var
a
=
i
.
isArray
(
b
)?[]:{},
c
;
for
(
c
in
b
)
a
[
c
]
=
b
[
c
]
instanceof
Date
?
new
Date
(
b
[
c
].
getTime
()):
typeof
b
[
c
]
===
"
object
"
?
i
.
clone
(
b
[
c
]):
b
[
c
];
return
a
},
eqs
:
function
(
b
,
a
){
return
b
.
toLowerCase
()
===
a
.
toLowerCase
()},
isArray
:
function
(
b
){
return
Object
.
prototype
.
toString
.
apply
(
b
)
===
"
[object Array]
"
},
isElement
:
function
(
b
){
return
typeof
HTMLElement
===
"
object
"
?
b
instanceof
HTMLElement
:
b
&&
typeof
b
===
"
object
"
&&
b
!==
null
&&
b
.
nodeType
===
1
&&
typeof
b
.
nodeName
===
"
string
"
},
$
:
function
(
b
,
a
,
c
){
a
&&
typeof
a
!=
"
string
"
&&
(
c
=
a
,
a
=
""
);
return
typeof
b
==
"
string
"
?
q
(
b
,
c
?
c
.
treeObj
.
get
(
0
).
ownerDocument
:
null
):
q
(
"
#
"
+
b
.
tId
+
a
,
c
?
c
.
treeObj
:
null
)},
getMDom
:
function
(
b
,
a
,
c
){
if
(
!
a
)
return
null
;
for
(;
a
&&
a
.
id
!==
b
.
treeId
;){
for
(
var
d
=
0
,
e
=
c
.
length
;
a
.
tagName
&&
d
<
e
;
d
++
)
if
(
i
.
eqs
(
a
.
tagName
,
c
[
d
].
tagName
)
&&
a
.
getAttribute
(
c
[
d
].
attrName
)
!==
null
)
return
a
;
a
=
a
.
parentNode
}
return
null
},
getNodeMainDom
:
function
(
b
){
return
q
(
b
).
parent
(
"
li
"
).
get
(
0
)
||
q
(
b
).
parentsUntil
(
"
li
"
).
parent
().
get
(
0
)},
isChildOrSelf
:
function
(
b
,
a
){
return
q
(
b
).
closest
(
"
#
"
+
a
).
length
>
0
},
uCanDo
:
function
(){
return
!
0
}},
j
=
{
addNodes
:
function
(
b
,
a
,
c
,
d
,
e
){
if
(
!
b
.
data
.
keep
.
leaf
||!
a
||
a
.
isParent
)
if
(
i
.
isArray
(
d
)
||
(
d
=
[
d
]),
b
.
data
.
simpleData
.
enable
&&
(
d
=
g
.
transformTozTreeFormat
(
b
,
d
)),
a
){
var
h
=
l
(
a
,
f
.
id
.
SWITCH
,
b
),
k
=
l
(
a
,
f
.
id
.
ICON
,
b
),
o
=
l
(
a
,
f
.
id
.
UL
,
b
);
if
(
!
a
.
open
)
j
.
replaceSwitchClass
(
a
,
h
,
f
.
folder
.
CLOSE
),
j
.
replaceIcoClass
(
a
,
k
,
f
.
folder
.
CLOSE
),
a
.
open
=!
1
,
o
.
css
({
display
:
"
none
"
});
g
.
addNodesData
(
b
,
a
,
c
,
d
);
j
.
createNodes
(
b
,
a
.
level
+
1
,
d
,
a
,
c
);
e
||
j
.
expandCollapseParentNode
(
b
,
a
,
!
0
)}
else
g
.
addNodesData
(
b
,
g
.
getRoot
(
b
),
c
,
d
),
j
.
createNodes
(
b
,
0
,
d
,
null
,
c
)},
appendNodes
:
function
(
b
,
a
,
c
,
d
,
e
,
h
,
k
){
if
(
!
c
)
return
[];
var
f
=
[],
i
=
b
.
data
.
key
.
children
,
l
=
(
d
?
d
:
g
.
getRoot
(
b
))[
i
],
r
,
P
;
if
(
!
l
||
e
>=
l
.
length
-
c
.
length
)
e
=-
1
;
for
(
var
m
=
0
,
q
=
c
.
length
;
m
<
q
;
m
++
){
var
n
=
c
[
m
];
h
&&
(
r
=
(
e
===
0
||
l
.
length
==
c
.
length
)
&&
m
==
0
,
P
=
e
<
0
&&
m
==
c
.
length
-
1
,
g
.
initNode
(
b
,
a
,
n
,
d
,
r
,
P
,
k
),
g
.
addNodeCache
(
b
,
n
));
r
=
[];
n
[
i
]
&&
n
[
i
].
length
>
0
&&
(
r
=
j
.
appendNodes
(
b
,
a
+
1
,
n
[
i
],
n
,
-
1
,
h
,
k
&&
n
.
open
));
k
&&
(
j
.
makeDOMNodeMainBefore
(
f
,
b
,
n
),
j
.
makeDOMNodeLine
(
f
,
b
,
n
),
g
.
getBeforeA
(
b
,
n
,
f
),
j
.
makeDOMNodeNameBefore
(
f
,
b
,
n
),
g
.
getInnerBeforeA
(
b
,
n
,
f
),
j
.
makeDOMNodeIcon
(
f
,
b
,
n
),
g
.
getInnerAfterA
(
b
,
n
,
f
),
j
.
makeDOMNodeNameAfter
(
f
,
b
,
n
),
g
.
getAfterA
(
b
,
n
,
f
),
n
.
isParent
&&
n
.
open
&&
j
.
makeUlHtml
(
b
,
n
,
f
,
r
.
join
(
""
)),
j
.
makeDOMNodeMainAfter
(
f
,
b
,
n
),
g
.
addCreatedNode
(
b
,
n
))}
return
f
},
appendParentULDom
:
function
(
b
,
a
){
var
c
=
[],
d
=
l
(
a
,
b
);
!
d
.
get
(
0
)
&&
a
.
parentTId
&&
(
j
.
appendParentULDom
(
b
,
a
.
getParentNode
()),
d
=
l
(
a
,
b
));
var
e
=
l
(
a
,
f
.
id
.
UL
,
b
);
e
.
get
(
0
)
&&
e
.
remove
();
e
=
j
.
appendNodes
(
b
,
a
.
level
+
1
,
a
[
b
.
data
.
key
.
children
],
a
,
-
1
,
!
1
,
!
0
);
j
.
makeUlHtml
(
b
,
a
,
c
,
e
.
join
(
""
));
d
.
append
(
c
.
join
(
""
))},
asyncNode
:
function
(
b
,
a
,
c
,
d
){
var
e
,
h
;
if
(
a
&&!
a
.
isParent
)
return
i
.
apply
(
d
),
!
1
;
else
if
(
a
&&
a
.
isAjaxing
)
return
!
1
;
else
if
(
i
.
apply
(
b
.
callback
.
beforeAsync
,[
b
.
treeId
,
a
],
!
0
)
==!
1
)
return
i
.
apply
(
d
),
!
1
;
if
(
a
)
a
.
isAjaxing
=
!
0
,
l
(
a
,
f
.
id
.
ICON
,
b
).
attr
({
style
:
""
,
"
class
"
:
f
.
className
.
BUTTON
+
"
"
+
f
.
className
.
ICO_LOADING
});
var
k
=
{};
for
(
e
=
0
,
h
=
b
.
async
.
autoParam
.
length
;
a
&&
e
<
h
;
e
++
){
var
o
=
b
.
async
.
autoParam
[
e
].
split
(
"
=
"
),
p
=
o
;
o
.
length
>
1
&&
(
p
=
o
[
1
],
o
=
o
[
0
]);
k
[
p
]
=
a
[
o
]}
if
(
i
.
isArray
(
b
.
async
.
otherParam
))
for
(
e
=
0
,
h
=
b
.
async
.
otherParam
.
length
;
e
<
h
;
e
+=
2
)
k
[
b
.
async
.
otherParam
[
e
]]
=
b
.
async
.
otherParam
[
e
+
1
];
else
for
(
var
m
in
b
.
async
.
otherParam
)
k
[
m
]
=
b
.
async
.
otherParam
[
m
];
var
r
=
g
.
getRoot
(
b
).
_ver
;
q
.
ajax
({
contentType
:
b
.
async
.
contentType
,
cache
:
!
1
,
type
:
b
.
async
.
type
,
url
:
i
.
apply
(
b
.
async
.
url
,[
b
.
treeId
,
a
],
b
.
async
.
url
),
data
:
b
.
async
.
contentType
.
indexOf
(
"
application/json
"
)
>-
1
?
JSON
.
stringify
(
k
):
k
,
dataType
:
b
.
async
.
dataType
,
success
:
function
(
h
){
if
(
r
==
g
.
getRoot
(
b
).
_ver
){
var
e
=
[];
try
{
e
=!
h
||
h
.
length
==
0
?[]:
typeof
h
==
"
string
"
?
eval
(
"
(
"
+
h
+
"
)
"
):
h
}
catch
(
k
){
e
=
h
}
if
(
a
)
a
.
isAjaxing
=
null
,
a
.
zAsync
=!
0
;
j
.
setNodeLineIcos
(
b
,
a
);
e
&&
e
!==
""
?(
e
=
i
.
apply
(
b
.
async
.
dataFilter
,[
b
.
treeId
,
a
,
e
],
e
),
j
.
addNodes
(
b
,
a
,
-
1
,
e
?
i
.
clone
(
e
):[],
!!
c
)):
j
.
addNodes
(
b
,
a
,
-
1
,[],
!!
c
);
b
.
treeObj
.
trigger
(
f
.
event
.
ASYNC_SUCCESS
,
[
b
.
treeId
,
a
,
h
]);
i
.
apply
(
d
)}},
error
:
function
(
c
,
d
,
h
){
if
(
r
==
g
.
getRoot
(
b
).
_ver
){
if
(
a
)
a
.
isAjaxing
=
null
;
j
.
setNodeLineIcos
(
b
,
a
);
b
.
treeObj
.
trigger
(
f
.
event
.
ASYNC_ERROR
,[
b
.
treeId
,
a
,
c
,
d
,
h
])}}});
return
!
0
},
cancelPreSelectedNode
:
function
(
b
,
a
,
c
){
var
d
=
g
.
getRoot
(
b
).
curSelectedList
,
e
,
h
;
for
(
e
=
d
.
length
-
1
;
e
>=
0
;
e
--
)
if
(
h
=
d
[
e
],
a
===
h
||!
a
&&
(
!
c
||
c
!==
h
))
if
(
l
(
h
,
f
.
id
.
A
,
b
).
removeClass
(
f
.
node
.
CURSELECTED
),
a
){
g
.
removeSelectedNode
(
b
,
a
);
break
}
else
d
.
splice
(
e
,
1
),
b
.
treeObj
.
trigger
(
f
.
event
.
UNSELECTED
,[
b
.
treeId
,
h
])},
createNodeCallback
:
function
(
b
){
if
(
b
.
callback
.
onNodeCreated
||
b
.
view
.
addDiyDom
)
for
(
var
a
=
g
.
getRoot
(
b
);
a
.
createdNodes
.
length
>
0
;){
var
c
=
a
.
createdNodes
.
shift
();
i
.
apply
(
b
.
view
.
addDiyDom
,[
b
.
treeId
,
c
]);
b
.
callback
.
onNodeCreated
&&
b
.
treeObj
.
trigger
(
f
.
event
.
NODECREATED
,[
b
.
treeId
,
c
])}},
createNodes
:
function
(
b
,
a
,
c
,
d
,
e
){
if
(
c
&&
c
.
length
!=
0
){
var
h
=
g
.
getRoot
(
b
),
k
=
b
.
data
.
key
.
children
,
k
=!
d
||
d
.
open
||!!
l
(
d
[
k
][
0
],
b
).
get
(
0
);
h
.
createdNodes
=
[];
var
a
=
j
.
appendNodes
(
b
,
a
,
c
,
d
,
e
,
!
0
,
k
),
i
,
p
;
d
?(
d
=
l
(
d
,
f
.
id
.
UL
,
b
),
d
.
get
(
0
)
&&
(
i
=
d
)):
i
=
b
.
treeObj
;
i
&&
(
e
>=
0
&&
(
p
=
i
.
children
()[
e
]),
e
>=
0
&&
p
?
q
(
p
).
before
(
a
.
join
(
""
)):
i
.
append
(
a
.
join
(
""
)));
j
.
createNodeCallback
(
b
)}},
destroy
:
function
(
b
){
b
&&
(
g
.
initCache
(
b
),
g
.
initRoot
(
b
),
m
.
unbindTree
(
b
),
m
.
unbindEvent
(
b
),
b
.
treeObj
.
empty
(),
delete
s
[
b
.
treeId
])},
expandCollapseNode
:
function
(
b
,
a
,
c
,
d
,
e
){
var
h
=
g
.
getRoot
(
b
),
k
=
b
.
data
.
key
.
children
,
o
;
if
(
a
){
if
(
h
.
expandTriggerFlag
)
o
=
e
,
e
=
function
(){
o
&&
o
();
a
.
open
?
b
.
treeObj
.
trigger
(
f
.
event
.
EXPAND
,[
b
.
treeId
,
a
]):
b
.
treeObj
.
trigger
(
f
.
event
.
COLLAPSE
,[
b
.
treeId
,
a
])},
h
.
expandTriggerFlag
=!
1
;
if
(
!
a
.
open
&&
a
.
isParent
&&
(
!
l
(
a
,
f
.
id
.
UL
,
b
).
get
(
0
)
||
a
[
k
]
&&
a
[
k
].
length
>
0
&&!
l
(
a
[
k
][
0
],
b
).
get
(
0
)))
j
.
appendParentULDom
(
b
,
a
),
j
.
createNodeCallback
(
b
);
if
(
a
.
open
==
c
)
i
.
apply
(
e
,[]);
else
{
var
c
=
l
(
a
,
f
.
id
.
UL
,
b
),
h
=
l
(
a
,
f
.
id
.
SWITCH
,
b
),
p
=
l
(
a
,
f
.
id
.
ICON
,
b
);
a
.
isParent
?(
a
.
open
=!
a
.
open
,
a
.
iconOpen
&&
a
.
iconClose
&&
p
.
attr
(
"
style
"
,
j
.
makeNodeIcoStyle
(
b
,
a
)),
a
.
open
?(
j
.
replaceSwitchClass
(
a
,
h
,
f
.
folder
.
OPEN
),
j
.
replaceIcoClass
(
a
,
p
,
f
.
folder
.
OPEN
),
d
==!
1
||
b
.
view
.
expandSpeed
==
""
?(
c
.
show
(),
i
.
apply
(
e
,[])):
a
[
k
]
&&
a
[
k
].
length
>
0
?
c
.
slideDown
(
b
.
view
.
expandSpeed
,
e
):(
c
.
show
(),
i
.
apply
(
e
,[]))):(
j
.
replaceSwitchClass
(
a
,
h
,
f
.
folder
.
CLOSE
),
j
.
replaceIcoClass
(
a
,
p
,
f
.
folder
.
CLOSE
),
d
==!
1
||
b
.
view
.
expandSpeed
==
""
||!
(
a
[
k
]
&&
a
[
k
].
length
>
0
)?(
c
.
hide
(),
i
.
apply
(
e
,[])):
c
.
slideUp
(
b
.
view
.
expandSpeed
,
e
))):
i
.
apply
(
e
,[])}}
else
i
.
apply
(
e
,[])},
expandCollapseParentNode
:
function
(
b
,
a
,
c
,
d
,
e
){
a
&&
(
a
.
parentTId
?(
j
.
expandCollapseNode
(
b
,
a
,
c
,
d
),
a
.
parentTId
&&
j
.
expandCollapseParentNode
(
b
,
a
.
getParentNode
(),
c
,
d
,
e
)):
j
.
expandCollapseNode
(
b
,
a
,
c
,
d
,
e
))},
expandCollapseSonNode
:
function
(
b
,
a
,
c
,
d
,
e
){
var
h
=
g
.
getRoot
(
b
),
k
=
b
.
data
.
key
.
children
,
h
=
a
?
a
[
k
]:
h
[
k
],
k
=
a
?
!
1
:
d
,
f
=
g
.
getRoot
(
b
).
expandTriggerFlag
;
g
.
getRoot
(
b
).
expandTriggerFlag
=!
1
;
if
(
h
)
for
(
var
i
=
0
,
l
=
h
.
length
;
i
<
l
;
i
++
)
h
[
i
]
&&
j
.
expandCollapseSonNode
(
b
,
h
[
i
],
c
,
k
);
g
.
getRoot
(
b
).
expandTriggerFlag
=
f
;
j
.
expandCollapseNode
(
b
,
a
,
c
,
d
,
e
)},
isSelectedNode
:
function
(
b
,
a
){
if
(
!
a
)
return
!
1
;
var
c
=
g
.
getRoot
(
b
).
curSelectedList
,
d
;
for
(
d
=
c
.
length
-
1
;
d
>=
0
;
d
--
)
if
(
a
===
c
[
d
])
return
!
0
;
return
!
1
},
makeDOMNodeIcon
:
function
(
b
,
a
,
c
){
var
d
=
g
.
getNodeName
(
a
,
c
),
d
=
a
.
view
.
nameIsHTML
?
d
:
d
.
replace
(
/&/g
,
"
&
"
).
replace
(
/</g
,
"
<
"
).
replace
(
/>/g
,
"
>
"
);
b
.
push
(
"
<span id='
"
,
c
.
tId
,
f
.
id
.
ICON
,
"
' title='' treeNode
"
,
f
.
id
.
ICON
,
"
class='
"
,
j
.
makeNodeIcoClass
(
a
,
c
),
"
' style='
"
,
j
.
makeNodeIcoStyle
(
a
,
c
),
"
'></span><span id='
"
,
c
.
tId
,
f
.
id
.
SPAN
,
"
' class='
"
,
f
.
className
.
NAME
,
"
'>
"
,
d
,
"
</span>
"
)},
makeDOMNodeLine
:
function
(
b
,
a
,
c
){
b
.
push
(
"
<span id='
"
,
c
.
tId
,
f
.
id
.
SWITCH
,
"
' title='' class='
"
,
j
.
makeNodeLineClass
(
a
,
c
),
"
' treeNode
"
,
f
.
id
.
SWITCH
,
"
></span>
"
)},
makeDOMNodeMainAfter
:
function
(
b
){
b
.
push
(
"
</li>
"
)},
makeDOMNodeMainBefore
:
function
(
b
,
a
,
c
){
b
.
push
(
"
<li id='
"
,
c
.
tId
,
"
' class='
"
,
f
.
className
.
LEVEL
,
c
.
level
,
"
' tabindex='0' hidefocus='true' treenode>
"
)},
makeDOMNodeNameAfter
:
function
(
b
){
b
.
push
(
"
</a>
"
)},
makeDOMNodeNameBefore
:
function
(
b
,
a
,
c
){
var
d
=
g
.
getNodeTitle
(
a
,
c
),
e
=
j
.
makeNodeUrl
(
a
,
c
),
h
=
j
.
makeNodeFontCss
(
a
,
c
),
k
=
[],
o
;
for
(
o
in
h
)
k
.
push
(
o
,
"
:
"
,
h
[
o
],
"
;
"
);
b
.
push
(
"
<a id='
"
,
c
.
tId
,
f
.
id
.
A
,
"
' class='
"
,
f
.
className
.
LEVEL
,
c
.
level
,
"
' treeNode
"
,
f
.
id
.
A
,
'
onclick="
'
,
c
.
click
||
""
,
'
"
'
,
e
!=
null
&&
e
.
length
>
0
?
"
href='
"
+
e
+
"
'
"
:
""
,
"
target='
"
,
j
.
makeNodeTarget
(
c
),
"
' style='
"
,
k
.
join
(
""
),
"
'
"
);
i
.
apply
(
a
.
view
.
showTitle
,[
a
.
treeId
,
c
],
a
.
view
.
showTitle
)
&&
d
&&
b
.
push
(
"
title='
"
,
d
.
replace
(
/'/g
,
"
'
"
).
replace
(
/</g
,
"
<
"
).
replace
(
/>/g
,
"
>
"
),
"
'
"
);
b
.
push
(
"
>
"
)},
makeNodeFontCss
:
function
(
b
,
a
){
var
c
=
i
.
apply
(
b
.
view
.
fontCss
,[
b
.
treeId
,
a
],
b
.
view
.
fontCss
);
return
c
&&
typeof
c
!=
"
function
"
?
c
:{}},
makeNodeIcoClass
:
function
(
b
,
a
){
var
c
=
[
"
ico
"
];
a
.
isAjaxing
||
(
c
[
0
]
=
(
a
.
iconSkin
?
a
.
iconSkin
+
"
_
"
:
""
)
+
c
[
0
],
a
.
isParent
?
c
.
push
(
a
.
open
?
f
.
folder
.
OPEN
:
f
.
folder
.
CLOSE
):
c
.
push
(
f
.
folder
.
DOCU
));
return
f
.
className
.
BUTTON
+
"
"
+
c
.
join
(
"
_
"
)},
makeNodeIcoStyle
:
function
(
b
,
a
){
var
c
=
[];
if
(
!
a
.
isAjaxing
){
var
d
=
a
.
isParent
&&
a
.
iconOpen
&&
a
.
iconClose
?
a
.
open
?
a
.
iconOpen
:
a
.
iconClose
:
a
[
b
.
data
.
key
.
icon
];
d
&&
c
.
push
(
"
background:url(
"
,
d
,
"
) 0 0 no-repeat;
"
);(
b
.
view
.
showIcon
==!
1
||!
i
.
apply
(
b
.
view
.
showIcon
,[
b
.
treeId
,
a
],
!
0
))
&&
c
.
push
(
"
width:0px;height:0px;
"
)}
return
c
.
join
(
""
)},
makeNodeLineClass
:
function
(
b
,
a
){
var
c
=
[];
b
.
view
.
showLine
?
a
.
level
==
0
&&
a
.
isFirstNode
&&
a
.
isLastNode
?
c
.
push
(
f
.
line
.
ROOT
):
a
.
level
==
0
&&
a
.
isFirstNode
?
c
.
push
(
f
.
line
.
ROOTS
):
a
.
isLastNode
?
c
.
push
(
f
.
line
.
BOTTOM
):
c
.
push
(
f
.
line
.
CENTER
):
c
.
push
(
f
.
line
.
NOLINE
);
a
.
isParent
?
c
.
push
(
a
.
open
?
f
.
folder
.
OPEN
:
f
.
folder
.
CLOSE
):
c
.
push
(
f
.
folder
.
DOCU
);
return
j
.
makeNodeLineClassEx
(
a
)
+
c
.
join
(
"
_
"
)},
makeNodeLineClassEx
:
function
(
b
){
return
f
.
className
.
BUTTON
+
"
"
+
f
.
className
.
LEVEL
+
b
.
level
+
"
"
+
f
.
className
.
SWITCH
+
"
"
},
makeNodeTarget
:
function
(
b
){
return
b
.
target
||
"
_blank
"
},
makeNodeUrl
:
function
(
b
,
a
){
var
c
=
b
.
data
.
key
.
url
;
return
a
[
c
]?
a
[
c
]:
null
},
makeUlHtml
:
function
(
b
,
a
,
c
,
d
){
c
.
push
(
"
<ul id='
"
,
a
.
tId
,
f
.
id
.
UL
,
"
' class='
"
,
f
.
className
.
LEVEL
,
a
.
level
,
"
"
,
j
.
makeUlLineClass
(
b
,
a
),
"
' style='display:
"
,
a
.
open
?
"
block
"
:
"
none
"
,
"
'>
"
);
c
.
push
(
d
);
c
.
push
(
"
</ul>
"
)},
makeUlLineClass
:
function
(
b
,
a
){
return
b
.
view
.
showLine
&&!
a
.
isLastNode
?
f
.
line
.
LINE
:
""
},
removeChildNodes
:
function
(
b
,
a
){
if
(
a
){
var
c
=
b
.
data
.
key
.
children
,
d
=
a
[
c
];
if
(
d
){
for
(
var
e
=
0
,
h
=
d
.
length
;
e
<
h
;
e
++
)
g
.
removeNodeCache
(
b
,
d
[
e
]);
g
.
removeSelectedNode
(
b
);
delete
a
[
c
];
b
.
data
.
keep
.
parent
?
l
(
a
,
f
.
id
.
UL
,
b
).
empty
():(
a
.
isParent
=!
1
,
a
.
open
=!
1
,
c
=
l
(
a
,
f
.
id
.
SWITCH
,
b
),
d
=
l
(
a
,
f
.
id
.
ICON
,
b
),
j
.
replaceSwitchClass
(
a
,
c
,
f
.
folder
.
DOCU
),
j
.
replaceIcoClass
(
a
,
d
,
f
.
folder
.
DOCU
),
l
(
a
,
f
.
id
.
UL
,
b
).
remove
())}}},
scrollIntoView
:
function
(
b
,
a
){
if
(
a
)
if
(
typeof
Element
===
"
undefined
"
){
var
c
=
b
.
treeObj
.
get
(
0
).
getBoundingClientRect
(),
d
=
a
.
getBoundingClientRect
();(
d
.
top
<
c
.
top
||
d
.
bottom
>
c
.
bottom
||
d
.
right
>
c
.
right
||
d
.
left
<
c
.
left
)
&&
a
.
scrollIntoView
()}
else
{
if
(
!
Element
.
prototype
.
scrollIntoViewIfNeeded
)
Element
.
prototype
.
scrollIntoViewIfNeeded
=
function
(
a
){
function
b
(
a
,
c
,
d
,
e
){
return
{
left
:
a
,
top
:
c
,
width
:
d
,
height
:
e
,
right
:
a
+
d
,
bottom
:
c
+
e
,
translate
:
function
(
f
,
k
){
return
b
(
f
+
a
,
k
+
c
,
d
,
e
)},
relativeFromTo
:
function
(
k
,
g
){
var
j
=
a
,
i
=
c
,
k
=
k
.
offsetParent
,
g
=
g
.
offsetParent
;
if
(
k
===
g
)
return
f
;
for
(;
k
;
k
=
k
.
offsetParent
)
j
+=
k
.
offsetLeft
+
k
.
clientLeft
,
i
+=
k
.
offsetTop
+
k
.
clientTop
;
for
(;
g
;
g
=
g
.
offsetParent
)
j
-=
g
.
offsetLeft
+
g
.
clientLeft
,
i
-=
g
.
offsetTop
+
g
.
clientTop
;
return
b
(
j
,
i
,
d
,
e
)}}}
for
(
var
c
,
d
=
this
,
f
=
b
(
this
.
offsetLeft
,
this
.
offsetTop
,
this
.
offsetWidth
,
this
.
offsetHeight
);
i
.
isElement
(
c
=
d
.
parentNode
);){
var
g
=
c
.
offsetLeft
+
c
.
clientLeft
,
j
=
c
.
offsetTop
+
c
.
clientTop
,
f
=
f
.
relativeFromTo
(
d
,
c
).
translate
(
-
g
,
-
j
);
c
.
scrollLeft
=!
1
===
a
||
f
.
left
<=
c
.
scrollLeft
+
c
.
clientWidth
&&
c
.
scrollLeft
<=
f
.
right
-
c
.
clientWidth
+
c
.
clientWidth
?
Math
.
min
(
f
.
left
,
Math
.
max
(
f
.
right
-
c
.
clientWidth
,
c
.
scrollLeft
)):(
f
.
right
-
c
.
clientWidth
+
f
.
left
)
/
2
;
c
.
scrollTop
=!
1
===
a
||
f
.
top
<=
c
.
scrollTop
+
c
.
clientHeight
&&
c
.
scrollTop
<=
f
.
bottom
-
c
.
clientHeight
+
c
.
clientHeight
?
Math
.
min
(
f
.
top
,
Math
.
max
(
f
.
bottom
-
c
.
clientHeight
,
c
.
scrollTop
)):(
f
.
bottom
-
c
.
clientHeight
+
f
.
top
)
/
2
;
f
=
f
.
translate
(
g
-
c
.
scrollLeft
,
j
-
c
.
scrollTop
);
d
=
c
}};
a
.
scrollIntoViewIfNeeded
()}},
setFirstNode
:
function
(
b
,
a
){
var
c
=
b
.
data
.
key
.
children
;
if
(
a
[
c
].
length
>
0
)
a
[
c
][
0
].
isFirstNode
=
!
0
},
setLastNode
:
function
(
b
,
a
){
var
c
=
b
.
data
.
key
.
children
,
d
=
a
[
c
].
length
;
if
(
d
>
0
)
a
[
c
][
d
-
1
].
isLastNode
=!
0
},
removeNode
:
function
(
b
,
a
){
var
c
=
g
.
getRoot
(
b
),
d
=
b
.
data
.
key
.
children
,
e
=
a
.
parentTId
?
a
.
getParentNode
():
c
;
a
.
isFirstNode
=!
1
;
a
.
isLastNode
=!
1
;
a
.
getPreNode
=
function
(){
return
null
};
a
.
getNextNode
=
function
(){
return
null
};
if
(
g
.
getNodeCache
(
b
,
a
.
tId
)){
l
(
a
,
b
).
remove
();
g
.
removeNodeCache
(
b
,
a
);
g
.
removeSelectedNode
(
b
,
a
);
for
(
var
h
=
0
,
k
=
e
[
d
].
length
;
h
<
k
;
h
++
)
if
(
e
[
d
][
h
].
tId
==
a
.
tId
){
e
[
d
].
splice
(
h
,
1
);
break
}
j
.
setFirstNode
(
b
,
e
);
j
.
setLastNode
(
b
,
e
);
var
i
,
h
=
e
[
d
].
length
;
if
(
!
b
.
data
.
keep
.
parent
&&
h
==
0
)
e
.
isParent
=!
1
,
e
.
open
=!
1
,
delete
e
[
d
],
h
=
l
(
e
,
f
.
id
.
UL
,
b
),
k
=
l
(
e
,
f
.
id
.
SWITCH
,
b
),
i
=
l
(
e
,
f
.
id
.
ICON
,
b
),
j
.
replaceSwitchClass
(
e
,
k
,
f
.
folder
.
DOCU
),
j
.
replaceIcoClass
(
e
,
i
,
f
.
folder
.
DOCU
),
h
.
css
(
"
display
"
,
"
none
"
);
else
if
(
b
.
view
.
showLine
&&
h
>
0
){
var
p
=
e
[
d
][
h
-
1
],
h
=
l
(
p
,
f
.
id
.
UL
,
b
),
k
=
l
(
p
,
f
.
id
.
SWITCH
,
b
);
i
=
l
(
p
,
f
.
id
.
ICON
,
b
);
e
==
c
?
e
[
d
].
length
==
1
?
j
.
replaceSwitchClass
(
p
,
k
,
f
.
line
.
ROOT
):(
c
=
l
(
e
[
d
][
0
],
f
.
id
.
SWITCH
,
b
),
j
.
replaceSwitchClass
(
e
[
d
][
0
],
c
,
f
.
line
.
ROOTS
),
j
.
replaceSwitchClass
(
p
,
k
,
f
.
line
.
BOTTOM
)):
j
.
replaceSwitchClass
(
p
,
k
,
f
.
line
.
BOTTOM
);
h
.
removeClass
(
f
.
line
.
LINE
)}}},
replaceIcoClass
:
function
(
b
,
a
,
c
){
if
(
a
&&!
b
.
isAjaxing
&&
(
b
=
a
.
attr
(
"
class
"
),
b
!=
void
0
)){
b
=
b
.
split
(
"
_
"
);
switch
(
c
){
case
f
.
folder
.
OPEN
:
case
f
.
folder
.
CLOSE
:
case
f
.
folder
.
DOCU
:
b
[
b
.
length
-
1
]
=
c
}
a
.
attr
(
"
class
"
,
b
.
join
(
"
_
"
))}},
replaceSwitchClass
:
function
(
b
,
a
,
c
){
if
(
a
){
var
d
=
a
.
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
]
=
j
.
makeNodeLineClassEx
(
b
)
+
c
;
break
;
case
f
.
folder
.
OPEN
:
case
f
.
folder
.
CLOSE
:
case
f
.
folder
.
DOCU
:
d
[
1
]
=
c
}
a
.
attr
(
"
class
"
,
d
.
join
(
"
_
"
));
c
!==
f
.
folder
.
DOCU
?
a
.
removeAttr
(
"
disabled
"
):
a
.
attr
(
"
disabled
"
,
"
disabled
"
)}}},
selectNode
:
function
(
b
,
a
,
c
){
c
||
j
.
cancelPreSelectedNode
(
b
,
null
,
a
);
l
(
a
,
f
.
id
.
A
,
b
).
addClass
(
f
.
node
.
CURSELECTED
);
g
.
addSelectedNode
(
b
,
a
);
b
.
treeObj
.
trigger
(
f
.
event
.
SELECTED
,[
b
.
treeId
,
a
])},
setNodeFontCss
:
function
(
b
,
a
){
var
c
=
l
(
a
,
f
.
id
.
A
,
b
),
d
=
j
.
makeNodeFontCss
(
b
,
a
);
d
&&
c
.
css
(
d
)},
setNodeLineIcos
:
function
(
b
,
a
){
if
(
a
){
var
c
=
l
(
a
,
f
.
id
.
SWITCH
,
b
),
d
=
l
(
a
,
f
.
id
.
UL
,
b
),
e
=
l
(
a
,
f
.
id
.
ICON
,
b
),
h
=
j
.
makeUlLineClass
(
b
,
a
);
h
.
length
==
0
?
d
.
removeClass
(
f
.
line
.
LINE
):
d
.
addClass
(
h
);
c
.
attr
(
"
class
"
,
j
.
makeNodeLineClass
(
b
,
a
));
a
.
isParent
?
c
.
removeAttr
(
"
disabled
"
):
c
.
attr
(
"
disabled
"
,
"
disabled
"
);
e
.
removeAttr
(
"
style
"
);
e
.
attr
(
"
style
"
,
j
.
makeNodeIcoStyle
(
b
,
a
));
e
.
attr
(
"
class
"
,
j
.
makeNodeIcoClass
(
b
,
a
))}},
setNodeName
:
function
(
b
,
a
){
var
c
=
g
.
getNodeTitle
(
b
,
a
),
d
=
l
(
a
,
f
.
id
.
SPAN
,
b
);
d
.
empty
();
b
.
view
.
nameIsHTML
?
d
.
html
(
g
.
getNodeName
(
b
,
a
)):
d
.
text
(
g
.
getNodeName
(
b
,
a
));
i
.
apply
(
b
.
view
.
showTitle
,
[
b
.
treeId
,
a
],
b
.
view
.
showTitle
)
&&
l
(
a
,
f
.
id
.
A
,
b
).
attr
(
"
title
"
,
!
c
?
""
:
c
)},
setNodeTarget
:
function
(
b
,
a
){
l
(
a
,
f
.
id
.
A
,
b
).
attr
(
"
target
"
,
j
.
makeNodeTarget
(
a
))},
setNodeUrl
:
function
(
b
,
a
){
var
c
=
l
(
a
,
f
.
id
.
A
,
b
),
d
=
j
.
makeNodeUrl
(
b
,
a
);
d
==
null
||
d
.
length
==
0
?
c
.
removeAttr
(
"
href
"
):
c
.
attr
(
"
href
"
,
d
)},
switchNode
:
function
(
b
,
a
){
a
.
open
||!
i
.
canAsync
(
b
,
a
)?
j
.
expandCollapseNode
(
b
,
a
,
!
a
.
open
):
b
.
async
.
enable
?
j
.
asyncNode
(
b
,
a
)
||
j
.
expandCollapseNode
(
b
,
a
,
!
a
.
open
):
a
&&
j
.
expandCollapseNode
(
b
,
a
,
!
a
.
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
"
,
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
:
i
,
view
:
j
,
event
:
m
,
data
:
g
},
getZTreeObj
:
function
(
b
){
return
(
b
=
g
.
getZTreeTools
(
b
))?
b
:
null
},
destroy
:
function
(
b
){
if
(
b
&&
b
.
length
>
0
)
j
.
destroy
(
g
.
getSetting
(
b
));
else
for
(
var
a
in
s
)
j
.
destroy
(
s
[
a
])},
init
:
function
(
b
,
a
,
c
){
var
d
=
i
.
clone
(
N
);
q
.
extend
(
!
0
,
d
,
a
);
d
.
treeId
=
b
.
attr
(
"
id
"
);
d
.
treeObj
=
b
;
d
.
treeObj
.
empty
();
s
[
d
.
treeId
]
=
d
;
if
(
typeof
document
.
body
.
style
.
maxHeight
===
"
undefined
"
)
d
.
view
.
expandSpeed
=
""
;
g
.
initRoot
(
d
);
b
=
g
.
getRoot
(
d
);
a
=
d
.
data
.
key
.
children
;
c
=
c
?
i
.
clone
(
i
.
isArray
(
c
)?
c
:[
c
]):[];
b
[
a
]
=
d
.
data
.
simpleData
.
enable
?
g
.
transformTozTreeFormat
(
d
,
c
):
c
;
g
.
initCache
(
d
);
m
.
unbindTree
(
d
);
m
.
bindTree
(
d
);
m
.
unbindEvent
(
d
);
m
.
bindEvent
(
d
);
var
e
=
{
setting
:
d
,
addNodes
:
function
(
a
,
b
,
c
,
e
){
function
f
(){
j
.
addNodes
(
d
,
a
,
b
,
l
,
e
==!
0
)}
a
||
(
a
=
null
);
if
(
a
&&!
a
.
isParent
&&
d
.
data
.
keep
.
leaf
)
return
null
;
var
g
=
parseInt
(
b
,
10
);
isNaN
(
g
)?(
e
=!!
c
,
c
=
b
,
b
=-
1
):
b
=
g
;
if
(
!
c
)
return
null
;
var
l
=
i
.
clone
(
i
.
isArray
(
c
)?
c
:[
c
]);
i
.
canAsync
(
d
,
a
)?
j
.
asyncNode
(
d
,
a
,
e
,
f
):
f
();
return
l
},
cancelSelectedNode
:
function
(
a
){
j
.
cancelPreSelectedNode
(
d
,
a
)},
destroy
:
function
(){
j
.
destroy
(
d
)},
expandAll
:
function
(
a
){
a
=!!
a
;
j
.
expandCollapseSonNode
(
d
,
null
,
a
,
!
0
);
return
a
},
expandNode
:
function
(
a
,
b
,
c
,
e
,
f
){
function
m
(){
var
b
=
l
(
a
,
d
).
get
(
0
);
b
&&
e
!==!
1
&&
j
.
scrollIntoView
(
d
,
b
)}
if
(
!
a
||!
a
.
isParent
)
return
null
;
b
!==!
0
&&
b
!==!
1
&&
(
b
=!
a
.
open
);
if
((
f
=!!
f
)
&&
b
&&
i
.
apply
(
d
.
callback
.
beforeExpand
,[
d
.
treeId
,
a
],
!
0
)
==!
1
)
return
null
;
else
if
(
f
&&!
b
&&
i
.
apply
(
d
.
callback
.
beforeCollapse
,[
d
.
treeId
,
a
],
!
0
)
==!
1
)
return
null
;
b
&&
a
.
parentTId
&&
j
.
expandCollapseParentNode
(
d
,
a
.
getParentNode
(),
b
,
!
1
);
if
(
b
===
a
.
open
&&!
c
)
return
null
;
g
.
getRoot
(
d
).
expandTriggerFlag
=
f
;
!
i
.
canAsync
(
d
,
a
)
&&
c
?
j
.
expandCollapseSonNode
(
d
,
a
,
b
,
!
0
,
m
):(
a
.
open
=!
b
,
j
.
switchNode
(
this
.
setting
,
a
),
m
());
return
b
},
getNodes
:
function
(){
return
g
.
getNodes
(
d
)},
getNodeByParam
:
function
(
a
,
b
,
c
){
return
!
a
?
null
:
g
.
getNodeByParam
(
d
,
c
?
c
[
d
.
data
.
key
.
children
]:
g
.
getNodes
(
d
),
a
,
b
)},
getNodeByTId
:
function
(
a
){
return
g
.
getNodeCache
(
d
,
a
)},
getNodesByParam
:
function
(
a
,
b
,
c
){
return
!
a
?
null
:
g
.
getNodesByParam
(
d
,
c
?
c
[
d
.
data
.
key
.
children
]:
g
.
getNodes
(
d
),
a
,
b
)},
getNodesByParamFuzzy
:
function
(
a
,
b
,
c
){
return
!
a
?
null
:
g
.
getNodesByParamFuzzy
(
d
,
c
?
c
[
d
.
data
.
key
.
children
]:
g
.
getNodes
(
d
),
a
,
b
)},
getNodesByFilter
:
function
(
a
,
b
,
c
,
e
){
b
=!!
b
;
return
!
a
||
typeof
a
!=
"
function
"
?
b
?
null
:[]:
g
.
getNodesByFilter
(
d
,
c
?
c
[
d
.
data
.
key
.
children
]:
g
.
getNodes
(
d
),
a
,
b
,
e
)},
getNodeIndex
:
function
(
a
){
if
(
!
a
)
return
null
;
for
(
var
b
=
d
.
data
.
key
.
children
,
c
=
a
.
parentTId
?
a
.
getParentNode
():
g
.
getRoot
(
d
),
e
=
0
,
f
=
c
[
b
].
length
;
e
<
f
;
e
++
)
if
(
c
[
b
][
e
]
==
a
)
return
e
;
return
-
1
},
getSelectedNodes
:
function
(){
for
(
var
a
=
[],
b
=
g
.
getRoot
(
d
).
curSelectedList
,
c
=
0
,
e
=
b
.
length
;
c
<
e
;
c
++
)
a
.
push
(
b
[
c
]);
return
a
},
isSelectedNode
:
function
(
a
){
return
g
.
isSelectedNode
(
d
,
a
)},
reAsyncChildNodesPromise
:
function
(
a
,
b
,
c
){
return
new
Promise
(
function
(
d
,
f
){
try
{
e
.
reAsyncChildNodes
(
a
,
b
,
c
,
function
(){
d
(
a
)})}
catch
(
g
){
f
(
g
)}})},
reAsyncChildNodes
:
function
(
a
,
b
,
c
,
e
){
if
(
this
.
setting
.
async
.
enable
){
var
i
=!
a
;
i
&&
(
a
=
g
.
getRoot
(
d
));
if
(
b
==
"
refresh
"
){
for
(
var
b
=
this
.
setting
.
data
.
key
.
children
,
m
=
0
,
q
=
a
[
b
]?
a
[
b
].
length
:
0
;
m
<
q
;
m
++
)
g
.
removeNodeCache
(
d
,
a
[
b
][
m
]);
g
.
removeSelectedNode
(
d
);
a
[
b
]
=
[];
i
?
this
.
setting
.
treeObj
.
empty
():
l
(
a
,
f
.
id
.
UL
,
d
).
empty
()}
j
.
asyncNode
(
this
.
setting
,
i
?
null
:
a
,
!!
c
,
e
)}},
refresh
:
function
(){
this
.
setting
.
treeObj
.
empty
();
var
a
=
g
.
getRoot
(
d
),
b
=
a
[
d
.
data
.
key
.
children
];
g
.
initRoot
(
d
);
a
[
d
.
data
.
key
.
children
]
=
b
;
g
.
initCache
(
d
);
j
.
createNodes
(
d
,
0
,
a
[
d
.
data
.
key
.
children
],
null
,
-
1
)},
removeChildNodes
:
function
(
a
){
if
(
!
a
)
return
null
;
var
b
=
a
[
d
.
data
.
key
.
children
];
j
.
removeChildNodes
(
d
,
a
);
return
b
?
b
:
null
},
removeNode
:
function
(
a
,
b
){
a
&&
(
b
=!!
b
,
b
&&
i
.
apply
(
d
.
callback
.
beforeRemove
,[
d
.
treeId
,
a
],
!
0
)
==!
1
||
(
j
.
removeNode
(
d
,
a
),
b
&&
this
.
setting
.
treeObj
.
trigger
(
f
.
event
.
REMOVE
,
[
d
.
treeId
,
a
])))},
selectNode
:
function
(
a
,
b
,
c
){
function
e
(){
if
(
!
c
){
var
b
=
l
(
a
,
d
).
get
(
0
);
j
.
scrollIntoView
(
d
,
b
)}}
if
(
a
&&
i
.
uCanDo
(
d
)){
b
=
d
.
view
.
selectedMulti
&&
b
;
if
(
a
.
parentTId
)
j
.
expandCollapseParentNode
(
d
,
a
.
getParentNode
(),
!
0
,
!
1
,
e
);
else
if
(
!
c
)
try
{
l
(
a
,
d
).
focus
().
blur
()}
catch
(
f
){}
j
.
selectNode
(
d
,
a
,
b
)}},
transformTozTreeNodes
:
function
(
a
){
return
g
.
transformTozTreeFormat
(
d
,
a
)},
transformToArray
:
function
(
a
){
return
g
.
transformToArrayFormat
(
d
,
a
)},
updateNode
:
function
(
a
){
a
&&
l
(
a
,
d
).
get
(
0
)
&&
i
.
uCanDo
(
d
)
&&
(
j
.
setNodeName
(
d
,
a
),
j
.
setNodeTarget
(
d
,
a
),
j
.
setNodeUrl
(
d
,
a
),
j
.
setNodeLineIcos
(
d
,
a
),
j
.
setNodeFontCss
(
d
,
a
))}};
b
.
treeTools
=
e
;
g
.
setZTreeTools
(
d
,
e
);
b
[
a
]
&&
b
[
a
].
length
>
0
?
j
.
createNodes
(
d
,
0
,
b
[
a
],
null
,
-
1
):
d
.
async
.
enable
&&
d
.
async
.
url
&&
d
.
async
.
url
!==
""
&&
j
.
asyncNode
(
d
);
return
e
}};
var
O
=
q
.
fn
.
zTree
,
l
=
i
.
$
,
f
=
O
.
consts
})(
jQuery
);
(
function
(
q
){
var
H
,
I
,
J
,
K
,
L
,
M
,
u
,
s
=
{},
v
=
{},
w
=
{},
N
=
{
treeId
:
""
,
treeObj
:
null
,
view
:{
addDiyDom
:
null
,
autoCancelSelected
:
!
0
,
dblClickExpand
:
!
0
,
expandSpeed
:
"
fast
"
,
fontCss
:{},
nameIsHTML
:
!
1
,
selectedMulti
:
!
0
,
showIcon
:
!
0
,
showLine
:
!
0
,
showTitle
:
!
0
,
txtSelectedEnable
:
!
1
},
data
:{
key
:{
isParent
:
"
isParent
"
,
children
:
"
children
"
,
name
:
"
name
"
,
title
:
""
,
url
:
"
url
"
,
icon
:
"
icon
"
},
simpleData
:{
enable
:
!
1
,
idKey
:
"
id
"
,
pIdKey
:
"
pId
"
,
rootPId
:
null
},
keep
:{
parent
:
!
1
,
leaf
:
!
1
}},
async
:{
enable
:
!
1
,
contentType
:
"
application/x-www-form-urlencoded
"
,
type
:
"
post
"
,
dataType
:
"
text
"
,
url
:
""
,
autoParam
:[],
otherParam
:[],
dataFilter
:
null
},
callback
:{
beforeAsync
:
null
,
beforeClick
:
null
,
beforeDblClick
:
null
,
beforeRightClick
:
null
,
beforeMouseDown
:
null
,
beforeMouseUp
:
null
,
beforeExpand
:
null
,
beforeCollapse
:
null
,
beforeRemove
:
null
,
onAsyncError
:
null
,
onAsyncSuccess
:
null
,
onNodeCreated
:
null
,
onClick
:
null
,
onDblClick
:
null
,
onRightClick
:
null
,
onMouseDown
:
null
,
onMouseUp
:
null
,
onExpand
:
null
,
onCollapse
:
null
,
onRemove
:
null
}},
x
=
[
function
(
a
){
var
b
=
a
.
treeObj
,
c
=
f
.
event
;
b
.
bind
(
c
.
NODECREATED
,
function
(
b
,
c
,
h
){
j
.
apply
(
a
.
callback
.
onNodeCreated
,[
b
,
c
,
h
])});
b
.
bind
(
c
.
CLICK
,
function
(
b
,
c
,
h
,
e
,
m
){
j
.
apply
(
a
.
callback
.
onClick
,[
c
,
h
,
e
,
m
])});
b
.
bind
(
c
.
EXPAND
,
function
(
b
,
c
,
h
){
j
.
apply
(
a
.
callback
.
onExpand
,[
b
,
c
,
h
])});
b
.
bind
(
c
.
COLLAPSE
,
function
(
b
,
c
,
h
){
j
.
apply
(
a
.
callback
.
onCollapse
,[
b
,
c
,
h
])});
b
.
bind
(
c
.
ASYNC_SUCCESS
,
function
(
b
,
c
,
h
,
e
){
j
.
apply
(
a
.
callback
.
onAsyncSuccess
,[
b
,
c
,
h
,
e
])});
b
.
bind
(
c
.
ASYNC_ERROR
,
function
(
b
,
c
,
h
,
e
,
m
,
f
){
j
.
apply
(
a
.
callback
.
onAsyncError
,[
b
,
c
,
h
,
e
,
m
,
f
])});
b
.
bind
(
c
.
REMOVE
,
function
(
b
,
c
,
h
){
j
.
apply
(
a
.
callback
.
onRemove
,
[
b
,
c
,
h
])});
b
.
bind
(
c
.
SELECTED
,
function
(
b
,
c
,
h
){
j
.
apply
(
a
.
callback
.
onSelected
,[
c
,
h
])});
b
.
bind
(
c
.
UNSELECTED
,
function
(
b
,
c
,
h
){
j
.
apply
(
a
.
callback
.
onUnSelected
,[
c
,
h
])})}],
y
=
[
function
(
a
){
var
b
=
f
.
event
;
a
.
treeObj
.
unbind
(
b
.
NODECREATED
).
unbind
(
b
.
CLICK
).
unbind
(
b
.
EXPAND
).
unbind
(
b
.
COLLAPSE
).
unbind
(
b
.
ASYNC_SUCCESS
).
unbind
(
b
.
ASYNC_ERROR
).
unbind
(
b
.
REMOVE
).
unbind
(
b
.
SELECTED
).
unbind
(
b
.
UNSELECTED
)}],
z
=
[
function
(
a
){
var
b
=
e
.
getCache
(
a
);
b
||
(
b
=
{},
e
.
setCache
(
a
,
b
));
b
.
nodes
=
[];
b
.
doms
=
[]}],
A
=
[
function
(
a
,
b
,
c
,
d
,
g
,
h
){
if
(
c
){
var
k
=
e
.
getRoot
(
a
),
m
=
e
.
nodeChildren
(
a
,
c
);
c
.
level
=
b
;
c
.
tId
=
a
.
treeId
+
"
_
"
+
++
k
.
zId
;
c
.
parentTId
=
d
?
d
.
tId
:
null
;
c
.
open
=
typeof
c
.
open
==
"
string
"
?
j
.
eqs
(
c
.
open
,
"
true
"
):
!!
c
.
open
;
b
=
e
.
nodeIsParent
(
a
,
c
);
j
.
isArray
(
m
)
&&!
(
b
===!
1
||
typeof
b
==
"
string
"
&&
j
.
eqs
(
b
,
"
false
"
))?(
e
.
nodeIsParent
(
a
,
c
,
!
0
),
c
.
zAsync
=!
0
):(
b
=
e
.
nodeIsParent
(
a
,
c
,
b
),
c
.
open
=
b
&&!
a
.
async
.
enable
?
c
.
open
:
!
1
,
c
.
zAsync
=!
b
);
c
.
isFirstNode
=
g
;
c
.
isLastNode
=
h
;
c
.
getParentNode
=
function
(){
return
e
.
getNodeCache
(
a
,
c
.
parentTId
)};
c
.
getPreNode
=
function
(){
return
e
.
getPreNode
(
a
,
c
)};
c
.
getNextNode
=
function
(){
return
e
.
getNextNode
(
a
,
c
)};
c
.
getIndex
=
function
(){
return
e
.
getNodeIndex
(
a
,
c
)};
c
.
getPath
=
function
(){
return
e
.
getNodePath
(
a
,
c
)};
c
.
isAjaxing
=!
1
;
e
.
fixPIdKeyValue
(
a
,
c
)}}],
t
=
[
function
(
a
){
var
b
=
a
.
target
,
c
=
e
.
getSetting
(
a
.
data
.
treeId
),
d
=
""
,
g
=
null
,
h
=
""
,
k
=
""
,
m
=
null
,
i
=
null
,
o
=
null
;
if
(
j
.
eqs
(
a
.
type
,
"
mousedown
"
))
k
=
"
mousedown
"
;
else
if
(
j
.
eqs
(
a
.
type
,
"
mouseup
"
))
k
=
"
mouseup
"
;
else
if
(
j
.
eqs
(
a
.
type
,
"
contextmenu
"
))
k
=
"
contextmenu
"
;
else
if
(
j
.
eqs
(
a
.
type
,
"
click
"
))
if
(
j
.
eqs
(
b
.
tagName
,
"
span
"
)
&&
b
.
getAttribute
(
"
treeNode
"
+
f
.
id
.
SWITCH
)
!==
null
)
d
=
j
.
getNodeMainDom
(
b
).
id
,
h
=
"
switchNode
"
;
else
{
if
(
o
=
j
.
getMDom
(
c
,
b
,[{
tagName
:
"
a
"
,
attrName
:
"
treeNode
"
+
f
.
id
.
A
}]))
d
=
j
.
getNodeMainDom
(
o
).
id
,
h
=
"
clickNode
"
}
else
if
(
j
.
eqs
(
a
.
type
,
"
dblclick
"
)
&&
(
k
=
"
dblclick
"
,
o
=
j
.
getMDom
(
c
,
b
,[{
tagName
:
"
a
"
,
attrName
:
"
treeNode
"
+
f
.
id
.
A
}])))
d
=
j
.
getNodeMainDom
(
o
).
id
,
h
=
"
switchNode
"
;
if
(
k
.
length
>
0
&&
d
.
length
==
0
&&
(
o
=
j
.
getMDom
(
c
,
b
,[{
tagName
:
"
a
"
,
attrName
:
"
treeNode
"
+
f
.
id
.
A
}])))
d
=
j
.
getNodeMainDom
(
o
).
id
;
if
(
d
.
length
>
0
)
switch
(
g
=
e
.
getNodeCache
(
c
,
d
),
h
){
case
"
switchNode
"
:
e
.
nodeIsParent
(
c
,
g
)?
j
.
eqs
(
a
.
type
,
"
click
"
)
||
j
.
eqs
(
a
.
type
,
"
dblclick
"
)
&&
j
.
apply
(
c
.
view
.
dblClickExpand
,[
c
.
treeId
,
g
],
c
.
view
.
dblClickExpand
)?
m
=
H
:
h
=
""
:
h
=
""
;
break
;
case
"
clickNode
"
:
m
=
I
}
switch
(
k
){
case
"
mousedown
"
:
i
=
J
;
break
;
case
"
mouseup
"
:
i
=
K
;
break
;
case
"
dblclick
"
:
i
=
L
;
break
;
case
"
contextmenu
"
:
i
=
M
}
return
{
stop
:
!
1
,
node
:
g
,
nodeEventType
:
h
,
nodeEventCallback
:
m
,
treeEventType
:
k
,
treeEventCallback
:
i
}}],
B
=
[
function
(
a
){
var
b
=
e
.
getRoot
(
a
);
b
||
(
b
=
{},
e
.
setRoot
(
a
,
b
));
e
.
nodeChildren
(
a
,
b
,[]);
b
.
expandTriggerFlag
=!
1
;
b
.
curSelectedList
=
[];
b
.
noSelection
=
!
0
;
b
.
createdNodes
=
[];
b
.
zId
=
0
;
b
.
_ver
=
(
new
Date
).
getTime
()}],
C
=
[],
D
=
[],
E
=
[],
F
=
[],
G
=
[],
e
=
{
addNodeCache
:
function
(
a
,
b
){
e
.
getCache
(
a
).
nodes
[
e
.
getNodeCacheId
(
b
.
tId
)]
=
b
},
getNodeCacheId
:
function
(
a
){
return
a
.
substring
(
a
.
lastIndexOf
(
"
_
"
)
+
1
)},
addAfterA
:
function
(
a
){
D
.
push
(
a
)},
addBeforeA
:
function
(
a
){
C
.
push
(
a
)},
addInnerAfterA
:
function
(
a
){
F
.
push
(
a
)},
addInnerBeforeA
:
function
(
a
){
E
.
push
(
a
)},
addInitBind
:
function
(
a
){
x
.
push
(
a
)},
addInitUnBind
:
function
(
a
){
y
.
push
(
a
)},
addInitCache
:
function
(
a
){
z
.
push
(
a
)},
addInitNode
:
function
(
a
){
A
.
push
(
a
)},
addInitProxy
:
function
(
a
,
b
){
b
?
t
.
splice
(
0
,
0
,
a
):
t
.
push
(
a
)},
addInitRoot
:
function
(
a
){
B
.
push
(
a
)},
addNodesData
:
function
(
a
,
b
,
c
,
d
){
var
g
=
e
.
nodeChildren
(
a
,
b
);
g
?
c
>=
g
.
length
&&
(
c
=-
1
):(
g
=
e
.
nodeChildren
(
a
,
b
,[]),
c
=-
1
);
if
(
g
.
length
>
0
&&
c
===
0
)
g
[
0
].
isFirstNode
=!
1
,
i
.
setNodeLineIcos
(
a
,
g
[
0
]);
else
if
(
g
.
length
>
0
&&
c
<
0
)
g
[
g
.
length
-
1
].
isLastNode
=!
1
,
i
.
setNodeLineIcos
(
a
,
g
[
g
.
length
-
1
]);
e
.
nodeIsParent
(
a
,
b
,
!
0
);
c
<
0
?
e
.
nodeChildren
(
a
,
b
,
g
.
concat
(
d
)):(
a
=
[
c
,
0
].
concat
(
d
),
g
.
splice
.
apply
(
g
,
a
))},
addSelectedNode
:
function
(
a
,
b
){
var
c
=
e
.
getRoot
(
a
);
e
.
isSelectedNode
(
a
,
b
)
||
c
.
curSelectedList
.
push
(
b
)},
addCreatedNode
:
function
(
a
,
b
){(
a
.
callback
.
onNodeCreated
||
a
.
view
.
addDiyDom
)
&&
e
.
getRoot
(
a
).
createdNodes
.
push
(
b
)},
addZTreeTools
:
function
(
a
){
G
.
push
(
a
)},
exSetting
:
function
(
a
){
q
.
extend
(
!
0
,
N
,
a
)},
fixPIdKeyValue
:
function
(
a
,
b
){
a
.
data
.
simpleData
.
enable
&&
(
b
[
a
.
data
.
simpleData
.
pIdKey
]
=
b
.
parentTId
?
b
.
getParentNode
()[
a
.
data
.
simpleData
.
idKey
]:
a
.
data
.
simpleData
.
rootPId
)},
getAfterA
:
function
(
a
,
b
,
c
){
for
(
var
d
=
0
,
e
=
D
.
length
;
d
<
e
;
d
++
)
D
[
d
].
apply
(
this
,
arguments
)},
getBeforeA
:
function
(
a
,
b
,
c
){
for
(
var
d
=
0
,
e
=
C
.
length
;
d
<
e
;
d
++
)
C
[
d
].
apply
(
this
,
arguments
)},
getInnerAfterA
:
function
(
a
,
b
,
c
){
for
(
var
d
=
0
,
e
=
F
.
length
;
d
<
e
;
d
++
)
F
[
d
].
apply
(
this
,
arguments
)},
getInnerBeforeA
:
function
(
a
,
b
,
c
){
for
(
var
d
=
0
,
e
=
E
.
length
;
d
<
e
;
d
++
)
E
[
d
].
apply
(
this
,
arguments
)},
getCache
:
function
(
a
){
return
w
[
a
.
treeId
]},
getNodeIndex
:
function
(
a
,
b
){
if
(
!
b
)
return
null
;
for
(
var
c
=
b
.
parentTId
?
b
.
getParentNode
():
e
.
getRoot
(
a
),
c
=
e
.
nodeChildren
(
a
,
c
),
d
=
0
,
g
=
c
.
length
-
1
;
d
<=
g
;
d
++
)
if
(
c
[
d
]
===
b
)
return
d
;
return
-
1
},
getNextNode
:
function
(
a
,
b
){
if
(
!
b
)
return
null
;
for
(
var
c
=
b
.
parentTId
?
b
.
getParentNode
():
e
.
getRoot
(
a
),
c
=
e
.
nodeChildren
(
a
,
c
),
d
=
0
,
g
=
c
.
length
-
1
;
d
<=
g
;
d
++
)
if
(
c
[
d
]
===
b
)
return
d
==
g
?
null
:
c
[
d
+
1
];
return
null
},
getNodeByParam
:
function
(
a
,
b
,
c
,
d
){
if
(
!
b
||!
c
)
return
null
;
for
(
var
g
=
0
,
h
=
b
.
length
;
g
<
h
;
g
++
){
var
k
=
b
[
g
];
if
(
k
[
c
]
==
d
)
return
b
[
g
];
k
=
e
.
nodeChildren
(
a
,
k
);
if
(
k
=
e
.
getNodeByParam
(
a
,
k
,
c
,
d
))
return
k
}
return
null
},
getNodeCache
:
function
(
a
,
b
){
if
(
!
b
)
return
null
;
var
c
=
w
[
a
.
treeId
].
nodes
[
e
.
getNodeCacheId
(
b
)];
return
c
?
c
:
null
},
getNodePath
:
function
(
a
,
b
){
if
(
!
b
)
return
null
;
var
c
;
(
c
=
b
.
parentTId
?
b
.
getParentNode
().
getPath
():[])
&&
c
.
push
(
b
);
return
c
},
getNodes
:
function
(
a
){
return
e
.
nodeChildren
(
a
,
e
.
getRoot
(
a
))},
getNodesByParam
:
function
(
a
,
b
,
c
,
d
){
if
(
!
b
||!
c
)
return
[];
for
(
var
g
=
[],
h
=
0
,
k
=
b
.
length
;
h
<
k
;
h
++
){
var
m
=
b
[
h
];
m
[
c
]
==
d
&&
g
.
push
(
m
);
m
=
e
.
nodeChildren
(
a
,
m
);
g
=
g
.
concat
(
e
.
getNodesByParam
(
a
,
m
,
c
,
d
))}
return
g
},
getNodesByParamFuzzy
:
function
(
a
,
b
,
c
,
d
){
if
(
!
b
||!
c
)
return
[];
for
(
var
g
=
[],
d
=
d
.
toLowerCase
(),
h
=
0
,
k
=
b
.
length
;
h
<
k
;
h
++
){
var
m
=
b
[
h
];
typeof
m
[
c
]
==
"
string
"
&&
b
[
h
][
c
].
toLowerCase
().
indexOf
(
d
)
>-
1
&&
g
.
push
(
m
);
m
=
e
.
nodeChildren
(
a
,
m
);
g
=
g
.
concat
(
e
.
getNodesByParamFuzzy
(
a
,
m
,
c
,
d
))}
return
g
},
getNodesByFilter
:
function
(
a
,
b
,
c
,
d
,
g
){
if
(
!
b
)
return
d
?
null
:[];
for
(
var
h
=
d
?
null
:[],
k
=
0
,
m
=
b
.
length
;
k
<
m
;
k
++
){
var
f
=
b
[
k
];
if
(
j
.
apply
(
c
,[
f
,
g
],
!
1
)){
if
(
d
)
return
f
;
h
.
push
(
f
)}
f
=
e
.
nodeChildren
(
a
,
f
);
f
=
e
.
getNodesByFilter
(
a
,
f
,
c
,
d
,
g
);
if
(
d
&&
f
)
return
f
;
h
=
d
?
f
:
h
.
concat
(
f
)}
return
h
},
getPreNode
:
function
(
a
,
b
){
if
(
!
b
)
return
null
;
for
(
var
c
=
b
.
parentTId
?
b
.
getParentNode
():
e
.
getRoot
(
a
),
c
=
e
.
nodeChildren
(
a
,
c
),
d
=
0
,
g
=
c
.
length
;
d
<
g
;
d
++
)
if
(
c
[
d
]
===
b
)
return
d
==
0
?
null
:
c
[
d
-
1
];
return
null
},
getRoot
:
function
(
a
){
return
a
?
v
[
a
.
treeId
]:
null
},
getRoots
:
function
(){
return
v
},
getSetting
:
function
(
a
){
return
s
[
a
]},
getSettings
:
function
(){
return
s
},
getZTreeTools
:
function
(
a
){
return
(
a
=
this
.
getRoot
(
this
.
getSetting
(
a
)))?
a
.
treeTools
:
null
},
initCache
:
function
(
a
){
for
(
var
b
=
0
,
c
=
z
.
length
;
b
<
c
;
b
++
)
z
[
b
].
apply
(
this
,
arguments
)},
initNode
:
function
(
a
,
b
,
c
,
d
,
e
,
h
){
for
(
var
k
=
0
,
f
=
A
.
length
;
k
<
f
;
k
++
)
A
[
k
].
apply
(
this
,
arguments
)},
initRoot
:
function
(
a
){
for
(
var
b
=
0
,
c
=
B
.
length
;
b
<
c
;
b
++
)
B
[
b
].
apply
(
this
,
arguments
)},
isSelectedNode
:
function
(
a
,
b
){
for
(
var
c
=
e
.
getRoot
(
a
),
d
=
0
,
g
=
c
.
curSelectedList
.
length
;
d
<
g
;
d
++
)
if
(
b
===
c
.
curSelectedList
[
d
])
return
!
0
;
return
!
1
},
nodeChildren
:
function
(
a
,
b
,
c
){
if
(
!
b
)
return
null
;
a
=
a
.
data
.
key
.
children
;
typeof
c
!==
"
undefined
"
&&
(
b
[
a
]
=
c
);
return
b
[
a
]},
nodeIsParent
:
function
(
a
,
b
,
c
){
if
(
!
b
)
return
!
1
;
a
=
a
.
data
.
key
.
isParent
;
typeof
c
!==
"
undefined
"
&&
(
typeof
c
===
"
string
"
&&
(
c
=
j
.
eqs
(
checked
,
"
true
"
)),
b
[
a
]
=!!
c
);
return
b
[
a
]},
nodeName
:
function
(
a
,
b
,
c
){
a
=
a
.
data
.
key
.
name
;
typeof
c
!==
"
undefined
"
&&
(
b
[
a
]
=
c
);
return
""
+
b
[
a
]},
nodeTitle
:
function
(
a
,
b
){
return
""
+
b
[
a
.
data
.
key
.
title
===
""
?
a
.
data
.
key
.
name
:
a
.
data
.
key
.
title
]},
removeNodeCache
:
function
(
a
,
b
){
var
c
=
e
.
nodeChildren
(
a
,
b
);
if
(
c
)
for
(
var
d
=
0
,
g
=
c
.
length
;
d
<
g
;
d
++
)
e
.
removeNodeCache
(
a
,
c
[
d
]);
e
.
getCache
(
a
).
nodes
[
e
.
getNodeCacheId
(
b
.
tId
)]
=
null
},
removeSelectedNode
:
function
(
a
,
b
){
for
(
var
c
=
e
.
getRoot
(
a
),
d
=
0
,
g
=
c
.
curSelectedList
.
length
;
d
<
g
;
d
++
)
if
(
b
===
c
.
curSelectedList
[
d
]
||!
e
.
getNodeCache
(
a
,
c
.
curSelectedList
[
d
].
tId
))
c
.
curSelectedList
.
splice
(
d
,
1
),
a
.
treeObj
.
trigger
(
f
.
event
.
UNSELECTED
,[
a
.
treeId
,
b
]),
d
--
,
g
--
},
setCache
:
function
(
a
,
b
){
w
[
a
.
treeId
]
=
b
},
setRoot
:
function
(
a
,
b
){
v
[
a
.
treeId
]
=
b
},
setZTreeTools
:
function
(
a
,
b
){
for
(
var
c
=
0
,
d
=
G
.
length
;
c
<
d
;
c
++
)
G
[
c
].
apply
(
this
,
arguments
)},
transformToArrayFormat
:
function
(
a
,
b
){
function
c
(
b
){
d
.
push
(
b
);(
b
=
e
.
nodeChildren
(
a
,
b
))
&&
(
d
=
d
.
concat
(
e
.
transformToArrayFormat
(
a
,
b
)))}
if
(
!
b
)
return
[];
var
d
=
[];
if
(
j
.
isArray
(
b
))
for
(
var
g
=
0
,
h
=
b
.
length
;
g
<
h
;
g
++
)
c
(
b
[
g
]);
else
c
(
b
);
return
d
},
transformTozTreeFormat
:
function
(
a
,
b
){
var
c
,
d
,
g
=
a
.
data
.
simpleData
.
idKey
,
h
=
a
.
data
.
simpleData
.
pIdKey
;
if
(
!
g
||
g
==
""
||!
b
)
return
[];
if
(
j
.
isArray
(
b
)){
var
k
=
[],
f
=
{};
for
(
c
=
0
,
d
=
b
.
length
;
c
<
d
;
c
++
)
f
[
b
[
c
][
g
]]
=
b
[
c
];
for
(
c
=
0
,
d
=
b
.
length
;
c
<
d
;
c
++
){
var
i
=
f
[
b
[
c
][
h
]];
if
(
i
&&
b
[
c
][
g
]
!=
b
[
c
][
h
]){
var
o
=
e
.
nodeChildren
(
a
,
i
);
o
||
(
o
=
e
.
nodeChildren
(
a
,
i
,[]));
o
.
push
(
b
[
c
])}
else
k
.
push
(
b
[
c
])}
return
k
}
else
return
[
b
]}},
n
=
{
bindEvent
:
function
(
a
){
for
(
var
b
=
0
,
c
=
x
.
length
;
b
<
c
;
b
++
)
x
[
b
].
apply
(
this
,
arguments
)},
unbindEvent
:
function
(
a
){
for
(
var
b
=
0
,
c
=
y
.
length
;
b
<
c
;
b
++
)
y
[
b
].
apply
(
this
,
arguments
)},
bindTree
:
function
(
a
){
var
b
=
{
treeId
:
a
.
treeId
},
c
=
a
.
treeObj
;
a
.
view
.
txtSelectedEnable
||
c
.
bind
(
"
selectstart
"
,
u
).
css
({
"
-moz-user-select
"
:
"
-moz-none
"
});
c
.
bind
(
"
click
"
,
b
,
n
.
proxy
);
c
.
bind
(
"
dblclick
"
,
b
,
n
.
proxy
);
c
.
bind
(
"
mouseover
"
,
b
,
n
.
proxy
);
c
.
bind
(
"
mouseout
"
,
b
,
n
.
proxy
);
c
.
bind
(
"
mousedown
"
,
b
,
n
.
proxy
);
c
.
bind
(
"
mouseup
"
,
b
,
n
.
proxy
);
c
.
bind
(
"
contextmenu
"
,
b
,
n
.
proxy
)},
unbindTree
:
function
(
a
){
a
.
treeObj
.
unbind
(
"
selectstart
"
,
u
).
unbind
(
"
click
"
,
n
.
proxy
).
unbind
(
"
dblclick
"
,
n
.
proxy
).
unbind
(
"
mouseover
"
,
n
.
proxy
).
unbind
(
"
mouseout
"
,
n
.
proxy
).
unbind
(
"
mousedown
"
,
n
.
proxy
).
unbind
(
"
mouseup
"
,
n
.
proxy
).
unbind
(
"
contextmenu
"
,
n
.
proxy
)},
doProxy
:
function
(
a
){
for
(
var
b
=
[],
c
=
0
,
d
=
t
.
length
;
c
<
d
;
c
++
){
var
e
=
t
[
c
].
apply
(
this
,
arguments
);
b
.
push
(
e
);
if
(
e
.
stop
)
break
}
return
b
},
proxy
:
function
(
a
){
var
b
=
e
.
getSetting
(
a
.
data
.
treeId
);
if
(
!
j
.
uCanDo
(
b
,
a
))
return
!
0
;
for
(
var
b
=
n
.
doProxy
(
a
),
c
=!
0
,
d
=
0
,
g
=
b
.
length
;
d
<
g
;
d
++
){
var
h
=
b
[
d
];
h
.
nodeEventCallback
&&
(
c
=
h
.
nodeEventCallback
.
apply
(
h
,[
a
,
h
.
node
])
&&
c
);
h
.
treeEventCallback
&&
(
c
=
h
.
treeEventCallback
.
apply
(
h
,[
a
,
h
.
node
])
&&
c
)}
return
c
}};
H
=
function
(
a
,
b
){
var
c
=
e
.
getSetting
(
a
.
data
.
treeId
);
if
(
b
.
open
){
if
(
j
.
apply
(
c
.
callback
.
beforeCollapse
,[
c
.
treeId
,
b
],
!
0
)
==!
1
)
return
!
0
}
else
if
(
j
.
apply
(
c
.
callback
.
beforeExpand
,[
c
.
treeId
,
b
],
!
0
)
==!
1
)
return
!
0
;
e
.
getRoot
(
c
).
expandTriggerFlag
=!
0
;
i
.
switchNode
(
c
,
b
);
return
!
0
};
I
=
function
(
a
,
b
){
var
c
=
e
.
getSetting
(
a
.
data
.
treeId
),
d
=
c
.
view
.
autoCancelSelected
&&
(
a
.
ctrlKey
||
a
.
metaKey
)
&&
e
.
isSelectedNode
(
c
,
b
)?
0
:
c
.
view
.
autoCancelSelected
&&
(
a
.
ctrlKey
||
a
.
metaKey
)
&&
c
.
view
.
selectedMulti
?
2
:
1
;
if
(
j
.
apply
(
c
.
callback
.
beforeClick
,[
c
.
treeId
,
b
,
d
],
!
0
)
==!
1
)
return
!
0
;
d
===
0
?
i
.
cancelPreSelectedNode
(
c
,
b
):
i
.
selectNode
(
c
,
b
,
d
===
2
);
c
.
treeObj
.
trigger
(
f
.
event
.
CLICK
,[
a
,
c
.
treeId
,
b
,
d
]);
return
!
0
};
J
=
function
(
a
,
b
){
var
c
=
e
.
getSetting
(
a
.
data
.
treeId
);
j
.
apply
(
c
.
callback
.
beforeMouseDown
,[
c
.
treeId
,
b
],
!
0
)
&&
j
.
apply
(
c
.
callback
.
onMouseDown
,[
a
,
c
.
treeId
,
b
]);
return
!
0
};
K
=
function
(
a
,
b
){
var
c
=
e
.
getSetting
(
a
.
data
.
treeId
);
j
.
apply
(
c
.
callback
.
beforeMouseUp
,[
c
.
treeId
,
b
],
!
0
)
&&
j
.
apply
(
c
.
callback
.
onMouseUp
,[
a
,
c
.
treeId
,
b
]);
return
!
0
};
L
=
function
(
a
,
b
){
var
c
=
e
.
getSetting
(
a
.
data
.
treeId
);
j
.
apply
(
c
.
callback
.
beforeDblClick
,[
c
.
treeId
,
b
],
!
0
)
&&
j
.
apply
(
c
.
callback
.
onDblClick
,[
a
,
c
.
treeId
,
b
]);
return
!
0
};
M
=
function
(
a
,
b
){
var
c
=
e
.
getSetting
(
a
.
data
.
treeId
);
j
.
apply
(
c
.
callback
.
beforeRightClick
,[
c
.
treeId
,
b
],
!
0
)
&&
j
.
apply
(
c
.
callback
.
onRightClick
,[
a
,
c
.
treeId
,
b
]);
return
typeof
c
.
callback
.
onRightClick
!=
"
function
"
};
u
=
function
(
a
){
a
=
a
.
originalEvent
.
srcElement
.
nodeName
.
toLowerCase
();
return
a
===
"
input
"
||
a
===
"
textarea
"
};
var
j
=
{
apply
:
function
(
a
,
b
,
c
){
return
typeof
a
==
"
function
"
?
a
.
apply
(
O
,
b
?
b
:[]):
c
},
canAsync
:
function
(
a
,
b
){
var
c
=
e
.
nodeChildren
(
a
,
b
),
d
=
e
.
nodeIsParent
(
a
,
b
);
return
a
.
async
.
enable
&&
b
&&
d
&&!
(
b
.
zAsync
||
c
&&
c
.
length
>
0
)},
clone
:
function
(
a
){
if
(
a
===
null
)
return
null
;
var
b
=
j
.
isArray
(
a
)?[]:{},
c
;
for
(
c
in
a
)
b
[
c
]
=
a
[
c
]
instanceof
Date
?
new
Date
(
a
[
c
].
getTime
()):
typeof
a
[
c
]
===
"
object
"
?
j
.
clone
(
a
[
c
]):
a
[
c
];
return
b
},
eqs
:
function
(
a
,
b
){
return
a
.
toLowerCase
()
===
b
.
toLowerCase
()},
isArray
:
function
(
a
){
return
Object
.
prototype
.
toString
.
apply
(
a
)
===
"
[object Array]
"
},
isElement
:
function
(
a
){
return
typeof
HTMLElement
===
"
object
"
?
a
instanceof
HTMLElement
:
a
&&
typeof
a
===
"
object
"
&&
a
!==
null
&&
a
.
nodeType
===
1
&&
typeof
a
.
nodeName
===
"
string
"
},
$
:
function
(
a
,
b
,
c
){
b
&&
typeof
b
!=
"
string
"
&&
(
c
=
b
,
b
=
""
);
return
typeof
a
==
"
string
"
?
q
(
a
,
c
?
c
.
treeObj
.
get
(
0
).
ownerDocument
:
null
):
q
(
"
#
"
+
a
.
tId
+
b
,
c
?
c
.
treeObj
:
null
)},
getMDom
:
function
(
a
,
b
,
c
){
if
(
!
b
)
return
null
;
for
(;
b
&&
b
.
id
!==
a
.
treeId
;){
for
(
var
d
=
0
,
e
=
c
.
length
;
b
.
tagName
&&
d
<
e
;
d
++
)
if
(
j
.
eqs
(
b
.
tagName
,
c
[
d
].
tagName
)
&&
b
.
getAttribute
(
c
[
d
].
attrName
)
!==
null
)
return
b
;
b
=
b
.
parentNode
}
return
null
},
getNodeMainDom
:
function
(
a
){
return
q
(
a
).
parent
(
"
li
"
).
get
(
0
)
||
q
(
a
).
parentsUntil
(
"
li
"
).
parent
().
get
(
0
)},
isChildOrSelf
:
function
(
a
,
b
){
return
q
(
a
).
closest
(
"
#
"
+
b
).
length
>
0
},
uCanDo
:
function
(){
return
!
0
}},
i
=
{
addNodes
:
function
(
a
,
b
,
c
,
d
,
g
){
var
h
=
e
.
nodeIsParent
(
a
,
b
);
if
(
!
a
.
data
.
keep
.
leaf
||!
b
||
h
)
if
(
j
.
isArray
(
d
)
||
(
d
=
[
d
]),
a
.
data
.
simpleData
.
enable
&&
(
d
=
e
.
transformTozTreeFormat
(
a
,
d
)),
b
){
var
h
=
l
(
b
,
f
.
id
.
SWITCH
,
a
),
k
=
l
(
b
,
f
.
id
.
ICON
,
a
),
m
=
l
(
b
,
f
.
id
.
UL
,
a
);
if
(
!
b
.
open
)
i
.
replaceSwitchClass
(
b
,
h
,
f
.
folder
.
CLOSE
),
i
.
replaceIcoClass
(
b
,
k
,
f
.
folder
.
CLOSE
),
b
.
open
=!
1
,
m
.
css
({
display
:
"
none
"
});
e
.
addNodesData
(
a
,
b
,
c
,
d
);
i
.
createNodes
(
a
,
b
.
level
+
1
,
d
,
b
,
c
);
g
||
i
.
expandCollapseParentNode
(
a
,
b
,
!
0
)}
else
e
.
addNodesData
(
a
,
e
.
getRoot
(
a
),
c
,
d
),
i
.
createNodes
(
a
,
0
,
d
,
null
,
c
)},
appendNodes
:
function
(
a
,
b
,
c
,
d
,
g
,
h
,
k
){
if
(
!
c
)
return
[];
var
f
=
[],
j
=
d
?
d
:
e
.
getRoot
(
a
),
j
=
e
.
nodeChildren
(
a
,
j
),
o
,
l
;
if
(
!
j
||
g
>=
j
.
length
-
c
.
length
)
g
=-
1
;
for
(
var
n
=
0
,
Q
=
c
.
length
;
n
<
Q
;
n
++
){
var
p
=
c
[
n
];
h
&&
(
o
=
(
g
===
0
||
j
.
length
==
c
.
length
)
&&
n
==
0
,
l
=
g
<
0
&&
n
==
c
.
length
-
1
,
e
.
initNode
(
a
,
b
,
p
,
d
,
o
,
l
,
k
),
e
.
addNodeCache
(
a
,
p
));
o
=
e
.
nodeIsParent
(
a
,
p
);
l
=
[];
var
q
=
e
.
nodeChildren
(
a
,
p
);
q
&&
q
.
length
>
0
&&
(
l
=
i
.
appendNodes
(
a
,
b
+
1
,
q
,
p
,
-
1
,
h
,
k
&&
p
.
open
));
k
&&
(
i
.
makeDOMNodeMainBefore
(
f
,
a
,
p
),
i
.
makeDOMNodeLine
(
f
,
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
,
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
&&
g
<
h
;
g
++
){
var
r
=
m
[
g
].
split
(
"
=
"
),
o
=
r
;
r
.
length
>
1
&&
(
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
<
h
;
g
+=
2
)
k
[
m
[
g
]]
=
m
[
g
+
1
];
else
for
(
var
n
in
m
)
k
[
n
]
=
m
[
n
];
var
P
=
e
.
getRoot
(
a
).
_ver
;
q
.
ajax
({
contentType
:
a
.
async
.
contentType
,
cache
:
!
1
,
type
:
a
.
async
.
type
,
url
:
j
.
apply
(
a
.
async
.
url
,[
a
.
treeId
,
b
],
a
.
async
.
url
),
data
:
a
.
async
.
contentType
.
indexOf
(
"
application/json
"
)
>-
1
?
JSON
.
stringify
(
k
):
k
,
dataType
:
a
.
async
.
dataType
,
success
:
function
(
h
){
if
(
P
==
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
])}}});
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
&&
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
])},
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
,
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
,
[])},
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
<
l
;
j
++
)
h
[
j
]
&&
i
.
expandCollapseSonNode
(
a
,
h
[
j
],
c
,
k
);
e
.
getRoot
(
a
).
expandTriggerFlag
=
f
;
i
.
expandCollapseNode
(
a
,
b
,
c
,
d
,
g
)},
isSelectedNode
:
function
(
a
,
b
){
if
(
!
b
)
return
!
1
;
var
c
=
e
.
getRoot
(
a
).
curSelectedList
,
d
;
for
(
d
=
c
.
length
-
1
;
d
>=
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
,
"
<
"
).
replace
(
/>/g
,
"
>
"
);
a
.
push
(
"
<span id='
"
,
c
.
tId
,
f
.
id
.
ICON
,
"
' title='' treeNode
"
,
f
.
id
.
ICON
,
"
class='
"
,
i
.
makeNodeIcoClass
(
b
,
c
),
"
' style='
"
,
i
.
makeNodeIcoStyle
(
b
,
c
),
"
'></span><span id='
"
,
c
.
tId
,
f
.
id
.
SPAN
,
"
' class='
"
,
f
.
className
.
NAME
,
"
'>
"
,
d
,
"
</span>
"
)},
makeDOMNodeLine
:
function
(
a
,
b
,
c
){
a
.
push
(
"
<span id='
"
,
c
.
tId
,
f
.
id
.
SWITCH
,
"
' title='' class='
"
,
i
.
makeNodeLineClass
(
b
,
c
),
"
' treeNode
"
,
f
.
id
.
SWITCH
,
"
></span>
"
)},
makeDOMNodeMainAfter
:
function
(
a
){
a
.
push
(
"
</li>
"
)},
makeDOMNodeMainBefore
:
function
(
a
,
b
,
c
){
a
.
push
(
"
<li id='
"
,
c
.
tId
,
"
' class='
"
,
f
.
className
.
LEVEL
,
c
.
level
,
"
' tabindex='0' hidefocus='true' treenode>
"
)},
makeDOMNodeNameAfter
:
function
(
a
){
a
.
push
(
"
</a>
"
)},
makeDOMNodeNameBefore
:
function
(
a
,
b
,
c
){
var
d
=
e
.
nodeTitle
(
b
,
c
),
g
=
i
.
makeNodeUrl
(
b
,
c
),
h
=
i
.
makeNodeFontCss
(
b
,
c
),
k
=
[],
m
;
for
(
m
in
h
)
k
.
push
(
m
,
"
:
"
,
h
[
m
],
"
;
"
);
a
.
push
(
"
<a id='
"
,
c
.
tId
,
f
.
id
.
A
,
"
' class='
"
,
f
.
className
.
LEVEL
,
c
.
level
,
"
' treeNode
"
,
f
.
id
.
A
,
'
onclick="
'
,
c
.
click
||
""
,
'
"
'
,
g
!=
null
&&
g
.
length
>
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
,
"
<
"
).
replace
(
/>/g
,
"
>
"
),
"
'
"
);
a
.
push
(
"
>
"
)},
makeNodeFontCss
:
function
(
a
,
b
){
var
c
=
j
.
apply
(
a
.
view
.
fontCss
,[
a
.
treeId
,
b
],
a
.
view
.
fontCss
);
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
==
!
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
+
"
"
+
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
(
"
<ul id='
"
,
b
.
tId
,
f
.
id
.
UL
,
"
' class='
"
,
f
.
className
.
LEVEL
,
b
.
level
,
"
"
,
i
.
makeUlLineClass
(
a
,
b
),
"
' style='display:
"
,
b
.
open
?
"
block
"
:
"
none
"
,
"
'>
"
);
c
.
push
(
d
);
c
.
push
(
"
</ul>
"
)},
makeUlLineClass
:
function
(
a
,
b
){
return
a
.
view
.
showLine
&&!
b
.
isLastNode
?
f
.
line
.
LINE
:
""
},
removeChildNodes
:
function
(
a
,
b
){
if
(
b
){
var
c
=
e
.
nodeChildren
(
a
,
b
);
if
(
c
){
for
(
var
d
=
0
,
g
=
c
.
length
;
d
<
g
;
d
++
)
e
.
removeNodeCache
(
a
,
c
[
d
]);
e
.
removeSelectedNode
(
a
);
delete
b
[
a
.
data
.
key
.
children
];
a
.
data
.
keep
.
parent
?
l
(
b
,
f
.
id
.
UL
,
a
).
empty
():(
e
.
nodeIsParent
(
a
,
b
,
!
1
),
b
.
open
=!
1
,
c
=
l
(
b
,
f
.
id
.
SWITCH
,
a
),
d
=
l
(
b
,
f
.
id
.
ICON
,
a
),
i
.
replaceSwitchClass
(
b
,
c
,
f
.
folder
.
DOCU
),
i
.
replaceIcoClass
(
b
,
d
,
f
.
folder
.
DOCU
),
l
(
b
,
f
.
id
.
UL
,
a
).
remove
())}}},
scrollIntoView
:
function
(
a
,
b
){
if
(
b
)
if
(
typeof
Element
===
"
undefined
"
){
var
c
=
a
.
treeObj
.
get
(
0
).
getBoundingClientRect
(),
d
=
b
.
getBoundingClientRect
();(
d
.
top
<
c
.
top
||
d
.
bottom
>
c
.
bottom
||
d
.
right
>
c
.
right
||
d
.
left
<
c
.
left
)
&&
b
.
scrollIntoView
()}
else
{
if
(
!
Element
.
prototype
.
scrollIntoViewIfNeeded
)
Element
.
prototype
.
scrollIntoViewIfNeeded
=
function
(
a
){
function
b
(
a
,
c
,
d
,
f
){
return
{
left
:
a
,
top
:
c
,
width
:
d
,
height
:
f
,
right
:
a
+
d
,
bottom
:
c
+
f
,
translate
:
function
(
e
,
g
){
return
b
(
e
+
a
,
g
+
c
,
d
,
f
)},
relativeFromTo
:
function
(
g
,
k
){
var
i
=
a
,
j
=
c
,
g
=
g
.
offsetParent
,
k
=
k
.
offsetParent
;
if
(
g
===
k
)
return
e
;
for
(;
g
;
g
=
g
.
offsetParent
)
i
+=
g
.
offsetLeft
+
g
.
clientLeft
,
j
+=
g
.
offsetTop
+
g
.
clientTop
;
for
(;
k
;
k
=
k
.
offsetParent
)
i
-=
k
.
offsetLeft
+
k
.
clientLeft
,
j
-=
k
.
offsetTop
+
k
.
clientTop
;
return
b
(
i
,
j
,
d
,
f
)}}}
for
(
var
c
,
d
=
this
,
e
=
b
(
this
.
offsetLeft
,
this
.
offsetTop
,
this
.
offsetWidth
,
this
.
offsetHeight
);
j
.
isElement
(
c
=
d
.
parentNode
);){
var
f
=
c
.
offsetLeft
+
c
.
clientLeft
,
i
=
c
.
offsetTop
+
c
.
clientTop
,
e
=
e
.
relativeFromTo
(
d
,
c
).
translate
(
-
f
,
-
i
);
c
.
scrollLeft
=!
1
===
a
||
e
.
left
<=
c
.
scrollLeft
+
c
.
clientWidth
&&
c
.
scrollLeft
<=
e
.
right
-
c
.
clientWidth
+
c
.
clientWidth
?
Math
.
min
(
e
.
left
,
Math
.
max
(
e
.
right
-
c
.
clientWidth
,
c
.
scrollLeft
)):(
e
.
right
-
c
.
clientWidth
+
e
.
left
)
/
2
;
c
.
scrollTop
=
!
1
===
a
||
e
.
top
<=
c
.
scrollTop
+
c
.
clientHeight
&&
c
.
scrollTop
<=
e
.
bottom
-
c
.
clientHeight
+
c
.
clientHeight
?
Math
.
min
(
e
.
top
,
Math
.
max
(
e
.
bottom
-
c
.
clientHeight
,
c
.
scrollTop
)):(
e
.
bottom
-
c
.
clientHeight
+
e
.
top
)
/
2
;
e
=
e
.
translate
(
f
-
c
.
scrollLeft
,
i
-
c
.
scrollTop
);
d
=
c
}};
b
.
scrollIntoViewIfNeeded
()}},
setFirstNode
:
function
(
a
,
b
){
var
c
=
e
.
nodeChildren
(
a
,
b
);
if
(
c
.
length
>
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
?
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
<
k
;
h
++
)
if
(
g
[
h
].
tId
==
b
.
tId
){
g
.
splice
(
h
,
1
);
break
}
i
.
setFirstNode
(
a
,
d
);
i
.
setLastNode
(
a
,
d
);
var
j
,
h
=
g
.
length
;
if
(
!
a
.
data
.
keep
.
parent
&&
h
==
0
)
e
.
nodeIsParent
(
a
,
d
,
!
1
),
d
.
open
=!
1
,
delete
d
[
a
.
data
.
key
.
children
],
h
=
l
(
d
,
f
.
id
.
UL
,
a
),
k
=
l
(
d
,
f
.
id
.
SWITCH
,
a
),
j
=
l
(
d
,
f
.
id
.
ICON
,
a
),
i
.
replaceSwitchClass
(
d
,
k
,
f
.
folder
.
DOCU
),
i
.
replaceIcoClass
(
d
,
j
,
f
.
folder
.
DOCU
),
h
.
css
(
"
display
"
,
"
none
"
);
else
if
(
a
.
view
.
showLine
&&
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
&&
(
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
?
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
"
,
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
))},
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
"
,
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
))?
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
);
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
);
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
,
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
,
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
<
f
;
c
++
)
if
(
b
[
c
]
==
a
)
return
c
;
return
-
1
},
getSelectedNodes
:
function
(){
for
(
var
a
=
[],
b
=
e
.
getRoot
(
d
).
curSelectedList
,
c
=
0
,
f
=
b
.
length
;
c
<
f
;
c
++
)
a
.
push
(
b
[
c
]);
return
a
},
isSelectedNode
:
function
(
a
){
return
e
.
isSelectedNode
(
d
,
a
)},
reAsyncChildNodesPromise
:
function
(
a
,
b
,
c
){
return
new
Promise
(
function
(
d
,
e
){
try
{
g
.
reAsyncChildNodes
(
a
,
b
,
c
,
function
(){
d
(
a
)})}
catch
(
f
){
e
(
f
)}})},
reAsyncChildNodes
:
function
(
a
,
b
,
c
,
g
){
if
(
this
.
setting
.
async
.
enable
){
var
j
=!
a
;
j
&&
(
a
=
e
.
getRoot
(
d
));
if
(
b
==
"
refresh
"
){
for
(
var
b
=
e
.
nodeChildren
(
d
,
a
),
n
=
0
,
q
=
b
?
b
.
length
:
0
;
n
<
q
;
n
++
)
e
.
removeNodeCache
(
d
,
b
[
n
]);
e
.
removeSelectedNode
(
d
);
e
.
nodeChildren
(
d
,
a
,[]);
j
?
this
.
setting
.
treeObj
.
empty
():
l
(
a
,
f
.
id
.
UL
,
d
).
empty
()}
i
.
asyncNode
(
this
.
setting
,
j
?
null
:
a
,
!!
c
,
g
)}},
refresh
:
function
(){
this
.
setting
.
treeObj
.
empty
();
var
a
=
e
.
getRoot
(
d
),
b
=
e
.
nodeChildren
(
d
,
a
);
e
.
initRoot
(
d
);
e
.
nodeChildren
(
d
,
a
,
b
);
e
.
initCache
(
d
);
i
.
createNodes
(
d
,
0
,
e
.
nodeChildren
(
d
,
a
),
null
,
-
1
)},
removeChildNodes
:
function
(
a
){
if
(
!
a
)
return
null
;
var
b
=
e
.
nodeChildren
(
d
,
a
);
i
.
removeChildNodes
(
d
,
a
);
return
b
?
b
:
null
},
removeNode
:
function
(
a
,
b
){
a
&&
(
b
=!!
b
,
b
&&
j
.
apply
(
d
.
callback
.
beforeRemove
,[
d
.
treeId
,
a
],
!
0
)
==!
1
||
(
i
.
removeNode
(
d
,
a
),
b
&&
this
.
setting
.
treeObj
.
trigger
(
f
.
event
.
REMOVE
,[
d
.
treeId
,
a
])))},
selectNode
:
function
(
a
,
b
,
c
){
function
e
(){
if
(
!
c
){
var
b
=
l
(
a
,
d
).
get
(
0
);
i
.
scrollIntoView
(
d
,
b
)}}
if
(
a
&&
j
.
uCanDo
(
d
)){
b
=
d
.
view
.
selectedMulti
&&
b
;
if
(
a
.
parentTId
)
i
.
expandCollapseParentNode
(
d
,
a
.
getParentNode
(),
!
0
,
!
1
,
e
);
else
if
(
!
c
)
try
{
l
(
a
,
d
).
focus
().
blur
()}
catch
(
f
){}
i
.
selectNode
(
d
,
a
,
b
)}},
transformTozTreeNodes
:
function
(
a
){
return
e
.
transformTozTreeFormat
(
d
,
a
)},
transformToArray
:
function
(
a
){
return
e
.
transformToArrayFormat
(
d
,
a
)},
updateNode
:
function
(
a
){
a
&&
l
(
a
,
d
).
get
(
0
)
&&
j
.
uCanDo
(
d
)
&&
(
i
.
setNodeName
(
d
,
a
),
i
.
setNodeTarget
(
d
,
a
),
i
.
setNodeUrl
(
d
,
a
),
i
.
setNodeLineIcos
(
d
,
a
),
i
.
setNodeFontCss
(
d
,
a
))}};
a
.
treeTools
=
g
;
e
.
setZTreeTools
(
d
,
g
);(
c
=
e
.
nodeChildren
(
d
,
a
))
&&
c
.
length
>
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
);
js/jquery.ztree.excheck.js
浏览文件 @
ad144cf5
/*
* JQuery zTree excheck v3.5.3
1
* JQuery zTree excheck v3.5.3
2
* http://treejs.cn/
*
* Copyright (c) 2010 Hunter.z
...
...
@@ -8,7 +8,7 @@
* http://www.opensource.org/licenses/mit-license.php
*
* email: hunter.z@263.net
* Date: 201
7-12-28
* Date: 201
8-01-06
*/
(
function
(
$
){
//default consts of excheck
...
...
@@ -131,10 +131,9 @@
//default init node of excheck
_initNode
=
function
(
setting
,
level
,
n
,
parentNode
,
isFirstNode
,
isLastNode
,
openFlag
)
{
if
(
!
n
)
return
;
var
checkedKey
=
setting
.
data
.
key
.
checked
;
if
(
typeof
n
[
checkedKey
]
==
"
string
"
)
n
[
checkedKey
]
=
tools
.
eqs
(
n
[
checkedKey
],
"
true
"
);
n
[
checkedKey
]
=
!!
n
[
checkedKey
];
n
.
checkedOld
=
n
[
checkedKey
];
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
"
);
...
...
@@ -145,14 +144,13 @@
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
&&
n
[
checkedKey
]
)
{
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
)
{
var
checkedKey
=
setting
.
data
.
key
.
checked
;
if
(
setting
.
check
.
enable
)
{
data
.
makeChkFlag
(
setting
,
node
);
html
.
push
(
"
<span ID='
"
,
node
.
tId
,
consts
.
id
.
CHECK
,
"
' class='
"
,
view
.
makeChkClass
(
setting
,
node
),
"
' treeNode
"
,
consts
.
id
.
CHECK
,
(
node
.
nocheck
===
true
?
"
style='display:none;'
"
:
""
),
"
></span>
"
);
...
...
@@ -161,20 +159,20 @@
//update zTreeObj, add method of check
_zTreeTools
=
function
(
setting
,
zTreeTools
)
{
zTreeTools
.
checkNode
=
function
(
node
,
checked
,
checkTypeFlag
,
callbackFlag
)
{
var
checkedKey
=
this
.
setting
.
data
.
key
.
checked
;
var
nodeChecked
=
data
.
nodeChecked
(
setting
,
node
)
;
if
(
node
.
chkDisabled
===
true
)
return
;
if
(
checked
!==
true
&&
checked
!==
false
)
{
checked
=
!
node
[
checkedKey
]
;
checked
=
!
node
Checked
;
}
callbackFlag
=
!!
callbackFlag
;
if
(
node
[
checkedKey
]
===
checked
&&
!
checkTypeFlag
)
{
if
(
node
Checked
===
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
)
{
node
[
checkedKey
]
=
checked
;
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
);
...
...
@@ -190,14 +188,14 @@
}
zTreeTools
.
getCheckedNodes
=
function
(
checked
)
{
var
ch
ildKey
=
this
.
setting
.
data
.
key
.
children
;
checked
=
(
checked
!==
false
);
return
data
.
getTreeCheckedNodes
(
this
.
setting
,
data
.
getRoot
(
this
.
setting
)[
childKey
]
,
checked
);
var
ch
ecked
=
(
checked
!==
false
)
;
var
children
=
data
.
nodeChildren
(
setting
,
data
.
getRoot
(
this
.
setting
)
);
return
data
.
getTreeCheckedNodes
(
this
.
setting
,
children
,
checked
);
}
zTreeTools
.
getChangeCheckedNodes
=
function
()
{
var
childKey
=
this
.
setting
.
data
.
key
.
children
;
return
data
.
getTreeChangeCheckedNodes
(
this
.
setting
,
data
.
getRoot
(
this
.
setting
)[
childKey
]
);
var
children
=
data
.
nodeChildren
(
setting
,
data
.
getRoot
(
this
.
setting
))
;
return
data
.
getTreeChangeCheckedNodes
(
this
.
setting
,
children
);
}
zTreeTools
.
setChkDisabled
=
function
(
node
,
disabled
,
inheritParent
,
inheritChildren
)
{
...
...
@@ -235,27 +233,28 @@
},
getCheckStatus
:
function
(
setting
,
node
)
{
if
(
!
setting
.
check
.
enable
||
node
.
nocheck
||
node
.
chkDisabled
)
return
null
;
var
checked
Key
=
setting
.
data
.
key
.
checked
,
var
checked
=
data
.
nodeChecked
(
setting
,
node
)
,
r
=
{
checked
:
node
[
checkedKey
]
,
half
:
node
.
halfCheck
?
node
.
halfCheck
:
(
setting
.
check
.
chkStyle
==
consts
.
radio
.
STYLE
?
(
node
.
check_Child_State
===
2
)
:
(
node
[
checkedKey
]
?
(
node
.
check_Child_State
>
-
1
&&
node
.
check_Child_State
<
2
)
:
(
node
.
check_Child_State
>
0
)))
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
childKey
=
setting
.
data
.
key
.
children
,
checkedKey
=
setting
.
data
.
key
.
checked
,
onlyOne
=
(
checked
&&
setting
.
check
.
chkStyle
==
consts
.
radio
.
STYLE
&&
setting
.
check
.
radioType
==
consts
.
radio
.
TYPE_ALL
);
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
++
)
{
if
(
nodes
[
i
].
nocheck
!==
true
&&
nodes
[
i
].
chkDisabled
!==
true
&&
nodes
[
i
][
checkedKey
]
==
checked
)
{
results
.
push
(
nodes
[
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
,
nodes
[
i
][
childKey
]
,
checked
,
results
);
data
.
getTreeCheckedNodes
(
setting
,
children
,
checked
,
results
);
if
(
onlyOne
&&
results
.
length
>
0
)
{
break
;
}
...
...
@@ -264,32 +263,33 @@
},
getTreeChangeCheckedNodes
:
function
(
setting
,
nodes
,
results
)
{
if
(
!
nodes
)
return
[];
var
childKey
=
setting
.
data
.
key
.
children
,
checkedKey
=
setting
.
data
.
key
.
checked
;
results
=
!
results
?
[]
:
results
;
for
(
var
i
=
0
,
l
=
nodes
.
length
;
i
<
l
;
i
++
)
{
if
(
nodes
[
i
].
nocheck
!==
true
&&
nodes
[
i
].
chkDisabled
!==
true
&&
nodes
[
i
][
checkedKey
]
!=
nodes
[
i
].
checkedOld
)
{
results
.
push
(
nodes
[
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
,
nodes
[
i
][
childKey
]
,
results
);
data
.
getTreeChangeCheckedNodes
(
setting
,
children
,
results
);
}
return
results
;
},
makeChkFlag
:
function
(
setting
,
node
)
{
if
(
!
node
)
return
;
var
ch
ildKey
=
setting
.
data
.
key
.
children
,
checkedKey
=
setting
.
data
.
key
.
checked
,
chkFlag
=
-
1
;
if
(
node
[
childKey
]
)
{
for
(
var
i
=
0
,
l
=
node
[
childKey
].
length
;
i
<
l
;
i
++
)
{
var
cNode
=
node
[
childKey
][
i
]
;
var
ch
kFlag
=
-
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
(
cNode
[
checkedKey
]
)
{
}
else
if
(
nodeChecked
)
{
tmp
=
2
;
}
else
{
tmp
=
cNode
.
check_Child_State
>
0
?
2
:
0
;
...
...
@@ -304,7 +304,7 @@
tmp
=
cNode
.
check_Child_State
;
}
else
if
(
cNode
.
halfCheck
===
true
)
{
tmp
=
1
;
}
else
if
(
cNode
[
checkedKey
]
)
{
}
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
;
...
...
@@ -332,10 +332,10 @@
_handler
=
{
onCheckNode
:
function
(
event
,
node
)
{
if
(
node
.
chkDisabled
===
true
)
return
false
;
var
setting
=
data
.
getSetting
(
event
.
data
.
treeId
),
checkedKey
=
setting
.
data
.
key
.
checked
;
var
setting
=
data
.
getSetting
(
event
.
data
.
treeId
);
if
(
tools
.
apply
(
setting
.
callback
.
beforeCheck
,
[
setting
.
treeId
,
node
],
true
)
==
false
)
return
true
;
node
[
checkedKey
]
=
!
node
[
checkedKey
];
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
);
...
...
@@ -368,17 +368,17 @@
_view
=
{
checkNodeRelation
:
function
(
setting
,
node
)
{
var
pNode
,
i
,
l
,
childKey
=
setting
.
data
.
key
.
children
,
checkedKey
=
setting
.
data
.
key
.
checked
,
r
=
consts
.
radio
;
var
nodeChecked
=
data
.
nodeChecked
(
setting
,
node
);
if
(
setting
.
check
.
chkStyle
==
r
.
STYLE
)
{
var
checkedList
=
data
.
getRadioCheckedList
(
setting
);
if
(
node
[
checkedKey
]
)
{
if
(
node
Checked
)
{
if
(
setting
.
check
.
radioType
==
r
.
TYPE_ALL
)
{
for
(
i
=
checkedList
.
length
-
1
;
i
>=
0
;
i
--
)
{
pNode
=
checkedList
[
i
];
if
(
pNode
[
checkedKey
]
&&
pNode
!=
node
)
{
pNode
[
checkedKey
]
=
false
;
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
);
...
...
@@ -390,10 +390,12 @@
checkedList
.
push
(
node
);
}
else
{
var
parentNode
=
(
node
.
parentTId
)
?
node
.
getParentNode
()
:
data
.
getRoot
(
setting
);
for
(
i
=
0
,
l
=
parentNode
[
childKey
].
length
;
i
<
l
;
i
++
)
{
pNode
=
parentNode
[
childKey
][
i
];
if
(
pNode
[
checkedKey
]
&&
pNode
!=
node
)
{
pNode
[
checkedKey
]
=
false
;
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
);
}
}
...
...
@@ -408,24 +410,25 @@
}
}
else
{
if
(
node
[
checkedKey
]
&&
(
!
node
[
childKey
]
||
node
[
childKey
].
length
==
0
||
setting
.
check
.
chkboxType
.
Y
.
indexOf
(
"
s
"
)
>
-
1
))
{
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
(
!
node
[
checkedKey
]
&&
(
!
node
[
childKey
]
||
node
[
childKey
]
.
length
==
0
||
setting
.
check
.
chkboxType
.
N
.
indexOf
(
"
s
"
)
>
-
1
))
{
if
(
!
node
Checked
&&
(
!
children
||
children
.
length
==
0
||
setting
.
check
.
chkboxType
.
N
.
indexOf
(
"
s
"
)
>
-
1
))
{
view
.
setSonNodeCheckBox
(
setting
,
node
,
false
);
}
if
(
node
[
checkedKey
]
&&
setting
.
check
.
chkboxType
.
Y
.
indexOf
(
"
p
"
)
>
-
1
)
{
if
(
node
Checked
&&
setting
.
check
.
chkboxType
.
Y
.
indexOf
(
"
p
"
)
>
-
1
)
{
view
.
setParentNodeCheckBox
(
setting
,
node
,
true
);
}
if
(
!
node
[
checkedKey
]
&&
setting
.
check
.
chkboxType
.
N
.
indexOf
(
"
p
"
)
>
-
1
)
{
if
(
!
node
Checked
&&
setting
.
check
.
chkboxType
.
N
.
indexOf
(
"
p
"
)
>
-
1
)
{
view
.
setParentNodeCheckBox
(
setting
,
node
,
false
);
}
}
},
makeChkClass
:
function
(
setting
,
node
)
{
var
checkedKey
=
setting
.
data
.
key
.
checked
,
c
=
consts
.
checkbox
,
r
=
consts
.
radio
,
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
)
{
...
...
@@ -433,21 +436,20 @@
}
else
if
(
setting
.
check
.
chkStyle
==
r
.
STYLE
)
{
fullStyle
=
(
node
.
check_Child_State
<
1
)?
c
.
FULL
:
c
.
PART
;
}
else
{
fullStyle
=
node
[
checkedKey
]
?
((
node
.
check_Child_State
===
2
||
node
.
check_Child_State
===
-
1
)
?
c
.
FULL
:
c
.
PART
)
:
((
node
.
check_Child_State
<
1
)?
c
.
FULL
:
c
.
PART
);
fullStyle
=
node
Checked
?
((
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
+
"
_
"
+
(
node
[
checkedKey
]
?
c
.
TRUE
:
c
.
FALSE
)
+
"
_
"
+
fullStyle
;
var
chkName
=
setting
.
check
.
chkStyle
+
"
_
"
+
(
node
Checked
?
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
checkedKey
=
setting
.
data
.
key
.
checked
,
childKey
=
setting
.
data
.
key
.
children
,
root
=
data
.
getRoot
(
setting
);
for
(
var
i
=
0
,
l
=
root
[
childKey
].
length
;
i
<
l
;
i
++
)
{
var
node
=
root
[
childKey
][
i
];
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
)
{
node
[
checkedKey
]
=
checked
;
data
.
nodeChecked
(
setting
,
node
,
checked
)
;
}
view
.
setSonNodeCheckBox
(
setting
,
node
,
checked
);
}
...
...
@@ -469,23 +471,23 @@
},
repairParentChkClassWithSelf
:
function
(
setting
,
node
)
{
if
(
!
node
)
return
;
var
childKey
=
setting
.
data
.
key
.
children
;
if
(
node
[
childKey
]
&&
node
[
childKey
]
.
length
>
0
)
{
view
.
repairParentChkClass
(
setting
,
node
[
childKey
]
[
0
]);
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
;
var
childKey
=
setting
.
data
.
key
.
children
;
if
(
node
.
chkDisabled
!=
chkDisabled
)
{
node
.
chkDisabled
=
chkDisabled
;
}
view
.
repairChkClass
(
setting
,
node
);
if
(
node
[
childKey
]
&&
inherit
)
{
for
(
var
i
=
0
,
l
=
node
[
childKey
].
length
;
i
<
l
;
i
++
)
{
var
sNode
=
node
[
childKey
][
i
];
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
);
}
}
...
...
@@ -508,13 +510,11 @@
obj
.
attr
(
'
class
'
,
view
.
makeChkClass
(
setting
,
node
));
},
setParentNodeCheckBox
:
function
(
setting
,
node
,
value
,
srcNode
)
{
var
childKey
=
setting
.
data
.
key
.
children
,
checkedKey
=
setting
.
data
.
key
.
checked
,
checkObj
=
$$
(
node
,
consts
.
id
.
CHECK
,
setting
);
var
checkObj
=
$$
(
node
,
consts
.
id
.
CHECK
,
setting
);
if
(
!
srcNode
)
srcNode
=
node
;
data
.
makeChkFlag
(
setting
,
node
);
if
(
node
.
nocheck
!==
true
&&
node
.
chkDisabled
!==
true
)
{
node
[
checkedKey
]
=
value
;
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
]);
...
...
@@ -523,10 +523,12 @@
if
(
node
.
parentTId
)
{
var
pSign
=
true
;
if
(
!
value
)
{
var
pNodes
=
node
.
getParentNode
()[
childKey
]
;
var
pNodes
=
data
.
nodeChildren
(
setting
,
node
.
getParentNode
())
;
for
(
var
i
=
0
,
l
=
pNodes
.
length
;
i
<
l
;
i
++
)
{
if
((
pNodes
[
i
].
nocheck
!==
true
&&
pNodes
[
i
].
chkDisabled
!==
true
&&
pNodes
[
i
][
checkedKey
])
||
((
pNodes
[
i
].
nocheck
===
true
||
pNodes
[
i
].
chkDisabled
===
true
)
&&
pNodes
[
i
].
check_Child_State
>
0
))
{
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
;
}
...
...
@@ -539,15 +541,14 @@
},
setSonNodeCheckBox
:
function
(
setting
,
node
,
value
,
srcNode
)
{
if
(
!
node
)
return
;
var
childKey
=
setting
.
data
.
key
.
children
,
checkedKey
=
setting
.
data
.
key
.
checked
,
checkObj
=
$$
(
node
,
consts
.
id
.
CHECK
,
setting
);
var
checkObj
=
$$
(
node
,
consts
.
id
.
CHECK
,
setting
);
if
(
!
srcNode
)
srcNode
=
node
;
var
hasDisable
=
false
;
if
(
node
[
childKey
])
{
for
(
var
i
=
0
,
l
=
node
[
childKey
].
length
;
i
<
l
;
i
++
)
{
var
sNode
=
node
[
childKey
][
i
];
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
;
}
...
...
@@ -558,8 +559,8 @@
data
.
makeChkFlag
(
setting
,
node
);
}
if
(
node
.
nocheck
!==
true
&&
node
.
chkDisabled
!==
true
)
{
node
[
checkedKey
]
=
value
;
if
(
!
hasDisable
)
node
.
check_Child_State
=
(
node
[
childKey
]
&&
node
[
childKey
]
.
length
>
0
)
?
(
value
?
2
:
0
)
:
-
1
;
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
;
}
...
...
@@ -589,6 +590,21 @@
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
(
checked
,
"
true
"
);
}
newChecked
=
!!
newChecked
;
node
[
key
]
=
newChecked
;
}
return
node
[
key
];
};
data
.
exSetting
(
_setting
);
data
.
addInitBind
(
_bindEvent
);
data
.
addInitUnBind
(
_unbindEvent
);
...
...
js/jquery.ztree.excheck.min.js
浏览文件 @
ad144cf5
/*
* JQuery zTree excheck v3.5.3
1
* JQuery zTree excheck v3.5.3
2
* http://treejs.cn/
*
* Copyright (c) 2010 Hunter.z
...
...
@@ -8,27 +8,27 @@
* http://www.opensource.org/licenses/mit-license.php
*
* email: hunter.z@263.net
* Date: 201
7-12-28
* Date: 201
8-01-06
*/
(
function
(
m
){
var
p
,
q
,
r
,
o
=
{
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
"
}},
v
=
{
check
:{
enable
:
!
1
,
autoCheckTrigger
:
!
1
,
chkStyle
:
o
.
checkbox
.
STYLE
,
nocheckInherit
:
!
1
,
chkDisabledInherit
:
!
1
,
radioType
:
o
.
radio
.
TYPE_LEVEL
,
chkboxType
:{
Y
:
"
ps
"
,
N
:
"
ps
"
}},
data
:{
key
:{
checked
:
"
checked
"
}},
callback
:{
beforeCheck
:
null
,
onCheck
:
null
}};
p
=
function
(
c
,
a
){
if
(
a
.
chkDisabled
===!
0
)
return
!
1
;
var
b
=
g
.
getSetting
(
c
.
data
.
treeId
),
d
=
b
.
data
.
key
.
checked
;
if
(
k
.
apply
(
b
.
callback
.
beforeCheck
,[
b
.
treeId
,
a
],
!
0
)
==!
1
)
return
!
0
;
a
[
d
]
=!
a
[
d
];
e
.
checkNodeRelation
(
b
,
a
);
d
=
n
(
a
,
j
.
id
.
CHECK
,
b
);
e
.
setChkClass
(
b
,
d
,
a
);
e
.
repairParentChkClassWithSelf
(
b
,
a
);
b
.
treeObj
.
trigger
(
j
.
event
.
CHECK
,[
c
,
b
.
treeId
,
a
]);
return
!
0
};
q
=
function
(
c
,
a
){
if
(
a
.
chkDisabled
===!
0
)
return
!
1
;
var
b
=
g
.
getSetting
(
c
.
data
.
treeId
),
d
=
n
(
a
,
j
.
id
.
CHECK
,
b
);
a
.
check_Focus
=!
0
;
e
.
setChkClass
(
b
,
d
,
a
);
return
!
0
};
r
=
function
(
c
,
a
){
if
(
a
.
chkDisabled
===
!
0
)
return
!
1
;
var
b
=
g
.
getSetting
(
c
.
data
.
treeId
),
d
=
n
(
a
,
j
.
id
.
CHECK
,
b
);
a
.
check_Focus
=!
1
;
e
.
setChkClass
(
b
,
d
,
a
);
return
!
0
};
m
.
extend
(
!
0
,
m
.
fn
.
zTree
.
consts
,
o
);
m
.
extend
(
!
0
,
m
.
fn
.
zTree
.
_z
,{
tools
:{},
view
:{
checkNodeRelation
:
function
(
c
,
a
){
var
b
,
d
,
h
,
i
=
c
.
data
.
key
.
children
,
l
=
c
.
data
.
key
.
checked
;
b
=
j
.
radio
;
if
(
c
.
check
.
chkStyle
==
b
.
STYLE
){
var
f
=
g
.
getRadioCheckedList
(
c
);
if
(
a
[
l
])
if
(
c
.
check
.
radioType
==
b
.
TYPE_ALL
){
for
(
d
=
f
.
length
-
1
;
d
>=
0
;
d
--
)
b
=
f
[
d
],
b
[
l
]
&&
b
!=
a
&&
(
b
[
l
]
=!
1
,
f
.
splice
(
d
,
1
),
e
.
setChkClass
(
c
,
n
(
b
,
j
.
id
.
CHECK
,
c
),
b
),
b
.
parentTId
!=
a
.
parentTId
&&
e
.
repairParentChkClassWithSelf
(
c
,
b
));
f
.
push
(
a
)}
else
{
f
=
a
.
parentTId
?
a
.
getParentNode
():
g
.
getRoot
(
c
);
for
(
d
=
0
,
h
=
f
[
i
].
length
;
d
<
h
;
d
++
)
b
=
f
[
i
][
d
],
b
[
l
]
&&
b
!=
a
&&
(
b
[
l
]
=!
1
,
e
.
setChkClass
(
c
,
n
(
b
,
j
.
id
.
CHECK
,
c
),
b
))}
else
if
(
c
.
check
.
radioType
==
b
.
TYPE_ALL
)
for
(
d
=
0
,
h
=
f
.
length
;
d
<
h
;
d
++
)
if
(
a
==
f
[
d
]){
f
.
splice
(
d
,
1
);
break
}}
else
a
[
l
]
&&
(
!
a
[
i
]
||
a
[
i
].
length
==
0
||
c
.
check
.
chkboxType
.
Y
.
indexOf
(
"
s
"
)
>-
1
)
&&
e
.
setSonNodeCheckBox
(
c
,
a
,
!
0
),
!
a
[
l
]
&&
(
!
a
[
i
]
||
a
[
i
].
length
==
0
||
c
.
check
.
chkboxType
.
N
.
indexOf
(
"
s
"
)
>-
1
)
&&
e
.
setSonNodeCheckBox
(
c
,
a
,
!
1
),
a
[
l
]
&&
c
.
check
.
chkboxType
.
Y
.
indexOf
(
"
p
"
)
>-
1
&&
e
.
setParentNodeCheckBox
(
c
,
a
,
!
0
),
!
a
[
l
]
&&
c
.
check
.
chkboxType
.
N
.
indexOf
(
"
p
"
)
>-
1
&&
e
.
setParentNodeCheckBox
(
c
,
a
,
!
1
)},
makeChkClass
:
function
(
c
,
a
){
var
b
=
c
.
data
.
key
.
checked
,
d
=
j
.
checkbox
,
h
=
j
.
radio
,
i
=
""
,
i
=
a
.
chkDisabled
===!
0
?
d
.
DISABLED
:
a
.
halfCheck
?
d
.
PART
:
c
.
check
.
chkStyle
==
h
.
STYLE
?
a
.
check_Child_State
<
1
?
d
.
FULL
:
d
.
PART
:
a
[
b
]?
a
.
check_Child_State
===
2
||
a
.
check_Child_State
===-
1
?
d
.
FULL
:
d
.
PART
:
a
.
check_Child_State
<
1
?
d
.
FULL
:
d
.
PART
,
b
=
c
.
check
.
chkStyle
+
"
_
"
+
(
a
[
b
]?
d
.
TRUE
:
d
.
FALSE
)
+
"
_
"
+
i
,
b
=
a
.
check_Focus
&&
a
.
chkDisabled
!==!
0
?
b
+
"
_
"
+
d
.
FOCUS
:
b
;
return
j
.
className
.
BUTTON
+
"
"
+
d
.
DEFAULT
+
"
"
+
b
},
repairAllChk
:
function
(
c
,
a
){
if
(
c
.
check
.
enable
&&
c
.
check
.
chkStyle
===
j
.
checkbox
.
STYLE
)
for
(
var
b
=
c
.
data
.
key
.
checked
,
d
=
c
.
data
.
key
.
children
,
h
=
g
.
getRoot
(
c
),
i
=
0
,
l
=
h
[
d
].
length
;
i
<
l
;
i
++
){
var
f
=
h
[
d
][
i
];
f
.
nocheck
!==!
0
&&
f
.
chkDisabled
!==!
0
&&
(
f
[
b
]
=
a
);
e
.
setSonNodeCheckBox
(
c
,
f
,
a
)}},
repairChkClass
:
function
(
c
,
a
){
if
(
a
&&
(
g
.
makeChkFlag
(
c
,
a
),
a
.
nocheck
!==!
0
)){
var
b
=
n
(
a
,
j
.
id
.
CHECK
,
c
);
e
.
setChkClass
(
c
,
b
,
a
)}},
repairParentChkClass
:
function
(
c
,
a
){
if
(
a
&&
a
.
parentTId
){
var
b
=
a
.
getParentNode
();
e
.
repairChkClass
(
c
,
b
);
e
.
repairParentChkClass
(
c
,
b
)}},
repairParentChkClassWithSelf
:
function
(
c
,
a
){
if
(
a
){
var
b
=
c
.
data
.
key
.
children
;
a
[
b
]
&&
a
[
b
].
length
>
0
?
e
.
repairParentChkClass
(
c
,
a
[
b
][
0
]):
e
.
repairParentChkClass
(
c
,
a
)}},
repairSonChkDisabled
:
function
(
c
,
a
,
b
,
d
){
if
(
a
){
var
h
=
c
.
data
.
key
.
children
;
if
(
a
.
chkDisabled
!=
b
)
a
.
chkDisabled
=
b
;
e
.
repairChkClass
(
c
,
a
);
if
(
a
[
h
]
&&
d
)
for
(
var
i
=
0
,
l
=
a
[
h
].
length
;
i
<
l
;
i
++
)
e
.
repairSonChkDisabled
(
c
,
a
[
h
][
i
],
b
,
d
)}},
repairParentChkDisabled
:
function
(
c
,
a
,
b
,
d
){
if
(
a
){
if
(
a
.
chkDisabled
!=
b
&&
d
)
a
.
chkDisabled
=
b
;
e
.
repairChkClass
(
c
,
a
);
e
.
repairParentChkDisabled
(
c
,
a
.
getParentNode
(),
b
,
d
)}},
setChkClass
:
function
(
c
,
a
,
b
){
a
&&
(
b
.
nocheck
===!
0
?
a
.
hide
():
a
.
show
(),
a
.
attr
(
"
class
"
,
e
.
makeChkClass
(
c
,
b
)))},
setParentNodeCheckBox
:
function
(
c
,
a
,
b
,
d
){
var
h
=
c
.
data
.
key
.
children
,
i
=
c
.
data
.
key
.
checked
,
l
=
n
(
a
,
j
.
id
.
CHECK
,
c
);
d
||
(
d
=
a
);
g
.
makeChkFlag
(
c
,
a
);
a
.
nocheck
!==!
0
&&
a
.
chkDisabled
!==!
0
&&
(
a
[
i
]
=
b
,
e
.
setChkClass
(
c
,
l
,
a
),
c
.
check
.
autoCheckTrigger
&&
a
!=
d
&&
c
.
treeObj
.
trigger
(
j
.
event
.
CHECK
,[
null
,
c
.
treeId
,
a
]));
if
(
a
.
parentTId
){
l
=!
0
;
if
(
!
b
)
for
(
var
h
=
a
.
getParentNode
()[
h
],
f
=
0
,
k
=
h
.
length
;
f
<
k
;
f
++
)
if
(
h
[
f
].
nocheck
!==!
0
&&
h
[
f
].
chkDisabled
!==!
0
&&
h
[
f
][
i
]
||
(
h
[
f
].
nocheck
===!
0
||
h
[
f
].
chkDisabled
===!
0
)
&&
h
[
f
].
check_Child_State
>
0
){
l
=!
1
;
break
}
l
&&
e
.
setParentNodeCheckBox
(
c
,
a
.
getParentNode
(),
b
,
d
)}},
setSonNodeCheckBox
:
function
(
c
,
a
,
b
,
d
){
if
(
a
){
var
h
=
c
.
data
.
key
.
children
,
i
=
c
.
data
.
key
.
checked
,
l
=
n
(
a
,
j
.
id
.
CHECK
,
c
);
d
||
(
d
=
a
);
var
f
=!
1
;
if
(
a
[
h
])
for
(
var
k
=
0
,
m
=
a
[
h
].
length
;
k
<
m
;
k
++
){
var
o
=
a
[
h
][
k
];
e
.
setSonNodeCheckBox
(
c
,
o
,
b
,
d
);
o
.
chkDisabled
===
!
0
&&
(
f
=!
0
)}
if
(
a
!=
g
.
getRoot
(
c
)
&&
a
.
chkDisabled
!==!
0
){
f
&&
a
.
nocheck
!==!
0
&&
g
.
makeChkFlag
(
c
,
a
);
if
(
a
.
nocheck
!==!
0
&&
a
.
chkDisabled
!==!
0
){
if
(
a
[
i
]
=
b
,
!
f
)
a
.
check_Child_State
=
a
[
h
]
&&
a
[
h
].
length
>
0
?
b
?
2
:
0
:
-
1
}
else
a
.
check_Child_State
=-
1
;
e
.
setChkClass
(
c
,
l
,
a
);
c
.
check
.
autoCheckTrigger
&&
a
!=
d
&&
a
.
nocheck
!==!
0
&&
a
.
chkDisabled
!==!
0
&&
c
.
treeObj
.
trigger
(
j
.
event
.
CHECK
,[
null
,
c
.
treeId
,
a
])}}}},
event
:{},
data
:{
getRadioCheckedList
:
function
(
c
){
for
(
var
a
=
g
.
getRoot
(
c
).
radioCheckedList
,
b
=
0
,
d
=
a
.
length
;
b
<
d
;
b
++
)
g
.
getNodeCache
(
c
,
a
[
b
].
tId
)
||
(
a
.
splice
(
b
,
1
),
b
--
,
d
--
);
return
a
},
getCheckStatus
:
function
(
c
,
a
){
if
(
!
c
.
check
.
enable
||
a
.
nocheck
||
a
.
chkDisabled
)
return
null
;
var
b
=
c
.
data
.
key
.
checked
;
return
{
checked
:
a
[
b
],
half
:
a
.
halfCheck
?
a
.
halfCheck
:
c
.
check
.
chkStyle
==
j
.
radio
.
STYLE
?
a
.
check_Child_State
===
2
:
a
[
b
]?
a
.
check_Child_State
>-
1
&&
a
.
check_Child_State
<
2
:
a
.
check_Child_State
>
0
}},
getTreeCheckedNodes
:
function
(
c
,
a
,
b
,
d
){
if
(
!
a
)
return
[];
for
(
var
h
=
c
.
data
.
key
.
children
,
i
=
c
.
data
.
key
.
checked
,
e
=
b
&&
c
.
check
.
chkStyle
==
j
.
radio
.
STYLE
&&
c
.
check
.
radioType
==
j
.
radio
.
TYPE_ALL
,
d
=!
d
?[]:
d
,
f
=
0
,
k
=
a
.
length
;
f
<
k
;
f
++
){
if
(
a
[
f
].
nocheck
!==!
0
&&
a
[
f
].
chkDisabled
!==!
0
&&
a
[
f
][
i
]
==
b
&&
(
d
.
push
(
a
[
f
]),
e
))
break
;
g
.
getTreeCheckedNodes
(
c
,
a
[
f
][
h
],
b
,
d
);
if
(
e
&&
d
.
length
>
0
)
break
}
return
d
},
getTreeChangeCheckedNodes
:
function
(
c
,
a
,
b
){
if
(
!
a
)
return
[];
for
(
var
d
=
c
.
data
.
key
.
children
,
h
=
c
.
data
.
key
.
checked
,
b
=!
b
?[]:
b
,
i
=
0
,
e
=
a
.
length
;
i
<
e
;
i
++
)
a
[
i
].
nocheck
!==!
0
&&
a
[
i
].
chkDisabled
!==!
0
&&
a
[
i
][
h
]
!=
a
[
i
].
checkedOld
&&
b
.
push
(
a
[
i
]),
g
.
getTreeChangeCheckedNodes
(
c
,
a
[
i
][
d
],
b
);
return
b
},
makeChkFlag
:
function
(
c
,
a
){
if
(
a
){
var
b
=
c
.
data
.
key
.
children
,
d
=
c
.
data
.
key
.
checked
,
h
=-
1
;
if
(
a
[
b
])
for
(
var
i
=
0
,
e
=
a
[
b
].
length
;
i
<
e
;
i
++
){
var
f
=
a
[
b
][
i
],
g
=-
1
;
if
(
c
.
check
.
chkStyle
==
j
.
radio
.
STYLE
)
if
(
g
=
f
.
nocheck
===!
0
||
f
.
chkDisabled
===!
0
?
f
.
check_Child_State
:
f
.
halfCheck
===!
0
?
2
:
f
[
d
]?
2
:
f
.
check_Child_State
>
0
?
2
:
0
,
g
==
2
){
h
=
2
;
break
}
else
g
==
0
&&
(
h
=
0
);
else
if
(
c
.
check
.
chkStyle
==
j
.
checkbox
.
STYLE
)
if
(
g
=
f
.
nocheck
===!
0
||
f
.
chkDisabled
===!
0
?
f
.
check_Child_State
:
f
.
halfCheck
===!
0
?
1
:
f
[
d
]?
f
.
check_Child_State
===-
1
||
f
.
check_Child_State
===
2
?
2
:
1
:
f
.
check_Child_State
>
0
?
1
:
0
,
g
===
1
){
h
=
1
;
break
}
else
if
(
g
=
==
2
&&
h
>-
1
&&
i
>
0
&&
g
!==
h
){
h
=
1
;
break
}
else
if
(
h
===
2
&&
g
>-
1
&&
g
<
2
){
h
=
1
;
break
}
else
g
>-
1
&&
(
h
=
g
)}
a
.
check_Child_State
=
h
}}}});
var
m
=
m
.
fn
.
zTree
,
k
=
m
.
_z
.
tools
,
j
=
m
.
consts
,
e
=
m
.
_z
.
view
,
g
=
m
.
_z
.
data
,
n
=
k
.
$
;
g
.
exSetting
(
v
);
g
.
addInitBind
(
function
(
c
){
c
.
treeObj
.
bind
(
j
.
event
.
CHECK
,
function
(
a
,
b
,
d
,
h
){
a
.
srcEvent
=
b
;
k
.
apply
(
c
.
callback
.
onCheck
,[
a
,
d
,
h
])})});
g
.
addInitUnBind
(
function
(
c
){
c
.
treeObj
.
unbind
(
j
.
event
.
CHECK
)});
g
.
addInitCache
(
function
(){});
g
.
addInitNode
(
function
(
c
,
a
,
b
,
d
){
if
(
b
){
a
=
c
.
data
.
key
.
checked
;
typeof
b
[
a
]
==
"
string
"
&&
(
b
[
a
]
=
k
.
eqs
(
b
[
a
],
"
true
"
));
b
[
a
]
=!!
b
[
a
];
b
.
checkedOld
=
b
[
a
];
if
(
typeof
b
.
nocheck
==
"
string
"
)
b
.
nocheck
=
k
.
eqs
(
b
.
nocheck
,
"
true
"
);
b
.
nocheck
=!!
b
.
nocheck
||
c
.
check
.
nocheckInherit
&&
d
&&!!
d
.
nocheck
;
if
(
typeof
b
.
chkDisabled
==
"
string
"
)
b
.
chkDisabled
=
k
.
eqs
(
b
.
chkDisabled
,
"
true
"
);
b
.
chkDisabled
=!!
b
.
chkDisabled
||
c
.
check
.
chkDisabledInherit
&&
d
&&!!
d
.
chkDisabled
;
if
(
typeof
b
.
halfCheck
==
"
string
"
)
b
.
halfCheck
=
k
.
eqs
(
b
.
halfCheck
,
"
true
"
);
b
.
halfCheck
=!!
b
.
halfCheck
;
b
.
check_Child_State
=-
1
;
b
.
check_Focus
=!
1
;
b
.
getCheckStatus
=
function
(){
return
g
.
getCheckStatus
(
c
,
b
)};
c
.
check
.
chkStyle
==
j
.
radio
.
STYLE
&&
c
.
check
.
radioType
==
j
.
radio
.
TYPE_ALL
&&
b
[
a
]
&&
g
.
getRoot
(
c
).
radioCheckedList
.
push
(
b
)}});
g
.
addInitProxy
(
function
(
c
){
var
a
=
c
.
target
,
b
=
g
.
getSetting
(
c
.
data
.
treeId
),
d
=
""
,
h
=
null
,
e
=
""
,
l
=
null
;
if
(
k
.
eqs
(
c
.
type
,
"
mouseover
"
)){
if
(
b
.
check
.
enable
&&
k
.
eqs
(
a
.
tagName
,
"
span
"
)
&&
a
.
getAttribute
(
"
treeNode
"
+
j
.
id
.
CHECK
)
!==
null
)
d
=
k
.
getNodeMainDom
(
a
).
id
,
e
=
"
mouseoverCheck
"
}
else
if
(
k
.
eqs
(
c
.
type
,
"
mouseout
"
)){
if
(
b
.
check
.
enable
&&
k
.
eqs
(
a
.
tagName
,
"
span
"
)
&&
a
.
getAttribute
(
"
treeNode
"
+
j
.
id
.
CHECK
)
!==
null
)
d
=
k
.
getNodeMainDom
(
a
).
id
,
e
=
"
mouseoutCheck
"
}
else
if
(
k
.
eqs
(
c
.
type
,
"
click
"
)
&&
b
.
check
.
enable
&&
k
.
eqs
(
a
.
tagName
,
"
span
"
)
&&
a
.
getAttribute
(
"
treeNode
"
+
j
.
id
.
CHECK
)
!==
null
)
d
=
k
.
getNodeMainDom
(
a
).
id
,
e
=
"
checkNode
"
;
if
(
d
.
length
>
0
)
switch
(
h
=
g
.
getNodeCache
(
b
,
d
),
e
){
case
"
checkNode
"
:
l
=
p
;
break
;
case
"
mouseoverCheck
"
:
l
=
q
;
break
;
case
"
mouseoutCheck
"
:
l
=
r
}
return
{
stop
:
e
===
"
checkNode
"
,
node
:
h
,
nodeEventType
:
e
,
nodeEventCallback
:
l
,
treeEventType
:
""
,
treeEventCallback
:
null
}},
!
0
);
g
.
addInitRoot
(
function
(
c
){
g
.
getRoot
(
c
).
radioCheckedList
=
[]});
g
.
addBeforeA
(
function
(
c
,
a
,
b
){
c
.
check
.
enable
&&
(
g
.
makeChkFlag
(
c
,
a
),
b
.
push
(
"
<span ID='
"
,
a
.
tId
,
j
.
id
.
CHECK
,
"
' class='
"
,
e
.
makeChkClass
(
c
,
a
),
"
' treeNode
"
,
j
.
id
.
CHECK
,
a
.
nocheck
===!
0
?
"
style='display:none;'
"
:
""
,
"
></span>
"
))});
g
.
addZTreeTools
(
function
(
c
,
a
){
a
.
checkNode
=
function
(
a
,
b
,
c
,
g
){
var
f
=
this
.
setting
.
data
.
key
.
checked
;
if
(
a
.
chkDisabled
!==!
0
&&
(
b
!==!
0
&&
b
!==!
1
&&
(
b
=!
a
[
f
]),
g
=!!
g
,(
a
[
f
]
!==
b
||
c
)
&&!
(
g
&&
k
.
apply
(
this
.
setting
.
callback
.
beforeCheck
,[
this
.
setting
.
treeId
,
a
],
!
0
)
==!
1
)
&&
k
.
uCanDo
(
this
.
setting
)
&&
this
.
setting
.
check
.
enable
&&
a
.
nocheck
!==!
0
))
a
[
f
]
=
b
,
b
=
n
(
a
,
j
.
id
.
CHECK
,
this
.
setting
),(
c
||
this
.
setting
.
check
.
chkStyle
===
j
.
radio
.
STYLE
)
&&
e
.
checkNodeRelation
(
this
.
setting
,
a
),
e
.
setChkClass
(
this
.
setting
,
b
,
a
),
e
.
repairParentChkClassWithSelf
(
this
.
setting
,
a
),
g
&&
this
.
setting
.
treeObj
.
trigger
(
j
.
event
.
CHECK
,[
null
,
this
.
setting
.
treeId
,
a
])};
a
.
checkAllNodes
=
function
(
a
){
e
.
repairAllChk
(
this
.
setting
,
!!
a
)};
a
.
getCheckedNodes
=
function
(
a
){
var
b
=
this
.
setting
.
data
.
key
.
children
;
return
g
.
getTreeCheckedNodes
(
this
.
setting
,
g
.
getRoot
(
this
.
setting
)[
b
],
a
!==!
1
)}
;
a
.
getChangeCheckedNodes
=
function
(){
var
a
=
this
.
setting
.
data
.
key
.
children
;
return
g
.
getTreeChangeCheckedNodes
(
this
.
setting
,
g
.
getRoot
(
this
.
setting
)[
a
])};
a
.
setChkDisabled
=
function
(
a
,
b
,
c
,
g
){
b
=!!
b
;
c
=!!
c
;
e
.
repairSonChkDisabled
(
this
.
setting
,
a
,
b
,
!!
g
);
e
.
repairParentChkDisabled
(
this
.
setting
,
a
.
getParentNode
(),
b
,
c
)};
var
b
=
a
.
updateNode
;
a
.
updateNode
=
function
(
c
,
g
){
b
&&
b
.
apply
(
a
,
arguments
);
if
(
c
&&
this
.
setting
.
check
.
enable
&&
n
(
c
,
this
.
setting
).
get
(
0
)
&&
k
.
uCanDo
(
this
.
setting
)){
var
i
=
n
(
c
,
j
.
id
.
CHECK
,
this
.
setting
);(
g
==!
0
||
this
.
setting
.
check
.
chkStyle
===
j
.
radio
.
STYLE
)
&&
e
.
checkNodeRelation
(
this
.
setting
,
c
);
e
.
setChkClass
(
this
.
setting
,
i
,
c
);
e
.
repairParentChkClassWithSelf
(
this
.
setting
,
c
)}}});
var
s
=
e
.
createNodes
;
e
.
createNodes
=
function
(
c
,
a
,
b
,
d
,
g
){
s
&&
s
.
apply
(
e
,
arguments
);
b
&&
e
.
repairParentChkClassWithSelf
(
c
,
d
)};
var
t
=
e
.
removeNode
;
e
.
removeNode
=
function
(
c
,
a
){
var
b
=
a
.
getParentNode
();
t
&&
t
.
apply
(
e
,
arguments
);
a
&&
b
&&
(
e
.
repairChkClass
(
c
,
b
),
e
.
repairParentChkClass
(
c
,
b
))};
var
u
=
e
.
appendNodes
;
e
.
appendNodes
=
function
(
c
,
a
,
b
,
d
,
h
,
i
,
j
){
var
f
=
""
;
u
&&
(
f
=
u
.
apply
(
e
,
arguments
));
d
&&
g
.
makeChkFlag
(
c
,
d
);
return
f
}})(
jQuery
);
(
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
,
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
,
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
,
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
<
j
;
d
++
)
if
(
b
=
g
[
d
],(
k
=
e
.
nodeChecked
(
c
,
b
))
&&
b
!=
a
)
e
.
nodeChecked
(
c
,
b
,
!
1
),
f
.
setChkClass
(
c
,
m
(
b
,
h
.
id
.
CHECK
,
c
),
b
)}
else
if
(
c
.
check
.
radioType
==
d
.
TYPE_ALL
)
for
(
d
=
0
,
j
=
g
.
length
;
d
<
j
;
d
++
)
if
(
a
==
g
[
d
]){
g
.
splice
(
d
,
1
);
break
}}
else
g
=
e
.
nodeChildren
(
c
,
a
),
b
&&
(
!
g
||
g
.
length
==
0
||
c
.
check
.
chkboxType
.
Y
.
indexOf
(
"
s
"
)
>-
1
)
&&
f
.
setSonNodeCheckBox
(
c
,
a
,
!
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
:
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
<
j
;
d
++
){
var
g
=
b
[
d
];
g
.
nocheck
!==!
0
&&
g
.
chkDisabled
!==!
0
&&
e
.
nodeChecked
(
c
,
g
,
a
);
f
.
setSonNodeCheckBox
(
c
,
g
,
a
)}},
repairChkClass
:
function
(
c
,
a
){
if
(
a
&&
(
e
.
makeChkFlag
(
c
,
a
),
a
.
nocheck
!==!
0
)){
var
b
=
m
(
a
,
h
.
id
.
CHECK
,
c
);
f
.
setChkClass
(
c
,
b
,
a
)}},
repairParentChkClass
:
function
(
c
,
a
){
if
(
a
&&
a
.
parentTId
){
var
b
=
a
.
getParentNode
();
f
.
repairChkClass
(
c
,
b
);
f
.
repairParentChkClass
(
c
,
b
)}},
repairParentChkClassWithSelf
:
function
(
c
,
a
){
if
(
a
){
var
b
=
e
.
nodeChildren
(
c
,
a
);
b
&&
b
.
length
>
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
<
g
;
j
++
)
f
.
repairSonChkDisabled
(
c
,
a
[
j
],
b
,
d
)}},
repairParentChkDisabled
:
function
(
c
,
a
,
b
,
d
){
if
(
a
){
if
(
a
.
chkDisabled
!=
b
&&
d
)
a
.
chkDisabled
=
b
;
f
.
repairChkClass
(
c
,
a
);
f
.
repairParentChkDisabled
(
c
,
a
.
getParentNode
(),
b
,
d
)}},
setChkClass
:
function
(
c
,
a
,
b
){
a
&&
(
b
.
nocheck
===!
0
?
a
.
hide
():
a
.
show
(),
a
.
attr
(
"
class
"
,
f
.
makeChkClass
(
c
,
b
)))},
setParentNodeCheckBox
:
function
(
c
,
a
,
b
,
d
){
var
j
=
m
(
a
,
h
.
id
.
CHECK
,
c
);
d
||
(
d
=
a
);
e
.
makeChkFlag
(
c
,
a
);
a
.
nocheck
!==!
0
&&
a
.
chkDisabled
!==!
0
&&
(
e
.
nodeChecked
(
c
,
a
,
b
),
f
.
setChkClass
(
c
,
j
,
a
),
c
.
check
.
autoCheckTrigger
&&
a
!=
d
&&
c
.
treeObj
.
trigger
(
h
.
event
.
CHECK
,
[
null
,
c
.
treeId
,
a
]));
if
(
a
.
parentTId
){
j
=!
0
;
if
(
!
b
)
for
(
var
g
=
e
.
nodeChildren
(
c
,
a
.
getParentNode
()),
k
=
0
,
o
=
g
.
length
;
k
<
o
;
k
++
){
var
l
=
g
[
k
],
i
=
e
.
nodeChecked
(
c
,
l
);
if
(
l
.
nocheck
!==!
0
&&
l
.
chkDisabled
!==!
0
&&
i
||
(
l
.
nocheck
===!
0
||
l
.
chkDisabled
===!
0
)
&&
l
.
check_Child_State
>
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
<
l
;
o
++
){
var
i
=
k
[
o
];
f
.
setSonNodeCheckBox
(
c
,
i
,
b
,
d
);
i
.
chkDisabled
===!
0
&&
(
g
=!
0
)}
if
(
a
!=
e
.
getRoot
(
c
)
&&
a
.
chkDisabled
!==!
0
){
g
&&
a
.
nocheck
!==!
0
&&
e
.
makeChkFlag
(
c
,
a
);
if
(
a
.
nocheck
!==!
0
&&
a
.
chkDisabled
!==!
0
){
if
(
e
.
nodeChecked
(
c
,
a
,
b
),
!
g
)
a
.
check_Child_State
=
k
&&
k
.
length
>
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
<
d
;
b
++
)
e
.
getNodeCache
(
c
,
a
[
b
].
tId
)
||
(
a
.
splice
(
b
,
1
),
b
--
,
d
--
);
return
a
},
getCheckStatus
:
function
(
c
,
a
){
if
(
!
c
.
check
.
enable
||
a
.
nocheck
||
a
.
chkDisabled
)
return
null
;
var
b
=
e
.
nodeChecked
(
c
,
a
);
return
{
checked
:
b
,
half
:
a
.
halfCheck
?
a
.
halfCheck
:
c
.
check
.
chkStyle
==
h
.
radio
.
STYLE
?
a
.
check_Child_State
===
2
:
b
?
a
.
check_Child_State
>-
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
<
f
;
g
++
){
var
i
=
a
[
g
],
l
=
e
.
nodeChildren
(
c
,
i
),
m
=
e
.
nodeChecked
(
c
,
i
);
if
(
i
.
nocheck
!==!
0
&&
i
.
chkDisabled
!==!
0
&&
m
==
b
&&
(
d
.
push
(
i
),
j
))
break
;
e
.
getTreeCheckedNodes
(
c
,
l
,
b
,
d
);
if
(
j
&&
d
.
length
>
0
)
break
}
return
d
},
getTreeChangeCheckedNodes
:
function
(
c
,
a
,
b
){
if
(
!
a
)
return
[];
for
(
var
b
=!
b
?[]:
b
,
d
=
0
,
j
=
a
.
length
;
d
<
j
;
d
++
){
var
g
=
a
[
d
],
f
=
e
.
nodeChildren
(
c
,
g
),
h
=
e
.
nodeChecked
(
c
,
g
);
g
.
nocheck
!==!
0
&&
g
.
chkDisabled
!==!
0
&&
h
!=
g
.
checkedOld
&&
b
.
push
(
g
);
e
.
getTreeChangeCheckedNodes
(
c
,
f
,
b
)}
return
b
},
makeChkFlag
:
function
(
c
,
a
){
if
(
a
){
var
b
=-
1
,
d
=
e
.
nodeChildren
(
c
,
a
);
if
(
d
)
for
(
var
j
=
0
,
g
=
d
.
length
;
j
<
g
;
j
++
){
var
f
=
d
[
j
],
i
=
e
.
nodeChecked
(
c
,
f
),
l
=-
1
;
if
(
c
.
check
.
chkStyle
==
h
.
radio
.
STYLE
)
if
(
l
=
f
.
nocheck
===!
0
||
f
.
chkDisabled
===!
0
?
f
.
check_Child_State
:
f
.
halfCheck
===!
0
?
2
:
i
?
2
:
f
.
check_Child_State
>
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
!
==
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
(
checked
,
"
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
)});
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
;
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
&&
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
}},
!
0
);
e
.
addInitRoot
(
function
(
c
){
e
.
getRoot
(
c
).
radioCheckedList
=
[]});
e
.
addBeforeA
(
function
(
c
,
a
,
b
){
c
.
check
.
enable
&&
(
e
.
makeChkFlag
(
c
,
a
),
b
.
push
(
"
<span ID='
"
,
a
.
tId
,
h
.
id
.
CHECK
,
"
' class='
"
,
f
.
makeChkClass
(
c
,
a
),
"
' treeNode
"
,
h
.
id
.
CHECK
,
a
.
nocheck
===!
0
?
"
style='display:none;'
"
:
""
,
"
></span>
"
))});
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
],
!
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
))
;
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
,
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
=
function
(
c
,
a
,
b
,
d
,
h
,
g
,
i
){
var
m
=
""
;
v
&&
(
m
=
v
.
apply
(
f
,
arguments
));
d
&&
e
.
makeChkFlag
(
c
,
d
);
return
m
}})(
jQuery
);
js/jquery.ztree.exedit.js
浏览文件 @
ad144cf5
/*
* JQuery zTree exedit v3.5.3
1
* JQuery zTree exedit v3.5.3
2
* http://treejs.cn/
*
* Copyright (c) 2010 Hunter.z
...
...
@@ -8,7 +8,7 @@
* http://www.opensource.org/licenses/mit-license.php
*
* email: hunter.z@263.net
* Date: 201
7-12-28
* Date: 201
8-01-06
*/
(
function
(
$
){
//default consts of exedit
...
...
@@ -183,7 +183,8 @@
}
zTreeTools
.
copyNode
=
function
(
targetNode
,
node
,
moveType
,
isSilent
)
{
if
(
!
node
)
return
null
;
if
(
targetNode
&&
!
targetNode
.
isParent
&&
this
.
setting
.
data
.
keep
.
leaf
&&
moveType
===
consts
.
move
.
TYPE_INNER
)
return
null
;
var
isParent
=
data
.
nodeIsParent
(
setting
,
targetNode
);
if
(
targetNode
&&
!
isParent
&&
this
.
setting
.
data
.
keep
.
leaf
&&
moveType
===
consts
.
move
.
TYPE_INNER
)
return
null
;
var
_this
=
this
,
newNode
=
tools
.
clone
(
node
);
if
(
!
targetNode
)
{
...
...
@@ -213,7 +214,8 @@
}
zTreeTools
.
moveNode
=
function
(
targetNode
,
node
,
moveType
,
isSilent
)
{
if
(
!
node
)
return
node
;
if
(
targetNode
&&
!
targetNode
.
isParent
&&
this
.
setting
.
data
.
keep
.
leaf
&&
moveType
===
consts
.
move
.
TYPE_INNER
)
{
var
isParent
=
data
.
nodeIsParent
(
setting
,
targetNode
);
if
(
targetNode
&&
!
isParent
&&
this
.
setting
.
data
.
keep
.
leaf
&&
moveType
===
consts
.
move
.
TYPE_INNER
)
{
return
null
;
}
else
if
(
targetNode
&&
((
node
.
parentTId
==
targetNode
.
tId
&&
moveType
==
consts
.
move
.
TYPE_INNER
)
||
$$
(
node
,
this
.
setting
).
find
(
"
#
"
+
targetNode
.
tId
).
length
>
0
))
{
return
null
;
...
...
@@ -240,11 +242,11 @@
_data
=
{
setSonNodeLevel
:
function
(
setting
,
parentNode
,
node
)
{
if
(
!
node
)
return
;
var
childKey
=
setting
.
data
.
key
.
children
;
var
children
=
data
.
nodeChildren
(
setting
,
node
)
;
node
.
level
=
(
parentNode
)?
parentNode
.
level
+
1
:
0
;
if
(
!
node
[
childKey
]
)
return
;
for
(
var
i
=
0
,
l
=
node
[
childKey
]
.
length
;
i
<
l
;
i
++
)
{
if
(
node
[
childKey
][
i
])
data
.
setSonNodeLevel
(
setting
,
node
,
node
[
childKey
]
[
i
]);
if
(
!
children
)
return
;
for
(
var
i
=
0
,
l
=
children
.
length
;
i
<
l
;
i
++
)
{
if
(
children
[
i
])
data
.
setSonNodeLevel
(
setting
,
node
,
children
[
i
]);
}
}
},
...
...
@@ -323,8 +325,7 @@
&&
Math
.
abs
(
mouseDownY
-
event
.
clientY
)
<
setting
.
edit
.
drag
.
minMoveSize
)
{
return
true
;
}
var
i
,
l
,
tmpNode
,
tmpDom
,
tmpNodes
,
childKey
=
setting
.
data
.
key
.
children
;
var
i
,
l
,
tmpNode
,
tmpDom
,
tmpNodes
;
body
.
css
(
"
cursor
"
,
"
pointer
"
);
if
(
root
.
dragFlag
==
0
)
{
...
...
@@ -338,7 +339,7 @@
root
.
dragNodeShowBefore
=
[];
}
tmpNode
=
nodes
[
i
];
if
(
tmpNode
.
isParent
&&
tmpNode
.
open
)
{
if
(
data
.
nodeIsParent
(
setting
,
tmpNode
)
&&
tmpNode
.
open
)
{
view
.
expandCollapseNode
(
setting
,
tmpNode
,
!
tmpNode
.
open
);
root
.
dragNodeShowBefore
[
tmpNode
.
tId
]
=
true
;
}
else
{
...
...
@@ -353,7 +354,7 @@
//sort
var
isOrder
=
true
,
lastIndex
=
-
1
;
if
(
nodes
.
length
>
1
)
{
var
pNodes
=
nodes
[
0
].
parentTId
?
nodes
[
0
].
getParentNode
()[
childKey
]
:
data
.
getNodes
(
setting
);
var
pNodes
=
nodes
[
0
].
parentTId
?
data
.
nodeChildren
(
setting
,
nodes
[
0
].
getParentNode
())
:
data
.
getNodes
(
setting
);
tmpNodes
=
[];
for
(
i
=
0
,
l
=
pNodes
.
length
;
i
<
l
;
i
++
)
{
if
(
root
.
dragNodeShowBefore
[
pNodes
[
i
].
tId
]
!==
undefined
)
{
...
...
@@ -514,7 +515,7 @@
isInner
=
(
tmpNode
.
parentTId
&&
tmpNode
.
parentTId
==
tmpTargetNodeId
),
canPrev
=
(
isCopy
||
!
isNext
)
&&
tools
.
apply
(
targetSetting
.
edit
.
drag
.
prev
,
[
targetSetting
.
treeId
,
nodes
,
tmpTargetNode
],
!!
targetSetting
.
edit
.
drag
.
prev
),
canNext
=
(
isCopy
||
!
isPrev
)
&&
tools
.
apply
(
targetSetting
.
edit
.
drag
.
next
,
[
targetSetting
.
treeId
,
nodes
,
tmpTargetNode
],
!!
targetSetting
.
edit
.
drag
.
next
),
canInner
=
(
isCopy
||
!
isInner
)
&&
!
(
targetSetting
.
data
.
keep
.
leaf
&&
!
tmpTargetNode
.
isParent
)
&&
tools
.
apply
(
targetSetting
.
edit
.
drag
.
inner
,
[
targetSetting
.
treeId
,
nodes
,
tmpTargetNode
],
!!
targetSetting
.
edit
.
drag
.
inner
);
canInner
=
(
isCopy
||
!
isInner
)
&&
!
(
targetSetting
.
data
.
keep
.
leaf
&&
!
data
.
nodeIsParent
(
setting
,
tmpTargetNode
)
)
&&
tools
.
apply
(
targetSetting
.
edit
.
drag
.
inner
,
[
targetSetting
.
treeId
,
nodes
,
tmpTargetNode
],
!!
targetSetting
.
edit
.
drag
.
inner
);
function
clearMove
()
{
tmpTarget
=
null
;
...
...
@@ -545,7 +546,7 @@
moveType
=
consts
.
move
.
TYPE_PREV
;
}
else
if
((
nextPercent
==
0
||
dY_percent
>=
nextPercent
&&
dY_percent
<=
1.2
)
&&
canNext
)
{
dX
=
1
-
tmpArrow
.
width
();
dY
=
(
tmpNextA
==
null
||
(
tmpTargetNode
.
isParent
&&
tmpTargetNode
.
open
))
?
(
tmpTop
+
tmpTargetA
.
height
()
-
tmpArrow
.
height
()
/
2
)
:
(
tmpNextA
.
offset
().
top
-
tmpArrow
.
height
()
/
2
);
dY
=
(
tmpNextA
==
null
||
(
data
.
nodeIsParent
(
setting
,
tmpTargetNode
)
&&
tmpTargetNode
.
open
))
?
(
tmpTop
+
tmpTargetA
.
height
()
-
tmpArrow
.
height
()
/
2
)
:
(
tmpNextA
.
offset
().
top
-
tmpArrow
.
height
()
/
2
);
moveType
=
consts
.
move
.
TYPE_NEXT
;
}
else
if
(
canInner
)
{
dX
=
5
-
tmpArrow
.
width
();
...
...
@@ -566,7 +567,7 @@
if
(
preTmpTargetNodeId
!=
tmpTargetNodeId
||
preTmpMoveType
!=
moveType
)
{
startTime
=
(
new
Date
()).
getTime
();
}
if
(
tmpTargetNode
&&
tmpTargetNode
.
isParent
&&
moveType
==
consts
.
move
.
TYPE_INNER
)
{
if
(
tmpTargetNode
&&
data
.
nodeIsParent
(
setting
,
tmpTargetNode
)
&&
moveType
==
consts
.
move
.
TYPE_INNER
)
{
var
startTimer
=
true
;
if
(
window
.
zTreeMoveTimer
&&
window
.
zTreeMoveTargetNodeTId
!==
tmpTargetNode
.
tId
)
{
clearTimeout
(
window
.
zTreeMoveTimer
);
...
...
@@ -577,7 +578,7 @@
if
(
startTimer
)
{
window
.
zTreeMoveTimer
=
setTimeout
(
function
()
{
if
(
moveType
!=
consts
.
move
.
TYPE_INNER
)
return
;
if
(
tmpTargetNode
&&
tmpTargetNode
.
isParent
&&
!
tmpTargetNode
.
open
&&
(
new
Date
()).
getTime
()
-
startTime
>
targetSetting
.
edit
.
drag
.
autoOpenTime
if
(
tmpTargetNode
&&
data
.
nodeIsParent
(
setting
,
tmpTargetNode
)
&&
!
tmpTargetNode
.
open
&&
(
new
Date
()).
getTime
()
-
startTime
>
targetSetting
.
edit
.
drag
.
autoOpenTime
&&
tools
.
apply
(
targetSetting
.
callback
.
beforeDragOpen
,
[
targetSetting
.
treeId
,
tmpTargetNode
],
true
))
{
view
.
switchNode
(
targetSetting
,
tmpTargetNode
);
if
(
targetSetting
.
edit
.
drag
.
autoExpandTrigger
)
{
...
...
@@ -639,7 +640,7 @@
var
i
,
l
,
tmpNode
;
for
(
i
=
0
,
l
=
nodes
.
length
;
i
<
l
;
i
++
)
{
tmpNode
=
nodes
[
i
];
if
(
tmpNode
.
isParent
&&
root
.
dragNodeShowBefore
[
tmpNode
.
tId
]
&&
!
tmpNode
.
open
)
{
if
(
data
.
nodeIsParent
(
setting
,
tmpNode
)
&&
root
.
dragNodeShowBefore
[
tmpNode
.
tId
]
&&
!
tmpNode
.
open
)
{
view
.
expandCollapseNode
(
setting
,
tmpNode
,
!
tmpNode
.
open
);
delete
root
.
dragNodeShowBefore
[
tmpNode
.
tId
];
}
...
...
@@ -831,16 +832,15 @@
},
cancelCurEditNode
:
function
(
setting
,
forceName
,
isCancel
)
{
var
root
=
data
.
getRoot
(
setting
),
nameKey
=
setting
.
data
.
key
.
name
,
node
=
root
.
curEditNode
;
if
(
node
)
{
var
inputObj
=
root
.
curEditInput
,
newName
=
forceName
?
forceName
:(
isCancel
?
node
[
nameKey
]
:
inputObj
.
val
());
newName
=
forceName
?
forceName
:(
isCancel
?
data
.
nodeName
(
setting
,
node
)
:
inputObj
.
val
());
if
(
tools
.
apply
(
setting
.
callback
.
beforeRename
,
[
setting
.
treeId
,
node
,
newName
,
isCancel
],
true
)
===
false
)
{
return
false
;
}
node
[
nameKey
]
=
newName
;
data
.
nodeName
(
setting
,
node
,
newName
)
;
var
aObj
=
$$
(
node
,
consts
.
id
.
A
,
setting
);
aObj
.
removeClass
(
consts
.
node
.
CURSELECTED_EDIT
);
inputObj
.
unbind
();
...
...
@@ -861,14 +861,13 @@
setTimeout
(
function
()
{
tools
.
inputFocus
(
root
.
curEditInput
);},
0
);
return
;
}
var
nameKey
=
setting
.
data
.
key
.
name
;
node
.
editNameFlag
=
true
;
view
.
removeTreeDom
(
setting
,
node
);
view
.
cancelCurEditNode
(
setting
);
view
.
selectNode
(
setting
,
node
,
false
);
$$
(
node
,
consts
.
id
.
SPAN
,
setting
).
html
(
"
<input type=text class='rename' id='
"
+
node
.
tId
+
consts
.
id
.
INPUT
+
"
' treeNode
"
+
consts
.
id
.
INPUT
+
"
>
"
);
var
inputObj
=
$$
(
node
,
consts
.
id
.
INPUT
,
setting
);
inputObj
.
attr
(
"
value
"
,
node
[
nameKey
]
);
inputObj
.
attr
(
"
value
"
,
data
.
nodeName
(
setting
,
node
)
);
if
(
setting
.
edit
.
editNameSelectAll
)
{
tools
.
inputSelect
(
inputObj
);
}
else
{
...
...
@@ -898,10 +897,9 @@
root
.
curEditNode
=
node
;
},
moveNode
:
function
(
setting
,
targetNode
,
node
,
moveType
,
animateFlag
,
isSilent
)
{
var
root
=
data
.
getRoot
(
setting
),
childKey
=
setting
.
data
.
key
.
children
;
var
root
=
data
.
getRoot
(
setting
);
if
(
targetNode
==
node
)
return
;
if
(
setting
.
data
.
keep
.
leaf
&&
targetNode
&&
!
targetNode
.
isParent
&&
moveType
==
consts
.
move
.
TYPE_INNER
)
return
;
if
(
setting
.
data
.
keep
.
leaf
&&
targetNode
&&
!
data
.
nodeIsParent
(
setting
,
targetNode
)
&&
moveType
==
consts
.
move
.
TYPE_INNER
)
return
;
var
oldParentNode
=
(
node
.
parentTId
?
node
.
getParentNode
():
root
),
targetNodeIsRoot
=
(
targetNode
===
null
||
targetNode
==
root
);
if
(
targetNodeIsRoot
&&
targetNode
===
null
)
targetNode
=
root
;
...
...
@@ -917,8 +915,8 @@
//parentTId of root node is null
node
.
parentTId
=
null
;
}
else
{
if
(
!
targetNode
.
isParent
)
{
targetNode
.
isParent
=
true
;
if
(
!
data
.
nodeIsParent
(
setting
,
targetNode
)
)
{
data
.
nodeIsParent
(
setting
,
targetNode
,
true
)
;
targetNode
.
open
=
!!
targetNode
.
open
;
view
.
setNodeLineIcos
(
setting
,
targetNode
);
}
...
...
@@ -967,43 +965,48 @@
oldNeighbor
=
null
,
newNeighbor
=
null
,
oldLevel
=
node
.
level
;
var
oldChildren
=
data
.
nodeChildren
(
setting
,
oldParentNode
);
var
targetParentChildren
=
data
.
nodeChildren
(
setting
,
targetParentNode
);
var
targetChildren
=
data
.
nodeChildren
(
setting
,
targetNode
);
if
(
node
.
isFirstNode
)
{
tmpSrcIndex
=
0
;
if
(
old
ParentNode
[
childKey
]
.
length
>
1
)
{
oldNeighbor
=
old
ParentNode
[
childKey
]
[
1
];
if
(
old
Children
.
length
>
1
)
{
oldNeighbor
=
old
Children
[
1
];
oldNeighbor
.
isFirstNode
=
true
;
}
}
else
if
(
node
.
isLastNode
)
{
tmpSrcIndex
=
old
ParentNode
[
childKey
]
.
length
-
1
;
oldNeighbor
=
old
ParentNode
[
childKey
]
[
tmpSrcIndex
-
1
];
tmpSrcIndex
=
old
Children
.
length
-
1
;
oldNeighbor
=
old
Children
[
tmpSrcIndex
-
1
];
oldNeighbor
.
isLastNode
=
true
;
}
else
{
for
(
i
=
0
,
l
=
old
ParentNode
[
childKey
]
.
length
;
i
<
l
;
i
++
)
{
if
(
old
ParentNode
[
childKey
]
[
i
].
tId
==
node
.
tId
)
{
for
(
i
=
0
,
l
=
old
Children
.
length
;
i
<
l
;
i
++
)
{
if
(
old
Children
[
i
].
tId
==
node
.
tId
)
{
tmpSrcIndex
=
i
;
break
;
}
}
}
if
(
tmpSrcIndex
>=
0
)
{
old
ParentNode
[
childKey
]
.
splice
(
tmpSrcIndex
,
1
);
old
Children
.
splice
(
tmpSrcIndex
,
1
);
}
if
(
moveType
!=
consts
.
move
.
TYPE_INNER
)
{
for
(
i
=
0
,
l
=
targetParent
Node
[
childKey
]
.
length
;
i
<
l
;
i
++
)
{
if
(
targetParent
Node
[
childKey
]
[
i
].
tId
==
targetNode
.
tId
)
tmpTargetIndex
=
i
;
for
(
i
=
0
,
l
=
targetParent
Children
.
length
;
i
<
l
;
i
++
)
{
if
(
targetParent
Children
[
i
].
tId
==
targetNode
.
tId
)
tmpTargetIndex
=
i
;
}
}
if
(
moveType
==
consts
.
move
.
TYPE_INNER
)
{
if
(
!
targetNode
[
childKey
])
targetNode
[
childKey
]
=
new
Array
();
if
(
targetNode
[
childKey
].
length
>
0
)
{
newNeighbor
=
targetNode
[
childKey
][
targetNode
[
childKey
].
length
-
1
];
if
(
!
targetChildren
)
{
targetChildren
=
data
.
nodeChildren
(
setting
,
targetNode
,
[]);
}
if
(
targetChildren
.
length
>
0
)
{
newNeighbor
=
targetChildren
[
targetChildren
.
length
-
1
];
newNeighbor
.
isLastNode
=
false
;
}
target
Node
[
childKey
].
splice
(
targetNode
[
childKey
]
.
length
,
0
,
node
);
target
Children
.
splice
(
targetChildren
.
length
,
0
,
node
);
node
.
isLastNode
=
true
;
node
.
isFirstNode
=
(
target
Node
[
childKey
]
.
length
==
1
);
node
.
isFirstNode
=
(
target
Children
.
length
==
1
);
}
else
if
(
targetNode
.
isFirstNode
&&
moveType
==
consts
.
move
.
TYPE_PREV
)
{
targetParent
Node
[
childKey
]
.
splice
(
tmpTargetIndex
,
0
,
node
);
targetParent
Children
.
splice
(
tmpTargetIndex
,
0
,
node
);
newNeighbor
=
targetNode
;
newNeighbor
.
isFirstNode
=
false
;
node
.
parentTId
=
targetNode
.
parentTId
;
...
...
@@ -1011,7 +1014,7 @@
node
.
isLastNode
=
false
;
}
else
if
(
targetNode
.
isLastNode
&&
moveType
==
consts
.
move
.
TYPE_NEXT
)
{
targetParent
Node
[
childKey
]
.
splice
(
tmpTargetIndex
+
1
,
0
,
node
);
targetParent
Children
.
splice
(
tmpTargetIndex
+
1
,
0
,
node
);
newNeighbor
=
targetNode
;
newNeighbor
.
isLastNode
=
false
;
node
.
parentTId
=
targetNode
.
parentTId
;
...
...
@@ -1020,9 +1023,9 @@
}
else
{
if
(
moveType
==
consts
.
move
.
TYPE_PREV
)
{
targetParent
Node
[
childKey
]
.
splice
(
tmpTargetIndex
,
0
,
node
);
targetParent
Children
.
splice
(
tmpTargetIndex
,
0
,
node
);
}
else
{
targetParent
Node
[
childKey
]
.
splice
(
tmpTargetIndex
+
1
,
0
,
node
);
targetParent
Children
.
splice
(
tmpTargetIndex
+
1
,
0
,
node
);
}
node
.
parentTId
=
targetNode
.
parentTId
;
node
.
isFirstNode
=
false
;
...
...
@@ -1033,12 +1036,12 @@
//repair node what been moved
view
.
setNodeLineIcos
(
setting
,
node
);
view
.
repairNodeLevelClass
(
setting
,
node
,
oldLevel
)
view
.
repairNodeLevelClass
(
setting
,
node
,
oldLevel
)
;
//repair node's old parentNode dom
if
(
!
setting
.
data
.
keep
.
parent
&&
old
ParentNode
[
childKey
]
.
length
<
1
)
{
if
(
!
setting
.
data
.
keep
.
parent
&&
old
Children
.
length
<
1
)
{
//old parentNode has no child nodes
oldParentNode
.
isParent
=
false
;
data
.
nodeIsParent
(
setting
,
oldParentNode
,
false
)
;
oldParentNode
.
open
=
false
;
var
tmp_ulObj
=
$$
(
oldParentNode
,
consts
.
id
.
UL
,
setting
),
tmp_switchObj
=
$$
(
oldParentNode
,
consts
.
id
.
SWITCH
,
setting
),
...
...
js/jquery.ztree.exedit.min.js
浏览文件 @
ad144cf5
/*
* JQuery zTree exedit v3.5.3
1
* JQuery zTree exedit v3.5.3
2
* http://treejs.cn/
*
* Copyright (c) 2010 Hunter.z
...
...
@@ -8,46 +8,46 @@
* http://www.opensource.org/licenses/mit-license.php
*
* email: hunter.z@263.net
* Date: 201
7-12-28
* Date: 201
8-01-06
*/
(
function
(
v
){
var
J
=
{
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
"
}},
x
=
{
onHoverOverNode
:
function
(
b
,
a
){
var
c
=
m
.
getSetting
(
b
.
data
.
treeId
),
d
=
m
.
getRoot
(
c
);
if
(
d
.
curHoverNode
!=
a
)
x
.
onHoverOutNode
(
b
);
d
.
curHoverNode
=
a
;
f
.
addHoverDom
(
c
,
a
)},
onHoverOutNode
:
function
(
b
){
var
b
=
m
.
getSetting
(
b
.
data
.
treeId
),
a
=
m
.
getRoot
(
b
);
if
(
a
.
curHoverNode
&&!
m
.
isSelectedNode
(
b
,
a
.
curHoverNode
))
f
.
removeTreeDom
(
b
,
a
.
curHoverNode
),
a
.
curHoverNode
=
null
},
onMousedownNode
:
function
(
b
,
a
){
function
c
(
b
){
if
(
B
.
dragFlag
==
0
&&
Math
.
abs
(
O
-
b
.
clientX
)
<
e
.
edit
.
drag
.
minMoveSize
&&
Math
.
abs
(
P
-
b
.
clientY
)
<
e
.
edit
.
drag
.
minMoveSize
)
return
!
0
;
var
a
,
c
,
n
,
k
,
i
;
i
=
e
.
data
.
key
.
children
;
M
.
css
(
"
cursor
"
,
"
pointer
"
);
if
(
B
.
dragFlag
==
0
){
if
(
g
.
apply
(
e
.
callback
.
beforeDrag
,[
e
.
treeId
,
l
],
!
0
)
==!
1
)
return
r
(
b
),
!
0
;
for
(
a
=
0
,
c
=
l
.
length
;
a
<
c
;
a
++
){
if
(
a
==
0
)
B
.
dragNodeShowBefore
=
[];
n
=
l
[
a
];
n
.
isParent
&&
n
.
open
?(
f
.
expandCollapseNode
(
e
,
n
,
!
n
.
open
),
B
.
dragNodeShowBefore
[
n
.
tId
]
=!
0
):
B
.
dragNodeShowBefore
[
n
.
tId
]
=!
1
}
B
.
dragFlag
=
1
;
t
.
showHoverDom
=!
1
;
g
.
showIfameMask
(
e
,
!
0
);
n
=!
0
;
k
=-
1
;
if
(
l
.
length
>
1
){
var
j
=
l
[
0
].
parentTId
?
l
[
0
].
getParentNode
()[
i
]:
m
.
getNodes
(
e
);
i
=
[];
for
(
a
=
0
,
c
=
j
.
length
;
a
<
c
;
a
++
)
if
(
B
.
dragNodeShowBefore
[
j
[
a
].
tId
]
!==
void
0
&&
(
n
&&
k
>-
1
&&
k
+
1
!==
a
&&
(
n
=!
1
),
i
.
push
(
j
[
a
]),
k
=
a
),
l
.
length
===
i
.
length
){
l
=
i
;
break
}}
n
&&
(
I
=
l
[
0
].
getPreNode
(),
R
=
l
[
l
.
length
-
1
].
getNextNode
());
D
=
o
(
"
<ul class='zTreeDragUL'></ul>
"
,
e
);
for
(
a
=
0
,
c
=
l
.
length
;
a
<
c
;
a
++
)
n
=
l
[
a
],
n
.
editNameFlag
=!
1
,
f
.
selectNode
(
e
,
n
,
a
>
0
),
f
.
removeTreeDom
(
e
,
n
),
a
>
e
.
edit
.
drag
.
maxShowNodeNum
-
1
||
(
k
=
o
(
"
<li id='
"
+
n
.
tId
+
"
_tmp'></li>
"
,
e
),
k
.
append
(
o
(
n
,
d
.
id
.
A
,
e
).
clone
()),
k
.
css
(
"
padding
"
,
"
0
"
),
k
.
children
(
"
#
"
+
n
.
tId
+
d
.
id
.
A
).
removeClass
(
d
.
node
.
CURSELECTED
),
D
.
append
(
k
),
a
==
e
.
edit
.
drag
.
maxShowNodeNum
-
1
&&
(
k
=
o
(
"
<li id='
"
+
n
.
tId
+
"
_moretmp'><a> ... </a></li>
"
,
e
),
D
.
append
(
k
)));
D
.
attr
(
"
id
"
,
l
[
0
].
tId
+
d
.
id
.
UL
+
"
_tmp
"
);
D
.
addClass
(
e
.
treeObj
.
attr
(
"
class
"
));
D
.
appendTo
(
M
);
A
=
o
(
"
<span class='tmpzTreeMove_arrow'></span>
"
,
e
);
A
.
attr
(
"
id
"
,
"
zTreeMove_arrow_tmp
"
);
A
.
appendTo
(
M
);
e
.
treeObj
.
trigger
(
d
.
event
.
DRAG
,[
b
,
e
.
treeId
,
l
])}
if
(
B
.
dragFlag
==
1
){
s
&&
A
.
attr
(
"
id
"
)
==
b
.
target
.
id
&&
u
&&
b
.
clientX
+
G
.
scrollLeft
()
+
2
>
v
(
"
#
"
+
u
+
d
.
id
.
A
,
s
).
offset
().
left
?(
n
=
v
(
"
#
"
+
u
+
d
.
id
.
A
,
s
),
b
.
target
=
n
.
length
>
0
?
n
.
get
(
0
):
b
.
target
):
s
&&
(
s
.
removeClass
(
d
.
node
.
TMPTARGET_TREE
),
u
&&
v
(
"
#
"
+
u
+
d
.
id
.
A
,
s
).
removeClass
(
d
.
node
.
TMPTARGET_NODE
+
"
_
"
+
d
.
move
.
TYPE_PREV
).
removeClass
(
d
.
node
.
TMPTARGET_NODE
+
"
_
"
+
J
.
move
.
TYPE_NEXT
).
removeClass
(
d
.
node
.
TMPTARGET_NODE
+
"
_
"
+
J
.
move
.
TYPE_INNER
));
u
=
s
=
null
;
K
=!
1
;
h
=
e
;
n
=
m
.
getSettings
();
for
(
var
y
in
n
)
if
(
n
[
y
].
treeId
&&
n
[
y
].
edit
.
enable
&&
n
[
y
].
treeId
!=
e
.
treeId
&&
(
b
.
target
.
id
==
n
[
y
].
treeId
||
v
(
b
.
target
).
parents
(
"
#
"
+
n
[
y
].
treeId
).
length
>
0
))
K
=!
0
,
h
=
n
[
y
];
y
=
G
.
scrollTop
();
k
=
G
.
scrollLeft
();
i
=
h
.
treeObj
.
offset
();
a
=
h
.
treeObj
.
get
(
0
).
scrollHeight
;
n
=
h
.
treeObj
.
get
(
0
).
scrollWidth
;
c
=
b
.
clientY
+
y
-
i
.
top
;
var
p
=
h
.
treeObj
.
height
()
+
i
.
top
-
b
.
clientY
-
y
,
q
=
b
.
clientX
+
k
-
i
.
left
,
H
=
h
.
treeObj
.
width
()
+
i
.
left
-
b
.
clientX
-
k
;
i
=
c
<
e
.
edit
.
drag
.
borderMax
&&
c
>
e
.
edit
.
drag
.
borderMin
;
var
j
=
p
<
e
.
edit
.
drag
.
borderMax
&&
p
>
e
.
edit
.
drag
.
borderMin
,
F
=
q
<
e
.
edit
.
drag
.
borderMax
&&
q
>
e
.
edit
.
drag
.
borderMin
,
x
=
H
<
e
.
edit
.
drag
.
borderMax
&&
H
>
e
.
edit
.
drag
.
borderMin
,
p
=
c
>
e
.
edit
.
drag
.
borderMin
&&
p
>
e
.
edit
.
drag
.
borderMin
&&
q
>
e
.
edit
.
drag
.
borderMin
&&
H
>
e
.
edit
.
drag
.
borderMin
,
q
=
i
&&
h
.
treeObj
.
scrollTop
()
<=
0
,
H
=
j
&&
h
.
treeObj
.
scrollTop
()
+
h
.
treeObj
.
height
()
+
10
>=
a
,
N
=
F
&&
h
.
treeObj
.
scrollLeft
()
<=
0
,
Q
=
x
&&
h
.
treeObj
.
scrollLeft
()
+
h
.
treeObj
.
width
()
+
10
>=
n
;
if
(
b
.
target
&&
g
.
isChildOrSelf
(
b
.
target
,
h
.
treeId
)){
for
(
var
E
=
b
.
target
;
E
&&
E
.
tagName
&&!
g
.
eqs
(
E
.
tagName
,
"
li
"
)
&&
E
.
id
!=
h
.
treeId
;)
E
=
E
.
parentNode
;
var
S
=!
0
;
for
(
a
=
0
,
c
=
l
.
length
;
a
<
c
;
a
++
)
if
(
n
=
l
[
a
],
E
.
id
===
n
.
tId
){
S
=!
1
;
break
}
else
if
(
o
(
n
,
e
).
find
(
"
#
"
+
E
.
id
).
length
>
0
){
S
=!
1
;
break
}
if
(
S
&&
b
.
target
&&
g
.
isChildOrSelf
(
b
.
target
,
E
.
id
+
d
.
id
.
A
))
s
=
v
(
E
),
u
=
E
.
id
}
n
=
l
[
0
];
if
(
p
&&
g
.
isChildOrSelf
(
b
.
target
,
h
.
treeId
)){
if
(
!
s
&&
(
b
.
target
.
id
==
h
.
treeId
||
q
||
H
||
N
||
Q
)
&&
(
K
||!
K
&&
n
.
parentTId
))
s
=
h
.
treeObj
;
i
?
h
.
treeObj
.
scrollTop
(
h
.
treeObj
.
scrollTop
()
-
10
):
j
&&
h
.
treeObj
.
scrollTop
(
h
.
treeObj
.
scrollTop
()
+
10
);
F
?
h
.
treeObj
.
scrollLeft
(
h
.
treeObj
.
scrollLeft
()
-
10
):
x
&&
h
.
treeObj
.
scrollLeft
(
h
.
treeObj
.
scrollLeft
()
+
10
);
s
&&
s
!=
h
.
treeObj
&&
s
.
offset
().
left
<
h
.
treeObj
.
offset
().
left
&&
h
.
treeObj
.
scrollLeft
(
h
.
treeObj
.
scrollLeft
()
+
s
.
offset
().
left
-
h
.
treeObj
.
offset
().
left
)}
D
.
css
({
top
:
b
.
clientY
+
y
+
3
+
"
px
"
,
left
:
b
.
clientX
+
k
+
3
+
"
px
"
});
c
=
a
=
0
;
if
(
s
&&
s
.
attr
(
"
id
"
)
!=
h
.
treeId
){
var
z
=
u
==
null
?
null
:
m
.
getNodeCache
(
h
,
u
);
i
=
(
b
.
ctrlKey
||
b
.
metaKey
)
&&
e
.
edit
.
drag
.
isMove
&&
e
.
edit
.
drag
.
isCopy
||!
e
.
edit
.
drag
.
isMove
&&
e
.
edit
.
drag
.
isCopy
;
k
=!!
(
I
&&
u
===
I
.
tId
);
F
=!!
(
R
&&
u
===
R
.
tId
);
j
=
n
.
parentTId
&&
n
.
parentTId
==
u
;
n
=
(
i
||!
F
)
&&
g
.
apply
(
h
.
edit
.
drag
.
prev
,[
h
.
treeId
,
l
,
z
],
!!
h
.
edit
.
drag
.
prev
);
k
=
(
i
||!
k
)
&&
g
.
apply
(
h
.
edit
.
drag
.
next
,[
h
.
treeId
,
l
,
z
],
!!
h
.
edit
.
drag
.
next
);
i
=
(
i
||!
j
)
&&!
(
h
.
data
.
keep
.
leaf
&&!
z
.
isParent
)
&&
g
.
apply
(
h
.
edit
.
drag
.
inner
,[
h
.
treeId
,
l
,
z
],
!!
h
.
edit
.
drag
.
inner
);
j
=
function
(){
s
=
null
;
u
=
""
;
w
=
d
.
move
.
TYPE_INNER
;
A
.
css
({
display
:
"
none
"
});
if
(
window
.
zTreeMoveTimer
)
clearTimeout
(
window
.
zTreeMoveTimer
),
window
.
zTreeMoveTargetNodeTId
=
null
};
if
(
!
n
&&!
k
&&!
i
)
j
();
else
if
(
F
=
v
(
"
#
"
+
u
+
d
.
id
.
A
,
s
),
x
=
z
.
isLastNode
?
null
:
v
(
"
#
"
+
z
.
getNextNode
().
tId
+
d
.
id
.
A
,
s
.
next
()),
p
=
F
.
offset
().
top
,
q
=
F
.
offset
().
left
,
H
=
n
?
i
?
0.25
:
k
?
0.5
:
1
:
-
1
,
N
=
k
?
i
?
0.75
:
n
?
0.5
:
0
:
-
1
,
y
=
(
b
.
clientY
+
y
-
p
)
/
F
.
height
(),(
H
==
1
||
y
<=
H
&&
y
>=-
0.2
)
&&
n
?(
a
=
1
-
A
.
width
(),
c
=
p
-
A
.
height
()
/
2
,
w
=
d
.
move
.
TYPE_PREV
):(
N
==
0
||
y
>=
N
&&
y
<=
1.2
)
&&
k
?(
a
=
1
-
A
.
width
(),
c
=
x
==
null
||
z
.
isParent
&&
z
.
open
?
p
+
F
.
height
()
-
A
.
height
()
/
2
:
x
.
offset
().
top
-
A
.
height
()
/
2
,
w
=
d
.
move
.
TYPE_NEXT
):
i
?(
a
=
5
-
A
.
width
(),
c
=
p
,
w
=
d
.
move
.
TYPE_INNER
):
j
(),
s
){
A
.
css
({
display
:
"
block
"
,
top
:
c
+
"
px
"
,
left
:
q
+
a
+
"
px
"
});
F
.
addClass
(
d
.
node
.
TMPTARGET_NODE
+
"
_
"
+
w
);
if
(
T
!=
u
||
U
!=
w
)
L
=
(
new
Date
).
getTime
();
if
(
z
&&
z
.
isParent
&&
w
==
d
.
move
.
TYPE_INNER
&&
(
y
=!
0
,
window
.
zTreeMoveTimer
&&
window
.
zTreeMoveTargetNodeTId
!==
z
.
tId
?(
clearTimeout
(
window
.
zTreeMoveTimer
),
window
.
zTreeMoveTargetNodeTId
=
null
):
window
.
zTreeMoveTimer
&&
window
.
zTreeMoveTargetNodeTId
===
z
.
tId
&&
(
y
=!
1
),
y
))
window
.
zTreeMoveTimer
=
setTimeout
(
function
(){
w
==
d
.
move
.
TYPE_INNER
&&
z
&&
z
.
isParent
&&!
z
.
open
&&
(
new
Date
).
getTime
()
-
L
>
h
.
edit
.
drag
.
autoOpenTime
&&
g
.
apply
(
h
.
callback
.
beforeDragOpen
,[
h
.
treeId
,
z
],
!
0
)
&&
(
f
.
switchNode
(
h
,
z
),
h
.
edit
.
drag
.
autoExpandTrigger
&&
h
.
treeObj
.
trigger
(
d
.
event
.
EXPAND
,[
h
.
treeId
,
z
]))}
,
h
.
edit
.
drag
.
autoOpenTime
+
50
),
window
.
zTreeMoveTargetNodeTId
=
z
.
tId
}}
else
if
(
w
=
d
.
move
.
TYPE_INNER
,
s
&&
g
.
apply
(
h
.
edit
.
drag
.
inner
,[
h
.
treeId
,
l
,
null
],
!!
h
.
edit
.
drag
.
inner
)?
s
.
addClass
(
d
.
node
.
TMPTARGET_TREE
):
s
=
null
,
A
.
css
({
display
:
"
none
"
}),
window
.
zTreeMoveTimer
)
clearTimeout
(
window
.
zTreeMoveTimer
),
window
.
zTreeMoveTargetNodeTId
=
null
;
T
=
u
;
U
=
w
;
e
.
treeObj
.
trigger
(
d
.
event
.
DRAGMOVE
,[
b
,
e
.
treeId
,
l
])}
return
!
1
}
function
r
(
b
){
if
(
window
.
zTreeMoveTimer
)
clearTimeout
(
window
.
zTreeMoveTimer
),
window
.
zTreeMoveTargetNodeTId
=
null
;
U
=
T
=
null
;
G
.
unbind
(
"
mousemove
"
,
c
);
G
.
unbind
(
"
mouseup
"
,
r
);
G
.
unbind
(
"
selectstart
"
,
k
);
M
.
css
(
"
cursor
"
,
""
);
s
&&
(
s
.
removeClass
(
d
.
node
.
TMPTARGET_TREE
),
u
&&
v
(
"
#
"
+
u
+
d
.
id
.
A
,
s
).
removeClass
(
d
.
node
.
TMPTARGET_NODE
+
"
_
"
+
d
.
move
.
TYPE_PREV
).
removeClass
(
d
.
node
.
TMPTARGET_NODE
+
"
_
"
+
J
.
move
.
TYPE_NEXT
).
removeClass
(
d
.
node
.
TMPTARGET_NODE
+
"
_
"
+
J
.
move
.
TYPE_INNER
));
g
.
showIfameMask
(
e
,
!
1
);
t
.
showHoverDom
=!
0
;
if
(
B
.
dragFlag
!=
0
){
B
.
dragFlag
=
0
;
var
a
,
i
,
j
;
for
(
a
=
0
,
i
=
l
.
length
;
a
<
i
;
a
++
)
j
=
l
[
a
],
j
.
isParent
&&
B
.
dragNodeShowBefore
[
j
.
tId
]
&&!
j
.
open
&&
(
f
.
expandCollapseNode
(
e
,
j
,
!
j
.
open
),
delete
B
.
dragNodeShowBefore
[
j
.
tId
]);
D
&&
D
.
remove
();
A
&&
A
.
remove
();
var
p
=
(
b
.
ctrlKey
||
b
.
metaKey
)
&&
e
.
edit
.
drag
.
isMove
&&
e
.
edit
.
drag
.
isCopy
||!
e
.
edit
.
drag
.
isMove
&&
e
.
edit
.
drag
.
isCopy
;
!
p
&&
s
&&
u
&&
l
[
0
].
parentTId
&&
u
==
l
[
0
].
parentTId
&&
w
==
d
.
move
.
TYPE_INNER
&&
(
s
=
null
);
if
(
s
){
var
q
=
u
==
null
?
null
:
m
.
getNodeCache
(
h
,
u
);
if
(
g
.
apply
(
e
.
callback
.
beforeDrop
,[
h
.
treeId
,
l
,
q
,
w
,
p
],
!
0
)
==!
1
)
f
.
selectNodes
(
x
,
l
);
else
{
var
C
=
p
?
g
.
clone
(
l
):
l
;
a
=
function
(){
if
(
K
){
if
(
!
p
)
for
(
var
a
=
0
,
c
=
l
.
length
;
a
<
c
;
a
++
)
f
.
removeNode
(
e
,
l
[
a
]);
w
==
d
.
move
.
TYPE_INNER
?
f
.
addNodes
(
h
,
q
,
-
1
,
C
):
f
.
addNodes
(
h
,
q
.
getParentNode
(),
w
==
d
.
move
.
TYPE_PREV
?
q
.
getIndex
():
q
.
getIndex
()
+
1
,
C
)}
else
if
(
p
&&
w
==
d
.
move
.
TYPE_INNER
)
f
.
addNodes
(
h
,
q
,
-
1
,
C
);
else
if
(
p
)
f
.
addNodes
(
h
,
q
.
getParentNode
(),
w
==
d
.
move
.
TYPE_PREV
?
q
.
getIndex
():
q
.
getIndex
()
+
1
,
C
);
else
if
(
w
!=
d
.
move
.
TYPE_NEXT
)
for
(
a
=
0
,
c
=
C
.
length
;
a
<
c
;
a
++
)
f
.
moveNode
(
h
,
q
,
C
[
a
],
w
,
!
1
);
else
for
(
a
=-
1
,
c
=
C
.
length
-
1
;
a
<
c
;
c
--
)
f
.
moveNode
(
h
,
q
,
C
[
c
],
w
,
!
1
);
f
.
selectNodes
(
h
,
C
);
a
=
o
(
C
[
0
],
e
).
get
(
0
);
f
.
scrollIntoView
(
e
,
a
);
e
.
treeObj
.
trigger
(
d
.
event
.
DROP
,[
b
,
h
.
treeId
,
C
,
q
,
w
,
p
])};
w
==
d
.
move
.
TYPE_INNER
&&
g
.
canAsync
(
h
,
q
)?
f
.
asyncNode
(
h
,
q
,
!
1
,
a
):
a
()}}
else
f
.
selectNodes
(
x
,
l
),
e
.
treeObj
.
trigger
(
d
.
event
.
DROP
,[
b
,
e
.
treeId
,
l
,
null
,
null
,
null
])}}
function
k
(){
return
!
1
}
var
i
,
j
,
e
=
m
.
getSetting
(
b
.
data
.
treeId
),
B
=
m
.
getRoot
(
e
),
t
=
m
.
getRoots
();
if
(
b
.
button
==
2
||!
e
.
edit
.
enable
||!
e
.
edit
.
drag
.
isCopy
&&!
e
.
edit
.
drag
.
isMove
)
return
!
0
;
var
p
=
b
.
target
,
q
=
m
.
getRoot
(
e
).
curSelectedList
,
l
=
[];
if
(
m
.
isSelectedNode
(
e
,
a
))
for
(
i
=
0
,
j
=
q
.
length
;
i
<
j
;
i
++
){
if
(
q
[
i
].
editNameFlag
&&
g
.
eqs
(
p
.
tagName
,
"
input
"
)
&&
p
.
getAttribute
(
"
treeNode
"
+
d
.
id
.
INPUT
)
!==
null
)
return
!
0
;
l
.
push
(
q
[
i
]);
if
(
l
[
0
].
parentTId
!==
q
[
i
].
parentTId
){
l
=
[
a
];
break
}}
else
l
=
[
a
];
f
.
editNodeBlur
=!
0
;
f
.
cancelCurEditNode
(
e
);
var
G
=
v
(
e
.
treeObj
.
get
(
0
).
ownerDocument
),
M
=
v
(
e
.
treeObj
.
get
(
0
).
ownerDocument
.
body
),
D
,
A
,
s
,
K
=!
1
,
h
=
e
,
x
=
e
,
I
,
R
,
T
=
null
,
U
=
null
,
u
=
null
,
w
=
d
.
move
.
TYPE_INNER
,
O
=
b
.
clientX
,
P
=
b
.
clientY
,
L
=
(
new
Date
).
getTime
();
g
.
uCanDo
(
e
)
&&
G
.
bind
(
"
mousemove
"
,
c
);
G
.
bind
(
"
mouseup
"
,
r
);
G
.
bind
(
"
selectstart
"
,
k
);
b
.
preventDefault
&&
b
.
preventDefault
();
return
!
0
}};
v
.
extend
(
!
0
,
v
.
fn
.
zTree
.
consts
,
J
);
v
.
extend
(
!
0
,
v
.
fn
.
zTree
.
_z
,{
tools
:{
getAbs
:
function
(
b
){
b
=
b
.
getBoundingClientRect
();
return
[
b
.
left
+
(
document
.
body
.
scrollLeft
+
document
.
documentElement
.
scrollLeft
),
b
.
top
+
(
document
.
body
.
scrollTop
+
document
.
documentElement
.
scrollTop
)]},
inputFocus
:
function
(
b
){
b
.
get
(
0
)
&&
(
b
.
focus
(),
g
.
setCursorPosition
(
b
.
get
(
0
),
b
.
val
().
length
))},
inputSelect
:
function
(
b
){
b
.
get
(
0
)
&&
(
b
.
focus
(),
b
.
select
())},
setCursorPosition
:
function
(
b
,
a
){
if
(
b
.
setSelectionRange
)
b
.
focus
(),
b
.
setSelectionRange
(
a
,
a
);
else
if
(
b
.
createTextRange
){
var
c
=
b
.
createTextRange
();
c
.
collapse
(
!
0
);
c
.
moveEnd
(
"
character
"
,
a
);
c
.
moveStart
(
"
character
"
,
a
);
c
.
select
()}},
showIfameMask
:
function
(
b
,
a
){
for
(
var
c
=
m
.
getRoot
(
b
);
c
.
dragMaskList
.
length
>
0
;)
c
.
dragMaskList
[
0
].
remove
(),
c
.
dragMaskList
.
shift
();
if
(
a
)
for
(
var
d
=
o
(
"
iframe
"
,
b
),
f
=
0
,
i
=
d
.
length
;
f
<
i
;
f
++
){
var
j
=
d
.
get
(
f
),
e
=
g
.
getAbs
(
j
),
j
=
o
(
"
<div id='zTreeMask_
"
+
f
+
"
' class='zTreeMask' style='top:
"
+
e
[
1
]
+
"
px; left:
"
+
e
[
0
]
+
"
px; width:
"
+
j
.
offsetWidth
+
"
px; height:
"
+
j
.
offsetHeight
+
"
px;'></div>
"
,
b
);
j
.
appendTo
(
o
(
"
body
"
,
b
));
c
.
dragMaskList
.
push
(
j
)}}},
view
:{
addEditBtn
:
function
(
b
,
a
){
if
(
!
(
a
.
editNameFlag
||
o
(
a
,
d
.
id
.
EDIT
,
b
).
length
>
0
)
&&
g
.
apply
(
b
.
edit
.
showRenameBtn
,[
b
.
treeId
,
a
],
b
.
edit
.
showRenameBtn
)){
var
c
=
o
(
a
,
d
.
id
.
A
,
b
),
r
=
"
<span class='
"
+
d
.
className
.
BUTTON
+
"
edit' id='
"
+
a
.
tId
+
d
.
id
.
EDIT
+
"
' title='
"
+
g
.
apply
(
b
.
edit
.
renameTitle
,[
b
.
treeId
,
a
],
b
.
edit
.
renameTitle
)
+
"
' treeNode
"
+
d
.
id
.
EDIT
+
"
style='display:none;'></span>
"
;
c
.
append
(
r
);
o
(
a
,
d
.
id
.
EDIT
,
b
).
bind
(
"
click
"
,
function
(){
if
(
!
g
.
uCanDo
(
b
)
||
g
.
apply
(
b
.
callback
.
beforeEditName
,[
b
.
treeId
,
a
],
!
0
)
==!
1
)
return
!
1
;
f
.
editNode
(
b
,
a
);
return
!
1
}).
show
()}},
addRemoveBtn
:
function
(
b
,
a
){
if
(
!
(
a
.
editNameFlag
||
o
(
a
,
d
.
id
.
REMOVE
,
b
).
length
>
0
)
&&
g
.
apply
(
b
.
edit
.
showRemoveBtn
,[
b
.
treeId
,
a
],
b
.
edit
.
showRemoveBtn
)){
var
c
=
o
(
a
,
d
.
id
.
A
,
b
),
r
=
"
<span class='
"
+
d
.
className
.
BUTTON
+
"
remove' id='
"
+
a
.
tId
+
d
.
id
.
REMOVE
+
"
' title='
"
+
g
.
apply
(
b
.
edit
.
removeTitle
,[
b
.
treeId
,
a
],
b
.
edit
.
removeTitle
)
+
"
' treeNode
"
+
d
.
id
.
REMOVE
+
"
style='display:none;'></span>
"
;
c
.
append
(
r
);
o
(
a
,
d
.
id
.
REMOVE
,
b
).
bind
(
"
click
"
,
function
(){
if
(
!
g
.
uCanDo
(
b
)
||
g
.
apply
(
b
.
callback
.
beforeRemove
,[
b
.
treeId
,
a
],
!
0
)
==!
1
)
return
!
1
;
f
.
removeNode
(
b
,
a
);
b
.
treeObj
.
trigger
(
d
.
event
.
REMOVE
,[
b
.
treeId
,
a
]);
return
!
1
}).
bind
(
"
mousedown
"
,
function
(){
return
!
0
}).
show
()}},
addHoverDom
:
function
(
b
,
a
){
if
(
m
.
getRoots
().
showHoverDom
)
a
.
isHover
=!
0
,
b
.
edit
.
enable
&&
(
f
.
addEditBtn
(
b
,
a
),
f
.
addRemoveBtn
(
b
,
a
)),
g
.
apply
(
b
.
view
.
addHoverDom
,[
b
.
treeId
,
a
])},
cancelCurEditNode
:
function
(
b
,
a
,
c
){
var
r
=
m
.
getRoot
(
b
),
k
=
b
.
data
.
key
.
name
,
i
=
r
.
curEditNode
;
if
(
i
){
var
j
=
r
.
curEditInput
,
a
=
a
?
a
:
c
?
i
[
k
]:
j
.
val
();
if
(
g
.
apply
(
b
.
callback
.
beforeRename
,[
b
.
treeId
,
i
,
a
,
c
],
!
0
)
===!
1
)
return
!
1
;
i
[
k
]
=
a
;
o
(
i
,
d
.
id
.
A
,
b
).
removeClass
(
d
.
node
.
CURSELECTED_EDIT
);
j
.
unbind
();
f
.
setNodeName
(
b
,
i
);
i
.
editNameFlag
=!
1
;
r
.
curEditNode
=
null
;
r
.
curEditInput
=
null
;
f
.
selectNode
(
b
,
i
,
!
1
);
b
.
treeObj
.
trigger
(
d
.
event
.
RENAME
,[
b
.
treeId
,
i
,
c
])}
return
r
.
noSelection
=!
0
},
editNode
:
function
(
b
,
a
){
var
c
=
m
.
getRoot
(
b
);
f
.
editNodeBlur
=!
1
;
if
(
m
.
isSelectedNode
(
b
,
a
)
&&
c
.
curEditNode
==
a
&&
a
.
editNameFlag
)
setTimeout
(
function
(){
g
.
inputFocus
(
c
.
curEditInput
)},
0
);
else
{
var
r
=
b
.
data
.
key
.
name
;
a
.
editNameFlag
=!
0
;
f
.
removeTreeDom
(
b
,
a
);
f
.
cancelCurEditNode
(
b
);
f
.
selectNode
(
b
,
a
,
!
1
);
o
(
a
,
d
.
id
.
SPAN
,
b
).
html
(
"
<input type=text class='rename' id='
"
+
a
.
tId
+
d
.
id
.
INPUT
+
"
' treeNode
"
+
d
.
id
.
INPUT
+
"
>
"
);
var
k
=
o
(
a
,
d
.
id
.
INPUT
,
b
);
k
.
attr
(
"
value
"
,
a
[
r
]);
b
.
edit
.
editNameSelectAll
?
g
.
inputSelect
(
k
):
g
.
inputFocus
(
k
);
k
.
bind
(
"
blur
"
,
function
(){
f
.
editNodeBlur
||
f
.
cancelCurEditNode
(
b
)}).
bind
(
"
keydown
"
,
function
(
a
){
a
.
keyCode
==
"
13
"
?(
f
.
editNodeBlur
=!
0
,
f
.
cancelCurEditNode
(
b
)):
a
.
keyCode
==
"
27
"
&&
f
.
cancelCurEditNode
(
b
,
null
,
!
0
)}).
bind
(
"
click
"
,
function
(){
return
!
1
}).
bind
(
"
dblclick
"
,
function
(){
return
!
1
});
o
(
a
,
d
.
id
.
A
,
b
).
addClass
(
d
.
node
.
CURSELECTED_EDIT
);
c
.
curEditInput
=
k
;
c
.
noSelection
=
!
1
;
c
.
curEditNode
=
a
}},
moveNode
:
function
(
b
,
a
,
c
,
r
,
k
,
i
){
var
j
=
m
.
getRoot
(
b
),
e
=
b
.
data
.
key
.
children
;
if
(
a
!=
c
&&
(
!
b
.
data
.
keep
.
leaf
||!
a
||
a
.
isParent
||
r
!=
d
.
move
.
TYPE_INNER
)){
var
g
=
c
.
parentTId
?
c
.
getParentNode
():
j
,
t
=
a
===
null
||
a
==
j
;
t
&&
a
===
null
&&
(
a
=
j
);
if
(
t
)
r
=
d
.
move
.
TYPE_INNER
;
j
=
a
.
parentTId
?
a
.
getParentNode
():
j
;
if
(
r
!=
d
.
move
.
TYPE_PREV
&&
r
!=
d
.
move
.
TYPE_NEXT
)
r
=
d
.
move
.
TYPE_INNER
;
if
(
r
==
d
.
move
.
TYPE_INNER
)
if
(
t
)
c
.
parentTId
=
null
;
else
{
if
(
!
a
.
isParent
)
a
.
isParent
=!
0
,
a
.
open
=!!
a
.
open
,
f
.
setNodeLineIcos
(
b
,
a
);
c
.
parentTId
=
a
.
tId
}
var
p
;
t
?
p
=
t
=
b
.
treeObj
:(
!
i
&&
r
==
d
.
move
.
TYPE_INNER
?
f
.
expandCollapseNode
(
b
,
a
,
!
0
,
!
1
):
i
||
f
.
expandCollapseNode
(
b
,
a
.
getParentNode
(),
!
0
,
!
1
),
t
=
o
(
a
,
b
),
p
=
o
(
a
,
d
.
id
.
UL
,
b
),
t
.
get
(
0
)
&&!
p
.
get
(
0
)
&&
(
p
=
[],
f
.
makeUlHtml
(
b
,
a
,
p
,
""
),
t
.
append
(
p
.
join
(
""
))),
p
=
o
(
a
,
d
.
id
.
UL
,
b
));
var
q
=
o
(
c
,
b
);
q
.
get
(
0
)?
t
.
get
(
0
)
||
q
.
remove
():
q
=
f
.
appendNodes
(
b
,
c
.
level
,[
c
],
null
,
-
1
,
!
1
,
!
0
).
join
(
""
);
p
.
get
(
0
)
&&
r
==
d
.
move
.
TYPE_INNER
?
p
.
append
(
q
):
t
.
get
(
0
)
&&
r
==
d
.
move
.
TYPE_PREV
?
t
.
before
(
q
):
t
.
get
(
0
)
&&
r
==
d
.
move
.
TYPE_NEXT
&&
t
.
after
(
q
);
var
l
=-
1
,
v
=
0
,
x
=
null
,
t
=
null
,
D
=
c
.
level
;
if
(
c
.
isFirstNode
){
if
(
l
=
0
,
g
[
e
].
length
>
1
)
x
=
g
[
e
][
1
],
x
.
isFirstNode
=!
0
}
else
if
(
c
.
isLastNode
)
l
=
g
[
e
].
length
-
1
,
x
=
g
[
e
][
l
-
1
],
x
.
isLastNode
=!
0
;
else
for
(
p
=
0
,
q
=
g
[
e
].
length
;
p
<
q
;
p
++
)
if
(
g
[
e
][
p
].
tId
==
c
.
tId
){
l
=
p
;
break
}
l
>=
0
&&
g
[
e
].
splice
(
l
,
1
);
if
(
r
!=
d
.
move
.
TYPE_INNER
)
for
(
p
=
0
,
q
=
j
[
e
].
length
;
p
<
q
;
p
++
)
j
[
e
][
p
].
tId
==
a
.
tId
&&
(
v
=
p
);
if
(
r
==
d
.
move
.
TYPE_INNER
){
a
[
e
]
||
(
a
[
e
]
=
[]);
if
(
a
[
e
].
length
>
0
)
t
=
a
[
e
][
a
[
e
].
length
-
1
],
t
.
isLastNode
=!
1
;
a
[
e
].
splice
(
a
[
e
].
length
,
0
,
c
);
c
.
isLastNode
=!
0
;
c
.
isFirstNode
=
a
[
e
].
length
==
1
}
else
a
.
isFirstNode
&&
r
==
d
.
move
.
TYPE_PREV
?
(
j
[
e
].
splice
(
v
,
0
,
c
),
t
=
a
,
t
.
isFirstNode
=!
1
,
c
.
parentTId
=
a
.
parentTId
,
c
.
isFirstNode
=!
0
,
c
.
isLastNode
=!
1
):
a
.
isLastNode
&&
r
==
d
.
move
.
TYPE_NEXT
?(
j
[
e
].
splice
(
v
+
1
,
0
,
c
),
t
=
a
,
t
.
isLastNode
=!
1
,
c
.
parentTId
=
a
.
parentTId
,
c
.
isFirstNode
=!
1
,
c
.
isLastNode
=!
0
):(
r
==
d
.
move
.
TYPE_PREV
?
j
[
e
].
splice
(
v
,
0
,
c
):
j
[
e
].
splice
(
v
+
1
,
0
,
c
),
c
.
parentTId
=
a
.
parentTId
,
c
.
isFirstNode
=!
1
,
c
.
isLastNode
=!
1
);
m
.
fixPIdKeyValue
(
b
,
c
);
m
.
setSonNodeLevel
(
b
,
c
.
getParentNode
(),
c
);
f
.
setNodeLineIcos
(
b
,
c
);
f
.
repairNodeLevelClass
(
b
,
c
,
D
);
!
b
.
data
.
keep
.
parent
&&
g
[
e
].
length
<
1
?(
g
.
isParent
=!
1
,
g
.
open
=!
1
,
a
=
o
(
g
,
d
.
id
.
UL
,
b
),
r
=
o
(
g
,
d
.
id
.
SWITCH
,
b
),
e
=
o
(
g
,
d
.
id
.
ICON
,
b
),
f
.
replaceSwitchClass
(
g
,
r
,
d
.
folder
.
DOCU
),
f
.
replaceIcoClass
(
g
,
e
,
d
.
folder
.
DOCU
),
a
.
css
(
"
display
"
,
"
none
"
)):
x
&&
f
.
setNodeLineIcos
(
b
,
x
);
t
&&
f
.
setNodeLineIcos
(
b
,
t
);
b
.
check
&&
b
.
check
.
enable
&&
f
.
repairChkClass
&&
(
f
.
repairChkClass
(
b
,
g
),
f
.
repairParentChkClassWithSelf
(
b
,
g
),
g
!=
c
.
parent
&&
f
.
repairParentChkClassWithSelf
(
b
,
c
));
i
||
f
.
expandCollapseParentNode
(
b
,
c
.
getParentNode
(),
!
0
,
k
)}},
removeEditBtn
:
function
(
b
,
a
){
o
(
a
,
d
.
id
.
EDIT
,
b
).
unbind
().
remove
()}
,
removeRemoveBtn
:
function
(
b
,
a
){
o
(
a
,
d
.
id
.
REMOVE
,
b
).
unbind
().
remove
()},
removeTreeDom
:
function
(
b
,
a
){
a
.
isHover
=!
1
;
f
.
removeEditBtn
(
b
,
a
);
f
.
removeRemoveBtn
(
b
,
a
);
g
.
apply
(
b
.
view
.
removeHoverDom
,[
b
.
treeId
,
a
])},
repairNodeLevelClass
:
function
(
b
,
a
,
c
){
if
(
c
!==
a
.
level
){
var
f
=
o
(
a
,
b
),
g
=
o
(
a
,
d
.
id
.
A
,
b
),
b
=
o
(
a
,
d
.
id
.
UL
,
b
),
c
=
d
.
className
.
LEVEL
+
c
,
a
=
d
.
className
.
LEVEL
+
a
.
level
;
f
.
removeClass
(
c
);
f
.
addClass
(
a
);
g
.
removeClass
(
c
);
g
.
addClass
(
a
);
b
.
removeClass
(
c
);
b
.
addClass
(
a
)}},
selectNodes
:
function
(
b
,
a
){
for
(
var
c
=
0
,
d
=
a
.
length
;
c
<
d
;
c
++
)
f
.
selectNode
(
b
,
a
[
c
],
c
>
0
)}},
event
:{},
data
:{
setSonNodeLevel
:
function
(
b
,
a
,
c
){
if
(
c
){
var
d
=
b
.
data
.
key
.
children
;
c
.
level
=
a
?
a
.
level
+
1
:
0
;
if
(
c
[
d
])
for
(
var
a
=
0
,
f
=
c
[
d
].
length
;
a
<
f
;
a
++
)
c
[
d
][
a
]
&&
m
.
setSonNodeLevel
(
b
,
c
,
c
[
d
][
a
])}}}});
var
I
=
v
.
fn
.
zTree
,
g
=
I
.
_z
.
tools
,
d
=
I
.
consts
,
f
=
I
.
_z
.
view
,
m
=
I
.
_z
.
data
,
o
=
g
.
$
;
m
.
exSetting
({
edit
:{
enable
:
!
1
,
editNameSelectAll
:
!
1
,
showRemoveBtn
:
!
0
,
showRenameBtn
:
!
0
,
removeTitle
:
"
remove
"
,
renameTitle
:
"
rename
"
,
drag
:{
autoExpandTrigger
:
!
1
,
isCopy
:
!
0
,
isMove
:
!
0
,
prev
:
!
0
,
next
:
!
0
,
inner
:
!
0
,
minMoveSize
:
5
,
borderMax
:
10
,
borderMin
:
-
5
,
m
axShowNodeNum
:
5
,
autoOpenTime
:
500
}},
view
:{
addHoverDom
:
null
,
removeHoverDom
:
null
},
callback
:{
beforeDrag
:
null
,
beforeDragOpen
:
null
,
beforeDrop
:
null
,
beforeEditName
:
null
,
beforeRename
:
null
,
onDrag
:
null
,
onDragMove
:
null
,
onDrop
:
null
,
onRename
:
null
}});
m
.
addInitBind
(
function
(
b
){
var
a
=
b
.
treeObj
,
c
=
d
.
event
;
a
.
bind
(
c
.
RENAME
,
function
(
a
,
c
,
d
,
f
){
g
.
apply
(
b
.
callback
.
onRename
,[
a
,
c
,
d
,
f
])});
a
.
bind
(
c
.
DRAG
,
function
(
a
,
c
,
d
,
f
){
g
.
apply
(
b
.
callback
.
onDrag
,[
c
,
d
,
f
])});
a
.
bind
(
c
.
DRAGMOVE
,
function
(
a
,
c
,
d
,
f
){
g
.
apply
(
b
.
callback
.
onDragMove
,[
c
,
d
,
f
])});
a
.
bind
(
c
.
DROP
,
function
(
a
,
c
,
d
,
f
,
e
,
m
,
o
){
g
.
apply
(
b
.
callback
.
onDrop
,[
c
,
d
,
f
,
e
,
m
,
o
])})});
m
.
addInitUnBind
(
function
(
b
){
var
b
=
b
.
treeObj
,
a
=
d
.
event
;
b
.
unbind
(
a
.
RENAME
);
b
.
unbind
(
a
.
DRAG
);
b
.
unbind
(
a
.
DRAGMOVE
);
b
.
unbind
(
a
.
DROP
)});
m
.
addInitCache
(
function
(){});
m
.
addInitNode
(
function
(
b
,
a
,
c
){
if
(
c
)
c
.
isHover
=!
1
,
c
.
editNameFlag
=!
1
});
m
.
addInitProxy
(
function
(
b
){
var
a
=
b
.
target
,
c
=
m
.
getSetting
(
b
.
data
.
treeId
),
f
=
b
.
relatedTarget
,
k
=
""
,
i
=
null
,
j
=
""
,
e
=
null
,
o
=
null
;
if
(
g
.
eqs
(
b
.
type
,
"
mouseover
"
)){
if
(
o
=
g
.
getMDom
(
c
,
a
,[{
tagName
:
"
a
"
,
attrName
:
"
treeNode
"
+
d
.
id
.
A
}]))
k
=
g
.
getNodeMainDom
(
o
).
id
,
j
=
"
hoverOverNode
"
}
else
if
(
g
.
eqs
(
b
.
type
,
"
mouseout
"
))
o
=
g
.
getMDom
(
c
,
f
,[{
tagName
:
"
a
"
,
attrName
:
"
treeNode
"
+
d
.
id
.
A
}]),
o
||
(
k
=
"
remove
"
,
j
=
"
hoverOutNode
"
);
else
if
(
g
.
eqs
(
b
.
type
,
"
mousedown
"
)
&&
(
o
=
g
.
getMDom
(
c
,
a
,[{
tagName
:
"
a
"
,
attrName
:
"
treeNode
"
+
d
.
id
.
A
}])))
k
=
g
.
getNodeMainDom
(
o
).
id
,
j
=
"
mousedownNode
"
;
if
(
k
.
length
>
0
)
switch
(
i
=
m
.
getNodeCache
(
c
,
k
),
j
){
case
"
mousedownNode
"
:
e
=
x
.
onMousedownNode
;
break
;
case
"
hoverOverNode
"
:
e
=
x
.
onHoverOverNode
;
break
;
case
"
hoverOutNode
"
:
e
=
x
.
onHoverOutNode
}
return
{
stop
:
!
1
,
node
:
i
,
nodeEventType
:
j
,
nodeEventCallback
:
e
,
treeEventType
:
""
,
treeEventCallback
:
null
}});
m
.
addInitRoot
(
function
(
b
){
var
b
=
m
.
getRoot
(
b
),
a
=
m
.
getRoots
();
b
.
curEditNode
=
null
;
b
.
curEditInput
=
null
;
b
.
curHoverNode
=
null
;
b
.
dragFlag
=
0
;
b
.
dragNodeShowBefore
=
[];
b
.
dragMaskList
=
[];
a
.
showHoverDom
=!
0
});
m
.
addZTreeTools
(
function
(
b
,
a
){
a
.
cancelEditName
=
function
(
a
){
m
.
getRoot
(
this
.
setting
).
curEditNode
&&
f
.
cancelCurEditNode
(
this
.
setting
,
a
?
a
:
null
,
!
0
)};
a
.
copyNode
=
function
(
a
,
b
,
k
,
i
){
if
(
!
b
)
return
null
;
if
(
a
&&!
a
.
isParent
&&
this
.
setting
.
data
.
keep
.
leaf
&&
k
===
d
.
move
.
TYPE_INNER
)
return
null
;
var
j
=
this
,
e
=
g
.
clone
(
b
);
if
(
!
a
)
a
=
null
,
k
=
d
.
move
.
TYPE_INNER
;
k
==
d
.
move
.
TYPE_INNER
?(
b
=
function
(){
f
.
addNodes
(
j
.
setting
,
a
,
-
1
,[
e
],
i
)},
g
.
canAsync
(
this
.
setting
,
a
)?
f
.
asyncNode
(
this
.
setting
,
a
,
i
,
b
):
b
()):(
f
.
addNodes
(
this
.
setting
,
a
.
parentNode
,
-
1
,[
e
],
i
),
f
.
moveNode
(
this
.
setting
,
a
,
e
,
k
,
!
1
,
i
));
return
e
};
a
.
editName
=
function
(
a
){
a
&&
a
.
tId
&&
a
===
m
.
getNodeCache
(
this
.
setting
,
a
.
tId
)
&&
(
a
.
parentTId
&&
f
.
expandCollapseParentNode
(
this
.
setting
,
a
.
getParentNode
()
,
!
0
),
f
.
editNode
(
this
.
setting
,
a
))};
a
.
moveNode
=
function
(
a
,
b
,
k
,
i
){
function
j
(){
f
.
moveNode
(
e
.
setting
,
a
,
b
,
k
,
!
1
,
i
)}
if
(
!
b
)
return
b
;
if
(
a
&&!
a
.
isParent
&&
this
.
setting
.
data
.
keep
.
leaf
&&
k
===
d
.
move
.
TYPE_INNER
)
return
null
;
else
if
(
a
&&
(
b
.
parentTId
==
a
.
tId
&&
k
==
d
.
move
.
TYPE_INNER
||
o
(
b
,
this
.
setting
).
find
(
"
#
"
+
a
.
tId
).
length
>
0
))
return
null
;
else
a
||
(
a
=
null
);
var
e
=
this
;
g
.
canAsync
(
this
.
setting
,
a
)
&&
k
===
d
.
move
.
TYPE_INNER
?
f
.
asyncNode
(
this
.
setting
,
a
,
i
,
j
):
j
();
return
b
};
a
.
setEditable
=
function
(
a
){
this
.
setting
.
edit
.
enable
=
a
;
return
this
.
refresh
()}});
var
O
=
f
.
cancelPreSelectedNode
;
f
.
cancelPreSelectedNode
=
function
(
b
,
a
){
for
(
var
c
=
m
.
getRoot
(
b
).
curSelectedList
,
d
=
0
,
g
=
c
.
length
;
d
<
g
;
d
++
)
if
(
!
a
||
a
===
c
[
d
])
if
(
f
.
removeTreeDom
(
b
,
c
[
d
]),
a
)
break
;
O
&&
O
.
apply
(
f
,
arguments
)};
var
P
=
f
.
createNodes
;
f
.
createNodes
=
function
(
b
,
a
,
c
,
d
,
g
){
P
&&
P
.
apply
(
f
,
arguments
);
c
&&
f
.
repairParentChkClassWithSelf
&&
f
.
repairParentChkClassWithSelf
(
b
,
d
)};
var
W
=
f
.
makeNodeUrl
;
f
.
makeNodeUrl
=
function
(
b
,
a
){
return
b
.
edit
.
enable
?
null
:
W
.
apply
(
f
,
arguments
)};
var
L
=
f
.
removeNode
;
f
.
removeNode
=
function
(
b
,
a
){
var
c
=
m
.
getRoot
(
b
);
if
(
c
.
curEditNode
===
a
)
c
.
curEditNode
=
null
;
L
&&
L
.
apply
(
f
,
arguments
)};
var
Q
=
f
.
selectNode
;
f
.
selectNode
=
function
(
b
,
a
,
c
){
var
d
=
m
.
getRoot
(
b
);
if
(
m
.
isSelectedNode
(
b
,
a
)
&&
d
.
curEditNode
==
a
&&
a
.
editNameFlag
)
return
!
1
;
Q
&&
Q
.
apply
(
f
,
arguments
);
f
.
addHoverDom
(
b
,
a
);
return
!
0
};
var
V
=
g
.
uCanDo
;
g
.
uCanDo
=
function
(
b
,
a
){
var
c
=
m
.
getRoot
(
b
);
if
(
a
&&
(
g
.
eqs
(
a
.
type
,
"
mouseover
"
)
||
g
.
eqs
(
a
.
type
,
"
mouseout
"
)
||
g
.
eqs
(
a
.
type
,
"
mousedown
"
)
||
g
.
eqs
(
a
.
type
,
"
mouseup
"
)))
return
!
0
;
if
(
c
.
curEditNode
)
f
.
editNodeBlur
=!
1
,
c
.
curEditInput
.
focus
();
return
!
c
.
curEditNode
&&
(
V
?
V
.
apply
(
f
,
arguments
):
!
0
)}})(
jQuery
);
(
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
=
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
)
<
f
.
edit
.
drag
.
minMoveSize
&&
Math
.
abs
(
O
-
a
.
clientY
)
<
f
.
edit
.
drag
.
minMoveSize
)
return
!
0
;
var
b
,
c
,
g
,
j
;
L
.
css
(
"
cursor
"
,
"
pointer
"
);
if
(
m
.
dragFlag
==
0
){
if
(
k
.
apply
(
f
.
callback
.
beforeDrag
,[
f
.
treeId
,
n
],
!
0
)
==!
1
)
return
l
(
a
),
!
0
;
for
(
b
=
0
,
c
=
n
.
length
;
b
<
c
;
b
++
){
if
(
b
==
0
)
m
.
dragNodeShowBefore
=
[];
g
=
n
[
b
];
i
.
nodeIsParent
(
f
,
g
)
&&
g
.
open
?(
e
.
expandCollapseNode
(
f
,
g
,
!
g
.
open
),
m
.
dragNodeShowBefore
[
g
.
tId
]
=!
0
):
m
.
dragNodeShowBefore
[
g
.
tId
]
=!
1
}
m
.
dragFlag
=
1
;
y
.
showHoverDom
=!
1
;
k
.
showIfameMask
(
f
,
!
0
);
j
=!
0
;
var
p
=-
1
;
if
(
n
.
length
>
1
){
var
o
=
n
[
0
].
parentTId
?
i
.
nodeChildren
(
f
,
n
[
0
].
getParentNode
()):
i
.
getNodes
(
f
);
g
=
[];
for
(
b
=
0
,
c
=
o
.
length
;
b
<
c
;
b
++
)
if
(
m
.
dragNodeShowBefore
[
o
[
b
].
tId
]
!==
void
0
&&
(
j
&&
p
>-
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
(
"
<ul class='zTreeDragUL'></ul>
"
,
f
);
for
(
b
=
0
,
c
=
n
.
length
;
b
<
c
;
b
++
)
g
=
n
[
b
],
g
.
editNameFlag
=!
1
,
e
.
selectNode
(
f
,
g
,
b
>
0
),
e
.
removeTreeDom
(
f
,
g
),
b
>
f
.
edit
.
drag
.
maxShowNodeNum
-
1
||
(
j
=
q
(
"
<li id='
"
+
g
.
tId
+
"
_tmp'></li>
"
,
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
(
"
<li id='
"
+
g
.
tId
+
"
_moretmp'><a> ... </a></li>
"
,
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
(
"
<span class='tmpzTreeMove_arrow'></span>
"
,
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
));
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
=
c
<
f
.
edit
.
drag
.
borderMax
&&
c
>
f
.
edit
.
drag
.
borderMin
,
o
=
E
<
f
.
edit
.
drag
.
borderMax
&&
E
>
f
.
edit
.
drag
.
borderMin
,
F
=
r
<
f
.
edit
.
drag
.
borderMax
&&
r
>
f
.
edit
.
drag
.
borderMin
,
v
=
s
<
f
.
edit
.
drag
.
borderMax
&&
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
!=
h
.
treeId
;)
D
=
D
.
parentNode
;
var
R
=!
0
;
for
(
b
=
0
,
c
=
n
.
length
;
b
<
c
;
b
++
)
if
(
g
=
n
[
b
],
D
.
id
===
g
.
tId
){
R
=!
1
;
break
}
else
if
(
q
(
g
,
f
).
find
(
"
#
"
+
D
.
id
).
length
>
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
()
+
10
);
t
&&
t
!=
h
.
treeObj
&&
t
.
offset
().
left
<
h
.
treeObj
.
offset
().
left
&&
h
.
treeObj
.
scrollLeft
(
h
.
treeObj
.
scrollLeft
()
+
t
.
offset
().
left
-
h
.
treeObj
.
offset
().
left
)}
C
.
css
({
top
:
a
.
clientY
+
z
+
3
+
"
px
"
,
left
:
a
.
clientX
+
j
+
3
+
"
px
"
});
b
=
j
=
0
;
if
(
t
&&
t
.
attr
(
"
id
"
)
!=
h
.
treeId
){
var
A
=
w
==
null
?
null
:
i
.
getNodeCache
(
h
,
w
),
p
=
(
a
.
ctrlKey
||
a
.
metaKey
)
&&
f
.
edit
.
drag
.
isMove
&&
f
.
edit
.
drag
.
isCopy
||!
f
.
edit
.
drag
.
isMove
&&
f
.
edit
.
drag
.
isCopy
;
c
=!!
(
H
&&
w
===
H
.
tId
);
F
=!!
(
Q
&&
w
===
Q
.
tId
);
o
=
g
.
parentTId
&&
g
.
parentTId
==
w
;
g
=
(
p
||!
F
)
&&
k
.
apply
(
h
.
edit
.
drag
.
prev
,[
h
.
treeId
,
n
,
A
],
!!
h
.
edit
.
drag
.
prev
);
c
=
(
p
||!
c
)
&&
k
.
apply
(
h
.
edit
.
drag
.
next
,[
h
.
treeId
,
n
,
A
],
!!
h
.
edit
.
drag
.
next
);
p
=
(
p
||!
o
)
&&!
(
h
.
data
.
keep
.
leaf
&&!
i
.
nodeIsParent
(
f
,
A
))
&&
k
.
apply
(
h
.
edit
.
drag
.
inner
,[
h
.
treeId
,
n
,
A
],
!!
h
.
edit
.
drag
.
inner
);
o
=
function
(){
t
=
null
;
w
=
""
;
x
=
d
.
move
.
TYPE_INNER
;
u
.
css
({
display
:
"
none
"
});
if
(
window
.
zTreeMoveTimer
)
clearTimeout
(
window
.
zTreeMoveTimer
),
window
.
zTreeMoveTargetNodeTId
=
null
};
if
(
!
g
&&!
c
&&!
p
)
o
();
else
if
(
F
=
B
(
"
#
"
+
w
+
d
.
id
.
A
,
t
),
v
=
A
.
isLastNode
?
null
:
B
(
"
#
"
+
A
.
getNextNode
().
tId
+
d
.
id
.
A
,
t
.
next
()),
E
=
F
.
offset
().
top
,
r
=
F
.
offset
().
left
,
s
=
g
?
p
?
0.25
:
c
?
0.5
:
1
:
-
1
,
M
=
c
?
p
?
0.75
:
g
?
0.5
:
0
:
-
1
,
z
=
(
a
.
clientY
+
z
-
E
)
/
F
.
height
(),(
s
==
1
||
z
<=
s
&&
z
>=-
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
,
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
,
[
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
=
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
<
j
;
b
++
)
o
=
n
[
b
],
i
.
nodeIsParent
(
f
,
o
)
&&
m
.
dragNodeShowBefore
[
o
.
tId
]
&&
!
o
.
open
&&
(
e
.
expandCollapseNode
(
f
,
o
,
!
o
.
open
),
delete
m
.
dragNodeShowBefore
[
o
.
tId
]);
C
&&
C
.
remove
();
u
&&
u
.
remove
();
var
r
=
(
a
.
ctrlKey
||
a
.
metaKey
)
&&
f
.
edit
.
drag
.
isMove
&&
f
.
edit
.
drag
.
isCopy
||!
f
.
edit
.
drag
.
isMove
&&
f
.
edit
.
drag
.
isCopy
;
!
r
&&
t
&&
w
&&
n
[
0
].
parentTId
&&
w
==
n
[
0
].
parentTId
&&
x
==
d
.
move
.
TYPE_INNER
&&
(
t
=
null
);
if
(
t
){
var
p
=
w
==
null
?
null
:
i
.
getNodeCache
(
h
,
w
);
if
(
k
.
apply
(
f
.
callback
.
beforeDrop
,[
h
.
treeId
,
n
,
p
,
x
,
r
],
!
0
)
==!
1
)
e
.
selectNodes
(
v
,
n
);
else
{
var
s
=
r
?
k
.
clone
(
n
):
n
;
b
=
function
(){
if
(
J
){
if
(
!
r
)
for
(
var
b
=
0
,
c
=
n
.
length
;
b
<
c
;
b
++
)
e
.
removeNode
(
f
,
n
[
b
]);
x
==
d
.
move
.
TYPE_INNER
?
e
.
addNodes
(
h
,
p
,
-
1
,
s
):
e
.
addNodes
(
h
,
p
.
getParentNode
(),
x
==
d
.
move
.
TYPE_PREV
?
p
.
getIndex
():
p
.
getIndex
()
+
1
,
s
)}
else
if
(
r
&&
x
==
d
.
move
.
TYPE_INNER
)
e
.
addNodes
(
h
,
p
,
-
1
,
s
);
else
if
(
r
)
e
.
addNodes
(
h
,
p
.
getParentNode
(),
x
==
d
.
move
.
TYPE_PREV
?
p
.
getIndex
():
p
.
getIndex
()
+
1
,
s
);
else
if
(
x
!=
d
.
move
.
TYPE_NEXT
)
for
(
b
=
0
,
c
=
s
.
length
;
b
<
c
;
b
++
)
e
.
moveNode
(
h
,
p
,
s
[
b
],
x
,
!
1
);
else
for
(
b
=-
1
,
c
=
s
.
length
-
1
;
b
<
c
;
c
--
)
e
.
moveNode
(
h
,
p
,
s
[
c
],
x
,
!
1
);
e
.
selectNodes
(
h
,
s
);
b
=
q
(
s
[
0
],
f
).
get
(
0
);
e
.
scrollIntoView
(
f
,
b
);
f
.
treeObj
.
trigger
(
d
.
event
.
DROP
,
[
a
,
h
.
treeId
,
s
,
p
,
x
,
r
])};
x
==
d
.
move
.
TYPE_INNER
&&
k
.
canAsync
(
h
,
p
)?
e
.
asyncNode
(
h
,
p
,
!
1
,
b
):
b
()}}
else
e
.
selectNodes
(
v
,
n
),
f
.
treeObj
.
trigger
(
d
.
event
.
DROP
,[
a
,
f
.
treeId
,
n
,
null
,
null
,
null
])}}
function
g
(){
return
!
1
}
var
o
,
j
,
f
=
i
.
getSetting
(
a
.
data
.
treeId
),
m
=
i
.
getRoot
(
f
),
y
=
i
.
getRoots
();
if
(
a
.
button
==
2
||!
f
.
edit
.
enable
||!
f
.
edit
.
drag
.
isCopy
&&!
f
.
edit
.
drag
.
isMove
)
return
!
0
;
var
r
=
a
.
target
,
s
=
i
.
getRoot
(
f
).
curSelectedList
,
n
=
[];
if
(
i
.
isSelectedNode
(
f
,
b
))
for
(
o
=
0
,
j
=
s
.
length
;
o
<
j
;
o
++
){
if
(
s
[
o
].
editNameFlag
&&
k
.
eqs
(
r
.
tagName
,
"
input
"
)
&&
r
.
getAttribute
(
"
treeNode
"
+
d
.
id
.
INPUT
)
!==
null
)
return
!
0
;
n
.
push
(
s
[
o
]);
if
(
n
[
0
].
parentTId
!==
s
[
o
].
parentTId
){
n
=
[
b
];
break
}}
else
n
=
[
b
];
e
.
editNodeBlur
=!
0
;
e
.
cancelCurEditNode
(
f
);
var
G
=
B
(
f
.
treeObj
.
get
(
0
).
ownerDocument
),
L
=
B
(
f
.
treeObj
.
get
(
0
).
ownerDocument
.
body
),
C
,
u
,
t
,
J
=!
1
,
h
=
f
,
v
=
f
,
H
,
Q
,
S
=
null
,
T
=
null
,
w
=
null
,
x
=
d
.
move
.
TYPE_INNER
,
N
=
a
.
clientX
,
O
=
a
.
clientY
,
K
=
(
new
Date
).
getTime
();
k
.
uCanDo
(
f
)
&&
G
.
bind
(
"
mousemove
"
,
c
);
G
.
bind
(
"
mouseup
"
,
l
);
G
.
bind
(
"
selectstart
"
,
g
);
a
.
preventDefault
&&
a
.
preventDefault
();
return
!
0
}};
B
.
extend
(
!
0
,
B
.
fn
.
zTree
.
consts
,
I
);
B
.
extend
(
!
0
,
B
.
fn
.
zTree
.
_z
,{
tools
:{
getAbs
:
function
(
a
){
a
=
a
.
getBoundingClientRect
();
return
[
a
.
left
+
(
document
.
body
.
scrollLeft
+
document
.
documentElement
.
scrollLeft
),
a
.
top
+
(
document
.
body
.
scrollTop
+
document
.
documentElement
.
scrollTop
)]},
inputFocus
:
function
(
a
){
a
.
get
(
0
)
&&
(
a
.
focus
(),
k
.
setCursorPosition
(
a
.
get
(
0
),
a
.
val
().
length
))},
inputSelect
:
function
(
a
){
a
.
get
(
0
)
&&
(
a
.
focus
(),
a
.
select
())},
setCursorPosition
:
function
(
a
,
b
){
if
(
a
.
setSelectionRange
)
a
.
focus
(),
a
.
setSelectionRange
(
b
,
b
);
else
if
(
a
.
createTextRange
){
var
c
=
a
.
createTextRange
();
c
.
collapse
(
!
0
);
c
.
moveEnd
(
"
character
"
,
b
);
c
.
moveStart
(
"
character
"
,
b
);
c
.
select
()}},
showIfameMask
:
function
(
a
,
b
){
for
(
var
c
=
i
.
getRoot
(
a
);
c
.
dragMaskList
.
length
>
0
;)
c
.
dragMaskList
[
0
].
remove
(),
c
.
dragMaskList
.
shift
();
if
(
b
)
for
(
var
d
=
q
(
"
iframe
"
,
a
),
g
=
0
,
e
=
d
.
length
;
g
<
e
;
g
++
){
var
j
=
d
.
get
(
g
),
f
=
k
.
getAbs
(
j
),
j
=
q
(
"
<div id='zTreeMask_
"
+
g
+
"
' class='zTreeMask' style='top:
"
+
f
[
1
]
+
"
px; left:
"
+
f
[
0
]
+
"
px; width:
"
+
j
.
offsetWidth
+
"
px; height:
"
+
j
.
offsetHeight
+
"
px;'></div>
"
,
a
);
j
.
appendTo
(
q
(
"
body
"
,
a
));
c
.
dragMaskList
.
push
(
j
)}}},
view
:{
addEditBtn
:
function
(
a
,
b
){
if
(
!
(
b
.
editNameFlag
||
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
=
"
<span class='
"
+
d
.
className
.
BUTTON
+
"
edit' id='
"
+
b
.
tId
+
d
.
id
.
EDIT
+
"
' title='
"
+
k
.
apply
(
a
.
edit
.
renameTitle
,[
a
.
treeId
,
b
],
a
.
edit
.
renameTitle
)
+
"
' treeNode
"
+
d
.
id
.
EDIT
+
"
style='display:none;'></span>
"
;
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
,
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
=
"
<span class='
"
+
d
.
className
.
BUTTON
+
"
remove' id='
"
+
b
.
tId
+
d
.
id
.
REMOVE
+
"
' title='
"
+
k
.
apply
(
a
.
edit
.
removeTitle
,[
a
.
treeId
,
b
],
a
.
edit
.
removeTitle
)
+
"
' treeNode
"
+
d
.
id
.
REMOVE
+
"
style='display:none;'></span>
"
;
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
,[
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
);
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
(
"
<input type=text class='rename' id='
"
+
b
.
tId
+
d
.
id
.
INPUT
+
"
' treeNode
"
+
d
.
id
.
INPUT
+
"
>
"
);
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
;
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
=
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
,
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
<
s
;
j
++
)
if
(
v
[
j
].
tId
==
c
.
tId
){
y
=
j
;
break
}
y
>=
0
&&
v
.
splice
(
y
,
1
);
if
(
l
!=
d
.
move
.
TYPE_INNER
)
for
(
j
=
0
,
s
=
C
.
length
;
j
<
s
;
j
++
)
C
[
j
].
tId
==
b
.
tId
&&
(
r
=
j
);
if
(
l
==
d
.
move
.
TYPE_INNER
){
u
||
(
u
=
i
.
nodeChildren
(
a
,
b
,[]));
if
(
u
.
length
>
0
)
m
=
u
[
u
.
length
-
1
],
m
.
isLastNode
=!
1
;
u
.
splice
(
u
.
length
,
0
,
c
);
c
.
isLastNode
=!
0
;
c
.
isFirstNode
=
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
,
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
,
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
,
b
){
for
(
var
c
=
0
,
d
=
b
.
length
;
c
<
d
;
c
++
)
e
.
selectNode
(
a
,
b
[
c
],
c
>
0
)}},
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
<
g
;
b
++
)
d
[
b
]
&&
i
.
setSonNodeLevel
(
a
,
c
,
d
[
b
])}}}});
var
H
=
B
.
fn
.
zTree
,
k
=
H
.
_z
.
tools
,
d
=
H
.
consts
,
e
=
H
.
_z
.
view
,
i
=
H
.
_z
.
data
,
q
=
k
.
$
;
i
.
exSetting
({
edit
:{
enable
:
!
1
,
editNameSelectAll
:
!
1
,
showRemoveBtn
:
!
0
,
showRenameBtn
:
!
0
,
removeTitle
:
"
remove
"
,
renameTitle
:
"
rename
"
,
drag
:{
autoExpandTrigger
:
!
1
,
isCopy
:
!
0
,
isMove
:
!
0
,
prev
:
!
0
,
next
:
!
0
,
inner
:
!
0
,
m
inMoveSize
:
5
,
borderMax
:
10
,
borderMin
:
-
5
,
maxShowNodeNum
:
5
,
autoOpenTime
:
500
}},
view
:{
addHoverDom
:
null
,
removeHoverDom
:
null
},
callback
:{
beforeDrag
:
null
,
beforeDragOpen
:
null
,
beforeDrop
:
null
,
beforeEditName
:
null
,
beforeRename
:
null
,
onDrag
:
null
,
onDragMove
:
null
,
onDrop
:
null
,
onRename
:
null
}});
i
.
addInitBind
(
function
(
a
){
var
b
=
a
.
treeObj
,
c
=
d
.
event
;
b
.
bind
(
c
.
RENAME
,
function
(
b
,
c
,
d
,
e
){
k
.
apply
(
a
.
callback
.
onRename
,[
b
,
c
,
d
,
e
])});
b
.
bind
(
c
.
DRAG
,
function
(
b
,
c
,
d
,
e
){
k
.
apply
(
a
.
callback
.
onDrag
,[
c
,
d
,
e
])});
b
.
bind
(
c
.
DRAGMOVE
,
function
(
b
,
c
,
d
,
e
){
k
.
apply
(
a
.
callback
.
onDragMove
,[
c
,
d
,
e
])});
b
.
bind
(
c
.
DROP
,
function
(
b
,
c
,
d
,
e
,
f
,
i
,
q
){
k
.
apply
(
a
.
callback
.
onDrop
,[
c
,
d
,
e
,
f
,
i
,
q
])})});
i
.
addInitUnBind
(
function
(
a
){
var
a
=
a
.
treeObj
,
b
=
d
.
event
;
a
.
unbind
(
b
.
RENAME
);
a
.
unbind
(
b
.
DRAG
);
a
.
unbind
(
b
.
DRAGMOVE
);
a
.
unbind
(
b
.
DROP
)});
i
.
addInitCache
(
function
(){});
i
.
addInitNode
(
function
(
a
,
b
,
c
){
if
(
c
)
c
.
isHover
=!
1
,
c
.
editNameFlag
=!
1
});
i
.
addInitProxy
(
function
(
a
){
var
b
=
a
.
target
,
c
=
i
.
getSetting
(
a
.
data
.
treeId
),
e
=
a
.
relatedTarget
,
g
=
""
,
o
=
null
,
j
=
""
,
f
=
null
,
m
=
null
;
if
(
k
.
eqs
(
a
.
type
,
"
mouseover
"
)){
if
(
m
=
k
.
getMDom
(
c
,
b
,[{
tagName
:
"
a
"
,
attrName
:
"
treeNode
"
+
d
.
id
.
A
}]))
g
=
k
.
getNodeMainDom
(
m
).
id
,
j
=
"
hoverOverNode
"
}
else
if
(
k
.
eqs
(
a
.
type
,
"
mouseout
"
))
m
=
k
.
getMDom
(
c
,
e
,[{
tagName
:
"
a
"
,
attrName
:
"
treeNode
"
+
d
.
id
.
A
}]),
m
||
(
g
=
"
remove
"
,
j
=
"
hoverOutNode
"
);
else
if
(
k
.
eqs
(
a
.
type
,
"
mousedown
"
)
&&
(
m
=
k
.
getMDom
(
c
,
b
,[{
tagName
:
"
a
"
,
attrName
:
"
treeNode
"
+
d
.
id
.
A
}])))
g
=
k
.
getNodeMainDom
(
m
).
id
,
j
=
"
mousedownNode
"
;
if
(
g
.
length
>
0
)
switch
(
o
=
i
.
getNodeCache
(
c
,
g
),
j
){
case
"
mousedownNode
"
:
f
=
v
.
onMousedownNode
;
break
;
case
"
hoverOverNode
"
:
f
=
v
.
onHoverOverNode
;
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
,
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
,
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
=
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
<
g
;
d
++
)
if
(
!
b
||
b
===
c
[
d
])
if
(
e
.
removeTreeDom
(
a
,
c
[
d
]),
b
)
break
;
N
&&
N
.
apply
(
e
,
arguments
)};
var
O
=
e
.
createNodes
;
e
.
createNodes
=
function
(
a
,
b
,
c
,
d
,
g
){
O
&&
O
.
apply
(
e
,
arguments
);
c
&&
e
.
repairParentChkClassWithSelf
&&
e
.
repairParentChkClassWithSelf
(
a
,
d
)};
var
V
=
e
.
makeNodeUrl
;
e
.
makeNodeUrl
=
function
(
a
,
b
){
return
a
.
edit
.
enable
?
null
:
V
.
apply
(
e
,
arguments
)};
var
K
=
e
.
removeNode
;
e
.
removeNode
=
function
(
a
,
b
){
var
c
=
i
.
getRoot
(
a
);
if
(
c
.
curEditNode
===
b
)
c
.
curEditNode
=
null
;
K
&&
K
.
apply
(
e
,
arguments
)};
var
P
=
e
.
selectNode
;
e
.
selectNode
=
function
(
a
,
b
,
c
){
var
d
=
i
.
getRoot
(
a
);
if
(
i
.
isSelectedNode
(
a
,
b
)
&&
d
.
curEditNode
==
b
&&
b
.
editNameFlag
)
return
!
1
;
P
&&
P
.
apply
(
e
,
arguments
);
e
.
addHoverDom
(
a
,
b
);
return
!
0
};
var
U
=
k
.
uCanDo
;
k
.
uCanDo
=
function
(
a
,
b
){
var
c
=
i
.
getRoot
(
a
);
if
(
b
&&
(
k
.
eqs
(
b
.
type
,
"
mouseover
"
)
||
k
.
eqs
(
b
.
type
,
"
mouseout
"
)
||
k
.
eqs
(
b
.
type
,
"
mousedown
"
)
||
k
.
eqs
(
b
.
type
,
"
mouseup
"
)))
return
!
0
;
if
(
c
.
curEditNode
)
e
.
editNodeBlur
=!
1
,
c
.
curEditInput
.
focus
();
return
!
c
.
curEditNode
&&
(
U
?
U
.
apply
(
e
,
arguments
):
!
0
)}})(
jQuery
);
js/jquery.ztree.exhide.js
浏览文件 @
ad144cf5
/*
* JQuery zTree exHideNodes v3.5.3
1
* JQuery zTree exHideNodes v3.5.3
2
* http://treejs.cn/
*
* Copyright (c) 2010 Hunter.z
...
...
@@ -8,13 +8,20 @@
* http://www.opensource.org/licenses/mit-license.php
*
* email: hunter.z@263.net
* Date: 201
7-12-28
* Date: 201
8-01-06
*/
(
function
(
$
){
var
_setting
=
{
data
:
{
key
:
{
isHidden
:
"
isHidden
"
}
}
};
//default init node of exLib
var
_initNode
=
function
(
setting
,
level
,
n
,
parentNode
,
isFirstNode
,
isLastNode
,
openFlag
)
{
if
(
typeof
n
.
isHidden
==
"
string
"
)
n
.
isHidden
=
tools
.
eqs
(
n
.
isHidden
,
"
true
"
);
n
.
isHidden
=
!!
n
.
isHidden
;
var
isHidden
=
data
.
isHidden
(
setting
,
n
);
data
.
isHidden
(
setting
,
n
,
isHidden
)
;
data
.
initHideForExCheck
(
setting
,
n
);
},
//add dom for check
...
...
@@ -43,7 +50,7 @@
var
_checkNode
=
zTreeTools
.
checkNode
;
if
(
_checkNode
)
{
zTreeTools
.
checkNode
=
function
(
node
,
checked
,
checkTypeFlag
,
callbackFlag
)
{
if
(
!!
node
&&
!!
node
.
isHidden
)
{
if
(
!!
node
&&
!!
data
.
isHidden
(
setting
,
node
)
)
{
return
;
}
_checkNode
.
apply
(
zTreeTools
,
arguments
);
...
...
@@ -53,7 +60,8 @@
//method of operate data
_data
=
{
initHideForExCheck
:
function
(
setting
,
n
)
{
if
(
n
.
isHidden
&&
setting
.
check
&&
setting
.
check
.
enable
)
{
var
isHidden
=
data
.
isHidden
(
setting
,
n
);
if
(
isHidden
&&
setting
.
check
&&
setting
.
check
.
enable
)
{
if
(
typeof
n
.
_nocheck
==
"
undefined
"
)
{
n
.
_nocheck
=
!!
n
.
nocheck
n
.
nocheck
=
true
;
...
...
@@ -65,7 +73,8 @@
}
},
initShowForExCheck
:
function
(
setting
,
n
)
{
if
(
!
n
.
isHidden
&&
setting
.
check
&&
setting
.
check
.
enable
)
{
var
isHidden
=
data
.
isHidden
(
setting
,
n
);
if
(
!
isHidden
&&
setting
.
check
&&
setting
.
check
.
enable
)
{
if
(
typeof
n
.
_nocheck
!=
"
undefined
"
)
{
n
.
nocheck
=
n
.
_nocheck
;
delete
n
.
_nocheck
;
...
...
@@ -113,10 +122,11 @@
}
},
makeDOMNodeMainBefore
:
function
(
html
,
setting
,
node
)
{
html
.
push
(
"
<li
"
,
(
node
.
isHidden
?
"
style='display:none;'
"
:
""
),
"
id='
"
,
node
.
tId
,
"
' class='
"
,
consts
.
className
.
LEVEL
,
node
.
level
,
"
' tabindex='0' hidefocus='true' treenode>
"
);
var
isHidden
=
data
.
isHidden
(
setting
,
node
);
html
.
push
(
"
<li
"
,
(
isHidden
?
"
style='display:none;'
"
:
""
),
"
id='
"
,
node
.
tId
,
"
' class='
"
,
consts
.
className
.
LEVEL
,
node
.
level
,
"
' tabindex='0' hidefocus='true' treenode>
"
);
},
showNode
:
function
(
setting
,
node
,
options
)
{
node
.
isHidden
=
false
;
data
.
isHidden
(
setting
,
node
,
false
)
;
data
.
initShowForExCheck
(
setting
,
node
);
$$
(
node
,
setting
).
show
();
},
...
...
@@ -134,13 +144,13 @@
view
.
showNode
(
setting
,
n
,
options
);
}
for
(
var
tId
in
pList
)
{
var
children
=
pList
[
tId
][
setting
.
data
.
key
.
children
]
;
var
children
=
data
.
nodeChildren
(
setting
,
pList
[
tId
])
;
view
.
setFirstNodeForShow
(
setting
,
children
);
view
.
setLastNodeForShow
(
setting
,
children
);
}
},
hideNode
:
function
(
setting
,
node
,
options
)
{
node
.
isHidden
=
true
;
data
.
isHidden
(
setting
,
node
,
true
)
;
node
.
isFirstNode
=
false
;
node
.
isLastNode
=
false
;
data
.
initHideForExCheck
(
setting
,
node
);
...
...
@@ -161,25 +171,27 @@
view
.
hideNode
(
setting
,
n
,
options
);
}
for
(
var
tId
in
pList
)
{
var
children
=
pList
[
tId
][
setting
.
data
.
key
.
children
]
;
var
children
=
data
.
nodeChildren
(
setting
,
pList
[
tId
])
;
view
.
setFirstNodeForHide
(
setting
,
children
);
view
.
setLastNodeForHide
(
setting
,
children
);
}
},
setFirstNode
:
function
(
setting
,
parentNode
)
{
var
childKey
=
setting
.
data
.
key
.
children
,
childLength
=
parentNode
[
childKey
].
length
;
if
(
childLength
>
0
&&
!
parentNode
[
childKey
][
0
].
isHidden
)
{
parentNode
[
childKey
][
0
].
isFirstNode
=
true
;
}
else
if
(
childLength
>
0
)
{
view
.
setFirstNodeForHide
(
setting
,
parentNode
[
childKey
]);
var
children
=
data
.
nodeChildren
(
setting
,
parentNode
);
var
isHidden
=
data
.
isHidden
(
setting
,
children
[
0
],
false
);
if
(
children
.
length
>
0
&&
!
isHidden
)
{
children
[
0
].
isFirstNode
=
true
;
}
else
if
(
children
.
length
>
0
)
{
view
.
setFirstNodeForHide
(
setting
,
children
);
}
},
setLastNode
:
function
(
setting
,
parentNode
)
{
var
childKey
=
setting
.
data
.
key
.
children
,
childLength
=
parentNode
[
childKey
].
length
;
if
(
childLength
>
0
&&
!
parentNode
[
childKey
][
0
].
isHidden
)
{
parentNode
[
childKey
][
childLength
-
1
].
isLastNode
=
true
;
}
else
if
(
childLength
>
0
)
{
view
.
setLastNodeForHide
(
setting
,
parentNode
[
childKey
]);
var
children
=
data
.
nodeChildren
(
setting
,
parentNode
);
var
isHidden
=
data
.
isHidden
(
setting
,
children
[
0
]);
if
(
children
.
length
>
0
&&
!
isHidden
)
{
children
[
children
.
length
-
1
].
isLastNode
=
true
;
}
else
if
(
children
.
length
>
0
)
{
view
.
setLastNodeForHide
(
setting
,
children
);
}
},
setFirstNodeForHide
:
function
(
setting
,
nodes
)
{
...
...
@@ -189,7 +201,8 @@
if
(
n
.
isFirstNode
)
{
break
;
}
if
(
!
n
.
isHidden
&&
!
n
.
isFirstNode
)
{
var
isHidden
=
data
.
isHidden
(
setting
,
n
);
if
(
!
isHidden
&&
!
n
.
isFirstNode
)
{
n
.
isFirstNode
=
true
;
view
.
setNodeLineIcos
(
setting
,
n
);
break
;
...
...
@@ -203,10 +216,11 @@
var
n
,
i
,
j
,
first
,
old
;
for
(
i
=
0
,
j
=
nodes
.
length
;
i
<
j
;
i
++
)
{
n
=
nodes
[
i
];
if
(
!
first
&&
!
n
.
isHidden
&&
n
.
isFirstNode
)
{
var
isHidden
=
data
.
isHidden
(
setting
,
n
);
if
(
!
first
&&
!
isHidden
&&
n
.
isFirstNode
)
{
first
=
n
;
break
;
}
else
if
(
!
first
&&
!
n
.
isHidden
&&
!
n
.
isFirstNode
)
{
}
else
if
(
!
first
&&
!
isHidden
&&
!
n
.
isFirstNode
)
{
n
.
isFirstNode
=
true
;
first
=
n
;
view
.
setNodeLineIcos
(
setting
,
n
);
...
...
@@ -228,7 +242,8 @@
if
(
n
.
isLastNode
)
{
break
;
}
if
(
!
n
.
isHidden
&&
!
n
.
isLastNode
)
{
var
isHidden
=
data
.
isHidden
(
setting
,
n
);
if
(
!
isHidden
&&
!
n
.
isLastNode
)
{
n
.
isLastNode
=
true
;
view
.
setNodeLineIcos
(
setting
,
n
);
break
;
...
...
@@ -242,10 +257,11 @@
var
n
,
i
,
j
,
last
,
old
;
for
(
i
=
nodes
.
length
-
1
;
i
>=
0
;
i
--
)
{
n
=
nodes
[
i
];
if
(
!
last
&&
!
n
.
isHidden
&&
n
.
isLastNode
)
{
var
isHidden
=
data
.
isHidden
(
setting
,
n
);
if
(
!
last
&&
!
isHidden
&&
n
.
isLastNode
)
{
last
=
n
;
break
;
}
else
if
(
!
last
&&
!
n
.
isHidden
&&
!
n
.
isLastNode
)
{
}
else
if
(
!
last
&&
!
isHidden
&&
!
n
.
isLastNode
)
{
n
.
isLastNode
=
true
;
last
=
n
;
view
.
setNodeLineIcos
(
setting
,
n
);
...
...
@@ -276,6 +292,22 @@
event
=
zt
.
_z
.
event
,
$$
=
tools
.
$
;
data
.
isHidden
=
function
(
setting
,
node
,
newIsHidden
)
{
if
(
!
node
)
{
return
false
;
}
var
key
=
setting
.
data
.
key
.
isHidden
;
if
(
typeof
newIsHidden
!==
'
undefined
'
)
{
if
(
typeof
newIsHidden
===
"
string
"
)
{
newIsHidden
=
tools
.
eqs
(
checked
,
"
true
"
);
}
newIsHidden
=
!!
newIsHidden
;
node
[
key
]
=
newIsHidden
;
}
return
node
[
key
];
};
data
.
exSetting
(
_setting
);
data
.
addInitNode
(
_initNode
);
data
.
addBeforeA
(
_beforeA
);
data
.
addZTreeTools
(
_zTreeTools
);
...
...
@@ -302,7 +334,7 @@
var
_makeChkFlag
=
data
.
makeChkFlag
;
if
(
!!
_makeChkFlag
)
{
data
.
makeChkFlag
=
function
(
setting
,
node
)
{
if
(
!!
node
&&
!!
node
.
isHidden
)
{
if
(
!!
node
&&
!!
data
.
isHidden
(
setting
,
node
)
)
{
return
;
}
_makeChkFlag
.
apply
(
data
,
arguments
);
...
...
@@ -314,7 +346,7 @@
data
.
getTreeCheckedNodes
=
function
(
setting
,
nodes
,
checked
,
results
)
{
if
(
!!
nodes
&&
nodes
.
length
>
0
)
{
var
p
=
nodes
[
0
].
getParentNode
();
if
(
!!
p
&&
!!
p
.
isHidden
)
{
if
(
!!
p
&&
!!
data
.
isHidden
(
setting
,
p
)
)
{
return
[];
}
}
...
...
@@ -327,7 +359,7 @@
data
.
getTreeChangeCheckedNodes
=
function
(
setting
,
nodes
,
results
)
{
if
(
!!
nodes
&&
nodes
.
length
>
0
)
{
var
p
=
nodes
[
0
].
getParentNode
();
if
(
!!
p
&&
!!
p
.
isHidden
)
{
if
(
!!
p
&&
!!
data
.
isHidden
(
setting
,
p
)
)
{
return
[];
}
}
...
...
@@ -338,7 +370,7 @@
var
_expandCollapseSonNode
=
view
.
expandCollapseSonNode
;
if
(
!!
_expandCollapseSonNode
)
{
view
.
expandCollapseSonNode
=
function
(
setting
,
node
,
expandFlag
,
animateFlag
,
callback
)
{
if
(
!!
node
&&
!!
node
.
isHidden
)
{
if
(
!!
node
&&
!!
data
.
isHidden
(
setting
,
node
)
)
{
return
;
}
_expandCollapseSonNode
.
apply
(
view
,
arguments
);
...
...
@@ -348,7 +380,7 @@
var
_setSonNodeCheckBox
=
view
.
setSonNodeCheckBox
;
if
(
!!
_setSonNodeCheckBox
)
{
view
.
setSonNodeCheckBox
=
function
(
setting
,
node
,
value
,
srcNode
)
{
if
(
!!
node
&&
!!
node
.
isHidden
)
{
if
(
!!
node
&&
!!
data
.
isHidden
(
setting
,
node
)
)
{
return
;
}
_setSonNodeCheckBox
.
apply
(
view
,
arguments
);
...
...
@@ -358,7 +390,7 @@
var
_repairParentChkClassWithSelf
=
view
.
repairParentChkClassWithSelf
;
if
(
!!
_repairParentChkClassWithSelf
)
{
view
.
repairParentChkClassWithSelf
=
function
(
setting
,
node
)
{
if
(
!!
node
&&
!!
node
.
isHidden
)
{
if
(
!!
node
&&
!!
data
.
isHidden
(
setting
,
node
)
)
{
return
;
}
_repairParentChkClassWithSelf
.
apply
(
view
,
arguments
);
...
...
js/jquery.ztree.exhide.min.js
浏览文件 @
ad144cf5
/*
* JQuery zTree exHideNodes v3.5.3
1
* JQuery zTree exHideNodes v3.5.3
2
* http://treejs.cn/
*
* Copyright (c) 2010 Hunter.z
...
...
@@ -8,15 +8,16 @@
* http://www.opensource.org/licenses/mit-license.php
*
* email: hunter.z@263.net
* Date: 201
7-12-28
* Date: 201
8-01-06
*/
(
function
(
i
){
i
.
extend
(
!
0
,
i
.
fn
.
zTree
.
_z
,{
view
:{
clearOldFirstNode
:
function
(
c
,
a
){
for
(
var
b
=
a
.
getNextNode
();
b
;){
if
(
b
.
isFirstNode
){
b
.
isFirstNode
=!
1
;
d
.
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
&&
d
.
setNodeLineIcos
(
c
,
a
);
break
}
if
(
a
.
isFirstNode
)
break
;
a
=
a
.
getPreNode
()}},
makeDOMNodeMainBefore
:
function
(
c
,
a
,
b
){
c
.
push
(
"
<li
"
,
b
.
isHidden
?
"
style='display:none;'
"
:
""
,
"
id='
"
,
b
.
tId
,
"
' class='
"
,
l
.
className
.
LEVEL
,
b
.
level
,
"
' tabindex='0' hidefocus='true' treenode>
"
)},
showNode
:
function
(
c
,
a
){
a
.
isHidden
=!
1
;
f
.
initShowForExCheck
(
c
,
a
);
j
(
a
,
c
).
show
()},
showNodes
:
function
(
c
,
a
,
b
){
if
(
a
&&
a
.
length
!=
0
){
var
e
=
{},
g
,
k
;
for
(
g
=
0
,
k
=
a
.
length
;
g
<
k
;
g
++
){
var
h
=
a
[
g
];
if
(
!
e
[
h
.
parentTId
]){
var
i
=
h
.
getParentNode
();
e
[
h
.
parentTId
]
=
i
===
null
?
f
.
getRoot
(
c
):
h
.
getParentNode
()}
d
.
showNode
(
c
,
h
,
b
)}
for
(
var
j
in
e
)
a
=
e
[
j
][
c
.
data
.
key
.
children
],
d
.
setFirstNodeForShow
(
c
,
a
),
d
.
setLastNodeForShow
(
c
,
a
)}},
hideNode
:
function
(
c
,
a
){
a
.
isHidden
=!
0
;
a
.
isFirstNode
=!
1
;
a
.
isLastNode
=
!
1
;
f
.
initHideForExCheck
(
c
,
a
);
d
.
cancelPreSelectedNode
(
c
,
a
);
j
(
a
,
c
).
hide
()},
hideNodes
:
function
(
c
,
a
,
b
){
if
(
a
&&
a
.
length
!=
0
){
var
e
=
{},
g
,
k
;
for
(
g
=
0
,
k
=
a
.
length
;
g
<
k
;
g
++
){
var
h
=
a
[
g
];
if
((
h
.
isFirstNode
||
h
.
isLastNode
)
&&!
e
[
h
.
parentTId
]){
var
i
=
h
.
getParentNode
();
e
[
h
.
parentTId
]
=
i
===
null
?
f
.
getRoot
(
c
):
h
.
getParentNode
()}
d
.
hideNode
(
c
,
h
,
b
)}
for
(
var
j
in
e
)
a
=
e
[
j
][
c
.
data
.
key
.
children
],
d
.
setFirstNodeForHide
(
c
,
a
),
d
.
setLastNodeForHide
(
c
,
a
)}},
setFirstNode
:
function
(
c
,
a
){
var
b
=
c
.
data
.
key
.
children
,
e
=
a
[
b
].
length
;
e
>
0
&&!
a
[
b
][
0
].
isHidden
?
a
[
b
][
0
].
isFirstNode
=!
0
:
e
>
0
&&
d
.
setFirstNodeForHide
(
c
,
a
[
b
])},
setLastNode
:
function
(
c
,
a
){
var
b
=
c
.
data
.
key
.
children
,
e
=
a
[
b
].
length
;
e
>
0
&&!
a
[
b
][
0
].
isHidden
?
a
[
b
][
e
-
1
].
isLastNode
=!
0
:
e
>
0
&&
d
.
setLastNodeForHide
(
c
,
a
[
b
])},
setFirstNodeForHide
:
function
(
c
,
a
){
var
b
,
e
,
g
;
for
(
e
=
0
,
g
=
a
.
length
;
e
<
g
;
e
++
){
b
=
a
[
e
];
if
(
b
.
isFirstNode
)
break
;
if
(
!
b
.
isHidden
&&!
b
.
isFirstNode
){
b
.
isFirstNode
=!
0
;
d
.
setNodeLineIcos
(
c
,
b
);
break
}
else
b
=
null
}
return
b
},
setFirstNodeForShow
:
function
(
c
,
a
){
var
b
,
e
,
g
,
f
,
h
;
for
(
e
=
0
,
g
=
a
.
length
;
e
<
g
;
e
++
)
if
(
b
=
a
[
e
],
!
f
&&!
b
.
isHidden
&&
b
.
isFirstNode
){
f
=
b
;
break
}
else
if
(
!
f
&&!
b
.
isHidden
&&!
b
.
isFirstNode
)
b
.
isFirstNode
=!
0
,
f
=
b
,
d
.
setNodeLineIcos
(
c
,
b
);
else
if
(
f
&&
b
.
isFirstNode
){
b
.
isFirstNode
=!
1
;
h
=
b
;
d
.
setNodeLineIcos
(
c
,
b
);
break
}
return
{
"
new
"
:
f
,
old
:
h
}},
setLastNodeForHide
:
function
(
c
,
a
){
var
b
,
e
;
for
(
e
=
a
.
length
-
1
;
e
>=
0
;
e
--
){
b
=
a
[
e
];
if
(
b
.
isLastNode
)
break
;
if
(
!
b
.
isHidden
&&!
b
.
isLastNode
){
b
.
isLastNode
=!
0
;
d
.
setNodeLineIcos
(
c
,
b
);
break
}
else
b
=
null
}
return
b
},
setLastNodeForShow
:
function
(
c
,
a
){
var
b
,
e
,
g
,
f
;
for
(
e
=
a
.
length
-
1
;
e
>=
0
;
e
--
)
if
(
b
=
a
[
e
],
!
g
&&!
b
.
isHidden
&&
b
.
isLastNode
){
g
=
b
;
break
}
else
if
(
!
g
&&!
b
.
isHidden
&&!
b
.
isLastNode
)
b
.
isLastNode
=!
0
,
g
=
b
,
d
.
setNodeLineIcos
(
c
,
b
);
else
if
(
g
&&
b
.
isLastNode
){
b
.
isLastNode
=!
1
;
f
=
b
;
d
.
setNodeLineIcos
(
c
,
b
);
break
}
return
{
"
new
"
:
g
,
old
:
f
}}},
data
:{
initHideForExCheck
:
function
(
c
,
a
){
if
(
a
.
isHidden
&&
c
.
check
&&
c
.
check
.
enable
){
if
(
typeof
a
.
_nocheck
==
"
undefined
"
)
a
.
_nocheck
=!!
a
.
nocheck
,
a
.
nocheck
=!
0
;
a
.
check_Child_State
=-
1
;
d
.
repairParentChkClassWithSelf
&&
d
.
repairParentChkClassWithSelf
(
c
,
a
)}},
initShowForExCheck
:
function
(
c
,
a
){
if
(
!
a
.
isHidden
&&
c
.
check
&&
c
.
check
.
enable
){
if
(
typeof
a
.
_nocheck
!=
"
undefined
"
)
a
.
nocheck
=
a
.
_nocheck
,
delete
a
.
_nocheck
;
if
(
d
.
setChkClass
){
var
b
=
j
(
a
,
l
.
id
.
CHECK
,
c
);
d
.
setChkClass
(
c
,
b
,
a
)}
d
.
repairParentChkClassWithSelf
&&
d
.
repairParentChkClassWithSelf
(
c
,
a
)}}}});
var
i
=
i
.
fn
.
zTree
,
m
=
i
.
_z
.
tools
,
l
=
i
.
consts
,
d
=
i
.
_z
.
view
,
f
=
i
.
_z
.
data
,
j
=
m
.
$
;
f
.
addInitNode
(
function
(
c
,
a
,
b
){
if
(
typeof
b
.
isHidden
==
"
string
"
)
b
.
isHidden
=
m
.
eqs
(
b
.
isHidden
,
"
true
"
);
b
.
isHidden
=!!
b
.
isHidden
;
f
.
initHideForExCheck
(
c
,
b
)});
f
.
addBeforeA
(
function
(){});
f
.
addZTreeTools
(
function
(
c
,
a
){
a
.
showNodes
=
function
(
a
,
b
){
d
.
showNodes
(
c
,
a
,
b
)};
a
.
showNode
=
function
(
a
,
b
){
a
&&
d
.
showNodes
(
c
,[
a
],
b
)};
a
.
hideNodes
=
function
(
a
,
b
){
d
.
hideNodes
(
c
,
a
,
b
)};
a
.
hideNode
=
function
(
a
,
b
){
a
&&
d
.
hideNodes
(
c
,[
a
],
b
)};
var
b
=
a
.
checkNode
;
if
(
b
)
a
.
checkNode
=
function
(
c
,
d
,
f
,
h
){(
!
c
||!
c
.
isHidden
)
&&
b
.
apply
(
a
,
arguments
)}});
var
n
=
f
.
initNode
;
f
.
initNode
=
function
(
c
,
a
,
b
,
e
,
g
,
i
,
h
){
var
j
=
(
e
?
e
:
f
.
getRoot
(
c
))[
c
.
data
.
key
.
children
];
f
.
tmpHideFirstNode
=
d
.
setFirstNodeForHide
(
c
,
j
);
f
.
tmpHideLastNode
=
d
.
setLastNodeForHide
(
c
,
j
);
h
&&
(
d
.
setNodeLineIcos
(
c
,
f
.
tmpHideFirstNode
),
d
.
setNodeLineIcos
(
c
,
f
.
tmpHideLastNode
));
g
=
f
.
tmpHideFirstNode
===
b
;
i
=
f
.
tmpHideLastNode
===
b
;
n
&&
n
.
apply
(
f
,
arguments
);
h
&&
i
&&
d
.
clearOldLastNode
(
c
,
b
,
h
)};
var
o
=
f
.
makeChkFlag
;
if
(
o
)
f
.
makeChkFlag
=
function
(
c
,
a
){(
!
a
||!
a
.
isHidden
)
&&
o
.
apply
(
f
,
arguments
)};
var
p
=
f
.
getTreeCheckedNodes
;
if
(
p
)
f
.
getTreeCheckedNodes
=
function
(
c
,
a
,
b
,
e
){
if
(
a
&&
a
.
length
>
0
){
var
d
=
a
[
0
].
getParentNode
();
if
(
d
&&
d
.
isHidden
)
return
[]}
return
p
.
apply
(
f
,
arguments
)};
var
q
=
f
.
getTreeChangeCheckedNodes
;
if
(
q
)
f
.
getTreeChangeCheckedNodes
=
function
(
c
,
a
,
b
){
if
(
a
&&
a
.
length
>
0
){
var
d
=
a
[
0
].
getParentNode
();
if
(
d
&&
d
.
isHidden
)
return
[]}
return
q
.
apply
(
f
,
arguments
)};
var
r
=
d
.
expandCollapseSonNode
;
if
(
r
)
d
.
expandCollapseSonNode
=
function
(
c
,
a
,
b
,
e
,
f
){(
!
a
||!
a
.
isHidden
)
&&
r
.
apply
(
d
,
arguments
)};
var
s
=
d
.
setSonNodeCheckBox
;
if
(
s
)
d
.
setSonNodeCheckBox
=
function
(
c
,
a
,
b
,
e
){(
!
a
||!
a
.
isHidden
)
&&
s
.
apply
(
d
,
arguments
)};
var
t
=
d
.
repairParentChkClassWithSelf
;
if
(
t
)
d
.
repairParentChkClassWithSelf
=
function
(
c
,
a
){(
!
a
||!
a
.
isHidden
)
&&
t
.
apply
(
d
,
arguments
)}})(
jQuery
);
(
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
(
"
<li
"
,
a
?
"
style='display:none;'
"
:
""
,
"
id='
"
,
b
.
tId
,
"
' class='
"
,
l
.
className
.
LEVEL
,
b
.
level
,
"
' tabindex='0' hidefocus='true' treenode>
"
)},
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
;
g
<
i
;
g
++
){
var
h
=
a
[
g
];
if
(
!
f
[
h
.
parentTId
]){
var
u
=
h
.
getParentNode
();
f
[
h
.
parentTId
]
=
u
===
null
?
d
.
getRoot
(
c
):
h
.
getParentNode
()}
e
.
showNode
(
c
,
h
,
b
)}
for
(
var
j
in
f
)
a
=
d
.
nodeChildren
(
c
,
f
[
j
]),
e
.
setFirstNodeForShow
(
c
,
a
),
e
.
setLastNodeForShow
(
c
,
a
)}},
hideNode
:
function
(
c
,
a
){
d
.
isHidden
(
c
,
a
,
!
0
);
a
.
isFirstNode
=!
1
;
a
.
isLastNode
=!
1
;
d
.
initHideForExCheck
(
c
,
a
);
e
.
cancelPreSelectedNode
(
c
,
a
);
k
(
a
,
c
).
hide
()},
hideNodes
:
function
(
c
,
a
,
b
){
if
(
a
&&
a
.
length
!=
0
){
var
f
=
{},
g
,
i
;
for
(
g
=
0
,
i
=
a
.
length
;
g
<
i
;
g
++
){
var
h
=
a
[
g
];
if
((
h
.
isFirstNode
||
h
.
isLastNode
)
&&!
f
[
h
.
parentTId
]){
var
j
=
h
.
getParentNode
();
f
[
h
.
parentTId
]
=
j
===
null
?
d
.
getRoot
(
c
):
h
.
getParentNode
()}
e
.
hideNode
(
c
,
h
,
b
)}
for
(
var
k
in
f
)
a
=
d
.
nodeChildren
(
c
,
f
[
k
]),
e
.
setFirstNodeForHide
(
c
,
a
),
e
.
setLastNodeForHide
(
c
,
a
)}},
setFirstNode
:
function
(
c
,
a
){
var
b
=
d
.
nodeChildren
(
c
,
a
),
f
=
d
.
isHidden
(
c
,
b
[
0
],
!
1
);
b
.
length
>
0
&&!
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
<
g
;
f
++
){
b
=
a
[
f
];
if
(
b
.
isFirstNode
)
break
;
if
(
!
d
.
isHidden
(
c
,
b
)
&&!
b
.
isFirstNode
){
b
.
isFirstNode
=!
0
;
e
.
setNodeLineIcos
(
c
,
b
);
break
}
else
b
=
null
}
return
b
},
setFirstNodeForShow
:
function
(
c
,
a
){
var
b
,
f
,
g
,
i
,
h
;
for
(
f
=
0
,
g
=
a
.
length
;
f
<
g
;
f
++
){
b
=
a
[
f
];
var
j
=
d
.
isHidden
(
c
,
b
);
if
(
!
i
&&!
j
&&
b
.
isFirstNode
){
i
=
b
;
break
}
else
if
(
!
i
&&!
j
&&!
b
.
isFirstNode
)
b
.
isFirstNode
=!
0
,
i
=
b
,
e
.
setNodeLineIcos
(
c
,
b
);
else
if
(
i
&&
b
.
isFirstNode
){
b
.
isFirstNode
=!
1
;
h
=
b
;
e
.
setNodeLineIcos
(
c
,
b
);
break
}}
return
{
"
new
"
:
i
,
old
:
h
}},
setLastNodeForHide
:
function
(
c
,
a
){
var
b
,
f
;
for
(
f
=
a
.
length
-
1
;
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
,
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
,
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
]
=
!!
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
)}});
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
;
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
=
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
);
log v3.x.txt
浏览文件 @
ad144cf5
...
...
@@ -13,6 +13,10 @@
</font>
*2018.01.06* v3.5.32
* [修改] setting.async.autoParam / otherParam 支持 function
* [修改] isParent / isHidden 允许自定义属性名称 setting.data.key.isParent / isHidden
*2017.12.28* v3.5.31
* [修改] 初始化节点数据的规则,支持 treeNode { name: "Node2", children: []}, 情况下自动设置为 isParent = true
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录