Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
GitCode
1024程序员开源挑战赛(10.23-11.14)
提交
3935f38e
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看板
提交
3935f38e
编写于
6月 26, 2018
作者:
Z
ztree
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
add: setting.async.headers & setting.async.xhrFields
上级
0a82b0e2
变更
20
隐藏空白更改
内联
并排
Showing
20 changed file
with
208 addition
and
123 deletion
+208
-123
README.md
README.md
+1
-1
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
+32
-32
api/cn/setting.async.headers.html
api/cn/setting.async.headers.html
+18
-0
api/cn/setting.async.xhrFields.html
api/cn/setting.async.xhrFields.html
+18
-0
api/en/setting.async.headers.html
api/en/setting.async.headers.html
+18
-0
api/en/setting.async.xhrFields.html
api/en/setting.async.xhrFields.html
+18
-0
js/jquery.ztree.all.js
js/jquery.ztree.all.js
+10
-6
js/jquery.ztree.all.min.js
js/jquery.ztree.all.min.js
+36
-36
js/jquery.ztree.core.js
js/jquery.ztree.core.js
+6
-2
js/jquery.ztree.core.min.js
js/jquery.ztree.core.min.js
+32
-32
js/jquery.ztree.excheck.js
js/jquery.ztree.excheck.js
+2
-2
js/jquery.ztree.excheck.min.js
js/jquery.ztree.excheck.min.js
+2
-2
js/jquery.ztree.exedit.js
js/jquery.ztree.exedit.js
+2
-2
js/jquery.ztree.exedit.min.js
js/jquery.ztree.exedit.min.js
+2
-2
js/jquery.ztree.exhide.js
js/jquery.ztree.exhide.js
+2
-2
js/jquery.ztree.exhide.min.js
js/jquery.ztree.exhide.min.js
+2
-2
log v3.x.txt
log v3.x.txt
+3
-0
未找到文件。
README.md
浏览文件 @
3935f38e
jQuery Tree Plugin ---- zTree
============
last verson : 3.5.3
5
last verson : 3.5.3
6
**Donate to zTree**
: http://www.treejs.cn/v3/donate.php
...
...
api/API_cn.html
浏览文件 @
3935f38e
...
...
@@ -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
5
API 文档
</em></h1><p></p>
<h1><em>
zTree v3.5.3
6
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
浏览文件 @
3935f38e
...
...
@@ -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
5
API Document
</em></h1><p></p>
<h1><em>
zTree v3.5.3
6
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
浏览文件 @
3935f38e
...
...
@@ -73,6 +73,8 @@ var apiContent = {
{
id
:
204
,
pId
:
20
,
t
:
"
enable
"
,
name
:
"
enable : false,
"
,
iconSkin
:
"
core
"
,
showAPI
:
true
},
{
id
:
205
,
pId
:
20
,
t
:
"
otherParam
"
,
name
:
"
otherParam : [],
"
,
iconSkin
:
"
core
"
,
showAPI
:
true
},
{
id
:
206
,
pId
:
20
,
t
:
"
type
"
,
name
:
"
type :
\"
post
\"
,
"
,
iconSkin
:
"
core
"
,
showAPI
:
true
},
{
id
:
209
,
pId
:
20
,
t
:
"
headers
"
,
name
:
"
headers : {},
"
,
iconSkin
:
"
core
"
,
showAPI
:
true
},
{
id
:
210
,
pId
:
20
,
t
:
"
xhrFields
"
,
name
:
"
xhrFields : {},
"
,
iconSkin
:
"
core
"
,
showAPI
:
true
},
{
id
:
207
,
pId
:
20
,
t
:
"
url
"
,
name
:
"
url :
\"\"
"
,
iconSkin
:
"
core
"
,
showAPI
:
true
},
{
id
:
21
,
pId
:
1
,
name
:
"
},
"
},
{
id
:
22
,
pId
:
1
,
name
:
""
},
...
...
api/apiCss/jquery.ztree.core.js
浏览文件 @
3935f38e
/*
* JQuery zTree core v3.5.3
5
* JQuery zTree core v3.5.3
6
* http://treejs.cn/
*
* Copyright (c) 2010 Hunter.z
...
...
@@ -8,11 +8,11 @@
* http://www.opensource.org/licenses/mit-license.php
*
* email: hunter.z@263.net
* Date: 2018-0
3-30
* Date: 2018-0
6-26
*/
(
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
,
dataType
:
"
text
"
,
headers
:{},
xhrFields
:{},
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
"
+
...
...
@@ -41,34 +41,34 @@ b).length>0},uCanDo:function(){return!0}},i={addNodes:function(a,b,c,d,g){var h=
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
,
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
,
headers
:
a
.
async
.
headers
,
xhrFields
:
a
.
async
.
xhrFields
,
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
&&
...
...
api/cn/setting.async.headers.html
0 → 100644
浏览文件 @
3935f38e
<div
class=
"apiDetail"
>
<div>
<h2><span>
Object
</span><span
class=
"path"
>
setting.async.
</span>
headers
</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><span
class=
"highlight_red"
>
[setting.async.enable = true 时生效]
</span></p>
<p>
默认值:"{}"
</p>
<p
class=
"highlight_red"
>
v3.5.36+
</p>
</div>
</div>
<h3>
Object 格式说明
</h3>
<div
class=
"desc"
>
<p
class=
"highlight_red"
>
请参考 jQuery ajax 中的 headers 参数
</p>
</div>
</div>
</div>
\ No newline at end of file
api/cn/setting.async.xhrFields.html
0 → 100644
浏览文件 @
3935f38e
<div
class=
"apiDetail"
>
<div>
<h2><span>
Object
</span><span
class=
"path"
>
setting.async.
</span>
xhrFields
</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><span
class=
"highlight_red"
>
[setting.async.enable = true 时生效]
</span></p>
<p>
默认值:"{}"
</p>
<p
class=
"highlight_red"
>
v3.5.36+
</p>
</div>
</div>
<h3>
Object 格式说明
</h3>
<div
class=
"desc"
>
<p
class=
"highlight_red"
>
请参考 jQuery ajax 中的 xhrFields 参数
</p>
</div>
</div>
</div>
\ No newline at end of file
api/en/setting.async.headers.html
0 → 100644
浏览文件 @
3935f38e
<div
class=
"apiDetail"
>
<div>
<h2><span>
Object
</span><span
class=
"path"
>
setting.async.
</span>
headers
</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>
It is valid when
<span
class=
"highlight_red"
>
[setting.async.enable = true]
</span></p>
<p>
Default:"{}"
</p>
<p
class=
"highlight_red"
>
v3.5.36+
</p>
</div>
</div>
<h3>
String Format
</h3>
<div
class=
"desc"
>
<p
class=
"highlight_red"
>
The 'headers' in zTree and jQuery's ajax requests is same.
</p>
</div>
</div>
</div>
\ No newline at end of file
api/en/setting.async.xhrFields.html
0 → 100644
浏览文件 @
3935f38e
<div
class=
"apiDetail"
>
<div>
<h2><span>
Object
</span><span
class=
"path"
>
setting.async.
</span>
xhrFields
</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>
It is valid when
<span
class=
"highlight_red"
>
[setting.async.enable = true]
</span></p>
<p>
Default:"{}"
</p>
<p
class=
"highlight_red"
>
v3.5.36+
</p>
</div>
</div>
<h3>
String Format
</h3>
<div
class=
"desc"
>
<p
class=
"highlight_red"
>
The 'xhrFields' in zTree and jQuery's ajax requests is same.
</p>
</div>
</div>
</div>
\ No newline at end of file
js/jquery.ztree.all.js
浏览文件 @
3935f38e
/*
* JQuery zTree core v3.5.3
5
* JQuery zTree core v3.5.3
6
* 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: 2018-0
3-30
* Date: 2018-0
6-26
*/
(
function
(
$
)
{
var
settings
=
{},
roots
=
{},
caches
=
{},
...
...
@@ -99,6 +99,8 @@
contentType
:
"
application/x-www-form-urlencoded
"
,
type
:
"
post
"
,
dataType
:
"
text
"
,
headers
:
{},
xhrFields
:
{},
url
:
""
,
autoParam
:
[],
otherParam
:
[],
...
...
@@ -1073,6 +1075,8 @@
url
:
tools
.
apply
(
setting
.
async
.
url
,
[
setting
.
treeId
,
node
],
setting
.
async
.
url
),
data
:
setting
.
async
.
contentType
.
indexOf
(
'
application/json
'
)
>
-
1
?
JSON
.
stringify
(
tmpParam
)
:
tmpParam
,
dataType
:
setting
.
async
.
dataType
,
headers
:
setting
.
async
.
headers
,
xhrFields
:
setting
.
async
.
xhrFields
,
success
:
function
(
msg
)
{
if
(
_tmpV
!=
data
.
getRoot
(
setting
).
_ver
)
{
return
;
...
...
@@ -1981,7 +1985,7 @@
consts
=
zt
.
consts
;
})(
jQuery
);
/*
* JQuery zTree excheck v3.5.3
5
* JQuery zTree excheck v3.5.3
6
* http://treejs.cn/
*
* Copyright (c) 2010 Hunter.z
...
...
@@ -1990,7 +1994,7 @@
* http://www.opensource.org/licenses/mit-license.php
*
* email: hunter.z@263.net
* Date: 2018-0
3-30
* Date: 2018-0
6-26
*/
(
function
(
$
){
//default consts of excheck
...
...
@@ -2625,7 +2629,7 @@
}
})(
jQuery
);
/*
* JQuery zTree exedit v3.5.3
5
* JQuery zTree exedit v3.5.3
6
* http://treejs.cn/
*
* Copyright (c) 2010 Hunter.z
...
...
@@ -2634,7 +2638,7 @@
* http://www.opensource.org/licenses/mit-license.php
*
* email: hunter.z@263.net
* Date: 2018-0
3-30
* Date: 2018-0
6-26
*/
(
function
(
$
){
//default consts of exedit
...
...
js/jquery.ztree.all.min.js
浏览文件 @
3935f38e
/*
* JQuery zTree core v3.5.3
5
* JQuery zTree core v3.5.3
6
* http://treejs.cn/
*
* Copyright (c) 2010 Hunter.z
...
...
@@ -9,11 +9,11 @@
* http://www.opensource.org/licenses/mit-license.php
*
* email: hunter.z@263.net
* Date: 2018-0
3-30
* Date: 2018-0
6-26
*/
(
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
,
dataType
:
"
text
"
,
headers
:{},
xhrFields
:{},
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
"
+
...
...
@@ -42,34 +42,34 @@ b).length>0},uCanDo:function(){return!0}},i={addNodes:function(a,b,c,d,g){var h=
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
,
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
,
headers
:
a
.
async
.
headers
,
xhrFields
:
a
.
async
.
xhrFields
,
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
&&
...
...
@@ -77,7 +77,7 @@ j.uCanDo(d)){b=d.view.selectedMulti&&b;if(a.parentTId)i.expandCollapseParentNode
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
5
* JQuery zTree excheck v3.5.3
6
* http://treejs.cn/
*
* Copyright (c) 2010 Hunter.z
...
...
@@ -86,7 +86,7 @@ g);(c=e.nodeChildren(d,a))&&c.length>0?i.createNodes(d,0,c,null,-1):d.async.enab
* http://www.opensource.org/licenses/mit-license.php
*
* email: hunter.z@263.net
* Date: 2018-0
3-30
* Date: 2018-0
6-26
*/
(
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
,
...
...
@@ -112,7 +112,7 @@ h.id.CHECK,this.setting);(e==!0||this.setting.check.chkStyle===h.radio.STYLE)&&f
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
5
* JQuery zTree exedit v3.5.3
6
* http://treejs.cn/
*
* Copyright (c) 2010 Hunter.z
...
...
@@ -121,7 +121,7 @@ function(c,a,b,d,h,g,i){var m="";v&&(m=v.apply(f,arguments));d&&e.makeChkFlag(c,
* http://www.opensource.org/licenses/mit-license.php
*
* email: hunter.z@263.net
* Date: 2018-0
3-30
* Date: 2018-0
6-26
*/
(
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
=
[];
...
...
js/jquery.ztree.core.js
浏览文件 @
3935f38e
/*
* JQuery zTree core v3.5.3
5
* JQuery zTree core v3.5.3
6
* 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: 2018-0
3-30
* Date: 2018-0
6-26
*/
(
function
(
$
)
{
var
settings
=
{},
roots
=
{},
caches
=
{},
...
...
@@ -98,6 +98,8 @@
contentType
:
"
application/x-www-form-urlencoded
"
,
type
:
"
post
"
,
dataType
:
"
text
"
,
headers
:
{},
xhrFields
:
{},
url
:
""
,
autoParam
:
[],
otherParam
:
[],
...
...
@@ -1072,6 +1074,8 @@
url
:
tools
.
apply
(
setting
.
async
.
url
,
[
setting
.
treeId
,
node
],
setting
.
async
.
url
),
data
:
setting
.
async
.
contentType
.
indexOf
(
'
application/json
'
)
>
-
1
?
JSON
.
stringify
(
tmpParam
)
:
tmpParam
,
dataType
:
setting
.
async
.
dataType
,
headers
:
setting
.
async
.
headers
,
xhrFields
:
setting
.
async
.
xhrFields
,
success
:
function
(
msg
)
{
if
(
_tmpV
!=
data
.
getRoot
(
setting
).
_ver
)
{
return
;
...
...
js/jquery.ztree.core.min.js
浏览文件 @
3935f38e
/*
* JQuery zTree core v3.5.3
5
* JQuery zTree core v3.5.3
6
* http://treejs.cn/
*
* Copyright (c) 2010 Hunter.z
...
...
@@ -8,11 +8,11 @@
* http://www.opensource.org/licenses/mit-license.php
*
* email: hunter.z@263.net
* Date: 2018-0
3-30
* Date: 2018-0
6-26
*/
(
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
,
dataType
:
"
text
"
,
headers
:{},
xhrFields
:{},
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
"
+
...
...
@@ -41,34 +41,34 @@ b).length>0},uCanDo:function(){return!0}},i={addNodes:function(a,b,c,d,g){var h=
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
,
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
,
headers
:
a
.
async
.
headers
,
xhrFields
:
a
.
async
.
xhrFields
,
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
&&
...
...
js/jquery.ztree.excheck.js
浏览文件 @
3935f38e
/*
* JQuery zTree excheck v3.5.3
5
* JQuery zTree excheck v3.5.3
6
* 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: 2018-0
3-30
* Date: 2018-0
6-26
*/
(
function
(
$
){
//default consts of excheck
...
...
js/jquery.ztree.excheck.min.js
浏览文件 @
3935f38e
/*
* JQuery zTree excheck v3.5.3
5
* JQuery zTree excheck v3.5.3
6
* 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: 2018-0
3-30
* Date: 2018-0
6-26
*/
(
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
,
...
...
js/jquery.ztree.exedit.js
浏览文件 @
3935f38e
/*
* JQuery zTree exedit v3.5.3
5
* JQuery zTree exedit v3.5.3
6
* 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: 2018-0
3-30
* Date: 2018-0
6-26
*/
(
function
(
$
){
//default consts of exedit
...
...
js/jquery.ztree.exedit.min.js
浏览文件 @
3935f38e
/*
* JQuery zTree exedit v3.5.3
5
* JQuery zTree exedit v3.5.3
6
* 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: 2018-0
3-30
* Date: 2018-0
6-26
*/
(
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
=
[];
...
...
js/jquery.ztree.exhide.js
浏览文件 @
3935f38e
/*
* JQuery zTree exHideNodes v3.5.3
5
* JQuery zTree exHideNodes v3.5.3
6
* 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: 2018-0
3-30
* Date: 2018-0
6-26
*/
(
function
(
$
){
var
_setting
=
{
...
...
js/jquery.ztree.exhide.min.js
浏览文件 @
3935f38e
/*
* JQuery zTree exHideNodes v3.5.3
5
* JQuery zTree exHideNodes v3.5.3
6
* 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: 2018-0
3-30
* Date: 2018-0
6-26
*/
(
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
,
...
...
log v3.x.txt
浏览文件 @
3935f38e
...
...
@@ -13,6 +13,9 @@
</font>
*2018.06.26* v3.5.36
* [增加] setting.async.headers & setting.async.xhrFields
*2018.04.24* v3.5.35
* [增加] Demo:模糊搜索(Fuzzy Search) Thanks @bigablecat
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录