Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
G
guns-vip
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
chenjunxiong
guns-vip
Commits
ef43c08c
Commit
ef43c08c
authored
Oct 31, 2018
by
fengshuonan
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
修改container模板
parent
89ae2a0e
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
121 additions
and
143 deletions
+121
-143
src/main/webapp/WEB-INF/common/_container.html
+24
-2
src/main/webapp/WEB-INF/common/tags/button.tag
+5
-12
src/main/webapp/WEB-INF/system/user/user.html
+47
-65
src/main/webapp/assets/common/plugins/bootstrap-table/bootstrap-table-object.js
+3
-5
src/main/webapp/assets/common/plugins/bootstrap-table/bootstrap-table.min.js
+2
-2
src/main/webapp/assets/common/plugins/bootstrap-table/locale/bootstrap-table-zh-CN.js
+0
-46
src/main/webapp/assets/common/static/css/colors/blue.css
+0
-10
src/main/webapp/assets/common/static/stylefeng/feng.css
+40
-1
No files found.
src/main/webapp/WEB-INF/common/_container.html
View file @
ef43c08c
...
...
@@ -7,6 +7,8 @@
@ * plugins : 需要用到的插件,目前有["table"]
@ * title : 页面的标题
@ * layoutContent : 主页面的html内容
@ * js : 业务所需要的js,为数组
@ * css : 业务所需要的css,为数组
@ *
@ * 下面的需要从后台返回
@ *
...
...
@@ -46,13 +48,22 @@
<!-- You can change the theme colors from here -->
<link
href=
"${ctxPath}/assets/common/static/css/colors/blue.css"
id=
"theme"
rel=
"stylesheet"
>
<!--其他css-->
<!--其他
插件
css-->
@if(isNotEmpty(plugins)){
@if(array.contain(plugins,"table")){
<link
href=
"${ctxPath}/assets/common/plugins/bootstrap-table/bootstrap-table.min.css"
rel=
"stylesheet"
type=
"text/css"
/>
@}
@}
<!--其他业务用的css-->
@if(isNotEmpty(css)){
@for(item in css){
@if(strutil.startWith(item,"/")){
@item = item + ctxPath;
@}
<link
href=
"${item}"
rel=
"stylesheet"
type=
"text/css"
/>
@}
@}
</head>
...
...
@@ -116,14 +127,25 @@
Feng
.
sessionTimeoutRegistry
();
</script>
<!--其他js-->
<!--其他
插件
js-->
@if(isNotEmpty(plugins)){
@if(array.contain(plugins,"table")){
<script
src=
"${ctxPath}/assets/common/plugins/bootstrap-table/bootstrap-table.min.js"
></script>
<script
src=
"${ctxPath}/assets/common/plugins/bootstrap-table/locale/bootstrap-table-zh-CN.min.js"
></script>
<script
src=
"${ctxPath}/assets/common/plugins/bootstrap-table/bootstrap-table-object.js"
></script>
@}
@}
<!--其他业务用的js-->
@if(isNotEmpty(js)){
@for(item in js){
@if(strutil.startWith(item,"/")){
@item = item + ctxPath;
@}
<script
src=
"${item}"
></script>
@}
@}
</body>
...
...
src/main/webapp/WEB-INF/common/tags/button.tag
View file @
ef43c08c
@/*
按钮标签中各个参数的说明:
btnType : 按钮的类型决定了颜色(default-灰色,primary-绿色,success-蓝色,info-淡蓝色,warning-黄色,danger-红色,white-白色)
space : 按钮左侧是否有间隔(true/false)
clickFun : 点击按钮所执行的方法
icon : 按钮上的图标的样式
name : 按钮名称
btnType : 按钮的类型决定了颜色(default-灰色,primary-绿色,success-蓝色,info-淡蓝色,warning-黄色,danger-红色,white-白色)
clickFun : 点击按钮所执行的方法
icon : 按钮上的图标的样式
name : 按钮名称
@*/
@var spaceCss = "";
@var btnType = "";
@if(isEmpty(space) || space == "false"){
@ spaceCss = "";
@}else{
@ spaceCss = "button-margin";
@}
@if(isEmpty(btnCss)){
@ btnType = "primary";
@}else{
@ btnType = btnCss;
@}
<button type="button" class="btn btn-${btnType}
${spaceCss}
" onclick="${clickFun!}" id="${id!}">
<button type="button" class="btn btn-${btnType}" onclick="${clickFun!}" id="${id!}">
<i class="fa ${icon}"></i> ${name}
</button>
src/main/webapp/WEB-INF/system/user/user.html
View file @
ef43c08c
@layout("/common/_container.html",{title:"用户管理",plugins:["table"]}){
@layout("/common/_container.html",{title:"用户管理",plugins:["table"]
,js:["/assets/modular/system/user/user.js"]
}){
<div
class=
"row"
>
<div
class=
"col-lg-12"
>
<div
class=
"card card-outline-info"
>
<div
class=
"card-block"
>
<div
class=
"card card-outline-info
m-b-0
"
>
<div
class=
"card-block
p-b-0
"
>
<div
class=
"form-horizontal"
>
<div
class=
"form-body"
>
<h4
class=
"card-title"
>
查询条件
</h4>
<hr>
<div
class=
"row"
>
<div
class=
"col-md-3"
>
<div
class=
"input-group"
>
<div
class=
"input-group
condition-button
"
>
<span
class=
"input-group-addon"
>
用户名称
</span>
<input
type=
"text"
class=
"form-control"
id=
"name"
placeholder=
"账号/姓名/手机号"
>
</div>
</div>
<div
class=
"col-md-3"
>
<div
class=
"input-group"
>
<div
class=
"input-group
condition-button
"
>
<span
class=
"input-group-addon"
>
注册日期
</span>
<input
type=
"text"
class=
"form-control"
id=
"timeLimit"
placeholder=
"注册日期"
>
</div>
</div>
<div
class=
"col-md-3"
>
<div
class=
"
form-group row
"
>
<div
class=
"
input-group condition-button
"
>
<div
class=
"input-group-btn condition-button"
>
<button
type=
"button"
id=
"check-minutes"
class=
"btn
waves-effect waves-light btn-info
condition-button-width"
>
查询
</button>
<button
type=
"button"
id=
"check-minutes"
class=
"btn
btn-info waves-effect waves-light
condition-button-width"
>
查询
</button>
</div>
</div>
</div>
</div>
</div>
<div
class=
"form-actions"
>
<h4
class=
"card-title"
>
查询结果
</h4>
<hr>
<div
class=
"row"
>
<div
class=
"col-md-6"
>
<div
class=
"row"
>
<div
class=
"col-md-offset-3 col-md-9"
>
<button
type=
"submit"
class=
"btn btn-success"
>
Submit
</button>
<button
type=
"button"
class=
"btn btn-inverse"
>
Cancel
</button>
</div>
</div>
</div>
</div>
<div
class=
"form-actions m-t-10"
>
<div
class=
"row"
>
<div
class=
"col-lg-12"
>
<div
class=
"card"
>
<table
data-toggle=
"table"
data-height=
"250"
data-mobile-responsive=
"true"
class=
"table-striped"
>
<thead>
<tr>
<th>
Name
</th>
<th>
Stars
</th>
<th>
Forks
</th>
<th>
Description
</th>
</tr>
</thead>
<tbody>
<tr
id=
"tr-id-1"
class=
"tr-class-1"
>
<td
id=
"td-id-1"
class=
"td-class-1"
>
bootstrap-table
</td>
<td>
526
</td>
<td>
122
</td>
<td>
An extended Bootstrap table with radio, checkbox, sort, pagination, and other added features. (supports twitter bootstrap v2 and v3)
</td>
</tr>
<tr
id=
"tr-id-2"
class=
"tr-class-2"
>
<td
id=
"td-id-2"
class=
"td-class-2"
>
multiple-select
</td>
<td>
288
</td>
<td>
150
</td>
<td>
A jQuery plugin to select multiple elements with checkboxes :)
</td>
</tr>
<tr
id=
"tr-id-3"
class=
"tr-class-3"
>
<td
id=
"td-id-3"
class=
"td-class-3"
>
bootstrap-show-password
</td>
<td>
32
</td>
<td>
11
</td>
<td>
Show/hide password plugin for twitter bootstrap.
</td>
</tr>
<tr
id=
"tr-id-4"
class=
"tr-class-4"
>
<td
id=
"td-id-4"
class=
"td-class-4"
>
blog
</td>
<td>
13
</td>
<td>
4
</td>
<td>
my blog
</td>
</tr>
<tr
id=
"tr-id-5"
class=
"tr-class-5"
>
<td
id=
"td-id-5"
class=
"td-class-5"
>
scutech-redmine
<td>
6
</td>
<td>
3
</td>
<td>
Redmine notification tools for chrome extension.
</td>
</tr>
</tbody>
</table>
<div
class=
"card m-b-0"
>
<div
class=
"hidden-xs"
id=
"managerTableToolbar"
role=
"group"
>
@if(shiro.hasPermission("/mgr/add")){
<button
type=
"button"
class=
"btn btn-primary"
onclick=
"MgrUser.openAddMgr()"
>
<i
class=
"fa fa-plus"
></i>
添加
</button>
@}
@if(shiro.hasPermission("/mgr/edit")){
<button
type=
"button"
class=
"btn btn-primary m-l-5"
onclick=
"MgrUser.openChangeUser()"
>
<i
class=
"fa fa-edit"
></i>
修改
</button>
@}
@if(shiro.hasPermission("/mgr/delete")){
<button
type=
"button"
class=
"btn btn-primary m-l-5"
onclick=
"MgrUser.delMgrUser()"
>
<i
class=
"fa fa-remove"
></i>
删除
</button>
@}
@if(shiro.hasPermission("/mgr/reset")){
<button
type=
"button"
class=
"btn btn-primary m-l-5"
onclick=
"MgrUser.resetPwd()"
>
<i
class=
"fa fa-refresh"
></i>
重置密码
</button>
@}
@if(shiro.hasPermission("/mgr/freeze")){
<button
type=
"button"
class=
"btn btn-primary m-l-5"
onclick=
"MgrUser.freezeAccount()"
>
<i
class=
"fa fa-warning"
></i>
冻结
</button>
@}
@if(shiro.hasPermission("/mgr/unfreeze")){
<button
type=
"button"
class=
"btn btn-primary m-l-5"
onclick=
"MgrUser.unfreeze()"
>
<i
class=
"fa fa-check-circle"
></i>
解除冻结
</button>
@}
@if(shiro.hasPermission("/mgr/setRole")){
<button
type=
"button"
class=
"btn btn-primary m-l-5"
onclick=
"MgrUser.roleAssign()"
>
<i
class=
"fa fa-user-secret"
></i>
角色分配
</button>
@}
</div>
<
#
table
id=
"managerTable"
/>
</div>
</div>
</div>
...
...
src/main/webapp/assets/common/plugins/bootstrap-table/bootstrap-table-object.js
View file @
ef43c08c
...
...
@@ -14,7 +14,7 @@
this
.
paginationType
=
"server"
;
//默认分页方式是服务器分页,可选项"client"
this
.
toolbarId
=
bstableId
+
"Toolbar"
;
this
.
columns
=
columns
;
this
.
height
=
665
;
//默认表格高度665
this
.
height
=
$
(
window
).
height
()
-
320
;
this
.
data
=
{};
this
.
queryParams
=
{};
// 向后台传递的自定义参数
};
...
...
@@ -40,8 +40,8 @@
sortable
:
true
,
//是否启用排序
sortOrder
:
"desc"
,
//排序方式
pageNumber
:
1
,
//初始化加载第一页,默认第一页
pageSize
:
14
,
//每页的记录行数(*)
pageList
:
[
14
,
50
,
100
],
//可供选择的每页的行数(*)
pageSize
:
20
,
//每页的记录行数(*)
pageList
:
[
20
,
50
,
100
],
//可供选择的每页的行数(*)
queryParamsType
:
'limit'
,
//默认值为 'limit' ,在默认情况下 传给服务端的参数为:offset,limit,sort
queryParams
:
function
(
param
)
{
return
$
.
extend
(
me
.
queryParams
,
param
);
...
...
@@ -49,8 +49,6 @@
sidePagination
:
this
.
paginationType
,
//分页方式:client客户端分页,server服务端分页(*)
search
:
false
,
//是否显示表格搜索,此搜索是客户端搜索,不会进服务端
strictSearch
:
true
,
//设置为 true启用 全匹配搜索,否则为模糊搜索
showColumns
:
true
,
//是否显示所有的列
showRefresh
:
true
,
//是否显示刷新按钮
minimumCountColumns
:
2
,
//最少允许的列数
clickToSelect
:
true
,
//是否启用点击选中行
searchOnEnterKey
:
true
,
//设置为 true时,按回车触发搜索方法,否则自动触发搜索方法
...
...
src/main/webapp/assets/common/plugins/bootstrap-table/bootstrap-table.min.js
View file @
ef43c08c
...
...
@@ -5,4 +5,4 @@
* Licensed MIT License
*/
!
function
(
a
){
"use strict"
;
var
b
=
null
,
c
=
function
(
a
){
var
b
=
arguments
,
c
=!
0
,
d
=
1
;
return
a
=
a
.
replace
(
/%s/g
,
function
(){
var
a
=
b
[
d
++
];
return
"undefined"
==
typeof
a
?(
c
=!
1
,
""
):
a
}),
c
?
a
:
""
},
d
=
function
(
b
,
c
,
d
,
e
){
var
f
=
""
;
return
a
.
each
(
b
,
function
(
a
,
b
){
return
b
[
c
]
===
e
?(
f
=
b
[
d
],
!
1
):
!
0
}),
f
},
e
=
function
(
b
,
c
){
var
d
=-
1
;
return
a
.
each
(
b
,
function
(
a
,
b
){
return
b
.
field
===
c
?(
d
=
a
,
!
1
):
!
0
}),
d
},
f
=
function
(
b
){
var
c
,
d
,
e
,
f
=
0
,
g
=
[];
for
(
c
=
0
;
c
<
b
[
0
].
length
;
c
++
)
f
+=
b
[
0
][
c
].
colspan
||
1
;
for
(
c
=
0
;
c
<
b
.
length
;
c
++
)
for
(
g
[
c
]
=
[],
d
=
0
;
f
>
d
;
d
++
)
g
[
c
][
d
]
=!
1
;
for
(
c
=
0
;
c
<
b
.
length
;
c
++
)
for
(
d
=
0
;
d
<
b
[
c
].
length
;
d
++
){
var
h
=
b
[
c
][
d
],
i
=
h
.
rowspan
||
1
,
j
=
h
.
colspan
||
1
,
k
=
a
.
inArray
(
!
1
,
g
[
c
]);
for
(
1
===
j
&&
(
h
.
fieldIndex
=
k
,
"undefined"
==
typeof
h
.
field
&&
(
h
.
field
=
k
)),
e
=
0
;
i
>
e
;
e
++
)
g
[
c
+
e
][
k
]
=!
0
;
for
(
e
=
0
;
j
>
e
;
e
++
)
g
[
c
][
k
+
e
]
=!
0
}},
g
=
function
(){
if
(
null
===
b
){
var
c
,
d
,
e
=
a
(
"<p/>"
).
addClass
(
"fixed-table-scroll-inner"
),
f
=
a
(
"<div/>"
).
addClass
(
"fixed-table-scroll-outer"
);
f
.
append
(
e
),
a
(
"body"
).
append
(
f
),
c
=
e
[
0
].
offsetWidth
,
f
.
css
(
"overflow"
,
"scroll"
),
d
=
e
[
0
].
offsetWidth
,
c
===
d
&&
(
d
=
f
[
0
].
clientWidth
),
f
.
remove
(),
b
=
c
-
d
}
return
b
},
h
=
function
(
b
,
d
,
e
,
f
){
var
g
=
d
;
if
(
"string"
==
typeof
d
){
var
h
=
d
.
split
(
"."
);
h
.
length
>
1
?(
g
=
window
,
a
.
each
(
h
,
function
(
a
,
b
){
g
=
g
[
b
]})):
g
=
window
[
d
]}
return
"object"
==
typeof
g
?
g
:
"function"
==
typeof
g
?
g
.
apply
(
b
,
e
||
[]):
!
g
&&
"string"
==
typeof
d
&&
c
.
apply
(
this
,[
d
].
concat
(
e
))?
c
.
apply
(
this
,[
d
].
concat
(
e
)):
f
},
i
=
function
(
b
,
c
,
d
){
var
e
=
Object
.
getOwnPropertyNames
(
b
),
f
=
Object
.
getOwnPropertyNames
(
c
),
g
=
""
;
if
(
d
&&
e
.
length
!==
f
.
length
)
return
!
1
;
for
(
var
h
=
0
;
h
<
e
.
length
;
h
++
)
if
(
g
=
e
[
h
],
a
.
inArray
(
g
,
f
)
>-
1
&&
b
[
g
]
!==
c
[
g
])
return
!
1
;
return
!
0
},
j
=
function
(
a
){
return
"string"
==
typeof
a
?
a
.
replace
(
/&/g
,
"&"
).
replace
(
/</g
,
"<"
).
replace
(
/>/g
,
">"
).
replace
(
/"/g
,
"""
).
replace
(
/'/g
,
"'"
).
replace
(
/`/g
,
"`"
):
a
},
k
=
function
(
a
){
for
(
var
b
in
a
){
var
c
=
b
.
split
(
/
(?=[
A-Z
])
/
).
join
(
"-"
).
toLowerCase
();
c
!==
b
&&
(
a
[
c
]
=
a
[
b
],
delete
a
[
b
])}
return
a
},
l
=
function
(
a
,
b
,
c
){
var
d
=
a
;
if
(
"string"
!=
typeof
b
||
a
.
hasOwnProperty
(
b
))
return
c
?
j
(
a
[
b
]):
a
[
b
];
var
e
=
b
.
split
(
"."
);
for
(
var
f
in
e
)
e
.
hasOwnProperty
(
f
)
&&
(
d
=
d
&&
d
[
e
[
f
]]);
return
c
?
j
(
d
):
d
},
m
=
function
(){
return
!!
(
navigator
.
userAgent
.
indexOf
(
"MSIE "
)
>
0
||
navigator
.
userAgent
.
match
(
/Trident.*rv
\:
11
\.
/
))},
n
=
function
(){
Object
.
keys
||
(
Object
.
keys
=
function
(){
var
a
=
Object
.
prototype
.
hasOwnProperty
,
b
=!
{
toString
:
null
}.
propertyIsEnumerable
(
"toString"
),
c
=
[
"toString"
,
"toLocaleString"
,
"valueOf"
,
"hasOwnProperty"
,
"isPrototypeOf"
,
"propertyIsEnumerable"
,
"constructor"
],
d
=
c
.
length
;
return
function
(
e
){
if
(
"object"
!=
typeof
e
&&
(
"function"
!=
typeof
e
||
null
===
e
))
throw
new
TypeError
(
"Object.keys called on non-object"
);
var
f
,
g
,
h
=
[];
for
(
f
in
e
)
a
.
call
(
e
,
f
)
&&
h
.
push
(
f
);
if
(
b
)
for
(
g
=
0
;
d
>
g
;
g
++
)
a
.
call
(
e
,
c
[
g
])
&&
h
.
push
(
c
[
g
]);
return
h
}}())},
o
=
function
(
b
,
c
){
this
.
options
=
c
,
this
.
$el
=
a
(
b
),
this
.
$el_
=
this
.
$el
.
clone
(),
this
.
timeoutId_
=
0
,
this
.
timeoutFooter_
=
0
,
this
.
init
()};
o
.
DEFAULTS
=
{
classes
:
"table table-hover"
,
sortClass
:
void
0
,
locale
:
void
0
,
height
:
void
0
,
undefinedText
:
"-"
,
sortName
:
void
0
,
sortOrder
:
"asc"
,
sortStable
:
!
1
,
striped
:
!
1
,
columns
:[[]],
data
:[],
totalField
:
"total"
,
dataField
:
"rows"
,
method
:
"get"
,
url
:
void
0
,
ajax
:
void
0
,
cache
:
!
0
,
contentType
:
"application/json"
,
dataType
:
"json"
,
ajaxOptions
:{},
queryParams
:
function
(
a
){
return
a
},
queryParamsType
:
"limit"
,
responseHandler
:
function
(
a
){
return
a
},
pagination
:
!
1
,
onlyInfoPagination
:
!
1
,
paginationLoop
:
!
0
,
sidePagination
:
"client"
,
totalRows
:
0
,
pageNumber
:
1
,
pageSize
:
10
,
pageList
:[
10
,
25
,
50
,
100
],
paginationHAlign
:
"right"
,
paginationVAlign
:
"bottom"
,
paginationDetailHAlign
:
"left"
,
paginationPreText
:
"‹"
,
paginationNextText
:
"›"
,
search
:
!
1
,
searchOnEnterKey
:
!
1
,
strictSearch
:
!
1
,
searchAlign
:
"right"
,
selectItemName
:
"btSelectItem"
,
showHeader
:
!
0
,
showFooter
:
!
1
,
showColumns
:
!
1
,
showPaginationSwitch
:
!
1
,
showRefresh
:
!
1
,
showToggle
:
!
1
,
buttonsAlign
:
"right"
,
smartDisplay
:
!
0
,
escape
:
!
1
,
minimumCountColumns
:
1
,
idField
:
void
0
,
uniqueId
:
void
0
,
cardView
:
!
1
,
detailView
:
!
1
,
detailFormatter
:
function
(){
return
""
},
trimOnSearch
:
!
0
,
clickToSelect
:
!
1
,
singleSelect
:
!
1
,
toolbar
:
void
0
,
toolbarAlign
:
"left"
,
checkboxHeader
:
!
0
,
sortable
:
!
0
,
silentSort
:
!
0
,
maintainSelected
:
!
1
,
searchTimeOut
:
500
,
searchText
:
""
,
iconSize
:
void
0
,
buttonsClass
:
"default"
,
iconsPrefix
:
"glyphicon"
,
icons
:{
paginationSwitchDown
:
"glyphicon-collapse-down icon-chevron-down"
,
paginationSwitchUp
:
"glyphicon-collapse-up icon-chevron-up"
,
refresh
:
"glyphicon-refresh icon-refresh"
,
toggle
:
"glyphicon-list-alt icon-list-alt"
,
columns
:
"glyphicon-th icon-th"
,
detailOpen
:
"glyphicon-plus icon-plus"
,
detailClose
:
"glyphicon-minus icon-minus"
},
customSearch
:
a
.
noop
,
customSort
:
a
.
noop
,
rowStyle
:
function
(){
return
{}},
rowAttributes
:
function
(){
return
{}},
footerStyle
:
function
(){
return
{}},
onAll
:
function
(){
return
!
1
},
onClickCell
:
function
(){
return
!
1
},
onDblClickCell
:
function
(){
return
!
1
},
onClickRow
:
function
(){
return
!
1
},
onDblClickRow
:
function
(){
return
!
1
},
onSort
:
function
(){
return
!
1
},
onCheck
:
function
(){
return
!
1
},
onUncheck
:
function
(){
return
!
1
},
onCheckAll
:
function
(){
return
!
1
},
onUncheckAll
:
function
(){
return
!
1
},
onCheckSome
:
function
(){
return
!
1
},
onUncheckSome
:
function
(){
return
!
1
},
onLoadSuccess
:
function
(){
return
!
1
},
onLoadError
:
function
(){
return
!
1
},
onColumnSwitch
:
function
(){
return
!
1
},
onPageChange
:
function
(){
return
!
1
},
onSearch
:
function
(){
return
!
1
},
onToggle
:
function
(){
return
!
1
},
onPreBody
:
function
(){
return
!
1
},
onPostBody
:
function
(){
return
!
1
},
onPostHeader
:
function
(){
return
!
1
},
onExpandRow
:
function
(){
return
!
1
},
onCollapseRow
:
function
(){
return
!
1
},
onRefreshOptions
:
function
(){
return
!
1
},
onRefresh
:
function
(){
return
!
1
},
onResetView
:
function
(){
return
!
1
}},
o
.
LOCALES
=
{},
o
.
LOCALES
[
"en-US"
]
=
o
.
LOCALES
.
en
=
{
formatLoadingMessage
:
function
(){
return
"Loading, please wait..."
},
formatRecordsPerPage
:
function
(
a
){
return
c
(
"%s rows per page"
,
a
)},
formatShowingRows
:
function
(
a
,
b
,
d
){
return
c
(
"Showing %s to %s of %s rows"
,
a
,
b
,
d
)},
formatDetailPagination
:
function
(
a
){
return
c
(
"Showing %s rows"
,
a
)},
formatSearch
:
function
(){
return
"Search"
},
formatNoMatches
:
function
(){
return
"No matching records found"
},
formatPaginationSwitch
:
function
(){
return
"Hide/Show pagination"
},
formatRefresh
:
function
(){
return
"Refresh"
},
formatToggle
:
function
(){
return
"Toggle"
},
formatColumns
:
function
(){
return
"Columns"
},
formatAllRows
:
function
(){
return
"All"
}},
a
.
extend
(
o
.
DEFAULTS
,
o
.
LOCALES
[
"en-US"
]),
o
.
COLUMN_DEFAULTS
=
{
radio
:
!
1
,
checkbox
:
!
1
,
checkboxEnabled
:
!
0
,
field
:
void
0
,
title
:
void
0
,
titleTooltip
:
void
0
,
"class"
:
void
0
,
align
:
void
0
,
halign
:
void
0
,
falign
:
void
0
,
valign
:
void
0
,
width
:
void
0
,
sortable
:
!
1
,
order
:
"asc"
,
visible
:
!
0
,
switchable
:
!
0
,
clickToSelect
:
!
0
,
formatter
:
void
0
,
footerFormatter
:
void
0
,
events
:
void
0
,
sorter
:
void
0
,
sortName
:
void
0
,
cellStyle
:
void
0
,
searchable
:
!
0
,
searchFormatter
:
!
0
,
cardVisible
:
!
0
,
escape
:
!
1
},
o
.
EVENTS
=
{
"all.bs.table"
:
"onAll"
,
"click-cell.bs.table"
:
"onClickCell"
,
"dbl-click-cell.bs.table"
:
"onDblClickCell"
,
"click-row.bs.table"
:
"onClickRow"
,
"dbl-click-row.bs.table"
:
"onDblClickRow"
,
"sort.bs.table"
:
"onSort"
,
"check.bs.table"
:
"onCheck"
,
"uncheck.bs.table"
:
"onUncheck"
,
"check-all.bs.table"
:
"onCheckAll"
,
"uncheck-all.bs.table"
:
"onUncheckAll"
,
"check-some.bs.table"
:
"onCheckSome"
,
"uncheck-some.bs.table"
:
"onUncheckSome"
,
"load-success.bs.table"
:
"onLoadSuccess"
,
"load-error.bs.table"
:
"onLoadError"
,
"column-switch.bs.table"
:
"onColumnSwitch"
,
"page-change.bs.table"
:
"onPageChange"
,
"search.bs.table"
:
"onSearch"
,
"toggle.bs.table"
:
"onToggle"
,
"pre-body.bs.table"
:
"onPreBody"
,
"post-body.bs.table"
:
"onPostBody"
,
"post-header.bs.table"
:
"onPostHeader"
,
"expand-row.bs.table"
:
"onExpandRow"
,
"collapse-row.bs.table"
:
"onCollapseRow"
,
"refresh-options.bs.table"
:
"onRefreshOptions"
,
"reset-view.bs.table"
:
"onResetView"
,
"refresh.bs.table"
:
"onRefresh"
},
o
.
prototype
.
init
=
function
(){
this
.
initLocale
(),
this
.
initContainer
(),
this
.
initTable
(),
this
.
initHeader
(),
this
.
initData
(),
this
.
initHiddenRows
(),
this
.
initFooter
(),
this
.
initToolbar
(),
this
.
initPagination
(),
this
.
initBody
(),
this
.
initSearchText
(),
this
.
initServer
()},
o
.
prototype
.
initLocale
=
function
(){
if
(
this
.
options
.
locale
){
var
b
=
this
.
options
.
locale
.
split
(
/-|_/
);
b
[
0
].
toLowerCase
(),
b
[
1
]
&&
b
[
1
].
toUpperCase
(),
a
.
fn
.
bootstrapTable
.
locales
[
this
.
options
.
locale
]?
a
.
extend
(
this
.
options
,
a
.
fn
.
bootstrapTable
.
locales
[
this
.
options
.
locale
]):
a
.
fn
.
bootstrapTable
.
locales
[
b
.
join
(
"-"
)]?
a
.
extend
(
this
.
options
,
a
.
fn
.
bootstrapTable
.
locales
[
b
.
join
(
"-"
)]):
a
.
fn
.
bootstrapTable
.
locales
[
b
[
0
]]
&&
a
.
extend
(
this
.
options
,
a
.
fn
.
bootstrapTable
.
locales
[
b
[
0
]])}},
o
.
prototype
.
initContainer
=
function
(){
this
.
$container
=
a
([
'<div class="bootstrap-table">'
,
'<div class="fixed-table-toolbar"></div>'
,
"top"
===
this
.
options
.
paginationVAlign
||
"both"
===
this
.
options
.
paginationVAlign
?
'<div class="fixed-table-pagination" style="clear: both;"></div>'
:
""
,
'<div class="fixed-table-container">'
,
'<div class="fixed-table-header"><table></table></div>'
,
'<div class="fixed-table-body">'
,
'<div class="fixed-table-loading">'
,
this
.
options
.
formatLoadingMessage
(),
"</div>"
,
"</div>"
,
'<div class="fixed-table-footer"><table><tr></tr></table></div>'
,
"bottom"
===
this
.
options
.
paginationVAlign
||
"both"
===
this
.
options
.
paginationVAlign
?
'<div class="fixed-table-pagination"></div>'
:
""
,
"</div>"
,
"</div>"
].
join
(
""
)),
this
.
$container
.
insertAfter
(
this
.
$el
),
this
.
$tableContainer
=
this
.
$container
.
find
(
".fixed-table-container"
),
this
.
$tableHeader
=
this
.
$container
.
find
(
".fixed-table-header"
),
this
.
$tableBody
=
this
.
$container
.
find
(
".fixed-table-body"
),
this
.
$tableLoading
=
this
.
$container
.
find
(
".fixed-table-loading"
),
this
.
$tableFooter
=
this
.
$container
.
find
(
".fixed-table-footer"
),
this
.
$toolbar
=
this
.
$container
.
find
(
".fixed-table-toolbar"
),
this
.
$pagination
=
this
.
$container
.
find
(
".fixed-table-pagination"
),
this
.
$tableBody
.
append
(
this
.
$el
),
this
.
$container
.
after
(
'<div class="clearfix"></div>'
),
this
.
$el
.
addClass
(
this
.
options
.
classes
),
this
.
options
.
striped
&&
this
.
$el
.
addClass
(
"table-striped"
),
-
1
!==
a
.
inArray
(
"table-no-bordered"
,
this
.
options
.
classes
.
split
(
" "
))
&&
this
.
$tableContainer
.
addClass
(
"table-no-bordered"
)},
o
.
prototype
.
initTable
=
function
(){
var
b
=
this
,
c
=
[],
d
=
[];
if
(
this
.
$header
=
this
.
$el
.
find
(
">thead"
),
this
.
$header
.
length
||
(
this
.
$header
=
a
(
"<thead></thead>"
).
appendTo
(
this
.
$el
)),
this
.
$header
.
find
(
"tr"
).
each
(
function
(){
var
b
=
[];
a
(
this
).
find
(
"th"
).
each
(
function
(){
"undefined"
!=
typeof
a
(
this
).
data
(
"field"
)
&&
a
(
this
).
data
(
"field"
,
a
(
this
).
data
(
"field"
)
+
""
),
b
.
push
(
a
.
extend
({},{
title
:
a
(
this
).
html
(),
"class"
:
a
(
this
).
attr
(
"class"
),
titleTooltip
:
a
(
this
).
attr
(
"title"
),
rowspan
:
a
(
this
).
attr
(
"rowspan"
)?
+
a
(
this
).
attr
(
"rowspan"
):
void
0
,
colspan
:
a
(
this
).
attr
(
"colspan"
)?
+
a
(
this
).
attr
(
"colspan"
):
void
0
},
a
(
this
).
data
()))}),
c
.
push
(
b
)}),
a
.
isArray
(
this
.
options
.
columns
[
0
])
||
(
this
.
options
.
columns
=
[
this
.
options
.
columns
]),
this
.
options
.
columns
=
a
.
extend
(
!
0
,[],
c
,
this
.
options
.
columns
),
this
.
columns
=
[],
f
(
this
.
options
.
columns
),
a
.
each
(
this
.
options
.
columns
,
function
(
c
,
d
){
a
.
each
(
d
,
function
(
d
,
e
){
e
=
a
.
extend
({},
o
.
COLUMN_DEFAULTS
,
e
),
"undefined"
!=
typeof
e
.
fieldIndex
&&
(
b
.
columns
[
e
.
fieldIndex
]
=
e
),
b
.
options
.
columns
[
c
][
d
]
=
e
})}),
!
this
.
options
.
data
.
length
){
var
e
=
[];
this
.
$el
.
find
(
">tbody>tr"
).
each
(
function
(
c
){
var
f
=
{};
f
.
_id
=
a
(
this
).
attr
(
"id"
),
f
.
_class
=
a
(
this
).
attr
(
"class"
),
f
.
_data
=
k
(
a
(
this
).
data
()),
a
(
this
).
find
(
">td"
).
each
(
function
(
d
){
for
(
var
g
,
h
,
i
=
a
(
this
),
j
=+
i
.
attr
(
"colspan"
)
||
1
,
l
=+
i
.
attr
(
"rowspan"
)
||
1
;
e
[
c
]
&&
e
[
c
][
d
];
d
++
);
for
(
g
=
d
;
d
+
j
>
g
;
g
++
)
for
(
h
=
c
;
c
+
l
>
h
;
h
++
)
e
[
h
]
||
(
e
[
h
]
=
[]),
e
[
h
][
g
]
=!
0
;
var
m
=
b
.
columns
[
d
].
field
;
f
[
m
]
=
a
(
this
).
html
(),
f
[
"_"
+
m
+
"_id"
]
=
a
(
this
).
attr
(
"id"
),
f
[
"_"
+
m
+
"_class"
]
=
a
(
this
).
attr
(
"class"
),
f
[
"_"
+
m
+
"_rowspan"
]
=
a
(
this
).
attr
(
"rowspan"
),
f
[
"_"
+
m
+
"_colspan"
]
=
a
(
this
).
attr
(
"colspan"
),
f
[
"_"
+
m
+
"_title"
]
=
a
(
this
).
attr
(
"title"
),
f
[
"_"
+
m
+
"_data"
]
=
k
(
a
(
this
).
data
())}),
d
.
push
(
f
)}),
this
.
options
.
data
=
d
,
d
.
length
&&
(
this
.
fromHtml
=!
0
)}},
o
.
prototype
.
initHeader
=
function
(){
var
b
=
this
,
d
=
{},
e
=
[];
this
.
header
=
{
fields
:[],
styles
:[],
classes
:[],
formatters
:[],
events
:[],
sorters
:[],
sortNames
:[],
cellStyles
:[],
searchables
:[]},
a
.
each
(
this
.
options
.
columns
,
function
(
f
,
g
){
e
.
push
(
"<tr>"
),
0
===
f
&&!
b
.
options
.
cardView
&&
b
.
options
.
detailView
&&
e
.
push
(
c
(
'<th class="detail" rowspan="%s"><div class="fht-cell"></div></th>'
,
b
.
options
.
columns
.
length
)),
a
.
each
(
g
,
function
(
a
,
f
){
var
g
=
""
,
h
=
""
,
i
=
""
,
k
=
""
,
l
=
c
(
' class="%s"'
,
f
[
"class"
]),
m
=
(
b
.
options
.
sortOrder
||
f
.
order
,
"px"
),
n
=
f
.
width
;
if
(
void
0
===
f
.
width
||
b
.
options
.
cardView
||
"string"
==
typeof
f
.
width
&&-
1
!==
f
.
width
.
indexOf
(
"%"
)
&&
(
m
=
"%"
),
f
.
width
&&
"string"
==
typeof
f
.
width
&&
(
n
=
f
.
width
.
replace
(
"%"
,
""
).
replace
(
"px"
,
""
)),
h
=
c
(
"text-align: %s; "
,
f
.
halign
?
f
.
halign
:
f
.
align
),
i
=
c
(
"text-align: %s; "
,
f
.
align
),
k
=
c
(
"vertical-align: %s; "
,
f
.
valign
),
k
+=
c
(
"width: %s; "
,
!
f
.
checkbox
&&!
f
.
radio
||
n
?
n
?
n
+
m
:
void
0
:
"36px"
),
"undefined"
!=
typeof
f
.
fieldIndex
){
if
(
b
.
header
.
fields
[
f
.
fieldIndex
]
=
f
.
field
,
b
.
header
.
styles
[
f
.
fieldIndex
]
=
i
+
k
,
b
.
header
.
classes
[
f
.
fieldIndex
]
=
l
,
b
.
header
.
formatters
[
f
.
fieldIndex
]
=
f
.
formatter
,
b
.
header
.
events
[
f
.
fieldIndex
]
=
f
.
events
,
b
.
header
.
sorters
[
f
.
fieldIndex
]
=
f
.
sorter
,
b
.
header
.
sortNames
[
f
.
fieldIndex
]
=
f
.
sortName
,
b
.
header
.
cellStyles
[
f
.
fieldIndex
]
=
f
.
cellStyle
,
b
.
header
.
searchables
[
f
.
fieldIndex
]
=
f
.
searchable
,
!
f
.
visible
)
return
;
if
(
b
.
options
.
cardView
&&!
f
.
cardVisible
)
return
;
d
[
f
.
field
]
=
f
}
e
.
push
(
"<th"
+
c
(
' title="%s"'
,
f
.
titleTooltip
),
f
.
checkbox
||
f
.
radio
?
c
(
' class="bs-checkbox %s"'
,
f
[
"class"
]
||
""
):
l
,
c
(
' style="%s"'
,
h
+
k
),
c
(
' rowspan="%s"'
,
f
.
rowspan
),
c
(
' colspan="%s"'
,
f
.
colspan
),
c
(
' data-field="%s"'
,
f
.
field
),
">"
),
e
.
push
(
c
(
'<div class="th-inner %s">'
,
b
.
options
.
sortable
&&
f
.
sortable
?
"sortable both"
:
""
)),
g
=
b
.
options
.
escape
?
j
(
f
.
title
):
f
.
title
,
f
.
checkbox
&&
(
!
b
.
options
.
singleSelect
&&
b
.
options
.
checkboxHeader
&&
(
g
=
'<input name="btSelectAll" type="checkbox" />'
),
b
.
header
.
stateField
=
f
.
field
),
f
.
radio
&&
(
g
=
""
,
b
.
header
.
stateField
=
f
.
field
,
b
.
options
.
singleSelect
=!
0
),
e
.
push
(
g
),
e
.
push
(
"</div>"
),
e
.
push
(
'<div class="fht-cell"></div>'
),
e
.
push
(
"</div>"
),
e
.
push
(
"</th>"
)}),
e
.
push
(
"</tr>"
)}),
this
.
$header
.
html
(
e
.
join
(
""
)),
this
.
$header
.
find
(
"th[data-field]"
).
each
(
function
(){
a
(
this
).
data
(
d
[
a
(
this
).
data
(
"field"
)])}),
this
.
$container
.
off
(
"click"
,
".th-inner"
).
on
(
"click"
,
".th-inner"
,
function
(
c
){
var
d
=
a
(
this
);
return
b
.
options
.
detailView
&&
d
.
closest
(
".bootstrap-table"
)[
0
]
!==
b
.
$container
[
0
]?
!
1
:
void
(
b
.
options
.
sortable
&&
d
.
parent
().
data
().
sortable
&&
b
.
onSort
(
c
))}),
this
.
$header
.
children
().
children
().
off
(
"keypress"
).
on
(
"keypress"
,
function
(
c
){
if
(
b
.
options
.
sortable
&&
a
(
this
).
data
().
sortable
){
var
d
=
c
.
keyCode
||
c
.
which
;
13
==
d
&&
b
.
onSort
(
c
)}}),
a
(
window
).
off
(
"resize.bootstrap-table"
),
!
this
.
options
.
showHeader
||
this
.
options
.
cardView
?(
this
.
$header
.
hide
(),
this
.
$tableHeader
.
hide
(),
this
.
$tableLoading
.
css
(
"top"
,
0
)):(
this
.
$header
.
show
(),
this
.
$tableHeader
.
show
(),
this
.
$tableLoading
.
css
(
"top"
,
this
.
$header
.
outerHeight
()
+
1
),
this
.
getCaret
(),
a
(
window
).
on
(
"resize.bootstrap-table"
,
a
.
proxy
(
this
.
resetWidth
,
this
))),
this
.
$selectAll
=
this
.
$header
.
find
(
'[name="btSelectAll"]'
),
this
.
$selectAll
.
off
(
"click"
).
on
(
"click"
,
function
(){
var
c
=
a
(
this
).
prop
(
"checked"
);
b
[
c
?
"checkAll"
:
"uncheckAll"
](),
b
.
updateSelected
()})},
o
.
prototype
.
initFooter
=
function
(){
!
this
.
options
.
showFooter
||
this
.
options
.
cardView
?
this
.
$tableFooter
.
hide
():
this
.
$tableFooter
.
show
()},
o
.
prototype
.
initData
=
function
(
a
,
b
){
this
.
data
=
"append"
===
b
?
this
.
data
.
concat
(
a
):
"prepend"
===
b
?[].
concat
(
a
).
concat
(
this
.
data
):
a
||
this
.
options
.
data
,
this
.
options
.
data
=
"append"
===
b
?
this
.
options
.
data
.
concat
(
a
):
"prepend"
===
b
?[].
concat
(
a
).
concat
(
this
.
options
.
data
):
this
.
data
,
"server"
!==
this
.
options
.
sidePagination
&&
this
.
initSort
()},
o
.
prototype
.
initSort
=
function
(){
var
b
=
this
,
d
=
this
.
options
.
sortName
,
e
=
"desc"
===
this
.
options
.
sortOrder
?
-
1
:
1
,
f
=
a
.
inArray
(
this
.
options
.
sortName
,
this
.
header
.
fields
),
g
=
0
;
return
this
.
options
.
customSort
!==
a
.
noop
?
void
this
.
options
.
customSort
.
apply
(
this
,[
this
.
options
.
sortName
,
this
.
options
.
sortOrder
]):
void
(
-
1
!==
f
&&
(
this
.
options
.
sortStable
&&
a
.
each
(
this
.
data
,
function
(
a
,
b
){
b
.
hasOwnProperty
(
"_position"
)
||
(
b
.
_position
=
a
)}),
this
.
data
.
sort
(
function
(
c
,
g
){
b
.
header
.
sortNames
[
f
]
&&
(
d
=
b
.
header
.
sortNames
[
f
]);
var
i
=
l
(
c
,
d
,
b
.
options
.
escape
),
j
=
l
(
g
,
d
,
b
.
options
.
escape
),
k
=
h
(
b
.
header
,
b
.
header
.
sorters
[
f
],[
i
,
j
]);
return
void
0
!==
k
?
e
*
k
:((
void
0
===
i
||
null
===
i
)
&&
(
i
=
""
),(
void
0
===
j
||
null
===
j
)
&&
(
j
=
""
),
b
.
options
.
sortStable
&&
i
===
j
&&
(
i
=
c
.
_position
,
j
=
g
.
_position
),
a
.
isNumeric
(
i
)
&&
a
.
isNumeric
(
j
)?(
i
=
parseFloat
(
i
),
j
=
parseFloat
(
j
),
j
>
i
?
-
1
*
e
:
e
):
i
===
j
?
0
:(
"string"
!=
typeof
i
&&
(
i
=
i
.
toString
()),
-
1
===
i
.
localeCompare
(
j
)?
-
1
*
e
:
e
))}),
void
0
!==
this
.
options
.
sortClass
&&
(
clearTimeout
(
g
),
g
=
setTimeout
(
function
(){
b
.
$el
.
removeClass
(
b
.
options
.
sortClass
);
var
a
=
b
.
$header
.
find
(
c
(
'[data-field="%s"]'
,
b
.
options
.
sortName
).
index
()
+
1
);
b
.
$el
.
find
(
c
(
"tr td:nth-child(%s)"
,
a
)).
addClass
(
b
.
options
.
sortClass
)},
250
))))},
o
.
prototype
.
onSort
=
function
(
b
){
var
c
=
"keypress"
===
b
.
type
?
a
(
b
.
currentTarget
):
a
(
b
.
currentTarget
).
parent
(),
d
=
this
.
$header
.
find
(
"th"
).
eq
(
c
.
index
());
return
this
.
$header
.
add
(
this
.
$header_
).
find
(
"span.order"
).
remove
(),
this
.
options
.
sortName
===
c
.
data
(
"field"
)?
this
.
options
.
sortOrder
=
"asc"
===
this
.
options
.
sortOrder
?
"desc"
:
"asc"
:(
this
.
options
.
sortName
=
c
.
data
(
"field"
),
this
.
options
.
sortOrder
=
"asc"
===
c
.
data
(
"order"
)?
"desc"
:
"asc"
),
this
.
trigger
(
"sort"
,
this
.
options
.
sortName
,
this
.
options
.
sortOrder
),
c
.
add
(
d
).
data
(
"order"
,
this
.
options
.
sortOrder
),
this
.
getCaret
(),
"server"
===
this
.
options
.
sidePagination
?
void
this
.
initServer
(
this
.
options
.
silentSort
):(
this
.
initSort
(),
void
this
.
initBody
())},
o
.
prototype
.
initToolbar
=
function
(){
var
b
,
d
,
e
=
this
,
f
=
[],
g
=
0
,
i
=
0
;
this
.
$toolbar
.
find
(
".bs-bars"
).
children
().
length
&&
a
(
"body"
).
append
(
a
(
this
.
options
.
toolbar
)),
this
.
$toolbar
.
html
(
""
),(
"string"
==
typeof
this
.
options
.
toolbar
||
"object"
==
typeof
this
.
options
.
toolbar
)
&&
a
(
c
(
'<div class="bs-bars pull-%s"></div>'
,
this
.
options
.
toolbarAlign
)).
appendTo
(
this
.
$toolbar
).
append
(
a
(
this
.
options
.
toolbar
)),
f
=
[
c
(
'<div class="columns columns-%s btn-group pull-%s">'
,
this
.
options
.
buttonsAlign
,
this
.
options
.
buttonsAlign
)],
"string"
==
typeof
this
.
options
.
icons
&&
(
this
.
options
.
icons
=
h
(
null
,
this
.
options
.
icons
)),
this
.
options
.
showPaginationSwitch
&&
f
.
push
(
c
(
'<button class="btn'
+
c
(
" btn-%s"
,
this
.
options
.
buttonsClass
)
+
c
(
" btn-%s"
,
this
.
options
.
iconSize
)
+
'" type="button" name="paginationSwitch" aria-label="pagination Switch" title="%s">'
,
this
.
options
.
formatPaginationSwitch
()),
c
(
'<i class="%s %s"></i>'
,
this
.
options
.
iconsPrefix
,
this
.
options
.
icons
.
paginationSwitchDown
),
"</button>"
),
this
.
options
.
showRefresh
&&
f
.
push
(
c
(
'<button class="btn'
+
c
(
" btn-%s"
,
this
.
options
.
buttonsClass
)
+
c
(
" btn-%s"
,
this
.
options
.
iconSize
)
+
'" type="button" name="refresh" aria-label="refresh" title="%s">'
,
this
.
options
.
formatRefresh
()),
c
(
'<i class="%s %s"></i>'
,
this
.
options
.
iconsPrefix
,
this
.
options
.
icons
.
refresh
),
"</button>"
),
this
.
options
.
showToggle
&&
f
.
push
(
c
(
'<button class="btn'
+
c
(
" btn-%s"
,
this
.
options
.
buttonsClass
)
+
c
(
" btn-%s"
,
this
.
options
.
iconSize
)
+
'" type="button" name="toggle" aria-label="toggle" title="%s">'
,
this
.
options
.
formatToggle
()),
c
(
'<i class="%s %s"></i>'
,
this
.
options
.
iconsPrefix
,
this
.
options
.
icons
.
toggle
),
"</button>"
),
this
.
options
.
showColumns
&&
(
f
.
push
(
c
(
'<div class="keep-open btn-group" title="%s">'
,
this
.
options
.
formatColumns
()),
'<button type="button" aria-label="columns" class="btn'
+
c
(
" btn-%s"
,
this
.
options
.
buttonsClass
)
+
c
(
" btn-%s"
,
this
.
options
.
iconSize
)
+
' dropdown-toggle" data-toggle="dropdown">'
,
c
(
'<i class="%s %s"></i>'
,
this
.
options
.
iconsPrefix
,
this
.
options
.
icons
.
columns
),
' <span class="caret"></span>'
,
"</button>"
,
'<ul class="dropdown-menu" role="menu">'
),
a
.
each
(
this
.
columns
,
function
(
a
,
b
){
if
(
!
(
b
.
radio
||
b
.
checkbox
||
e
.
options
.
cardView
&&!
b
.
cardVisible
)){
var
d
=
b
.
visible
?
' checked="checked"'
:
""
;
b
.
switchable
&&
(
f
.
push
(
c
(
'<li role="menuitem"><label><input type="checkbox" data-field="%s" value="%s"%s> %s</label></li>'
,
b
.
field
,
a
,
d
,
b
.
title
)),
i
++
)}}),
f
.
push
(
"</ul>"
,
"</div>"
)),
f
.
push
(
"</div>"
),(
this
.
showToolbar
||
f
.
length
>
2
)
&&
this
.
$toolbar
.
append
(
f
.
join
(
""
)),
this
.
options
.
showPaginationSwitch
&&
this
.
$toolbar
.
find
(
'button[name="paginationSwitch"]'
).
off
(
"click"
).
on
(
"click"
,
a
.
proxy
(
this
.
togglePagination
,
this
)),
this
.
options
.
showRefresh
&&
this
.
$toolbar
.
find
(
'button[name="refresh"]'
).
off
(
"click"
).
on
(
"click"
,
a
.
proxy
(
this
.
refresh
,
this
)),
this
.
options
.
showToggle
&&
this
.
$toolbar
.
find
(
'button[name="toggle"]'
).
off
(
"click"
).
on
(
"click"
,
function
(){
e
.
toggleView
()}),
this
.
options
.
showColumns
&&
(
b
=
this
.
$toolbar
.
find
(
".keep-open"
),
i
<=
this
.
options
.
minimumCountColumns
&&
b
.
find
(
"input"
).
prop
(
"disabled"
,
!
0
),
b
.
find
(
"li"
).
off
(
"click"
).
on
(
"click"
,
function
(
a
){
a
.
stopImmediatePropagation
()}),
b
.
find
(
"input"
).
off
(
"click"
).
on
(
"click"
,
function
(){
var
b
=
a
(
this
);
e
.
toggleColumn
(
a
(
this
).
val
(),
b
.
prop
(
"checked"
),
!
1
),
e
.
trigger
(
"column-switch"
,
a
(
this
).
data
(
"field"
),
b
.
prop
(
"checked"
))})),
this
.
options
.
search
&&
(
f
=
[],
f
.
push
(
'<div class="pull-'
+
this
.
options
.
searchAlign
+
' search">'
,
c
(
'<input class="form-control'
+
c
(
" input-%s"
,
this
.
options
.
iconSize
)
+
'" type="text" placeholder="%s">'
,
this
.
options
.
formatSearch
()),
"</div>"
),
this
.
$toolbar
.
append
(
f
.
join
(
""
)),
d
=
this
.
$toolbar
.
find
(
".search input"
),
d
.
off
(
"keyup drop blur"
).
on
(
"keyup drop blur"
,
function
(
b
){
e
.
options
.
searchOnEnterKey
&&
13
!==
b
.
keyCode
||
a
.
inArray
(
b
.
keyCode
,[
37
,
38
,
39
,
40
])
>-
1
||
(
clearTimeout
(
g
),
g
=
setTimeout
(
function
(){
e
.
onSearch
(
b
)},
e
.
options
.
searchTimeOut
))}),
m
()
&&
d
.
off
(
"mouseup"
).
on
(
"mouseup"
,
function
(
a
){
clearTimeout
(
g
),
g
=
setTimeout
(
function
(){
e
.
onSearch
(
a
)},
e
.
options
.
searchTimeOut
)}))},
o
.
prototype
.
onSearch
=
function
(
b
){
var
c
=
a
.
trim
(
a
(
b
.
currentTarget
).
val
());
this
.
options
.
trimOnSearch
&&
a
(
b
.
currentTarget
).
val
()
!==
c
&&
a
(
b
.
currentTarget
).
val
(
c
),
c
!==
this
.
searchText
&&
(
this
.
searchText
=
c
,
this
.
options
.
searchText
=
c
,
this
.
options
.
pageNumber
=
1
,
this
.
initSearch
(),
this
.
updatePagination
(),
this
.
trigger
(
"search"
,
c
))},
o
.
prototype
.
initSearch
=
function
(){
var
b
=
this
;
if
(
"server"
!==
this
.
options
.
sidePagination
){
if
(
this
.
options
.
customSearch
!==
a
.
noop
)
return
void
this
.
options
.
customSearch
.
apply
(
this
,[
this
.
searchText
]);
var
c
=
this
.
searchText
&&
(
this
.
options
.
escape
?
j
(
this
.
searchText
):
this
.
searchText
).
toLowerCase
(),
d
=
a
.
isEmptyObject
(
this
.
filterColumns
)?
null
:
this
.
filterColumns
;
this
.
data
=
d
?
a
.
grep
(
this
.
options
.
data
,
function
(
b
){
for
(
var
c
in
d
)
if
(
a
.
isArray
(
d
[
c
])
&&-
1
===
a
.
inArray
(
b
[
c
],
d
[
c
])
||!
a
.
isArray
(
d
[
c
])
&&
b
[
c
]
!==
d
[
c
])
return
!
1
;
return
!
0
}):
this
.
options
.
data
,
this
.
data
=
c
?
a
.
grep
(
this
.
data
,
function
(
d
,
f
){
for
(
var
g
=
0
;
g
<
b
.
header
.
fields
.
length
;
g
++
)
if
(
b
.
header
.
searchables
[
g
]){
var
i
,
j
=
a
.
isNumeric
(
b
.
header
.
fields
[
g
])?
parseInt
(
b
.
header
.
fields
[
g
],
10
):
b
.
header
.
fields
[
g
],
k
=
b
.
columns
[
e
(
b
.
columns
,
j
)];
if
(
"string"
==
typeof
j
){
i
=
d
;
for
(
var
l
=
j
.
split
(
"."
),
m
=
0
;
m
<
l
.
length
;
m
++
)
i
=
i
[
l
[
m
]];
k
&&
k
.
searchFormatter
&&
(
i
=
h
(
k
,
b
.
header
.
formatters
[
g
],[
i
,
d
,
f
],
i
))}
else
i
=
d
[
j
];
if
(
"string"
==
typeof
i
||
"number"
==
typeof
i
)
if
(
b
.
options
.
strictSearch
){
if
((
i
+
""
).
toLowerCase
()
===
c
)
return
!
0
}
else
if
(
-
1
!==
(
i
+
""
).
toLowerCase
().
indexOf
(
c
))
return
!
0
}
return
!
1
}):
this
.
data
}},
o
.
prototype
.
initPagination
=
function
(){
if
(
!
this
.
options
.
pagination
)
return
void
this
.
$pagination
.
hide
();
this
.
$pagination
.
show
();
var
b
,
d
,
e
,
f
,
g
,
h
,
i
,
j
,
k
,
l
=
this
,
m
=
[],
n
=!
1
,
o
=
this
.
getData
(),
p
=
this
.
options
.
pageList
;
if
(
"server"
!==
this
.
options
.
sidePagination
&&
(
this
.
options
.
totalRows
=
o
.
length
),
this
.
totalPages
=
0
,
this
.
options
.
totalRows
){
if
(
this
.
options
.
pageSize
===
this
.
options
.
formatAllRows
())
this
.
options
.
pageSize
=
this
.
options
.
totalRows
,
n
=!
0
;
else
if
(
this
.
options
.
pageSize
===
this
.
options
.
totalRows
){
var
q
=
"string"
==
typeof
this
.
options
.
pageList
?
this
.
options
.
pageList
.
replace
(
"["
,
""
).
replace
(
"]"
,
""
).
replace
(
/ /g
,
""
).
toLowerCase
().
split
(
","
):
this
.
options
.
pageList
;
a
.
inArray
(
this
.
options
.
formatAllRows
().
toLowerCase
(),
q
)
>-
1
&&
(
n
=!
0
)}
this
.
totalPages
=~~
((
this
.
options
.
totalRows
-
1
)
/
this
.
options
.
pageSize
)
+
1
,
this
.
options
.
totalPages
=
this
.
totalPages
}
if
(
this
.
totalPages
>
0
&&
this
.
options
.
pageNumber
>
this
.
totalPages
&&
(
this
.
options
.
pageNumber
=
this
.
totalPages
),
this
.
pageFrom
=
(
this
.
options
.
pageNumber
-
1
)
*
this
.
options
.
pageSize
+
1
,
this
.
pageTo
=
this
.
options
.
pageNumber
*
this
.
options
.
pageSize
,
this
.
pageTo
>
this
.
options
.
totalRows
&&
(
this
.
pageTo
=
this
.
options
.
totalRows
),
m
.
push
(
'<div class="pull-'
+
this
.
options
.
paginationDetailHAlign
+
' pagination-detail">'
,
'<span class="pagination-info">'
,
this
.
options
.
onlyInfoPagination
?
this
.
options
.
formatDetailPagination
(
this
.
options
.
totalRows
):
this
.
options
.
formatShowingRows
(
this
.
pageFrom
,
this
.
pageTo
,
this
.
options
.
totalRows
),
"</span>"
),
!
this
.
options
.
onlyInfoPagination
){
m
.
push
(
'<span class="page-list">'
);
var
r
=
[
c
(
'<span class="btn-group %s">'
,
"top"
===
this
.
options
.
paginationVAlign
||
"both"
===
this
.
options
.
paginationVAlign
?
"dropdown"
:
"dropup"
),
'<button type="button" class="btn'
+
c
(
" btn-%s"
,
this
.
options
.
buttonsClass
)
+
c
(
" btn-%s"
,
this
.
options
.
iconSize
)
+
' dropdown-toggle" data-toggle="dropdown">'
,
'<span class="page-size">'
,
n
?
this
.
options
.
formatAllRows
():
this
.
options
.
pageSize
,
"</span>"
,
' <span class="caret"></span>'
,
"</button>"
,
'<ul class="dropdown-menu" role="menu">'
];
if
(
"string"
==
typeof
this
.
options
.
pageList
){
var
s
=
this
.
options
.
pageList
.
replace
(
"["
,
""
).
replace
(
"]"
,
""
).
replace
(
/ /g
,
""
).
split
(
","
);
p
=
[],
a
.
each
(
s
,
function
(
a
,
b
){
p
.
push
(
b
.
toUpperCase
()
===
l
.
options
.
formatAllRows
().
toUpperCase
()?
l
.
options
.
formatAllRows
():
+
b
)})}
for
(
a
.
each
(
p
,
function
(
a
,
b
){
if
(
!
l
.
options
.
smartDisplay
||
0
===
a
||
p
[
a
-
1
]
<
l
.
options
.
totalRows
){
var
d
;
d
=
n
?
b
===
l
.
options
.
formatAllRows
()?
' class="active"'
:
""
:
b
===
l
.
options
.
pageSize
?
' class="active"'
:
""
,
r
.
push
(
c
(
'<li role="menuitem"%s><a href="#">%s</a></li>'
,
d
,
b
))}}),
r
.
push
(
"</ul></span>"
),
m
.
push
(
this
.
options
.
formatRecordsPerPage
(
r
.
join
(
""
))),
m
.
push
(
"</span>"
),
m
.
push
(
"</div>"
,
'<div class="pull-'
+
this
.
options
.
paginationHAlign
+
' pagination">'
,
'<ul class="pagination'
+
c
(
" pagination-%s"
,
this
.
options
.
iconSize
)
+
'">'
,
'<li class="page-pre"><a href="#">'
+
this
.
options
.
paginationPreText
+
"</a></li>"
),
this
.
totalPages
<
5
?(
d
=
1
,
e
=
this
.
totalPages
):(
d
=
this
.
options
.
pageNumber
-
2
,
e
=
d
+
4
,
1
>
d
&&
(
d
=
1
,
e
=
5
),
e
>
this
.
totalPages
&&
(
e
=
this
.
totalPages
,
d
=
e
-
4
)),
this
.
totalPages
>=
6
&&
(
this
.
options
.
pageNumber
>=
3
&&
(
m
.
push
(
'<li class="page-first'
+
(
1
===
this
.
options
.
pageNumber
?
" active"
:
""
)
+
'">'
,
'<a href="#">'
,
1
,
"</a>"
,
"</li>"
),
d
++
),
this
.
options
.
pageNumber
>=
4
&&
(
4
==
this
.
options
.
pageNumber
||
6
==
this
.
totalPages
||
7
==
this
.
totalPages
?
d
--
:
m
.
push
(
'<li class="page-first-separator disabled">'
,
'<a href="#">...</a>'
,
"</li>"
),
e
--
)),
this
.
totalPages
>=
7
&&
this
.
options
.
pageNumber
>=
this
.
totalPages
-
2
&&
d
--
,
6
==
this
.
totalPages
?
this
.
options
.
pageNumber
>=
this
.
totalPages
-
2
&&
e
++
:
this
.
totalPages
>=
7
&&
(
7
==
this
.
totalPages
||
this
.
options
.
pageNumber
>=
this
.
totalPages
-
3
)
&&
e
++
,
b
=
d
;
e
>=
b
;
b
++
)
m
.
push
(
'<li class="page-number'
+
(
b
===
this
.
options
.
pageNumber
?
" active"
:
""
)
+
'">'
,
'<a href="#">'
,
b
,
"</a>"
,
"</li>"
);
this
.
totalPages
>=
8
&&
this
.
options
.
pageNumber
<=
this
.
totalPages
-
4
&&
m
.
push
(
'<li class="page-last-separator disabled">'
,
'<a href="#">...</a>'
,
"</li>"
),
this
.
totalPages
>=
6
&&
this
.
options
.
pageNumber
<=
this
.
totalPages
-
3
&&
m
.
push
(
'<li class="page-last'
+
(
this
.
totalPages
===
this
.
options
.
pageNumber
?
" active"
:
""
)
+
'">'
,
'<a href="#">'
,
this
.
totalPages
,
"</a>"
,
"</li>"
),
m
.
push
(
'<li class="page-next"><a href="#">'
+
this
.
options
.
paginationNextText
+
"</a></li>"
,
"</ul>"
,
"</div>"
)}
this
.
$pagination
.
html
(
m
.
join
(
""
)),
this
.
options
.
onlyInfoPagination
||
(
f
=
this
.
$pagination
.
find
(
".page-list a"
),
g
=
this
.
$pagination
.
find
(
".page-first"
),
h
=
this
.
$pagination
.
find
(
".page-pre"
),
i
=
this
.
$pagination
.
find
(
".page-next"
),
j
=
this
.
$pagination
.
find
(
".page-last"
),
k
=
this
.
$pagination
.
find
(
".page-number"
),
this
.
options
.
smartDisplay
&&
(
this
.
totalPages
<=
1
&&
this
.
$pagination
.
find
(
"div.pagination"
).
hide
(),(
p
.
length
<
2
||
this
.
options
.
totalRows
<=
p
[
0
])
&&
this
.
$pagination
.
find
(
"span.page-list"
).
hide
(),
this
.
$pagination
[
this
.
getData
().
length
?
"show"
:
"hide"
]()),
this
.
options
.
paginationLoop
||
(
1
===
this
.
options
.
pageNumber
&&
h
.
addClass
(
"disabled"
),
this
.
options
.
pageNumber
===
this
.
totalPages
&&
i
.
addClass
(
"disabled"
)),
n
&&
(
this
.
options
.
pageSize
=
this
.
options
.
formatAllRows
()),
f
.
off
(
"click"
).
on
(
"click"
,
a
.
proxy
(
this
.
onPageListChange
,
this
)),
g
.
off
(
"click"
).
on
(
"click"
,
a
.
proxy
(
this
.
onPageFirst
,
this
)),
h
.
off
(
"click"
).
on
(
"click"
,
a
.
proxy
(
this
.
onPagePre
,
this
)),
i
.
off
(
"click"
).
on
(
"click"
,
a
.
proxy
(
this
.
onPageNext
,
this
)),
j
.
off
(
"click"
).
on
(
"click"
,
a
.
proxy
(
this
.
onPageLast
,
this
)),
k
.
off
(
"click"
).
on
(
"click"
,
a
.
proxy
(
this
.
onPageNumber
,
this
)))},
o
.
prototype
.
updatePagination
=
function
(
b
){
b
&&
a
(
b
.
currentTarget
).
hasClass
(
"disabled"
)
||
(
this
.
options
.
maintainSelected
||
this
.
resetRows
(),
this
.
initPagination
(),
"server"
===
this
.
options
.
sidePagination
?
this
.
initServer
():
this
.
initBody
(),
this
.
trigger
(
"page-change"
,
this
.
options
.
pageNumber
,
this
.
options
.
pageSize
))},
o
.
prototype
.
onPageListChange
=
function
(
b
){
var
c
=
a
(
b
.
currentTarget
);
return
c
.
parent
().
addClass
(
"active"
).
siblings
().
removeClass
(
"active"
),
this
.
options
.
pageSize
=
c
.
text
().
toUpperCase
()
===
this
.
options
.
formatAllRows
().
toUpperCase
()?
this
.
options
.
formatAllRows
():
+
c
.
text
(),
this
.
$toolbar
.
find
(
".page-size"
).
text
(
this
.
options
.
pageSize
),
this
.
updatePagination
(
b
),
!
1
},
o
.
prototype
.
onPageFirst
=
function
(
a
){
return
this
.
options
.
pageNumber
=
1
,
this
.
updatePagination
(
a
),
!
1
},
o
.
prototype
.
onPagePre
=
function
(
a
){
return
this
.
options
.
pageNumber
-
1
===
0
?
this
.
options
.
pageNumber
=
this
.
options
.
totalPages
:
this
.
options
.
pageNumber
--
,
this
.
updatePagination
(
a
),
!
1
},
o
.
prototype
.
onPageNext
=
function
(
a
){
return
this
.
options
.
pageNumber
+
1
>
this
.
options
.
totalPages
?
this
.
options
.
pageNumber
=
1
:
this
.
options
.
pageNumber
++
,
this
.
updatePagination
(
a
),
!
1
},
o
.
prototype
.
onPageLast
=
function
(
a
){
return
this
.
options
.
pageNumber
=
this
.
totalPages
,
this
.
updatePagination
(
a
),
!
1
},
o
.
prototype
.
onPageNumber
=
function
(
b
){
return
this
.
options
.
pageNumber
!==+
a
(
b
.
currentTarget
).
text
()?(
this
.
options
.
pageNumber
=+
a
(
b
.
currentTarget
).
text
(),
this
.
updatePagination
(
b
),
!
1
):
void
0
},
o
.
prototype
.
initRow
=
function
(
b
,
e
){
var
f
,
g
=
this
,
i
=
[],
k
=
{},
m
=
[],
n
=
""
,
o
=
{},
p
=
[];
if
(
!
(
a
.
inArray
(
b
,
this
.
hiddenRows
)
>-
1
)){
if
(
k
=
h
(
this
.
options
,
this
.
options
.
rowStyle
,[
b
,
e
],
k
),
k
&&
k
.
css
)
for
(
f
in
k
.
css
)
m
.
push
(
f
+
": "
+
k
.
css
[
f
]);
if
(
o
=
h
(
this
.
options
,
this
.
options
.
rowAttributes
,[
b
,
e
],
o
))
for
(
f
in
o
)
p
.
push
(
c
(
'%s="%s"'
,
f
,
j
(
o
[
f
])));
return
b
.
_data
&&!
a
.
isEmptyObject
(
b
.
_data
)
&&
a
.
each
(
b
.
_data
,
function
(
a
,
b
){
"index"
!==
a
&&
(
n
+=
c
(
' data-%s="%s"'
,
a
,
b
))}),
i
.
push
(
"<tr"
,
c
(
" %s"
,
p
.
join
(
" "
)),
c
(
' id="%s"'
,
a
.
isArray
(
b
)?
void
0
:
b
.
_id
),
c
(
' class="%s"'
,
k
.
classes
||
(
a
.
isArray
(
b
)?
void
0
:
b
.
_class
)),
c
(
' data-index="%s"'
,
e
),
c
(
' data-uniqueid="%s"'
,
b
[
this
.
options
.
uniqueId
]),
c
(
"%s"
,
n
),
">"
),
this
.
options
.
cardView
&&
i
.
push
(
c
(
'<td colspan="%s"><div class="card-views">'
,
this
.
header
.
fields
.
length
)),
!
this
.
options
.
cardView
&&
this
.
options
.
detailView
&&
i
.
push
(
"<td>"
,
'<a class="detail-icon" href="#">'
,
c
(
'<i class="%s %s"></i>'
,
this
.
options
.
iconsPrefix
,
this
.
options
.
icons
.
detailOpen
),
"</a>"
,
"</td>"
),
a
.
each
(
this
.
header
.
fields
,
function
(
f
,
n
){
var
o
=
""
,
p
=
l
(
b
,
n
,
g
.
options
.
escape
),
q
=
""
,
r
=
""
,
s
=
{},
t
=
""
,
u
=
g
.
header
.
classes
[
f
],
v
=
""
,
w
=
""
,
x
=
""
,
y
=
""
,
z
=
g
.
columns
[
f
];
if
(
!
(
g
.
fromHtml
&&
"undefined"
==
typeof
p
||!
z
.
visible
||
g
.
options
.
cardView
&&!
z
.
cardVisible
)){
if
(
z
.
escape
&&
(
p
=
j
(
p
)),
k
=
c
(
'style="%s"'
,
m
.
concat
(
g
.
header
.
styles
[
f
]).
join
(
"; "
)),
b
[
"_"
+
n
+
"_id"
]
&&
(
t
=
c
(
' id="%s"'
,
b
[
"_"
+
n
+
"_id"
])),
b
[
"_"
+
n
+
"_class"
]
&&
(
u
=
c
(
' class="%s"'
,
b
[
"_"
+
n
+
"_class"
])),
b
[
"_"
+
n
+
"_rowspan"
]
&&
(
w
=
c
(
' rowspan="%s"'
,
b
[
"_"
+
n
+
"_rowspan"
])),
b
[
"_"
+
n
+
"_colspan"
]
&&
(
x
=
c
(
' colspan="%s"'
,
b
[
"_"
+
n
+
"_colspan"
])),
b
[
"_"
+
n
+
"_title"
]
&&
(
y
=
c
(
' title="%s"'
,
b
[
"_"
+
n
+
"_title"
])),
s
=
h
(
g
.
header
,
g
.
header
.
cellStyles
[
f
],[
p
,
b
,
e
,
n
],
s
),
s
.
classes
&&
(
u
=
c
(
' class="%s"'
,
s
.
classes
)),
s
.
css
){
var
A
=
[];
for
(
var
B
in
s
.
css
)
A
.
push
(
B
+
": "
+
s
.
css
[
B
]);
k
=
c
(
'style="%s"'
,
A
.
concat
(
g
.
header
.
styles
[
f
]).
join
(
"; "
))}
q
=
h
(
z
,
g
.
header
.
formatters
[
f
],[
p
,
b
,
e
],
p
),
b
[
"_"
+
n
+
"_data"
]
&&!
a
.
isEmptyObject
(
b
[
"_"
+
n
+
"_data"
])
&&
a
.
each
(
b
[
"_"
+
n
+
"_data"
],
function
(
a
,
b
){
"index"
!==
a
&&
(
v
+=
c
(
' data-%s="%s"'
,
a
,
b
))}),
z
.
checkbox
||
z
.
radio
?(
r
=
z
.
checkbox
?
"checkbox"
:
r
,
r
=
z
.
radio
?
"radio"
:
r
,
o
=
[
c
(
g
.
options
.
cardView
?
'<div class="card-view %s">'
:
'<td class="bs-checkbox %s">'
,
z
[
"class"
]
||
""
),
"<input"
+
c
(
' data-index="%s"'
,
e
)
+
c
(
' name="%s"'
,
g
.
options
.
selectItemName
)
+
c
(
' type="%s"'
,
r
)
+
c
(
' value="%s"'
,
b
[
g
.
options
.
idField
])
+
c
(
' checked="%s"'
,
q
===!
0
||
p
||
q
&&
q
.
checked
?
"checked"
:
void
0
)
+
c
(
' disabled="%s"'
,
!
z
.
checkboxEnabled
||
q
&&
q
.
disabled
?
"disabled"
:
void
0
)
+
" />"
,
g
.
header
.
formatters
[
f
]
&&
"string"
==
typeof
q
?
q
:
""
,
g
.
options
.
cardView
?
"</div>"
:
"</td>"
].
join
(
""
),
b
[
g
.
header
.
stateField
]
=
q
===!
0
||
q
&&
q
.
checked
):(
q
=
"undefined"
==
typeof
q
||
null
===
q
?
g
.
options
.
undefinedText
:
q
,
o
=
g
.
options
.
cardView
?[
'<div class="card-view">'
,
g
.
options
.
showHeader
?
c
(
'<span class="title" %s>%s</span>'
,
k
,
d
(
g
.
columns
,
"field"
,
"title"
,
n
)):
""
,
c
(
'<span class="value">%s</span>'
,
q
),
"</div>"
].
join
(
""
):[
c
(
"<td%s %s %s %s %s %s %s>"
,
t
,
u
,
k
,
v
,
w
,
x
,
y
),
q
,
"</td>"
].
join
(
""
),
g
.
options
.
cardView
&&
g
.
options
.
smartDisplay
&&
""
===
q
&&
(
o
=
'<div class="card-view"></div>'
)),
i
.
push
(
o
)}}),
this
.
options
.
cardView
&&
i
.
push
(
"</div></td>"
),
i
.
push
(
"</tr>"
),
i
.
join
(
" "
)}},
o
.
prototype
.
initBody
=
function
(
b
){
var
d
=
this
,
f
=
this
.
getData
();
this
.
trigger
(
"pre-body"
,
f
),
this
.
$body
=
this
.
$el
.
find
(
">tbody"
),
this
.
$body
.
length
||
(
this
.
$body
=
a
(
"<tbody></tbody>"
).
appendTo
(
this
.
$el
)),
this
.
options
.
pagination
&&
"server"
!==
this
.
options
.
sidePagination
||
(
this
.
pageFrom
=
1
,
this
.
pageTo
=
f
.
length
);
for
(
var
g
,
i
=
a
(
document
.
createDocumentFragment
()),
j
=
this
.
pageFrom
-
1
;
j
<
this
.
pageTo
;
j
++
){
var
k
=
f
[
j
],
m
=
this
.
initRow
(
k
,
j
,
f
,
i
);
g
=
g
||!!
m
,
m
&&
m
!==!
0
&&
i
.
append
(
m
)}
g
||
i
.
append
(
'<tr class="no-records-found">'
+
c
(
'<td colspan="%s">%s</td>'
,
this
.
$header
.
find
(
"th"
).
length
,
this
.
options
.
formatNoMatches
())
+
"</tr>"
),
this
.
$body
.
html
(
i
),
b
||
this
.
scrollTo
(
0
),
this
.
$body
.
find
(
"> tr[data-index] > td"
).
off
(
"click dblclick"
).
on
(
"click dblclick"
,
function
(
b
){
var
f
=
a
(
this
),
g
=
f
.
parent
(),
h
=
d
.
data
[
g
.
data
(
"index"
)],
i
=
f
[
0
].
cellIndex
,
j
=
d
.
getVisibleFields
(),
k
=
j
[
d
.
options
.
detailView
&&!
d
.
options
.
cardView
?
i
-
1
:
i
],
m
=
d
.
columns
[
e
(
d
.
columns
,
k
)],
n
=
l
(
h
,
k
,
d
.
options
.
escape
);
if
(
!
f
.
find
(
".detail-icon"
).
length
&&
(
d
.
trigger
(
"click"
===
b
.
type
?
"click-cell"
:
"dbl-click-cell"
,
k
,
n
,
h
,
f
),
d
.
trigger
(
"click"
===
b
.
type
?
"click-row"
:
"dbl-click-row"
,
h
,
g
,
k
),
"click"
===
b
.
type
&&
d
.
options
.
clickToSelect
&&
m
.
clickToSelect
)){
var
o
=
g
.
find
(
c
(
'[name="%s"]'
,
d
.
options
.
selectItemName
));
o
.
length
&&
o
[
0
].
click
()}}),
this
.
$body
.
find
(
"> tr[data-index] > td > .detail-icon"
).
off
(
"click"
).
on
(
"click"
,
function
(){
var
b
=
a
(
this
),
e
=
b
.
parent
().
parent
(),
g
=
e
.
data
(
"index"
),
i
=
f
[
g
];
if
(
e
.
next
().
is
(
"tr.detail-view"
))
b
.
find
(
"i"
).
attr
(
"class"
,
c
(
"%s %s"
,
d
.
options
.
iconsPrefix
,
d
.
options
.
icons
.
detailOpen
)),
d
.
trigger
(
"collapse-row"
,
g
,
i
),
e
.
next
().
remove
();
else
{
b
.
find
(
"i"
).
attr
(
"class"
,
c
(
"%s %s"
,
d
.
options
.
iconsPrefix
,
d
.
options
.
icons
.
detailClose
)),
e
.
after
(
c
(
'<tr class="detail-view"><td colspan="%s"></td></tr>'
,
e
.
find
(
"td"
).
length
));
var
j
=
e
.
next
().
find
(
"td"
),
k
=
h
(
d
.
options
,
d
.
options
.
detailFormatter
,[
g
,
i
,
j
],
""
);
1
===
j
.
length
&&
j
.
append
(
k
),
d
.
trigger
(
"expand-row"
,
g
,
i
,
j
)}
return
d
.
resetView
(),
!
1
}),
this
.
$selectItem
=
this
.
$body
.
find
(
c
(
'[name="%s"]'
,
this
.
options
.
selectItemName
)),
this
.
$selectItem
.
off
(
"click"
).
on
(
"click"
,
function
(
b
){
b
.
stopImmediatePropagation
();
var
c
=
a
(
this
),
e
=
c
.
prop
(
"checked"
),
f
=
d
.
data
[
c
.
data
(
"index"
)];
d
.
options
.
maintainSelected
&&
a
(
this
).
is
(
":radio"
)
&&
a
.
each
(
d
.
options
.
data
,
function
(
a
,
b
){
b
[
d
.
header
.
stateField
]
=!
1
}),
f
[
d
.
header
.
stateField
]
=
e
,
d
.
options
.
singleSelect
&&
(
d
.
$selectItem
.
not
(
this
).
each
(
function
(){
d
.
data
[
a
(
this
).
data
(
"index"
)][
d
.
header
.
stateField
]
=!
1
}),
d
.
$selectItem
.
filter
(
":checked"
).
not
(
this
).
prop
(
"checked"
,
!
1
)),
d
.
updateSelected
(),
d
.
trigger
(
e
?
"check"
:
"uncheck"
,
f
,
c
)}),
a
.
each
(
this
.
header
.
events
,
function
(
b
,
c
){
if
(
c
){
"string"
==
typeof
c
&&
(
c
=
h
(
null
,
c
));
var
e
=
d
.
header
.
fields
[
b
],
f
=
a
.
inArray
(
e
,
d
.
getVisibleFields
());
d
.
options
.
detailView
&&!
d
.
options
.
cardView
&&
(
f
+=
1
);
for
(
var
g
in
c
)
d
.
$body
.
find
(
">tr:not(.no-records-found)"
).
each
(
function
(){
var
b
=
a
(
this
),
h
=
b
.
find
(
d
.
options
.
cardView
?
".card-view"
:
"td"
).
eq
(
f
),
i
=
g
.
indexOf
(
" "
),
j
=
g
.
substring
(
0
,
i
),
k
=
g
.
substring
(
i
+
1
),
l
=
c
[
g
];
h
.
find
(
k
).
off
(
j
).
on
(
j
,
function
(
a
){
var
c
=
b
.
data
(
"index"
),
f
=
d
.
data
[
c
],
g
=
f
[
e
];
l
.
apply
(
this
,[
a
,
g
,
f
,
c
])})})}}),
this
.
updateSelected
(),
this
.
resetView
(),
this
.
trigger
(
"post-body"
,
f
)},
o
.
prototype
.
initServer
=
function
(
b
,
c
,
d
){
var
e
,
f
=
this
,
g
=
{},
i
=
{
searchText
:
this
.
searchText
,
sortName
:
this
.
options
.
sortName
,
sortOrder
:
this
.
options
.
sortOrder
};
this
.
options
.
pagination
&&
(
i
.
pageSize
=
this
.
options
.
pageSize
===
this
.
options
.
formatAllRows
()?
this
.
options
.
totalRows
:
this
.
options
.
pageSize
,
i
.
pageNumber
=
this
.
options
.
pageNumber
),(
d
||
this
.
options
.
url
||
this
.
options
.
ajax
)
&&
(
"limit"
===
this
.
options
.
queryParamsType
&&
(
i
=
{
search
:
i
.
searchText
,
sort
:
i
.
sortName
,
order
:
i
.
sortOrder
},
this
.
options
.
pagination
&&
(
i
.
offset
=
this
.
options
.
pageSize
===
this
.
options
.
formatAllRows
()?
0
:
this
.
options
.
pageSize
*
(
this
.
options
.
pageNumber
-
1
),
i
.
limit
=
this
.
options
.
pageSize
===
this
.
options
.
formatAllRows
()?
this
.
options
.
totalRows
:
this
.
options
.
pageSize
)),
a
.
isEmptyObject
(
this
.
filterColumnsPartial
)
||
(
i
.
filter
=
JSON
.
stringify
(
this
.
filterColumnsPartial
,
null
)),
g
=
h
(
this
.
options
,
this
.
options
.
queryParams
,[
i
],
g
),
a
.
extend
(
g
,
c
||
{}),
g
!==!
1
&&
(
b
||
this
.
$tableLoading
.
show
(),
e
=
a
.
extend
({},
h
(
null
,
this
.
options
.
ajaxOptions
),{
type
:
this
.
options
.
method
,
url
:
d
||
this
.
options
.
url
,
data
:
"application/json"
===
this
.
options
.
contentType
&&
"post"
===
this
.
options
.
method
?
JSON
.
stringify
(
g
):
g
,
cache
:
this
.
options
.
cache
,
contentType
:
this
.
options
.
contentType
,
dataType
:
this
.
options
.
dataType
,
success
:
function
(
a
){
a
=
h
(
f
.
options
,
f
.
options
.
responseHandler
,[
a
],
a
),
f
.
load
(
a
),
f
.
trigger
(
"load-success"
,
a
),
b
||
f
.
$tableLoading
.
hide
()},
error
:
function
(
a
){
f
.
trigger
(
"load-error"
,
a
.
status
,
a
),
b
||
f
.
$tableLoading
.
hide
()}}),
this
.
options
.
ajax
?
h
(
this
,
this
.
options
.
ajax
,[
e
],
null
):(
this
.
_xhr
&&
4
!==
this
.
_xhr
.
readyState
&&
this
.
_xhr
.
abort
(),
this
.
_xhr
=
a
.
ajax
(
e
))))},
o
.
prototype
.
initSearchText
=
function
(){
if
(
this
.
options
.
search
&&
""
!==
this
.
options
.
searchText
){
var
a
=
this
.
$toolbar
.
find
(
".search input"
);
a
.
val
(
this
.
options
.
searchText
),
this
.
onSearch
({
currentTarget
:
a
})}},
o
.
prototype
.
getCaret
=
function
(){
var
b
=
this
;
a
.
each
(
this
.
$header
.
find
(
"th"
),
function
(
c
,
d
){
a
(
d
).
find
(
".sortable"
).
removeClass
(
"desc asc"
).
addClass
(
a
(
d
).
data
(
"field"
)
===
b
.
options
.
sortName
?
b
.
options
.
sortOrder
:
"both"
)})},
o
.
prototype
.
updateSelected
=
function
(){
var
b
=
this
.
$selectItem
.
filter
(
":enabled"
).
length
&&
this
.
$selectItem
.
filter
(
":enabled"
).
length
===
this
.
$selectItem
.
filter
(
":enabled"
).
filter
(
":checked"
).
length
;
this
.
$selectAll
.
add
(
this
.
$selectAll_
).
prop
(
"checked"
,
b
),
this
.
$selectItem
.
each
(
function
(){
a
(
this
).
closest
(
"tr"
)[
a
(
this
).
prop
(
"checked"
)?
"addClass"
:
"removeClass"
](
"selected"
)})},
o
.
prototype
.
updateRows
=
function
(){
var
b
=
this
;
this
.
$selectItem
.
each
(
function
(){
b
.
data
[
a
(
this
).
data
(
"index"
)][
b
.
header
.
stateField
]
=
a
(
this
).
prop
(
"checked"
)})},
o
.
prototype
.
resetRows
=
function
(){
var
b
=
this
;
a
.
each
(
this
.
data
,
function
(
a
,
c
){
b
.
$selectAll
.
prop
(
"checked"
,
!
1
),
b
.
$selectItem
.
prop
(
"checked"
,
!
1
),
b
.
header
.
stateField
&&
(
c
[
b
.
header
.
stateField
]
=!
1
)}),
this
.
initHiddenRows
()},
o
.
prototype
.
trigger
=
function
(
b
){
var
c
=
Array
.
prototype
.
slice
.
call
(
arguments
,
1
);
b
+=
".bs.table"
,
this
.
options
[
o
.
EVENTS
[
b
]].
apply
(
this
.
options
,
c
),
this
.
$el
.
trigger
(
a
.
Event
(
b
),
c
),
this
.
options
.
onAll
(
b
,
c
),
this
.
$el
.
trigger
(
a
.
Event
(
"all.bs.table"
),[
b
,
c
])},
o
.
prototype
.
resetHeader
=
function
(){
clearTimeout
(
this
.
timeoutId_
),
this
.
timeoutId_
=
setTimeout
(
a
.
proxy
(
this
.
fitHeader
,
this
),
this
.
$el
.
is
(
":hidden"
)?
100
:
0
)},
o
.
prototype
.
fitHeader
=
function
(){
var
b
,
d
,
e
,
f
,
h
=
this
;
if
(
h
.
$el
.
is
(
":hidden"
))
return
void
(
h
.
timeoutId_
=
setTimeout
(
a
.
proxy
(
h
.
fitHeader
,
h
),
100
));
if
(
b
=
this
.
$tableBody
.
get
(
0
),
d
=
b
.
scrollWidth
>
b
.
clientWidth
&&
b
.
scrollHeight
>
b
.
clientHeight
+
this
.
$header
.
outerHeight
()?
g
():
0
,
this
.
$el
.
css
(
"margin-top"
,
-
this
.
$header
.
outerHeight
()),
e
=
a
(
":focus"
),
e
.
length
>
0
){
var
i
=
e
.
parents
(
"th"
);
if
(
i
.
length
>
0
){
var
j
=
i
.
attr
(
"data-field"
);
if
(
void
0
!==
j
){
var
k
=
this
.
$header
.
find
(
"[data-field='"
+
j
+
"']"
);
k
.
length
>
0
&&
k
.
find
(
":input"
).
addClass
(
"focus-temp"
)}}}
this
.
$header_
=
this
.
$header
.
clone
(
!
0
,
!
0
),
this
.
$selectAll_
=
this
.
$header_
.
find
(
'[name="btSelectAll"]'
),
this
.
$tableHeader
.
css
({
"margin-right"
:
d
}).
find
(
"table"
).
css
(
"width"
,
this
.
$el
.
outerWidth
()).
html
(
""
).
attr
(
"class"
,
this
.
$el
.
attr
(
"class"
)).
append
(
this
.
$header_
),
f
=
a
(
".focus-temp:visible:eq(0)"
),
f
.
length
>
0
&&
(
f
.
focus
(),
this
.
$header
.
find
(
".focus-temp"
).
removeClass
(
"focus-temp"
)),
this
.
$header
.
find
(
"th[data-field]"
).
each
(
function
(){
h
.
$header_
.
find
(
c
(
'th[data-field="%s"]'
,
a
(
this
).
data
(
"field"
))).
data
(
a
(
this
).
data
())});
var
l
=
this
.
getVisibleFields
(),
m
=
this
.
$header_
.
find
(
"th"
);
this
.
$body
.
find
(
">tr:first-child:not(.no-records-found) > *"
).
each
(
function
(
b
){
var
d
=
a
(
this
),
e
=
b
;
h
.
options
.
detailView
&&!
h
.
options
.
cardView
&&
(
0
===
b
&&
h
.
$header_
.
find
(
"th.detail"
).
find
(
".fht-cell"
).
width
(
d
.
innerWidth
()),
e
=
b
-
1
);
var
f
=
h
.
$header_
.
find
(
c
(
'th[data-field="%s"]'
,
l
[
e
]));
f
.
length
>
1
&&
(
f
=
a
(
m
[
d
[
0
].
cellIndex
])),
f
.
find
(
".fht-cell"
).
width
(
d
.
innerWidth
())}),
this
.
$tableBody
.
off
(
"scroll"
).
on
(
"scroll"
,
function
(){
h
.
$tableHeader
.
scrollLeft
(
a
(
this
).
scrollLeft
()),
h
.
options
.
showFooter
&&!
h
.
options
.
cardView
&&
h
.
$tableFooter
.
scrollLeft
(
a
(
this
).
scrollLeft
())}),
h
.
trigger
(
"post-header"
)},
o
.
prototype
.
resetFooter
=
function
(){
var
b
=
this
,
d
=
b
.
getData
(),
e
=
[];
this
.
options
.
showFooter
&&!
this
.
options
.
cardView
&&
(
!
this
.
options
.
cardView
&&
this
.
options
.
detailView
&&
e
.
push
(
'<td><div class="th-inner"> </div><div class="fht-cell"></div></td>'
),
a
.
each
(
this
.
columns
,
function
(
a
,
f
){
var
g
,
i
=
""
,
j
=
""
,
k
=
[],
l
=
{},
m
=
c
(
' class="%s"'
,
f
[
"class"
]);
if
(
f
.
visible
&&
(
!
b
.
options
.
cardView
||
f
.
cardVisible
)){
if
(
i
=
c
(
"text-align: %s; "
,
f
.
falign
?
f
.
falign
:
f
.
align
),
j
=
c
(
"vertical-align: %s; "
,
f
.
valign
),
l
=
h
(
null
,
b
.
options
.
footerStyle
),
l
&&
l
.
css
)
for
(
g
in
l
.
css
)
k
.
push
(
g
+
": "
+
l
.
css
[
g
]);
e
.
push
(
"<td"
,
m
,
c
(
' style="%s"'
,
i
+
j
+
k
.
concat
().
join
(
"; "
)),
">"
),
e
.
push
(
'<div class="th-inner">'
),
e
.
push
(
h
(
f
,
f
.
footerFormatter
,[
d
],
" "
)
||
" "
),
e
.
push
(
"</div>"
),
e
.
push
(
'<div class="fht-cell"></div>'
),
e
.
push
(
"</div>"
),
e
.
push
(
"</td>"
)}}),
this
.
$tableFooter
.
find
(
"tr"
).
html
(
e
.
join
(
""
)),
this
.
$tableFooter
.
show
(),
clearTimeout
(
this
.
timeoutFooter_
),
this
.
timeoutFooter_
=
setTimeout
(
a
.
proxy
(
this
.
fitFooter
,
this
),
this
.
$el
.
is
(
":hidden"
)?
100
:
0
))},
o
.
prototype
.
fitFooter
=
function
(){
var
b
,
c
,
d
;
return
clearTimeout
(
this
.
timeoutFooter_
),
this
.
$el
.
is
(
":hidden"
)?
void
(
this
.
timeoutFooter_
=
setTimeout
(
a
.
proxy
(
this
.
fitFooter
,
this
),
100
)):(
c
=
this
.
$el
.
css
(
"width"
),
d
=
c
>
this
.
$tableBody
.
width
()?
g
():
0
,
this
.
$tableFooter
.
css
({
"margin-right"
:
d
}).
find
(
"table"
).
css
(
"width"
,
c
).
attr
(
"class"
,
this
.
$el
.
attr
(
"class"
)),
b
=
this
.
$tableFooter
.
find
(
"td"
),
void
this
.
$body
.
find
(
">tr:first-child:not(.no-records-found) > *"
).
each
(
function
(
c
){
var
d
=
a
(
this
);
b
.
eq
(
c
).
find
(
".fht-cell"
).
width
(
d
.
innerWidth
())}))},
o
.
prototype
.
toggleColumn
=
function
(
a
,
b
,
d
){
if
(
-
1
!==
a
&&
(
this
.
columns
[
a
].
visible
=
b
,
this
.
initHeader
(),
this
.
initSearch
(),
this
.
initPagination
(),
this
.
initBody
(),
this
.
options
.
showColumns
)){
var
e
=
this
.
$toolbar
.
find
(
".keep-open input"
).
prop
(
"disabled"
,
!
1
);
d
&&
e
.
filter
(
c
(
'[value="%s"]'
,
a
)).
prop
(
"checked"
,
b
),
e
.
filter
(
":checked"
).
length
<=
this
.
options
.
minimumCountColumns
&&
e
.
filter
(
":checked"
).
prop
(
"disabled"
,
!
0
)}},
o
.
prototype
.
getVisibleFields
=
function
(){
var
b
=
this
,
c
=
[];
return
a
.
each
(
this
.
header
.
fields
,
function
(
a
,
d
){
var
f
=
b
.
columns
[
e
(
b
.
columns
,
d
)];
f
.
visible
&&
c
.
push
(
d
)}),
c
},
o
.
prototype
.
resetView
=
function
(
a
){
var
b
=
0
;
if
(
a
&&
a
.
height
&&
(
this
.
options
.
height
=
a
.
height
),
this
.
$selectAll
.
prop
(
"checked"
,
this
.
$selectItem
.
length
>
0
&&
this
.
$selectItem
.
length
===
this
.
$selectItem
.
filter
(
":checked"
).
length
),
this
.
options
.
height
){
var
c
=
this
.
$toolbar
.
outerHeight
(
!
0
),
d
=
this
.
$pagination
.
outerHeight
(
!
0
),
e
=
this
.
options
.
height
-
c
-
d
;
this
.
$tableContainer
.
css
(
"height"
,
e
+
"px"
)}
return
this
.
options
.
cardView
?(
this
.
$el
.
css
(
"margin-top"
,
"0"
),
this
.
$tableContainer
.
css
(
"padding-bottom"
,
"0"
),
void
this
.
$tableFooter
.
hide
()):(
this
.
options
.
showHeader
&&
this
.
options
.
height
?(
this
.
$tableHeader
.
show
(),
this
.
resetHeader
(),
b
+=
this
.
$header
.
outerHeight
()):(
this
.
$tableHeader
.
hide
(),
this
.
trigger
(
"post-header"
)),
this
.
options
.
showFooter
&&
(
this
.
resetFooter
(),
this
.
options
.
height
&&
(
b
+=
this
.
$tableFooter
.
outerHeight
()
+
1
)),
this
.
getCaret
(),
this
.
$tableContainer
.
css
(
"padding-bottom"
,
b
+
"px"
),
void
this
.
trigger
(
"reset-view"
))},
o
.
prototype
.
getData
=
function
(
b
){
return
!
this
.
searchText
&&
a
.
isEmptyObject
(
this
.
filterColumns
)
&&
a
.
isEmptyObject
(
this
.
filterColumnsPartial
)?
b
?
this
.
options
.
data
.
slice
(
this
.
pageFrom
-
1
,
this
.
pageTo
):
this
.
options
.
data
:
b
?
this
.
data
.
slice
(
this
.
pageFrom
-
1
,
this
.
pageTo
):
this
.
data
},
o
.
prototype
.
load
=
function
(
b
){
var
c
=!
1
;
"server"
===
this
.
options
.
sidePagination
?(
this
.
options
.
totalRows
=
b
[
this
.
options
.
totalField
],
c
=
b
.
fixedScroll
,
b
=
b
[
this
.
options
.
dataField
]):
a
.
isArray
(
b
)
||
(
c
=
b
.
fixedScroll
,
b
=
b
.
data
),
this
.
initData
(
b
),
this
.
initSearch
(),
this
.
initPagination
(),
this
.
initBody
(
c
)},
o
.
prototype
.
append
=
function
(
a
){
this
.
initData
(
a
,
"append"
),
this
.
initSearch
(),
this
.
initPagination
(),
this
.
initSort
(),
this
.
initBody
(
!
0
)},
o
.
prototype
.
prepend
=
function
(
a
){
this
.
initData
(
a
,
"prepend"
),
this
.
initSearch
(),
this
.
initPagination
(),
this
.
initSort
(),
this
.
initBody
(
!
0
)},
o
.
prototype
.
remove
=
function
(
b
){
var
c
,
d
,
e
=
this
.
options
.
data
.
length
;
if
(
b
.
hasOwnProperty
(
"field"
)
&&
b
.
hasOwnProperty
(
"values"
)){
for
(
c
=
e
-
1
;
c
>=
0
;
c
--
)
d
=
this
.
options
.
data
[
c
],
d
.
hasOwnProperty
(
b
.
field
)
&&-
1
!==
a
.
inArray
(
d
[
b
.
field
],
b
.
values
)
&&
(
this
.
options
.
data
.
splice
(
c
,
1
),
"server"
===
this
.
options
.
sidePagination
&&
(
this
.
options
.
totalRows
-=
1
));
e
!==
this
.
options
.
data
.
length
&&
(
this
.
initSearch
(),
this
.
initPagination
(),
this
.
initSort
(),
this
.
initBody
(
!
0
))}},
o
.
prototype
.
removeAll
=
function
(){
this
.
options
.
data
.
length
>
0
&&
(
this
.
options
.
data
.
splice
(
0
,
this
.
options
.
data
.
length
),
this
.
initSearch
(),
this
.
initPagination
(),
this
.
initBody
(
!
0
))},
o
.
prototype
.
getRowByUniqueId
=
function
(
a
){
var
b
,
c
,
d
,
e
=
this
.
options
.
uniqueId
,
f
=
this
.
options
.
data
.
length
,
g
=
null
;
for
(
b
=
f
-
1
;
b
>=
0
;
b
--
){
if
(
c
=
this
.
options
.
data
[
b
],
c
.
hasOwnProperty
(
e
))
d
=
c
[
e
];
else
{
if
(
!
c
.
_data
.
hasOwnProperty
(
e
))
continue
;
d
=
c
.
_data
[
e
]}
if
(
"string"
==
typeof
d
?
a
=
a
.
toString
():
"number"
==
typeof
d
&&
(
Number
(
d
)
===
d
&&
d
%
1
===
0
?
a
=
parseInt
(
a
):
d
===
Number
(
d
)
&&
0
!==
d
&&
(
a
=
parseFloat
(
a
))),
d
===
a
){
g
=
c
;
break
}}
return
g
},
o
.
prototype
.
removeByUniqueId
=
function
(
a
){
var
b
=
this
.
options
.
data
.
length
,
c
=
this
.
getRowByUniqueId
(
a
);
c
&&
this
.
options
.
data
.
splice
(
this
.
options
.
data
.
indexOf
(
c
),
1
),
b
!==
this
.
options
.
data
.
length
&&
(
this
.
initSearch
(),
this
.
initPagination
(),
this
.
initBody
(
!
0
))},
o
.
prototype
.
updateByUniqueId
=
function
(
b
){
var
c
=
this
,
d
=
a
.
isArray
(
b
)?
b
:[
b
];
a
.
each
(
d
,
function
(
b
,
d
){
var
e
;
d
.
hasOwnProperty
(
"id"
)
&&
d
.
hasOwnProperty
(
"row"
)
&&
(
e
=
a
.
inArray
(
c
.
getRowByUniqueId
(
d
.
id
),
c
.
options
.
data
),
-
1
!==
e
&&
a
.
extend
(
c
.
options
.
data
[
e
],
d
.
row
))}),
this
.
initSearch
(),
this
.
initPagination
(),
this
.
initSort
(),
this
.
initBody
(
!
0
)},
o
.
prototype
.
insertRow
=
function
(
a
){
a
.
hasOwnProperty
(
"index"
)
&&
a
.
hasOwnProperty
(
"row"
)
&&
(
this
.
data
.
splice
(
a
.
index
,
0
,
a
.
row
),
this
.
initSearch
(),
this
.
initPagination
(),
this
.
initSort
(),
this
.
initBody
(
!
0
))},
o
.
prototype
.
updateRow
=
function
(
b
){
var
c
=
this
,
d
=
a
.
isArray
(
b
)?
b
:[
b
];
a
.
each
(
d
,
function
(
b
,
d
){
d
.
hasOwnProperty
(
"index"
)
&&
d
.
hasOwnProperty
(
"row"
)
&&
a
.
extend
(
c
.
options
.
data
[
d
.
index
],
d
.
row
)}),
this
.
initSearch
(),
this
.
initPagination
(),
this
.
initSort
(),
this
.
initBody
(
!
0
)},
o
.
prototype
.
initHiddenRows
=
function
(){
this
.
hiddenRows
=
[]},
o
.
prototype
.
showRow
=
function
(
a
){
this
.
toggleRow
(
a
,
!
0
)},
o
.
prototype
.
hideRow
=
function
(
a
){
this
.
toggleRow
(
a
,
!
1
)},
o
.
prototype
.
toggleRow
=
function
(
b
,
c
){
var
d
,
e
;
b
.
hasOwnProperty
(
"index"
)?
d
=
this
.
getData
()[
b
.
index
]:
b
.
hasOwnProperty
(
"uniqueId"
)
&&
(
d
=
this
.
getRowByUniqueId
(
b
.
uniqueId
)),
d
&&
(
e
=
a
.
inArray
(
d
,
this
.
hiddenRows
),
c
||-
1
!==
e
?
c
&&
e
>-
1
&&
this
.
hiddenRows
.
splice
(
e
,
1
):
this
.
hiddenRows
.
push
(
d
),
this
.
initBody
(
!
0
))},
o
.
prototype
.
getHiddenRows
=
function
(){
var
b
=
this
,
c
=
this
.
getData
(),
d
=
[];
return
a
.
each
(
c
,
function
(
c
,
e
){
a
.
inArray
(
e
,
b
.
hiddenRows
)
>-
1
&&
d
.
push
(
e
)}),
this
.
hiddenRows
=
d
,
d
},
o
.
prototype
.
mergeCells
=
function
(
b
){
var
c
,
d
,
e
,
f
=
b
.
index
,
g
=
a
.
inArray
(
b
.
field
,
this
.
getVisibleFields
()),
h
=
b
.
rowspan
||
1
,
i
=
b
.
colspan
||
1
,
j
=
this
.
$body
.
find
(
">tr"
);
if
(
this
.
options
.
detailView
&&!
this
.
options
.
cardView
&&
(
g
+=
1
),
e
=
j
.
eq
(
f
).
find
(
">td"
).
eq
(
g
),
!
(
0
>
f
||
0
>
g
||
f
>=
this
.
data
.
length
)){
for
(
c
=
f
;
f
+
h
>
c
;
c
++
)
for
(
d
=
g
;
g
+
i
>
d
;
d
++
)
j
.
eq
(
c
).
find
(
">td"
).
eq
(
d
).
hide
();
e
.
attr
(
"rowspan"
,
h
).
attr
(
"colspan"
,
i
).
show
()}},
o
.
prototype
.
updateCell
=
function
(
a
){
a
.
hasOwnProperty
(
"index"
)
&&
a
.
hasOwnProperty
(
"field"
)
&&
a
.
hasOwnProperty
(
"value"
)
&&
(
this
.
data
[
a
.
index
][
a
.
field
]
=
a
.
value
,
a
.
reinit
!==!
1
&&
(
this
.
initSort
(),
this
.
initBody
(
!
0
)))},
o
.
prototype
.
getOptions
=
function
(){
return
this
.
options
},
o
.
prototype
.
getSelections
=
function
(){
var
b
=
this
;
return
a
.
grep
(
this
.
options
.
data
,
function
(
a
){
return
a
[
b
.
header
.
stateField
]
===!
0
})},
o
.
prototype
.
getAllSelections
=
function
(){
var
b
=
this
;
return
a
.
grep
(
this
.
options
.
data
,
function
(
a
){
return
a
[
b
.
header
.
stateField
]})},
o
.
prototype
.
checkAll
=
function
(){
this
.
checkAll_
(
!
0
)},
o
.
prototype
.
uncheckAll
=
function
(){
this
.
checkAll_
(
!
1
)},
o
.
prototype
.
checkInvert
=
function
(){
var
b
=
this
,
c
=
b
.
$selectItem
.
filter
(
":enabled"
),
d
=
c
.
filter
(
":checked"
);
c
.
each
(
function
(){
a
(
this
).
prop
(
"checked"
,
!
a
(
this
).
prop
(
"checked"
))}),
b
.
updateRows
(),
b
.
updateSelected
(),
b
.
trigger
(
"uncheck-some"
,
d
),
d
=
b
.
getSelections
(),
b
.
trigger
(
"check-some"
,
d
)},
o
.
prototype
.
checkAll_
=
function
(
a
){
var
b
;
a
||
(
b
=
this
.
getSelections
()),
this
.
$selectAll
.
add
(
this
.
$selectAll_
).
prop
(
"checked"
,
a
),
this
.
$selectItem
.
filter
(
":enabled"
).
prop
(
"checked"
,
a
),
this
.
updateRows
(),
a
&&
(
b
=
this
.
getSelections
()),
this
.
trigger
(
a
?
"check-all"
:
"uncheck-all"
,
b
)},
o
.
prototype
.
check
=
function
(
a
){
this
.
check_
(
!
0
,
a
)},
o
.
prototype
.
uncheck
=
function
(
a
){
this
.
check_
(
!
1
,
a
)},
o
.
prototype
.
check_
=
function
(
a
,
b
){
var
d
=
this
.
$selectItem
.
filter
(
c
(
'[data-index="%s"]'
,
b
)).
prop
(
"checked"
,
a
);
this
.
data
[
b
][
this
.
header
.
stateField
]
=
a
,
this
.
updateSelected
(),
this
.
trigger
(
a
?
"check"
:
"uncheck"
,
this
.
data
[
b
],
d
)},
o
.
prototype
.
checkBy
=
function
(
a
){
this
.
checkBy_
(
!
0
,
a
)},
o
.
prototype
.
uncheckBy
=
function
(
a
){
this
.
checkBy_
(
!
1
,
a
)},
o
.
prototype
.
checkBy_
=
function
(
b
,
d
){
if
(
d
.
hasOwnProperty
(
"field"
)
&&
d
.
hasOwnProperty
(
"values"
)){
var
e
=
this
,
f
=
[];
a
.
each
(
this
.
options
.
data
,
function
(
g
,
h
){
if
(
!
h
.
hasOwnProperty
(
d
.
field
))
return
!
1
;
if
(
-
1
!==
a
.
inArray
(
h
[
d
.
field
],
d
.
values
)){
var
i
=
e
.
$selectItem
.
filter
(
":enabled"
).
filter
(
c
(
'[data-index="%s"]'
,
g
)).
prop
(
"checked"
,
b
);
h
[
e
.
header
.
stateField
]
=
b
,
f
.
push
(
h
),
e
.
trigger
(
b
?
"check"
:
"uncheck"
,
h
,
i
)}}),
this
.
updateSelected
(),
this
.
trigger
(
b
?
"check-some"
:
"uncheck-some"
,
f
)}},
o
.
prototype
.
destroy
=
function
(){
this
.
$el
.
insertBefore
(
this
.
$container
),
a
(
this
.
options
.
toolbar
).
insertBefore
(
this
.
$el
),
this
.
$container
.
next
().
remove
(),
this
.
$container
.
remove
(),
this
.
$el
.
html
(
this
.
$el_
.
html
()).
css
(
"margin-top"
,
"0"
).
attr
(
"class"
,
this
.
$el_
.
attr
(
"class"
)
||
""
)},
o
.
prototype
.
showLoading
=
function
(){
this
.
$tableLoading
.
show
()},
o
.
prototype
.
hideLoading
=
function
(){
this
.
$tableLoading
.
hide
()},
o
.
prototype
.
togglePagination
=
function
(){
this
.
options
.
pagination
=!
this
.
options
.
pagination
;
var
a
=
this
.
$toolbar
.
find
(
'button[name="paginationSwitch"] i'
);
this
.
options
.
pagination
?
a
.
attr
(
"class"
,
this
.
options
.
iconsPrefix
+
" "
+
this
.
options
.
icons
.
paginationSwitchDown
):
a
.
attr
(
"class"
,
this
.
options
.
iconsPrefix
+
" "
+
this
.
options
.
icons
.
paginationSwitchUp
),
this
.
updatePagination
()},
o
.
prototype
.
refresh
=
function
(
a
){
a
&&
a
.
url
&&
(
this
.
options
.
url
=
a
.
url
),
a
&&
a
.
pageNumber
&&
(
this
.
options
.
pageNumber
=
a
.
pageNumber
),
a
&&
a
.
pageSize
&&
(
this
.
options
.
pageSize
=
a
.
pageSize
),
this
.
initServer
(
a
&&
a
.
silent
,
a
&&
a
.
query
,
a
&&
a
.
url
),
this
.
trigger
(
"refresh"
,
a
)},
o
.
prototype
.
resetWidth
=
function
(){
this
.
options
.
showHeader
&&
this
.
options
.
height
&&
this
.
fitHeader
(),
this
.
options
.
showFooter
&&
this
.
fitFooter
()},
o
.
prototype
.
showColumn
=
function
(
a
){
this
.
toggleColumn
(
e
(
this
.
columns
,
a
),
!
0
,
!
0
)},
o
.
prototype
.
hideColumn
=
function
(
a
){
this
.
toggleColumn
(
e
(
this
.
columns
,
a
),
!
1
,
!
0
)},
o
.
prototype
.
getHiddenColumns
=
function
(){
return
a
.
grep
(
this
.
columns
,
function
(
a
){
return
!
a
.
visible
})},
o
.
prototype
.
getVisibleColumns
=
function
(){
return
a
.
grep
(
this
.
columns
,
function
(
a
){
return
a
.
visible
})},
o
.
prototype
.
toggleAllColumns
=
function
(
b
){
if
(
a
.
each
(
this
.
columns
,
function
(
a
){
this
.
columns
[
a
].
visible
=
b
}),
this
.
initHeader
(),
this
.
initSearch
(),
this
.
initPagination
(),
this
.
initBody
(),
this
.
options
.
showColumns
){
var
c
=
this
.
$toolbar
.
find
(
".keep-open input"
).
prop
(
"disabled"
,
!
1
);
c
.
filter
(
":checked"
).
length
<=
this
.
options
.
minimumCountColumns
&&
c
.
filter
(
":checked"
).
prop
(
"disabled"
,
!
0
)}},
o
.
prototype
.
showAllColumns
=
function
(){
this
.
toggleAllColumns
(
!
0
)},
o
.
prototype
.
hideAllColumns
=
function
(){
this
.
toggleAllColumns
(
!
1
)},
o
.
prototype
.
filterBy
=
function
(
b
){
this
.
filterColumns
=
a
.
isEmptyObject
(
b
)?{}:
b
,
this
.
options
.
pageNumber
=
1
,
this
.
initSearch
(),
this
.
updatePagination
()},
o
.
prototype
.
scrollTo
=
function
(
a
){
return
"string"
==
typeof
a
&&
(
a
=
"bottom"
===
a
?
this
.
$tableBody
[
0
].
scrollHeight
:
0
),
"number"
==
typeof
a
&&
this
.
$tableBody
.
scrollTop
(
a
),
"undefined"
==
typeof
a
?
this
.
$tableBody
.
scrollTop
():
void
0
},
o
.
prototype
.
getScrollPosition
=
function
(){
return
this
.
scrollTo
()},
o
.
prototype
.
selectPage
=
function
(
a
){
a
>
0
&&
a
<=
this
.
options
.
totalPages
&&
(
this
.
options
.
pageNumber
=
a
,
this
.
updatePagination
())},
o
.
prototype
.
prevPage
=
function
(){
this
.
options
.
pageNumber
>
1
&&
(
this
.
options
.
pageNumber
--
,
this
.
updatePagination
())},
o
.
prototype
.
nextPage
=
function
(){
this
.
options
.
pageNumber
<
this
.
options
.
totalPages
&&
(
this
.
options
.
pageNumber
++
,
this
.
updatePagination
())},
o
.
prototype
.
toggleView
=
function
(){
this
.
options
.
cardView
=!
this
.
options
.
cardView
,
this
.
initHeader
(),
this
.
initBody
(),
this
.
trigger
(
"toggle"
,
this
.
options
.
cardView
)},
o
.
prototype
.
refreshOptions
=
function
(
b
){
i
(
this
.
options
,
b
,
!
0
)
||
(
this
.
options
=
a
.
extend
(
this
.
options
,
b
),
this
.
trigger
(
"refresh-options"
,
this
.
options
),
this
.
destroy
(),
this
.
init
())},
o
.
prototype
.
resetSearch
=
function
(
a
){
var
b
=
this
.
$toolbar
.
find
(
".search input"
);
b
.
val
(
a
||
""
),
this
.
onSearch
({
currentTarget
:
b
})},
o
.
prototype
.
expandRow_
=
function
(
a
,
b
){
var
d
=
this
.
$body
.
find
(
c
(
'> tr[data-index="%s"]'
,
b
));
d
.
next
().
is
(
"tr.detail-view"
)
===
(
a
?
!
1
:
!
0
)
&&
d
.
find
(
"> td > .detail-icon"
).
click
()},
o
.
prototype
.
expandRow
=
function
(
a
){
this
.
expandRow_
(
!
0
,
a
)},
o
.
prototype
.
collapseRow
=
function
(
a
){
this
.
expandRow_
(
!
1
,
a
)},
o
.
prototype
.
expandAllRows
=
function
(
b
){
if
(
b
){
var
d
=
this
.
$body
.
find
(
c
(
'> tr[data-index="%s"]'
,
0
)),
e
=
this
,
f
=
null
,
g
=!
1
,
h
=-
1
;
if
(
d
.
next
().
is
(
"tr.detail-view"
)?
d
.
next
().
next
().
is
(
"tr.detail-view"
)
||
(
d
.
next
().
find
(
".detail-icon"
).
click
(),
g
=!
0
):(
d
.
find
(
"> td > .detail-icon"
).
click
(),
g
=!
0
),
g
)
try
{
h
=
setInterval
(
function
(){
f
=
e
.
$body
.
find
(
"tr.detail-view"
).
last
().
find
(
".detail-icon"
),
f
.
length
>
0
?
f
.
click
():
clearInterval
(
h
)},
1
)}
catch
(
i
){
clearInterval
(
h
)}}
else
for
(
var
j
=
this
.
$body
.
children
(),
k
=
0
;
k
<
j
.
length
;
k
++
)
this
.
expandRow_
(
!
0
,
a
(
j
[
k
]).
data
(
"index"
))},
o
.
prototype
.
collapseAllRows
=
function
(
b
){
if
(
b
)
this
.
expandRow_
(
!
1
,
0
);
else
for
(
var
c
=
this
.
$body
.
children
(),
d
=
0
;
d
<
c
.
length
;
d
++
)
this
.
expandRow_
(
!
1
,
a
(
c
[
d
]).
data
(
"index"
))},
o
.
prototype
.
updateFormatText
=
function
(
a
,
b
){
this
.
options
[
c
(
"format%s"
,
a
)]
&&
(
"string"
==
typeof
b
?
this
.
options
[
c
(
"format%s"
,
a
)]
=
function
(){
return
b
}:
"function"
==
typeof
b
&&
(
this
.
options
[
c
(
"format%s"
,
a
)]
=
b
)),
this
.
initToolbar
(),
this
.
initPagination
(),
this
.
initBody
()};
var
p
=
[
"getOptions"
,
"getSelections"
,
"getAllSelections"
,
"getData"
,
"load"
,
"append"
,
"prepend"
,
"remove"
,
"removeAll"
,
"insertRow"
,
"updateRow"
,
"updateCell"
,
"updateByUniqueId"
,
"removeByUniqueId"
,
"getRowByUniqueId"
,
"showRow"
,
"hideRow"
,
"getHiddenRows"
,
"mergeCells"
,
"checkAll"
,
"uncheckAll"
,
"checkInvert"
,
"check"
,
"uncheck"
,
"checkBy"
,
"uncheckBy"
,
"refresh"
,
"resetView"
,
"resetWidth"
,
"destroy"
,
"showLoading"
,
"hideLoading"
,
"showColumn"
,
"hideColumn"
,
"getHiddenColumns"
,
"getVisibleColumns"
,
"showAllColumns"
,
"hideAllColumns"
,
"filterBy"
,
"scrollTo"
,
"getScrollPosition"
,
"selectPage"
,
"prevPage"
,
"nextPage"
,
"togglePagination"
,
"toggleView"
,
"refreshOptions"
,
"resetSearch"
,
"expandRow"
,
"collapseRow"
,
"expandAllRows"
,
"collapseAllRows"
,
"updateFormatText"
];
a
.
fn
.
bootstrapTable
=
function
(
b
){
var
c
,
d
=
Array
.
prototype
.
slice
.
call
(
arguments
,
1
);
return
this
.
each
(
function
(){
var
e
=
a
(
this
),
f
=
e
.
data
(
"bootstrap.table"
),
g
=
a
.
extend
({},
o
.
DEFAULTS
,
e
.
data
(),
"object"
==
typeof
b
&&
b
);
if
(
"string"
==
typeof
b
){
if
(
a
.
inArray
(
b
,
p
)
<
0
)
throw
new
Error
(
"Unknown method: "
+
b
);
if
(
!
f
)
return
;
c
=
f
[
b
].
apply
(
f
,
d
),
"destroy"
===
b
&&
e
.
removeData
(
"bootstrap.table"
)}
f
||
e
.
data
(
"bootstrap.table"
,
f
=
new
o
(
this
,
g
))}),
"undefined"
==
typeof
c
?
this
:
c
},
a
.
fn
.
bootstrapTable
.
Constructor
=
o
,
a
.
fn
.
bootstrapTable
.
defaults
=
o
.
DEFAULTS
,
a
.
fn
.
bootstrapTable
.
columnDefaults
=
o
.
COLUMN_DEFAULTS
,
a
.
fn
.
bootstrapTable
.
locales
=
o
.
LOCALES
,
a
.
fn
.
bootstrapTable
.
methods
=
p
,
a
.
fn
.
bootstrapTable
.
utils
=
{
sprintf
:
c
,
getFieldIndex
:
e
,
compareObjects
:
i
,
calculateObjectValue
:
h
,
getItemField
:
l
,
objectKeys
:
n
,
isIEBrowser
:
m
},
a
(
function
(){
a
(
'[data-toggle="table"]'
).
bootstrapTable
()})}(
jQuery
);
\ No newline at end of file
var
k
=
f
[
j
],
m
=
this
.
initRow
(
k
,
j
,
f
,
i
);
g
=
g
||!!
m
,
m
&&
m
!==!
0
&&
i
.
append
(
m
)}
g
||
i
.
append
(
'<tr class="no-records-found">'
+
c
(
'<td colspan="%s">%s</td>'
,
this
.
$header
.
find
(
"th"
).
length
,
this
.
options
.
formatNoMatches
())
+
"</tr>"
),
this
.
$body
.
html
(
i
),
b
||
this
.
scrollTo
(
0
),
this
.
$body
.
find
(
"> tr[data-index] > td"
).
off
(
"click dblclick"
).
on
(
"click dblclick"
,
function
(
b
){
var
f
=
a
(
this
),
g
=
f
.
parent
(),
h
=
d
.
data
[
g
.
data
(
"index"
)],
i
=
f
[
0
].
cellIndex
,
j
=
d
.
getVisibleFields
(),
k
=
j
[
d
.
options
.
detailView
&&!
d
.
options
.
cardView
?
i
-
1
:
i
],
m
=
d
.
columns
[
e
(
d
.
columns
,
k
)],
n
=
l
(
h
,
k
,
d
.
options
.
escape
);
if
(
!
f
.
find
(
".detail-icon"
).
length
&&
(
d
.
trigger
(
"click"
===
b
.
type
?
"click-cell"
:
"dbl-click-cell"
,
k
,
n
,
h
,
f
),
d
.
trigger
(
"click"
===
b
.
type
?
"click-row"
:
"dbl-click-row"
,
h
,
g
,
k
),
"click"
===
b
.
type
&&
d
.
options
.
clickToSelect
&&
m
.
clickToSelect
)){
var
o
=
g
.
find
(
c
(
'[name="%s"]'
,
d
.
options
.
selectItemName
));
o
.
length
&&
o
[
0
].
click
()}}),
this
.
$body
.
find
(
"> tr[data-index] > td > .detail-icon"
).
off
(
"click"
).
on
(
"click"
,
function
(){
var
b
=
a
(
this
),
e
=
b
.
parent
().
parent
(),
g
=
e
.
data
(
"index"
),
i
=
f
[
g
];
if
(
e
.
next
().
is
(
"tr.detail-view"
))
b
.
find
(
"i"
).
attr
(
"class"
,
c
(
"%s %s"
,
d
.
options
.
iconsPrefix
,
d
.
options
.
icons
.
detailOpen
)),
d
.
trigger
(
"collapse-row"
,
g
,
i
),
e
.
next
().
remove
();
else
{
b
.
find
(
"i"
).
attr
(
"class"
,
c
(
"%s %s"
,
d
.
options
.
iconsPrefix
,
d
.
options
.
icons
.
detailClose
)),
e
.
after
(
c
(
'<tr class="detail-view"><td colspan="%s"></td></tr>'
,
e
.
find
(
"td"
).
length
));
var
j
=
e
.
next
().
find
(
"td"
),
k
=
h
(
d
.
options
,
d
.
options
.
detailFormatter
,[
g
,
i
,
j
],
""
);
1
===
j
.
length
&&
j
.
append
(
k
),
d
.
trigger
(
"expand-row"
,
g
,
i
,
j
)}
return
d
.
resetView
(),
!
1
}),
this
.
$selectItem
=
this
.
$body
.
find
(
c
(
'[name="%s"]'
,
this
.
options
.
selectItemName
)),
this
.
$selectItem
.
off
(
"click"
).
on
(
"click"
,
function
(
b
){
b
.
stopImmediatePropagation
();
var
c
=
a
(
this
),
e
=
c
.
prop
(
"checked"
),
f
=
d
.
data
[
c
.
data
(
"index"
)];
d
.
options
.
maintainSelected
&&
a
(
this
).
is
(
":radio"
)
&&
a
.
each
(
d
.
options
.
data
,
function
(
a
,
b
){
b
[
d
.
header
.
stateField
]
=!
1
}),
f
[
d
.
header
.
stateField
]
=
e
,
d
.
options
.
singleSelect
&&
(
d
.
$selectItem
.
not
(
this
).
each
(
function
(){
d
.
data
[
a
(
this
).
data
(
"index"
)][
d
.
header
.
stateField
]
=!
1
}),
d
.
$selectItem
.
filter
(
":checked"
).
not
(
this
).
prop
(
"checked"
,
!
1
)),
d
.
updateSelected
(),
d
.
trigger
(
e
?
"check"
:
"uncheck"
,
f
,
c
)}),
a
.
each
(
this
.
header
.
events
,
function
(
b
,
c
){
if
(
c
){
"string"
==
typeof
c
&&
(
c
=
h
(
null
,
c
));
var
e
=
d
.
header
.
fields
[
b
],
f
=
a
.
inArray
(
e
,
d
.
getVisibleFields
());
d
.
options
.
detailView
&&!
d
.
options
.
cardView
&&
(
f
+=
1
);
for
(
var
g
in
c
)
d
.
$body
.
find
(
">tr:not(.no-records-found)"
).
each
(
function
(){
var
b
=
a
(
this
),
h
=
b
.
find
(
d
.
options
.
cardView
?
".card-view"
:
"td"
).
eq
(
f
),
i
=
g
.
indexOf
(
" "
),
j
=
g
.
substring
(
0
,
i
),
k
=
g
.
substring
(
i
+
1
),
l
=
c
[
g
];
h
.
find
(
k
).
off
(
j
).
on
(
j
,
function
(
a
){
var
c
=
b
.
data
(
"index"
),
f
=
d
.
data
[
c
],
g
=
f
[
e
];
l
.
apply
(
this
,[
a
,
g
,
f
,
c
])})})}}),
this
.
updateSelected
(),
this
.
resetView
(),
this
.
trigger
(
"post-body"
,
f
)},
o
.
prototype
.
initServer
=
function
(
b
,
c
,
d
){
var
e
,
f
=
this
,
g
=
{},
i
=
{
searchText
:
this
.
searchText
,
sortName
:
this
.
options
.
sortName
,
sortOrder
:
this
.
options
.
sortOrder
};
this
.
options
.
pagination
&&
(
i
.
pageSize
=
this
.
options
.
pageSize
===
this
.
options
.
formatAllRows
()?
this
.
options
.
totalRows
:
this
.
options
.
pageSize
,
i
.
pageNumber
=
this
.
options
.
pageNumber
),(
d
||
this
.
options
.
url
||
this
.
options
.
ajax
)
&&
(
"limit"
===
this
.
options
.
queryParamsType
&&
(
i
=
{
search
:
i
.
searchText
,
sort
:
i
.
sortName
,
order
:
i
.
sortOrder
},
this
.
options
.
pagination
&&
(
i
.
offset
=
this
.
options
.
pageSize
===
this
.
options
.
formatAllRows
()?
0
:
this
.
options
.
pageSize
*
(
this
.
options
.
pageNumber
-
1
),
i
.
limit
=
this
.
options
.
pageSize
===
this
.
options
.
formatAllRows
()?
this
.
options
.
totalRows
:
this
.
options
.
pageSize
)),
a
.
isEmptyObject
(
this
.
filterColumnsPartial
)
||
(
i
.
filter
=
JSON
.
stringify
(
this
.
filterColumnsPartial
,
null
)),
g
=
h
(
this
.
options
,
this
.
options
.
queryParams
,[
i
],
g
),
a
.
extend
(
g
,
c
||
{}),
g
!==!
1
&&
(
b
||
this
.
$tableLoading
.
show
(),
e
=
a
.
extend
({},
h
(
null
,
this
.
options
.
ajaxOptions
),{
type
:
this
.
options
.
method
,
url
:
d
||
this
.
options
.
url
,
data
:
"application/json"
===
this
.
options
.
contentType
&&
"post"
===
this
.
options
.
method
?
JSON
.
stringify
(
g
):
g
,
cache
:
this
.
options
.
cache
,
contentType
:
this
.
options
.
contentType
,
dataType
:
this
.
options
.
dataType
,
success
:
function
(
a
){
a
=
h
(
f
.
options
,
f
.
options
.
responseHandler
,[
a
],
a
),
f
.
load
(
a
),
f
.
trigger
(
"load-success"
,
a
),
b
||
f
.
$tableLoading
.
hide
()},
error
:
function
(
a
){
f
.
trigger
(
"load-error"
,
a
.
status
,
a
),
b
||
f
.
$tableLoading
.
hide
()}}),
this
.
options
.
ajax
?
h
(
this
,
this
.
options
.
ajax
,[
e
],
null
):(
this
.
_xhr
&&
4
!==
this
.
_xhr
.
readyState
&&
this
.
_xhr
.
abort
(),
this
.
_xhr
=
a
.
ajax
(
e
))))},
o
.
prototype
.
initSearchText
=
function
(){
if
(
this
.
options
.
search
&&
""
!==
this
.
options
.
searchText
){
var
a
=
this
.
$toolbar
.
find
(
".search input"
);
a
.
val
(
this
.
options
.
searchText
),
this
.
onSearch
({
currentTarget
:
a
})}},
o
.
prototype
.
getCaret
=
function
(){
var
b
=
this
;
a
.
each
(
this
.
$header
.
find
(
"th"
),
function
(
c
,
d
){
a
(
d
).
find
(
".sortable"
).
removeClass
(
"desc asc"
).
addClass
(
a
(
d
).
data
(
"field"
)
===
b
.
options
.
sortName
?
b
.
options
.
sortOrder
:
"both"
)})},
o
.
prototype
.
updateSelected
=
function
(){
var
b
=
this
.
$selectItem
.
filter
(
":enabled"
).
length
&&
this
.
$selectItem
.
filter
(
":enabled"
).
length
===
this
.
$selectItem
.
filter
(
":enabled"
).
filter
(
":checked"
).
length
;
this
.
$selectAll
.
add
(
this
.
$selectAll_
).
prop
(
"checked"
,
b
),
this
.
$selectItem
.
each
(
function
(){
a
(
this
).
closest
(
"tr"
)[
a
(
this
).
prop
(
"checked"
)?
"addClass"
:
"removeClass"
](
"selected"
)})},
o
.
prototype
.
updateRows
=
function
(){
var
b
=
this
;
this
.
$selectItem
.
each
(
function
(){
b
.
data
[
a
(
this
).
data
(
"index"
)][
b
.
header
.
stateField
]
=
a
(
this
).
prop
(
"checked"
)})},
o
.
prototype
.
resetRows
=
function
(){
var
b
=
this
;
a
.
each
(
this
.
data
,
function
(
a
,
c
){
b
.
$selectAll
.
prop
(
"checked"
,
!
1
),
b
.
$selectItem
.
prop
(
"checked"
,
!
1
),
b
.
header
.
stateField
&&
(
c
[
b
.
header
.
stateField
]
=!
1
)}),
this
.
initHiddenRows
()},
o
.
prototype
.
trigger
=
function
(
b
){
var
c
=
Array
.
prototype
.
slice
.
call
(
arguments
,
1
);
b
+=
".bs.table"
,
this
.
options
[
o
.
EVENTS
[
b
]].
apply
(
this
.
options
,
c
),
this
.
$el
.
trigger
(
a
.
Event
(
b
),
c
),
this
.
options
.
onAll
(
b
,
c
),
this
.
$el
.
trigger
(
a
.
Event
(
"all.bs.table"
),[
b
,
c
])},
o
.
prototype
.
resetHeader
=
function
(){
clearTimeout
(
this
.
timeoutId_
),
this
.
timeoutId_
=
setTimeout
(
a
.
proxy
(
this
.
fitHeader
,
this
),
this
.
$el
.
is
(
":hidden"
)?
100
:
0
)},
o
.
prototype
.
fitHeader
=
function
(){
var
b
,
d
,
e
,
f
,
h
=
this
;
if
(
h
.
$el
.
is
(
":hidden"
))
return
void
(
h
.
timeoutId_
=
setTimeout
(
a
.
proxy
(
h
.
fitHeader
,
h
),
100
));
if
(
b
=
this
.
$tableBody
.
get
(
0
),
d
=
b
.
scrollWidth
>
b
.
clientWidth
&&
b
.
scrollHeight
>
b
.
clientHeight
+
this
.
$header
.
outerHeight
()?
g
():
0
,
this
.
$el
.
css
(
"margin-top"
,
-
this
.
$header
.
outerHeight
()),
e
=
a
(
":focus"
),
e
.
length
>
0
){
var
i
=
e
.
parents
(
"th"
);
if
(
i
.
length
>
0
){
var
j
=
i
.
attr
(
"data-field"
);
if
(
void
0
!==
j
){
var
k
=
this
.
$header
.
find
(
"[data-field='"
+
j
+
"']"
);
k
.
length
>
0
&&
k
.
find
(
":input"
).
addClass
(
"focus-temp"
)}}}
this
.
$header_
=
this
.
$header
.
clone
(
!
0
,
!
0
),
this
.
$selectAll_
=
this
.
$header_
.
find
(
'[name="btSelectAll"]'
),
this
.
$tableHeader
.
css
({
"margin-right"
:
d
}).
find
(
"table"
).
css
(
"width"
,
this
.
$el
.
outerWidth
()).
html
(
""
).
attr
(
"class"
,
this
.
$el
.
attr
(
"class"
)).
append
(
this
.
$header_
),
f
=
a
(
".focus-temp:visible:eq(0)"
),
f
.
length
>
0
&&
(
f
.
focus
(),
this
.
$header
.
find
(
".focus-temp"
).
removeClass
(
"focus-temp"
)),
this
.
$header
.
find
(
"th[data-field]"
).
each
(
function
(){
h
.
$header_
.
find
(
c
(
'th[data-field="%s"]'
,
a
(
this
).
data
(
"field"
))).
data
(
a
(
this
).
data
())});
var
l
=
this
.
getVisibleFields
(),
m
=
this
.
$header_
.
find
(
"th"
);
this
.
$body
.
find
(
">tr:first-child:not(.no-records-found) > *"
).
each
(
function
(
b
){
var
d
=
a
(
this
),
e
=
b
;
h
.
options
.
detailView
&&!
h
.
options
.
cardView
&&
(
0
===
b
&&
h
.
$header_
.
find
(
"th.detail"
).
find
(
".fht-cell"
).
width
(
d
.
innerWidth
()),
e
=
b
-
1
);
var
f
=
h
.
$header_
.
find
(
c
(
'th[data-field="%s"]'
,
l
[
e
]));
f
.
length
>
1
&&
(
f
=
a
(
m
[
d
[
0
].
cellIndex
])),
f
.
find
(
".fht-cell"
).
width
(
d
.
innerWidth
())}),
this
.
$tableBody
.
off
(
"scroll"
).
on
(
"scroll"
,
function
(){
h
.
$tableHeader
.
scrollLeft
(
a
(
this
).
scrollLeft
()),
h
.
options
.
showFooter
&&!
h
.
options
.
cardView
&&
h
.
$tableFooter
.
scrollLeft
(
a
(
this
).
scrollLeft
())}),
h
.
trigger
(
"post-header"
)},
o
.
prototype
.
resetFooter
=
function
(){
var
b
=
this
,
d
=
b
.
getData
(),
e
=
[];
this
.
options
.
showFooter
&&!
this
.
options
.
cardView
&&
(
!
this
.
options
.
cardView
&&
this
.
options
.
detailView
&&
e
.
push
(
'<td><div class="th-inner"> </div><div class="fht-cell"></div></td>'
),
a
.
each
(
this
.
columns
,
function
(
a
,
f
){
var
g
,
i
=
""
,
j
=
""
,
k
=
[],
l
=
{},
m
=
c
(
' class="%s"'
,
f
[
"class"
]);
if
(
f
.
visible
&&
(
!
b
.
options
.
cardView
||
f
.
cardVisible
)){
if
(
i
=
c
(
"text-align: %s; "
,
f
.
falign
?
f
.
falign
:
f
.
align
),
j
=
c
(
"vertical-align: %s; "
,
f
.
valign
),
l
=
h
(
null
,
b
.
options
.
footerStyle
),
l
&&
l
.
css
)
for
(
g
in
l
.
css
)
k
.
push
(
g
+
": "
+
l
.
css
[
g
]);
e
.
push
(
"<td"
,
m
,
c
(
' style="%s"'
,
i
+
j
+
k
.
concat
().
join
(
"; "
)),
">"
),
e
.
push
(
'<div class="th-inner">'
),
e
.
push
(
h
(
f
,
f
.
footerFormatter
,[
d
],
" "
)
||
" "
),
e
.
push
(
"</div>"
),
e
.
push
(
'<div class="fht-cell"></div>'
),
e
.
push
(
"</div>"
),
e
.
push
(
"</td>"
)}}),
this
.
$tableFooter
.
find
(
"tr"
).
html
(
e
.
join
(
""
)),
this
.
$tableFooter
.
show
(),
clearTimeout
(
this
.
timeoutFooter_
),
this
.
timeoutFooter_
=
setTimeout
(
a
.
proxy
(
this
.
fitFooter
,
this
),
this
.
$el
.
is
(
":hidden"
)?
100
:
0
))},
o
.
prototype
.
fitFooter
=
function
(){
var
b
,
c
,
d
;
return
clearTimeout
(
this
.
timeoutFooter_
),
this
.
$el
.
is
(
":hidden"
)?
void
(
this
.
timeoutFooter_
=
setTimeout
(
a
.
proxy
(
this
.
fitFooter
,
this
),
100
)):(
c
=
this
.
$el
.
css
(
"width"
),
d
=
c
>
this
.
$tableBody
.
width
()?
g
():
0
,
this
.
$tableFooter
.
css
({
"margin-right"
:
d
}).
find
(
"table"
).
css
(
"width"
,
c
).
attr
(
"class"
,
this
.
$el
.
attr
(
"class"
)),
b
=
this
.
$tableFooter
.
find
(
"td"
),
void
this
.
$body
.
find
(
">tr:first-child:not(.no-records-found) > *"
).
each
(
function
(
c
){
var
d
=
a
(
this
);
b
.
eq
(
c
).
find
(
".fht-cell"
).
width
(
d
.
innerWidth
())}))},
o
.
prototype
.
toggleColumn
=
function
(
a
,
b
,
d
){
if
(
-
1
!==
a
&&
(
this
.
columns
[
a
].
visible
=
b
,
this
.
initHeader
(),
this
.
initSearch
(),
this
.
initPagination
(),
this
.
initBody
(),
this
.
options
.
showColumns
)){
var
e
=
this
.
$toolbar
.
find
(
".keep-open input"
).
prop
(
"disabled"
,
!
1
);
d
&&
e
.
filter
(
c
(
'[value="%s"]'
,
a
)).
prop
(
"checked"
,
b
),
e
.
filter
(
":checked"
).
length
<=
this
.
options
.
minimumCountColumns
&&
e
.
filter
(
":checked"
).
prop
(
"disabled"
,
!
0
)}},
o
.
prototype
.
getVisibleFields
=
function
(){
var
b
=
this
,
c
=
[];
return
a
.
each
(
this
.
header
.
fields
,
function
(
a
,
d
){
var
f
=
b
.
columns
[
e
(
b
.
columns
,
d
)];
f
.
visible
&&
c
.
push
(
d
)}),
c
},
o
.
prototype
.
resetView
=
function
(
a
){
var
b
=
0
;
if
(
a
&&
a
.
height
&&
(
this
.
options
.
height
=
a
.
height
),
this
.
$selectAll
.
prop
(
"checked"
,
this
.
$selectItem
.
length
>
0
&&
this
.
$selectItem
.
length
===
this
.
$selectItem
.
filter
(
":checked"
).
length
),
this
.
options
.
height
){
var
c
=
this
.
$toolbar
.
outerHeight
(
!
0
),
d
=
this
.
$pagination
.
outerHeight
(
!
0
),
e
=
this
.
options
.
height
-
c
-
d
;
this
.
$tableContainer
.
css
(
"height"
,
e
+
"px"
)}
return
this
.
options
.
cardView
?(
this
.
$el
.
css
(
"margin-top"
,
"0"
),
this
.
$tableContainer
.
css
(
"padding-bottom"
,
"0"
),
void
this
.
$tableFooter
.
hide
()):(
this
.
options
.
showHeader
&&
this
.
options
.
height
?(
this
.
$tableHeader
.
show
(),
this
.
resetHeader
(),
b
+=
this
.
$header
.
outerHeight
()):(
this
.
$tableHeader
.
hide
(),
this
.
trigger
(
"post-header"
)),
this
.
options
.
showFooter
&&
(
this
.
resetFooter
(),
this
.
options
.
height
&&
(
b
+=
this
.
$tableFooter
.
outerHeight
()
+
1
)),
this
.
getCaret
(),
this
.
$tableContainer
.
css
(
"padding-bottom"
,
b
+
"px"
),
void
this
.
trigger
(
"reset-view"
))},
o
.
prototype
.
getData
=
function
(
b
){
return
!
this
.
searchText
&&
a
.
isEmptyObject
(
this
.
filterColumns
)
&&
a
.
isEmptyObject
(
this
.
filterColumnsPartial
)?
b
?
this
.
options
.
data
.
slice
(
this
.
pageFrom
-
1
,
this
.
pageTo
):
this
.
options
.
data
:
b
?
this
.
data
.
slice
(
this
.
pageFrom
-
1
,
this
.
pageTo
):
this
.
data
},
o
.
prototype
.
load
=
function
(
b
){
var
c
=!
1
;
"server"
===
this
.
options
.
sidePagination
?(
this
.
options
.
totalRows
=
b
[
this
.
options
.
totalField
],
c
=
b
.
fixedScroll
,
b
=
b
[
this
.
options
.
dataField
]):
a
.
isArray
(
b
)
||
(
c
=
b
.
fixedScroll
,
b
=
b
.
data
),
this
.
initData
(
b
),
this
.
initSearch
(),
this
.
initPagination
(),
this
.
initBody
(
c
)},
o
.
prototype
.
append
=
function
(
a
){
this
.
initData
(
a
,
"append"
),
this
.
initSearch
(),
this
.
initPagination
(),
this
.
initSort
(),
this
.
initBody
(
!
0
)},
o
.
prototype
.
prepend
=
function
(
a
){
this
.
initData
(
a
,
"prepend"
),
this
.
initSearch
(),
this
.
initPagination
(),
this
.
initSort
(),
this
.
initBody
(
!
0
)},
o
.
prototype
.
remove
=
function
(
b
){
var
c
,
d
,
e
=
this
.
options
.
data
.
length
;
if
(
b
.
hasOwnProperty
(
"field"
)
&&
b
.
hasOwnProperty
(
"values"
)){
for
(
c
=
e
-
1
;
c
>=
0
;
c
--
)
d
=
this
.
options
.
data
[
c
],
d
.
hasOwnProperty
(
b
.
field
)
&&-
1
!==
a
.
inArray
(
d
[
b
.
field
],
b
.
values
)
&&
(
this
.
options
.
data
.
splice
(
c
,
1
),
"server"
===
this
.
options
.
sidePagination
&&
(
this
.
options
.
totalRows
-=
1
));
e
!==
this
.
options
.
data
.
length
&&
(
this
.
initSearch
(),
this
.
initPagination
(),
this
.
initSort
(),
this
.
initBody
(
!
0
))}},
o
.
prototype
.
removeAll
=
function
(){
this
.
options
.
data
.
length
>
0
&&
(
this
.
options
.
data
.
splice
(
0
,
this
.
options
.
data
.
length
),
this
.
initSearch
(),
this
.
initPagination
(),
this
.
initBody
(
!
0
))},
o
.
prototype
.
getRowByUniqueId
=
function
(
a
){
var
b
,
c
,
d
,
e
=
this
.
options
.
uniqueId
,
f
=
this
.
options
.
data
.
length
,
g
=
null
;
for
(
b
=
f
-
1
;
b
>=
0
;
b
--
){
if
(
c
=
this
.
options
.
data
[
b
],
c
.
hasOwnProperty
(
e
))
d
=
c
[
e
];
else
{
if
(
!
c
.
_data
.
hasOwnProperty
(
e
))
continue
;
d
=
c
.
_data
[
e
]}
if
(
"string"
==
typeof
d
?
a
=
a
.
toString
():
"number"
==
typeof
d
&&
(
Number
(
d
)
===
d
&&
d
%
1
===
0
?
a
=
parseInt
(
a
):
d
===
Number
(
d
)
&&
0
!==
d
&&
(
a
=
parseFloat
(
a
))),
d
===
a
){
g
=
c
;
break
}}
return
g
},
o
.
prototype
.
removeByUniqueId
=
function
(
a
){
var
b
=
this
.
options
.
data
.
length
,
c
=
this
.
getRowByUniqueId
(
a
);
c
&&
this
.
options
.
data
.
splice
(
this
.
options
.
data
.
indexOf
(
c
),
1
),
b
!==
this
.
options
.
data
.
length
&&
(
this
.
initSearch
(),
this
.
initPagination
(),
this
.
initBody
(
!
0
))},
o
.
prototype
.
updateByUniqueId
=
function
(
b
){
var
c
=
this
,
d
=
a
.
isArray
(
b
)?
b
:[
b
];
a
.
each
(
d
,
function
(
b
,
d
){
var
e
;
d
.
hasOwnProperty
(
"id"
)
&&
d
.
hasOwnProperty
(
"row"
)
&&
(
e
=
a
.
inArray
(
c
.
getRowByUniqueId
(
d
.
id
),
c
.
options
.
data
),
-
1
!==
e
&&
a
.
extend
(
c
.
options
.
data
[
e
],
d
.
row
))}),
this
.
initSearch
(),
this
.
initPagination
(),
this
.
initSort
(),
this
.
initBody
(
!
0
)},
o
.
prototype
.
insertRow
=
function
(
a
){
a
.
hasOwnProperty
(
"index"
)
&&
a
.
hasOwnProperty
(
"row"
)
&&
(
this
.
data
.
splice
(
a
.
index
,
0
,
a
.
row
),
this
.
initSearch
(),
this
.
initPagination
(),
this
.
initSort
(),
this
.
initBody
(
!
0
))},
o
.
prototype
.
updateRow
=
function
(
b
){
var
c
=
this
,
d
=
a
.
isArray
(
b
)?
b
:[
b
];
a
.
each
(
d
,
function
(
b
,
d
){
d
.
hasOwnProperty
(
"index"
)
&&
d
.
hasOwnProperty
(
"row"
)
&&
a
.
extend
(
c
.
options
.
data
[
d
.
index
],
d
.
row
)}),
this
.
initSearch
(),
this
.
initPagination
(),
this
.
initSort
(),
this
.
initBody
(
!
0
)},
o
.
prototype
.
initHiddenRows
=
function
(){
this
.
hiddenRows
=
[]},
o
.
prototype
.
showRow
=
function
(
a
){
this
.
toggleRow
(
a
,
!
0
)},
o
.
prototype
.
hideRow
=
function
(
a
){
this
.
toggleRow
(
a
,
!
1
)},
o
.
prototype
.
toggleRow
=
function
(
b
,
c
){
var
d
,
e
;
b
.
hasOwnProperty
(
"index"
)?
d
=
this
.
getData
()[
b
.
index
]:
b
.
hasOwnProperty
(
"uniqueId"
)
&&
(
d
=
this
.
getRowByUniqueId
(
b
.
uniqueId
)),
d
&&
(
e
=
a
.
inArray
(
d
,
this
.
hiddenRows
),
c
||-
1
!==
e
?
c
&&
e
>-
1
&&
this
.
hiddenRows
.
splice
(
e
,
1
):
this
.
hiddenRows
.
push
(
d
),
this
.
initBody
(
!
0
))},
o
.
prototype
.
getHiddenRows
=
function
(){
var
b
=
this
,
c
=
this
.
getData
(),
d
=
[];
return
a
.
each
(
c
,
function
(
c
,
e
){
a
.
inArray
(
e
,
b
.
hiddenRows
)
>-
1
&&
d
.
push
(
e
)}),
this
.
hiddenRows
=
d
,
d
},
o
.
prototype
.
mergeCells
=
function
(
b
){
var
c
,
d
,
e
,
f
=
b
.
index
,
g
=
a
.
inArray
(
b
.
field
,
this
.
getVisibleFields
()),
h
=
b
.
rowspan
||
1
,
i
=
b
.
colspan
||
1
,
j
=
this
.
$body
.
find
(
">tr"
);
if
(
this
.
options
.
detailView
&&!
this
.
options
.
cardView
&&
(
g
+=
1
),
e
=
j
.
eq
(
f
).
find
(
">td"
).
eq
(
g
),
!
(
0
>
f
||
0
>
g
||
f
>=
this
.
data
.
length
)){
for
(
c
=
f
;
f
+
h
>
c
;
c
++
)
for
(
d
=
g
;
g
+
i
>
d
;
d
++
)
j
.
eq
(
c
).
find
(
">td"
).
eq
(
d
).
hide
();
e
.
attr
(
"rowspan"
,
h
).
attr
(
"colspan"
,
i
).
show
()}},
o
.
prototype
.
updateCell
=
function
(
a
){
a
.
hasOwnProperty
(
"index"
)
&&
a
.
hasOwnProperty
(
"field"
)
&&
a
.
hasOwnProperty
(
"value"
)
&&
(
this
.
data
[
a
.
index
][
a
.
field
]
=
a
.
value
,
a
.
reinit
!==!
1
&&
(
this
.
initSort
(),
this
.
initBody
(
!
0
)))},
o
.
prototype
.
getOptions
=
function
(){
return
this
.
options
},
o
.
prototype
.
getSelections
=
function
(){
var
b
=
this
;
return
a
.
grep
(
this
.
options
.
data
,
function
(
a
){
return
a
[
b
.
header
.
stateField
]
===!
0
})},
o
.
prototype
.
getAllSelections
=
function
(){
var
b
=
this
;
return
a
.
grep
(
this
.
options
.
data
,
function
(
a
){
return
a
[
b
.
header
.
stateField
]})},
o
.
prototype
.
checkAll
=
function
(){
this
.
checkAll_
(
!
0
)},
o
.
prototype
.
uncheckAll
=
function
(){
this
.
checkAll_
(
!
1
)},
o
.
prototype
.
checkInvert
=
function
(){
var
b
=
this
,
c
=
b
.
$selectItem
.
filter
(
":enabled"
),
d
=
c
.
filter
(
":checked"
);
c
.
each
(
function
(){
a
(
this
).
prop
(
"checked"
,
!
a
(
this
).
prop
(
"checked"
))}),
b
.
updateRows
(),
b
.
updateSelected
(),
b
.
trigger
(
"uncheck-some"
,
d
),
d
=
b
.
getSelections
(),
b
.
trigger
(
"check-some"
,
d
)},
o
.
prototype
.
checkAll_
=
function
(
a
){
var
b
;
a
||
(
b
=
this
.
getSelections
()),
this
.
$selectAll
.
add
(
this
.
$selectAll_
).
prop
(
"checked"
,
a
),
this
.
$selectItem
.
filter
(
":enabled"
).
prop
(
"checked"
,
a
),
this
.
updateRows
(),
a
&&
(
b
=
this
.
getSelections
()),
this
.
trigger
(
a
?
"check-all"
:
"uncheck-all"
,
b
)},
o
.
prototype
.
check
=
function
(
a
){
this
.
check_
(
!
0
,
a
)},
o
.
prototype
.
uncheck
=
function
(
a
){
this
.
check_
(
!
1
,
a
)},
o
.
prototype
.
check_
=
function
(
a
,
b
){
var
d
=
this
.
$selectItem
.
filter
(
c
(
'[data-index="%s"]'
,
b
)).
prop
(
"checked"
,
a
);
this
.
data
[
b
][
this
.
header
.
stateField
]
=
a
,
this
.
updateSelected
(),
this
.
trigger
(
a
?
"check"
:
"uncheck"
,
this
.
data
[
b
],
d
)},
o
.
prototype
.
checkBy
=
function
(
a
){
this
.
checkBy_
(
!
0
,
a
)},
o
.
prototype
.
uncheckBy
=
function
(
a
){
this
.
checkBy_
(
!
1
,
a
)},
o
.
prototype
.
checkBy_
=
function
(
b
,
d
){
if
(
d
.
hasOwnProperty
(
"field"
)
&&
d
.
hasOwnProperty
(
"values"
)){
var
e
=
this
,
f
=
[];
a
.
each
(
this
.
options
.
data
,
function
(
g
,
h
){
if
(
!
h
.
hasOwnProperty
(
d
.
field
))
return
!
1
;
if
(
-
1
!==
a
.
inArray
(
h
[
d
.
field
],
d
.
values
)){
var
i
=
e
.
$selectItem
.
filter
(
":enabled"
).
filter
(
c
(
'[data-index="%s"]'
,
g
)).
prop
(
"checked"
,
b
);
h
[
e
.
header
.
stateField
]
=
b
,
f
.
push
(
h
),
e
.
trigger
(
b
?
"check"
:
"uncheck"
,
h
,
i
)}}),
this
.
updateSelected
(),
this
.
trigger
(
b
?
"check-some"
:
"uncheck-some"
,
f
)}},
o
.
prototype
.
destroy
=
function
(){
this
.
$el
.
insertBefore
(
this
.
$container
),
a
(
this
.
options
.
toolbar
).
insertBefore
(
this
.
$el
),
this
.
$container
.
next
().
remove
(),
this
.
$container
.
remove
(),
this
.
$el
.
html
(
this
.
$el_
.
html
()).
css
(
"margin-top"
,
"0"
).
attr
(
"class"
,
this
.
$el_
.
attr
(
"class"
)
||
""
)},
o
.
prototype
.
showLoading
=
function
(){
this
.
$tableLoading
.
show
()},
o
.
prototype
.
hideLoading
=
function
(){
this
.
$tableLoading
.
hide
()},
o
.
prototype
.
togglePagination
=
function
(){
this
.
options
.
pagination
=!
this
.
options
.
pagination
;
var
a
=
this
.
$toolbar
.
find
(
'button[name="paginationSwitch"] i'
);
this
.
options
.
pagination
?
a
.
attr
(
"class"
,
this
.
options
.
iconsPrefix
+
" "
+
this
.
options
.
icons
.
paginationSwitchDown
):
a
.
attr
(
"class"
,
this
.
options
.
iconsPrefix
+
" "
+
this
.
options
.
icons
.
paginationSwitchUp
),
this
.
updatePagination
()},
o
.
prototype
.
refresh
=
function
(
a
){
a
&&
a
.
url
&&
(
this
.
options
.
url
=
a
.
url
),
a
&&
a
.
pageNumber
&&
(
this
.
options
.
pageNumber
=
a
.
pageNumber
),
a
&&
a
.
pageSize
&&
(
this
.
options
.
pageSize
=
a
.
pageSize
),
this
.
initServer
(
a
&&
a
.
silent
,
a
&&
a
.
query
,
a
&&
a
.
url
),
this
.
trigger
(
"refresh"
,
a
)},
o
.
prototype
.
resetWidth
=
function
(){
this
.
options
.
showHeader
&&
this
.
options
.
height
&&
this
.
fitHeader
(),
this
.
options
.
showFooter
&&
this
.
fitFooter
()},
o
.
prototype
.
showColumn
=
function
(
a
){
this
.
toggleColumn
(
e
(
this
.
columns
,
a
),
!
0
,
!
0
)},
o
.
prototype
.
hideColumn
=
function
(
a
){
this
.
toggleColumn
(
e
(
this
.
columns
,
a
),
!
1
,
!
0
)},
o
.
prototype
.
getHiddenColumns
=
function
(){
return
a
.
grep
(
this
.
columns
,
function
(
a
){
return
!
a
.
visible
})},
o
.
prototype
.
getVisibleColumns
=
function
(){
return
a
.
grep
(
this
.
columns
,
function
(
a
){
return
a
.
visible
})},
o
.
prototype
.
toggleAllColumns
=
function
(
b
){
if
(
a
.
each
(
this
.
columns
,
function
(
a
){
this
.
columns
[
a
].
visible
=
b
}),
this
.
initHeader
(),
this
.
initSearch
(),
this
.
initPagination
(),
this
.
initBody
(),
this
.
options
.
showColumns
){
var
c
=
this
.
$toolbar
.
find
(
".keep-open input"
).
prop
(
"disabled"
,
!
1
);
c
.
filter
(
":checked"
).
length
<=
this
.
options
.
minimumCountColumns
&&
c
.
filter
(
":checked"
).
prop
(
"disabled"
,
!
0
)}},
o
.
prototype
.
showAllColumns
=
function
(){
this
.
toggleAllColumns
(
!
0
)},
o
.
prototype
.
hideAllColumns
=
function
(){
this
.
toggleAllColumns
(
!
1
)},
o
.
prototype
.
filterBy
=
function
(
b
){
this
.
filterColumns
=
a
.
isEmptyObject
(
b
)?{}:
b
,
this
.
options
.
pageNumber
=
1
,
this
.
initSearch
(),
this
.
updatePagination
()},
o
.
prototype
.
scrollTo
=
function
(
a
){
return
"string"
==
typeof
a
&&
(
a
=
"bottom"
===
a
?
this
.
$tableBody
[
0
].
scrollHeight
:
0
),
"number"
==
typeof
a
&&
this
.
$tableBody
.
scrollTop
(
a
),
"undefined"
==
typeof
a
?
this
.
$tableBody
.
scrollTop
():
void
0
},
o
.
prototype
.
getScrollPosition
=
function
(){
return
this
.
scrollTo
()},
o
.
prototype
.
selectPage
=
function
(
a
){
a
>
0
&&
a
<=
this
.
options
.
totalPages
&&
(
this
.
options
.
pageNumber
=
a
,
this
.
updatePagination
())},
o
.
prototype
.
prevPage
=
function
(){
this
.
options
.
pageNumber
>
1
&&
(
this
.
options
.
pageNumber
--
,
this
.
updatePagination
())},
o
.
prototype
.
nextPage
=
function
(){
this
.
options
.
pageNumber
<
this
.
options
.
totalPages
&&
(
this
.
options
.
pageNumber
++
,
this
.
updatePagination
())},
o
.
prototype
.
toggleView
=
function
(){
this
.
options
.
cardView
=!
this
.
options
.
cardView
,
this
.
initHeader
(),
this
.
initBody
(),
this
.
trigger
(
"toggle"
,
this
.
options
.
cardView
)},
o
.
prototype
.
refreshOptions
=
function
(
b
){
i
(
this
.
options
,
b
,
!
0
)
||
(
this
.
options
=
a
.
extend
(
this
.
options
,
b
),
this
.
trigger
(
"refresh-options"
,
this
.
options
),
this
.
destroy
(),
this
.
init
())},
o
.
prototype
.
resetSearch
=
function
(
a
){
var
b
=
this
.
$toolbar
.
find
(
".search input"
);
b
.
val
(
a
||
""
),
this
.
onSearch
({
currentTarget
:
b
})},
o
.
prototype
.
expandRow_
=
function
(
a
,
b
){
var
d
=
this
.
$body
.
find
(
c
(
'> tr[data-index="%s"]'
,
b
));
d
.
next
().
is
(
"tr.detail-view"
)
===
(
a
?
!
1
:
!
0
)
&&
d
.
find
(
"> td > .detail-icon"
).
click
()},
o
.
prototype
.
expandRow
=
function
(
a
){
this
.
expandRow_
(
!
0
,
a
)},
o
.
prototype
.
collapseRow
=
function
(
a
){
this
.
expandRow_
(
!
1
,
a
)},
o
.
prototype
.
expandAllRows
=
function
(
b
){
if
(
b
){
var
d
=
this
.
$body
.
find
(
c
(
'> tr[data-index="%s"]'
,
0
)),
e
=
this
,
f
=
null
,
g
=!
1
,
h
=-
1
;
if
(
d
.
next
().
is
(
"tr.detail-view"
)?
d
.
next
().
next
().
is
(
"tr.detail-view"
)
||
(
d
.
next
().
find
(
".detail-icon"
).
click
(),
g
=!
0
):(
d
.
find
(
"> td > .detail-icon"
).
click
(),
g
=!
0
),
g
)
try
{
h
=
setInterval
(
function
(){
f
=
e
.
$body
.
find
(
"tr.detail-view"
).
last
().
find
(
".detail-icon"
),
f
.
length
>
0
?
f
.
click
():
clearInterval
(
h
)},
1
)}
catch
(
i
){
clearInterval
(
h
)}}
else
for
(
var
j
=
this
.
$body
.
children
(),
k
=
0
;
k
<
j
.
length
;
k
++
)
this
.
expandRow_
(
!
0
,
a
(
j
[
k
]).
data
(
"index"
))},
o
.
prototype
.
collapseAllRows
=
function
(
b
){
if
(
b
)
this
.
expandRow_
(
!
1
,
0
);
else
for
(
var
c
=
this
.
$body
.
children
(),
d
=
0
;
d
<
c
.
length
;
d
++
)
this
.
expandRow_
(
!
1
,
a
(
c
[
d
]).
data
(
"index"
))},
o
.
prototype
.
updateFormatText
=
function
(
a
,
b
){
this
.
options
[
c
(
"format%s"
,
a
)]
&&
(
"string"
==
typeof
b
?
this
.
options
[
c
(
"format%s"
,
a
)]
=
function
(){
return
b
}:
"function"
==
typeof
b
&&
(
this
.
options
[
c
(
"format%s"
,
a
)]
=
b
)),
this
.
initToolbar
(),
this
.
initPagination
(),
this
.
initBody
()};
var
p
=
[
"getOptions"
,
"getSelections"
,
"getAllSelections"
,
"getData"
,
"load"
,
"append"
,
"prepend"
,
"remove"
,
"removeAll"
,
"insertRow"
,
"updateRow"
,
"updateCell"
,
"updateByUniqueId"
,
"removeByUniqueId"
,
"getRowByUniqueId"
,
"showRow"
,
"hideRow"
,
"getHiddenRows"
,
"mergeCells"
,
"checkAll"
,
"uncheckAll"
,
"checkInvert"
,
"check"
,
"uncheck"
,
"checkBy"
,
"uncheckBy"
,
"refresh"
,
"resetView"
,
"resetWidth"
,
"destroy"
,
"showLoading"
,
"hideLoading"
,
"showColumn"
,
"hideColumn"
,
"getHiddenColumns"
,
"getVisibleColumns"
,
"showAllColumns"
,
"hideAllColumns"
,
"filterBy"
,
"scrollTo"
,
"getScrollPosition"
,
"selectPage"
,
"prevPage"
,
"nextPage"
,
"togglePagination"
,
"toggleView"
,
"refreshOptions"
,
"resetSearch"
,
"expandRow"
,
"collapseRow"
,
"expandAllRows"
,
"collapseAllRows"
,
"updateFormatText"
];
a
.
fn
.
bootstrapTable
=
function
(
b
){
var
c
,
d
=
Array
.
prototype
.
slice
.
call
(
arguments
,
1
);
return
this
.
each
(
function
(){
var
e
=
a
(
this
),
f
=
e
.
data
(
"bootstrap.table"
),
g
=
a
.
extend
({},
o
.
DEFAULTS
,
e
.
data
(),
"object"
==
typeof
b
&&
b
);
if
(
"string"
==
typeof
b
){
if
(
a
.
inArray
(
b
,
p
)
<
0
)
throw
new
Error
(
"Unknown method: "
+
b
);
if
(
!
f
)
return
;
c
=
f
[
b
].
apply
(
f
,
d
),
"destroy"
===
b
&&
e
.
removeData
(
"bootstrap.table"
)}
f
||
e
.
data
(
"bootstrap.table"
,
f
=
new
o
(
this
,
g
))}),
"undefined"
==
typeof
c
?
this
:
c
},
a
.
fn
.
bootstrapTable
.
Constructor
=
o
,
a
.
fn
.
bootstrapTable
.
defaults
=
o
.
DEFAULTS
,
a
.
fn
.
bootstrapTable
.
columnDefaults
=
o
.
COLUMN_DEFAULTS
,
a
.
fn
.
bootstrapTable
.
locales
=
o
.
LOCALES
,
a
.
fn
.
bootstrapTable
.
methods
=
p
,
a
.
fn
.
bootstrapTable
.
utils
=
{
sprintf
:
c
,
getFieldIndex
:
e
,
compareObjects
:
i
,
calculateObjectValue
:
h
,
getItemField
:
l
,
objectKeys
:
n
,
isIEBrowser
:
m
},
a
(
function
(){
a
(
'[data-toggle="table"]'
).
bootstrapTable
()})}(
jQuery
);
\ No newline at end of file
src/main/webapp/assets/common/plugins/bootstrap-table/locale/bootstrap-table-zh-CN.js
deleted
100644 → 0
View file @
89ae2a0e
/**
* Bootstrap Table Chinese translation
* Author: Zhixin Wen<wenzhixin2010@gmail.com>
*/
(
function
(
$
)
{
'use strict'
;
$
.
fn
.
bootstrapTable
.
locales
[
'zh-CN'
]
=
{
formatLoadingMessage
:
function
()
{
return
'正在努力地加载数据中,请稍候……'
;
},
formatRecordsPerPage
:
function
(
pageNumber
)
{
return
'每页显示 '
+
pageNumber
+
' 条记录'
;
},
formatShowingRows
:
function
(
pageFrom
,
pageTo
,
totalRows
)
{
return
'显示第 '
+
pageFrom
+
' 到第 '
+
pageTo
+
' 条记录,总共 '
+
totalRows
+
' 条记录'
;
},
formatSearch
:
function
()
{
return
'搜索'
;
},
formatNoMatches
:
function
()
{
return
'没有找到匹配的记录'
;
},
formatPaginationSwitch
:
function
()
{
return
'隐藏/显示分页'
;
},
formatRefresh
:
function
()
{
return
'刷新'
;
},
formatToggle
:
function
()
{
return
'切换'
;
},
formatColumns
:
function
()
{
return
'列'
;
},
formatExport
:
function
()
{
return
'导出数据'
;
},
formatClearFilters
:
function
()
{
return
'清空过滤'
;
}
};
$
.
extend
(
$
.
fn
.
bootstrapTable
.
defaults
,
$
.
fn
.
bootstrapTable
.
locales
[
'zh-CN'
]);
})(
jQuery
);
src/main/webapp/assets/common/static/css/colors/blue.css
View file @
ef43c08c
...
...
@@ -72,16 +72,6 @@ a.link:hover, a.link:focus {
background-color
:
#009efb
!important
;
}
.pagination
>
.active
>
a
,
.pagination
>
.active
>
span
,
.pagination
>
.active
>
a
:hover
,
.pagination
>
.active
>
span
:hover
,
.pagination
>
.active
>
a
:focus
,
.pagination
>
.active
>
span
:focus
{
background-color
:
#009efb
;
border-color
:
#009efb
;
}
.right-sidebar
.rpanel-title
{
background
:
#009efb
;
}
...
...
src/main/webapp/assets/common/static/stylefeng/feng.css
View file @
ef43c08c
.condition-button
{
height
:
38px
;
margin-left
:
10px
;
}
.condition-button-width
{
width
:
85px
;
}
.pagination
>
.active
>
a
,
.pagination
>
.active
>
span
,
.pagination
>
.active
>
a
:hover
,
.pagination
>
.active
>
span
:hover
,
.pagination
>
.active
>
a
:focus
,
.pagination
>
.active
>
span
:focus
{
background-color
:
#f4f4f4
;
border-color
:
#DDDDDD
;
color
:
inherit
;
cursor
:
default
;
z-index
:
2
;
}
.pagination
>
li
>
a
,
.pagination
>
li
>
span
{
background-color
:
#FFFFFF
;
border
:
1px
solid
#DDDDDD
;
color
:
inherit
;
float
:
left
;
line-height
:
1.42857
;
margin-left
:
-1px
;
padding
:
4px
10px
;
position
:
relative
;
text-decoration
:
none
;
}
.fixed-table-pagination
.btn
{
border-color
:
#DDDDDD
;
}
.dropdown-menu
>
li
>
a
{
border-radius
:
3px
;
color
:
inherit
;
line-height
:
25px
;
margin
:
4px
;
text-align
:
left
;
font-weight
:
normal
;
}
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment