Commit 0b2d343d60b5d71407f49f5e6a9c8e86694bba05

Authored by 潘钊
1 parent 53b5851d

加入日期控件

src/main/resources/static/index.html
1 -<!DOCTYPE html>  
2 -<html>  
3 -<head>  
4 -<meta charset="UTF-8">  
5 -<title>调度系统</title>  
6 -<meta name=”renderer” content=”webkit”>  
7 -<meta http-equiv=”X-UA-Compatible” content=”IE=Edge,chrome=1″ >  
8 -  
9 -<!-- Font Awesome 图标字体 -->  
10 -<link href="metronic_v4.5.4/plugins/font-awesome/css/font-awesome.min.css" rel="stylesheet" type="text/css" />  
11 -<!-- Bootstrap style -->  
12 -<link href="metronic_v4.5.4/plugins/bootstrap/css/bootstrap.min.css" rel="stylesheet" type="text/css" />  
13 -<!-- jsTree 数插件 -->  
14 -<link href="metronic_v4.5.4/plugins/jstree/dist/themes/default/style.min.css" rel="stylesheet" type="text/css" />  
15 -<!-- multi-select 多选下拉框美化 -->  
16 -<link href="metronic_v4.5.4/plugins/jquery-multi-select/css/multi-select.css" rel="stylesheet" type="text/css" />  
17 -<!-- metronic style -->  
18 -<link href="metronic_v4.5.4/layout4/css/themes/default.min.css" rel="stylesheet" type="text/css" id="style_color" />  
19 -<link href="metronic_v4.5.4/css/components.css" rel="stylesheet" type="text/css" />  
20 -<link href="metronic_v4.5.4/css/plugins.css" rel="stylesheet" type="text/css" />  
21 -<link href="metronic_v4.5.4/layout4/css/layout.min.css" rel="stylesheet" type="text/css" />  
22 -<link href="metronic_v4.5.4/layout4/css/custom.min.css" rel="stylesheet" type="text/css" />  
23 -<!-- select2 下拉框插件 -->  
24 -<link href="metronic_v4.5.4/plugins/select2/css/select2.min.css" rel="stylesheet" type="text/css" />  
25 -<link href="metronic_v4.5.4/plugins/select2/css/select2-bootstrap.min.css" rel="stylesheet" type="text/css" />  
26 -<!-- layer 弹层 插件 -->  
27 -<link href="assets/plugins/layer-v2.2/layer/skin/layer.css" rel="stylesheet" type="text/css" />  
28 -<!-- iCheck 单选框和复选框 -->  
29 -<link href="metronic_v4.5.4/plugins/icheck/skins/all.css" rel="stylesheet" type="text/css" />  
30 -<style type="text/css">  
31 -.searchForm{  
32 -}  
33 -.searchForm .form-group .control-label{  
34 - padding-right: 0px;  
35 - text-align: right;  
36 - margin-top: 7px;  
37 -}  
38 -.searchForm .form-group>div{  
39 - padding-left: 10px;  
40 - padding-right: 0px;  
41 -}  
42 -.searchForm .row>div{  
43 - padding-left: 0px;  
44 - padding-right: 0px;  
45 - padding: 5px 0 5px 0;  
46 - width: 270px;  
47 - display: inline-block;  
48 -}  
49 -.searchForm .form-actions{  
50 -  
51 -}  
52 -tr.row-active td {  
53 - border-bottom: 1px solid blue!important;  
54 - color: blue;  
55 -}  
56 -.ms-container .ms-selectable li.ms-elem-selectable, .ms-container .ms-selection li.ms-elem-selection {  
57 - font-size: 14px;  
58 -}  
59 -.ms-container .ms-selectable li.ms-elem-selectable, .ms-container .ms-selection li.ms-elem-selection{  
60 - padding: 6px 26px;  
61 -}  
62 -.ms-container .ms-list{  
63 - height: 306px;  
64 -}  
65 -.ms-container .ms-selectable, .ms-container .ms-selection{  
66 - width: 47%;  
67 -}  
68 -.ms-container {  
69 - width: 470px;  
70 - margin: auto;  
71 -}  
72 -.multi-custom-header-left{  
73 - text-align: center;  
74 - padding: 7px;  
75 - color: #3B3F51;  
76 -}  
77 -.multi-custom-header-right{  
78 - text-align: center;  
79 - padding: 7px;  
80 - font-weight: bold;  
81 - color: #36C6D3;  
82 -}  
83 -.mt-element-list .list-simple.mt-list-container ul > .mt-list-item > .list-item-content {  
84 - padding: 0 55px 0 0px;  
85 -}  
86 -.mt-element-list .list-simple.mt-list-container ul > .mt-list-item {  
87 - padding: 3.3px 0;  
88 -}  
89 -</style>  
90 -</head>  
91 -<body class="page-container-bg-solid page-header-fixed page-sidebar-closed-hide-logo page-sidebar-fixed">  
92 - <div class="page-header navbar navbar-fixed-top">  
93 - <div class="page-header-inner ">  
94 - <!-- LOGO -->  
95 - <div class="page-logo">  
96 - <a href="index.html">  
97 - <img src="" alt="logo" class="logo-default" /> </a>  
98 - <div class="menu-toggler sidebar-toggler">  
99 - </div>  
100 - </div>  
101 - <!-- END LOGO -->  
102 - <a href="javascript:;" class="menu-toggler responsive-toggler" data-toggle="collapse" data-target=".navbar-collapse"> </a>  
103 - <div class="page-top">  
104 - <form class="search-form" action="page_general_search_2.html" method="GET">  
105 - <div class="input-group">  
106 - <input type="text" class="form-control input-sm" placeholder="Search..." name="query">  
107 - <span class="input-group-btn">  
108 - <a href="javascript:;" class="btn submit">  
109 - <i class="fa fa-search"></i>  
110 - </a>  
111 - </span>  
112 - </div>  
113 - </form>  
114 - <div class="top-menu">  
115 - <ul class="nav navbar-nav pull-right">  
116 - <!-- 信息通知区 -->  
117 - <li class="dropdown dropdown-extended dropdown-notification dropdown-dark" id="header_notification_bar">  
118 - <a href="javascript:;" class="dropdown-toggle" data-toggle="dropdown" data-hover="dropdown" data-close-others="true">  
119 - <i class="fa fa-bell"></i>  
120 - <span class="badge badge-success"> 3 </span>  
121 - </a>  
122 - <ul class="dropdown-menu" style="max-width: 345px;width: 345px;">  
123 - <li class="external">  
124 - <h3>今日 <span class="bold">318 条</span> 通知</h3>  
125 - <a href="page_user_profile_1.html">查看全部</a>  
126 - </li>  
127 - <li>  
128 - <ul class="dropdown-menu-list scroller" style="height: 250px;" data-handle-color="#637283">  
129 - <li>  
130 - <a href="javascript:;">  
131 - <span class="time">现在</span>  
132 - <span class="details">  
133 - <span class="label label-sm label-icon label-info"> </span>  
134 - W1B-020 成山路请求出场  
135 - </span>  
136 - </a>  
137 - </li>  
138 - <li>  
139 - <a href="javascript:;">  
140 - <span class="time">10分钟前</span>  
141 - <span class="details">  
142 - <span class="label label-sm label-icon label-success"> </span>  
143 - W1B-375 速度正常,超速约10分钟  
144 - </span>  
145 - </a>  
146 - </li>  
147 - <li>  
148 - <a href="javascript:;">  
149 - <span class="time">20分钟前</span>  
150 - <span class="details">  
151 - <span class="label label-sm label-icon label-danger"> </span>  
152 - W1B-375 超速警报  
153 - </span>  
154 - </a>  
155 - </li>  
156 - </ul>  
157 - </li>  
158 - </ul>  
159 - </li>  
160 - <li class="dropdown dropdown-user dropdown-dark">  
161 - <a href="javascript:;" class="dropdown-toggle" data-toggle="dropdown" data-hover="dropdown" data-close-others="true">  
162 - <span class="username username-hide-on-mobile" style="vertical-align: middle;">潘钊 <i class="fa fa-user"></i></span>  
163 - </a>  
164 - <ul class="dropdown-menu dropdown-menu-default">  
165 - <li>  
166 - <a href="javascript:;">  
167 - <i class="fa fa-user"></i> 我的信息 </a>  
168 - </li>  
169 - <li class="divider"> </li>  
170 - <li>  
171 - <a href="javascript:;">  
172 - <i class="fa fa-lock"></i> 锁屏 </a>  
173 - </li>  
174 - <li>  
175 - <a href="/user/logout">  
176 - <i class="fa fa-key"></i> 注销登陆 </a>  
177 - </li>  
178 - </ul>  
179 - </li>  
180 - </ul>  
181 - </div>  
182 - </div>  
183 - </div>  
184 - </div>  
185 - <div class="page-container">  
186 - <div class="page-sidebar-wrapper">  
187 - <div class="page-sidebar navbar-collapse collapse">  
188 - <ul class="page-sidebar-menu page-sidebar-menu-fixed" data-keep-expanded="false" data-auto-scroll="true" data-slide-speed="200" id="leftMenuSidebar">  
189 - </ul>  
190 - </div>  
191 - </div>  
192 - <div class="page-content-wrapper">  
193 - <div class="page-content" id="pjax-container"></div>  
194 - </div>  
195 - </div>  
196 -  
197 -<script id="menu_list_temp" type="text/html">  
198 -{{each list as group i}}  
199 - <li class="heading">  
200 - <h3 class="uppercase">{{group.name}}</h3>  
201 - </li>  
202 - {{each group.children as dir j}}  
203 - <li class="nav-item">  
204 - <a href="javascript:;" class="nav-link nav-toggle ">  
205 - <i class="{{dir.icon}}"></i>  
206 - <span class="title">{{dir.name}}</span>  
207 - <span class="arrow"></span>  
208 - </a>  
209 - <ul class="sub-menu">  
210 - {{each dir.children as module s}}  
211 - <li class="nav-item ">  
212 - <a href="/pages/{{module.path}}" class="nav-link " data-pjax>  
213 - <span class="title">{{module.name}}</span>  
214 - </a>  
215 - </li>  
216 - {{/each}}  
217 - </ul>  
218 - </li>  
219 - {{/each}}  
220 -{{/each}}  
221 -</script>  
222 - <!--[if lt IE 9]>  
223 -<script src="assets/plugins/respond.min.js"></script>  
224 -<script src="assets/plugins/excanvas.min.js"></script>  
225 -<![endif]-->  
226 -<!-- jquery -->  
227 -<script src="metronic_v4.5.4/plugins/jquery.min.js" ></script>  
228 -<!-- bootstrap -->  
229 -<script src="metronic_v4.5.4/plugins/bootstrap/js/bootstrap.min.js" ></script>  
230 -<!-- metronic js -->  
231 -<script src="metronic_v4.5.4/scripts/app.min.js" ></script>  
232 -<script src="metronic_v4.5.4/layout4/scripts/layout.min.js" ></script>  
233 -<!-- 虚拟滚动条 -->  
234 -<script src="metronic_v4.5.4/plugins/jquery-slimscroll/jquery.slimscroll.min.js" ></script>  
235 -<!-- jsTree 树插件 -->  
236 -<script src="metronic_v4.5.4/plugins/jstree/dist/jstree.min.js" ></script>  
237 -<!-- bootstrap-hover-dropdown -->  
238 -<script src="metronic_v4.5.4/plugins/bootstrap-hover-dropdown/bootstrap-hover-dropdown.min.js" ></script>  
239 -<!-- jquery.validate 表单验证 -->  
240 -<script src="metronic_v4.5.4/plugins/jquery-validation/js/jquery.validate.min.js"></script>  
241 -<script src="metronic_v4.5.4/plugins/jquery-validation/js/localization/messages_zh.js"></script>  
242 -<!-- 向导式插件 -->  
243 -<script src="metronic_v4.5.4//plugins/bootstrap-wizard/jquery.bootstrap.wizard.min.js"></script>  
244 -<!-- iCheck 单选框和复选框 -->  
245 -<script src="metronic_v4.5.4/plugins/icheck/icheck.min.js" type="text/javascript"></script>  
246 -<!-- select2 下拉框 -->  
247 -<script src="metronic_v4.5.4/plugins/select2/js/select2.full.min.js" type="text/javascript"></script>  
248 -<!-- multi-select 多选下拉框美化 -->  
249 -<script src="metronic_v4.5.4/plugins/jquery-multi-select/js/jquery.multi-select.js" type="text/javascript"></script>  
250 -<!-- pjax -->  
251 -<script src="assets/plugins/jquery.pjax.js"></script>  
252 -<!-- layer 弹层 -->  
253 -<script src="assets/plugins/layer-v2.2/layer/layer.js"></script>  
254 -<!-- jquery.purl url解析 -->  
255 -<script src="assets/plugins/purl.js"></script>  
256 -<!-- jquery.serializejson json序列化插件 -->  
257 -<script src="assets/plugins/jquery.serializejson.js"></script>  
258 -<!-- art-template 模版引擎 -->  
259 -<script src="assets/plugins/template.js"></script>  
260 -<!-- jquery.pageinator 分页 -->  
261 -<script src="assets/plugins/jqPaginator.min.js"></script>  
262 -<!-- moment.js 日期处理类库 -->  
263 -<script src="assets/plugins/moment-with-locales.js"></script>  
264 -  
265 -<script src="assets/plugins/pinyin.js"></script>  
266 -  
267 -<script src="assets/js/common.js"></script>  
268 -<script type="text/javascript">  
269 -  
270 -var dir = '/pages/';  
271 -var pjaxContainer = '#pjax-container';  
272 -  
273 -$(function(){  
274 - //带 data-pjax 的链接由pjax加载  
275 - $(document).pjax('a[data-pjax]', pjaxContainer);  
276 -  
277 - //左菜单点击事件  
278 - $(document).on('click','#leftMenuSidebar a[data-pjax]', function(){  
279 - $('#leftMenuSidebar li.nav-item.active').removeClass('active');  
280 - $(this).parent().addClass('active');  
281 - });  
282 -  
283 - //加载左菜单栏  
284 - $get('/module/findByCurrentUser', null,  
285 - function(ms){  
286 - var treeArray = createTreeData(ms);  
287 - treeArray.sort(function(a, b){  
288 - return a.createDate - b.createDate;  
289 - });  
290 - var menuHtml = template('menu_list_temp', {list: treeArray});  
291 - $('#leftMenuSidebar').html(menuHtml);  
292 -  
293 - // 检查Hash值  
294 - var h = location.hash;  
295 - if(h && h.indexOf(dir) != -1){  
296 - var path = h.substring(1, h.length);  
297 - loadPage(path);  
298 - //选中对应菜单项  
299 - $.each($('#leftMenuSidebar a'), function(i, item){  
300 - if(urlPattern($(item).attr('href'), path)){  
301 - $(item).parent('.nav-item').addClass('active').parent('.sub-menu').show().parent().addClass('open');  
302 - }  
303 - });  
304 - }  
305 - else{  
306 - //加载主页  
307 - loadPage('pages/home.html');  
308 - }  
309 - });  
310 -});  
311 -  
312 - //modal关闭时销毁dom  
313 - $(document).on('hidden.bs.modal', '.modal', function(){  
314 - $(this).remove();  
315 - });  
316 -  
317 - function loadPage(url){  
318 - $.pjax({url: url, container: pjaxContainer});  
319 - }  
320 -  
321 - function urlPattern(a , b){  
322 - var r;  
323 - try {  
324 - r = a.substring(0, a.lastIndexOf('/')) == b.substring(0, b.lastIndexOf('/'));  
325 - } catch (e) {  
326 - r = false;  
327 - }  
328 - return r;  
329 - }  
330 -</script>  
331 -</body> 1 +<!DOCTYPE html>
  2 +<html>
  3 +<head>
  4 +<meta charset="UTF-8">
  5 +<title>调度系统</title>
  6 +<meta name=”renderer” content=”webkit”>
  7 +<meta http-equiv=”X-UA-Compatible” content=”IE=Edge,chrome=1″ >
  8 +
  9 +<!-- Font Awesome 图标字体 -->
  10 +<link href="metronic_v4.5.4/plugins/font-awesome/css/font-awesome.min.css" rel="stylesheet" type="text/css" />
  11 +<!-- Bootstrap style -->
  12 +<link href="metronic_v4.5.4/plugins/bootstrap/css/bootstrap.min.css" rel="stylesheet" type="text/css" />
  13 +<!-- jsTree 数插件 -->
  14 +<link href="metronic_v4.5.4/plugins/jstree/dist/themes/default/style.min.css" rel="stylesheet" type="text/css" />
  15 +<!-- multi-select 多选下拉框美化 -->
  16 +<link href="metronic_v4.5.4/plugins/jquery-multi-select/css/multi-select.css" rel="stylesheet" type="text/css" />
  17 +<!-- metronic style -->
  18 +<link href="metronic_v4.5.4/layout4/css/themes/default.min.css" rel="stylesheet" type="text/css" id="style_color" />
  19 +<link href="metronic_v4.5.4/css/components.css" rel="stylesheet" type="text/css" />
  20 +<link href="metronic_v4.5.4/css/plugins.css" rel="stylesheet" type="text/css" />
  21 +<link href="metronic_v4.5.4/layout4/css/layout.min.css" rel="stylesheet" type="text/css" />
  22 +<link href="metronic_v4.5.4/layout4/css/custom.min.css" rel="stylesheet" type="text/css" />
  23 +<!-- select2 下拉框插件 -->
  24 +<link href="metronic_v4.5.4/plugins/select2/css/select2.min.css" rel="stylesheet" type="text/css" />
  25 +<link href="metronic_v4.5.4/plugins/select2/css/select2-bootstrap.min.css" rel="stylesheet" type="text/css" />
  26 +<!-- layer 弹层 插件 -->
  27 +<link href="assets/plugins/layer-v2.2/layer/skin/layer.css" rel="stylesheet" type="text/css" />
  28 +<!-- iCheck 单选框和复选框 -->
  29 +<link href="metronic_v4.5.4/plugins/icheck/skins/all.css" rel="stylesheet" type="text/css" />
  30 +<!-- 日期控件 -->
  31 +<link href="metronic_v4.5.4/plugins/bootstrap-datetimepicker-2/css/bootstrap-datetimepicker.min.css" rel="stylesheet" type="text/css" />
  32 +<style type="text/css">
  33 +.searchForm{
  34 +}
  35 +.searchForm .form-group .control-label{
  36 + padding-right: 0px;
  37 + text-align: right;
  38 + margin-top: 7px;
  39 +}
  40 +.searchForm .form-group>div{
  41 + padding-left: 10px;
  42 + padding-right: 0px;
  43 +}
  44 +.searchForm .row>div{
  45 + padding-left: 0px;
  46 + padding-right: 0px;
  47 + padding: 5px 0 5px 0;
  48 + width: 270px;
  49 + display: inline-block;
  50 +}
  51 +.searchForm .form-actions{
  52 +
  53 +}
  54 +tr.row-active td {
  55 + border-bottom: 1px solid blue!important;
  56 + color: blue;
  57 +}
  58 +.ms-container .ms-selectable li.ms-elem-selectable, .ms-container .ms-selection li.ms-elem-selection {
  59 + font-size: 14px;
  60 +}
  61 +.ms-container .ms-selectable li.ms-elem-selectable, .ms-container .ms-selection li.ms-elem-selection{
  62 + padding: 6px 26px;
  63 +}
  64 +.ms-container .ms-list{
  65 + height: 306px;
  66 +}
  67 +.ms-container .ms-selectable, .ms-container .ms-selection{
  68 + width: 47%;
  69 +}
  70 +.ms-container {
  71 + width: 470px;
  72 + margin: auto;
  73 +}
  74 +.multi-custom-header-left{
  75 + text-align: center;
  76 + padding: 7px;
  77 + color: #3B3F51;
  78 +}
  79 +.multi-custom-header-right{
  80 + text-align: center;
  81 + padding: 7px;
  82 + font-weight: bold;
  83 + color: #36C6D3;
  84 +}
  85 +.mt-element-list .list-simple.mt-list-container ul > .mt-list-item > .list-item-content {
  86 + padding: 0 55px 0 0px;
  87 +}
  88 +.mt-element-list .list-simple.mt-list-container ul > .mt-list-item {
  89 + padding: 3.3px 0;
  90 +}
  91 +</style>
  92 +</head>
  93 +<body class="page-container-bg-solid page-header-fixed page-sidebar-closed-hide-logo page-sidebar-fixed">
  94 + <div class="page-header navbar navbar-fixed-top">
  95 + <div class="page-header-inner ">
  96 + <!-- LOGO -->
  97 + <div class="page-logo">
  98 + <a href="index.html">
  99 + <img src="" alt="logo" class="logo-default" /> </a>
  100 + <div class="menu-toggler sidebar-toggler">
  101 + </div>
  102 + </div>
  103 + <!-- END LOGO -->
  104 + <a href="javascript:;" class="menu-toggler responsive-toggler" data-toggle="collapse" data-target=".navbar-collapse"> </a>
  105 + <div class="page-top">
  106 + <form class="search-form" action="page_general_search_2.html" method="GET">
  107 + <div class="input-group">
  108 + <input type="text" class="form-control input-sm" placeholder="Search..." name="query">
  109 + <span class="input-group-btn">
  110 + <a href="javascript:;" class="btn submit">
  111 + <i class="fa fa-search"></i>
  112 + </a>
  113 + </span>
  114 + </div>
  115 + </form>
  116 + <div class="top-menu">
  117 + <ul class="nav navbar-nav pull-right">
  118 + <!-- 信息通知区 -->
  119 + <li class="dropdown dropdown-extended dropdown-notification dropdown-dark" id="header_notification_bar">
  120 + <a href="javascript:;" class="dropdown-toggle" data-toggle="dropdown" data-hover="dropdown" data-close-others="true">
  121 + <i class="fa fa-bell"></i>
  122 + <span class="badge badge-success"> 3 </span>
  123 + </a>
  124 + <ul class="dropdown-menu" style="max-width: 345px;width: 345px;">
  125 + <li class="external">
  126 + <h3>今日 <span class="bold">318 条</span> 通知</h3>
  127 + <a href="page_user_profile_1.html">查看全部</a>
  128 + </li>
  129 + <li>
  130 + <ul class="dropdown-menu-list scroller" style="height: 250px;" data-handle-color="#637283">
  131 + <li>
  132 + <a href="javascript:;">
  133 + <span class="time">现在</span>
  134 + <span class="details">
  135 + <span class="label label-sm label-icon label-info"> </span>
  136 + W1B-020 成山路请求出场
  137 + </span>
  138 + </a>
  139 + </li>
  140 + <li>
  141 + <a href="javascript:;">
  142 + <span class="time">10分钟前</span>
  143 + <span class="details">
  144 + <span class="label label-sm label-icon label-success"> </span>
  145 + W1B-375 速度正常,超速约10分钟
  146 + </span>
  147 + </a>
  148 + </li>
  149 + <li>
  150 + <a href="javascript:;">
  151 + <span class="time">20分钟前</span>
  152 + <span class="details">
  153 + <span class="label label-sm label-icon label-danger"> </span>
  154 + W1B-375 超速警报
  155 + </span>
  156 + </a>
  157 + </li>
  158 + </ul>
  159 + </li>
  160 + </ul>
  161 + </li>
  162 + <li class="dropdown dropdown-user dropdown-dark">
  163 + <a href="javascript:;" class="dropdown-toggle" data-toggle="dropdown" data-hover="dropdown" data-close-others="true">
  164 + <span class="username username-hide-on-mobile" style="vertical-align: middle;">潘钊 <i class="fa fa-user"></i></span>
  165 + </a>
  166 + <ul class="dropdown-menu dropdown-menu-default">
  167 + <li>
  168 + <a href="javascript:;">
  169 + <i class="fa fa-user"></i> 我的信息 </a>
  170 + </li>
  171 + <li class="divider"> </li>
  172 + <li>
  173 + <a href="javascript:;">
  174 + <i class="fa fa-lock"></i> 锁屏 </a>
  175 + </li>
  176 + <li>
  177 + <a href="/user/logout">
  178 + <i class="fa fa-key"></i> 注销登陆 </a>
  179 + </li>
  180 + </ul>
  181 + </li>
  182 + </ul>
  183 + </div>
  184 + </div>
  185 + </div>
  186 + </div>
  187 + <div class="page-container">
  188 + <div class="page-sidebar-wrapper">
  189 + <div class="page-sidebar navbar-collapse collapse">
  190 + <ul class="page-sidebar-menu page-sidebar-menu-fixed" data-keep-expanded="false" data-auto-scroll="true" data-slide-speed="200" id="leftMenuSidebar">
  191 + </ul>
  192 + </div>
  193 + </div>
  194 + <div class="page-content-wrapper">
  195 + <div class="page-content" id="pjax-container"></div>
  196 + </div>
  197 + </div>
  198 +
  199 +<script id="menu_list_temp" type="text/html">
  200 +{{each list as group i}}
  201 + <li class="heading">
  202 + <h3 class="uppercase">{{group.name}}</h3>
  203 + </li>
  204 + {{each group.children as dir j}}
  205 + <li class="nav-item">
  206 + <a href="javascript:;" class="nav-link nav-toggle ">
  207 + <i class="{{dir.icon}}"></i>
  208 + <span class="title">{{dir.name}}</span>
  209 + <span class="arrow"></span>
  210 + </a>
  211 + <ul class="sub-menu">
  212 + {{each dir.children as module s}}
  213 + <li class="nav-item ">
  214 + <a href="/pages/{{module.path}}" class="nav-link " data-pjax>
  215 + <span class="title">{{module.name}}</span>
  216 + </a>
  217 + </li>
  218 + {{/each}}
  219 + </ul>
  220 + </li>
  221 + {{/each}}
  222 +{{/each}}
  223 +</script>
  224 + <!--[if lt IE 9]>
  225 +<script src="assets/plugins/respond.min.js"></script>
  226 +<script src="assets/plugins/excanvas.min.js"></script>
  227 +<![endif]-->
  228 +<!-- jquery -->
  229 +<script src="metronic_v4.5.4/plugins/jquery.min.js" ></script>
  230 +<!-- bootstrap -->
  231 +<script src="metronic_v4.5.4/plugins/bootstrap/js/bootstrap.min.js" ></script>
  232 +<!-- metronic js -->
  233 +<script src="metronic_v4.5.4/scripts/app.min.js" ></script>
  234 +<script src="metronic_v4.5.4/layout4/scripts/layout.min.js" ></script>
  235 +<!-- 虚拟滚动条 -->
  236 +<script src="metronic_v4.5.4/plugins/jquery-slimscroll/jquery.slimscroll.min.js" ></script>
  237 +<!-- jsTree 树插件 -->
  238 +<script src="metronic_v4.5.4/plugins/jstree/dist/jstree.min.js" ></script>
  239 +<!-- bootstrap-hover-dropdown -->
  240 +<script src="metronic_v4.5.4/plugins/bootstrap-hover-dropdown/bootstrap-hover-dropdown.min.js" ></script>
  241 +<!-- jquery.validate 表单验证 -->
  242 +<script src="metronic_v4.5.4/plugins/jquery-validation/js/jquery.validate.min.js"></script>
  243 +<script src="metronic_v4.5.4/plugins/jquery-validation/js/localization/messages_zh.js"></script>
  244 +<!-- 向导式插件 -->
  245 +<script src="metronic_v4.5.4//plugins/bootstrap-wizard/jquery.bootstrap.wizard.min.js"></script>
  246 +<!-- iCheck 单选框和复选框 -->
  247 +<script src="metronic_v4.5.4/plugins/icheck/icheck.min.js" type="text/javascript"></script>
  248 +<!-- select2 下拉框 -->
  249 +<script src="metronic_v4.5.4/plugins/select2/js/select2.full.min.js" type="text/javascript"></script>
  250 +<!-- multi-select 多选下拉框美化 -->
  251 +<script src="metronic_v4.5.4/plugins/jquery-multi-select/js/jquery.multi-select.js" type="text/javascript"></script>
  252 +<!-- pjax -->
  253 +<script src="assets/plugins/jquery.pjax.js"></script>
  254 +<!-- layer 弹层 -->
  255 +<script src="assets/plugins/layer-v2.2/layer/layer.js"></script>
  256 +<!-- jquery.purl url解析 -->
  257 +<script src="assets/plugins/purl.js"></script>
  258 +<!-- jquery.serializejson json序列化插件 -->
  259 +<script src="assets/plugins/jquery.serializejson.js"></script>
  260 +<!-- art-template 模版引擎 -->
  261 +<script src="assets/plugins/template.js"></script>
  262 +<!-- jquery.pageinator 分页 -->
  263 +<script src="assets/plugins/jqPaginator.min.js"></script>
  264 +<!-- moment.js 日期处理类库 -->
  265 +<script src="assets/plugins/moment-with-locales.js"></script>
  266 +
  267 +<script src="assets/plugins/pinyin.js"></script>
  268 +<!-- 日期控件 -->
  269 +<script src="metronic_v4.5.4/plugins/bootstrap-datetimepicker-2/js/bootstrap-datetimepicker.min.js" type="text/javascript"></script>
  270 +<script src="assets/js/common.js"></script>
  271 +<script type="text/javascript">
  272 +
  273 +var dir = '/pages/';
  274 +var pjaxContainer = '#pjax-container';
  275 +
  276 +$(function(){
  277 + //带 data-pjax 的链接由pjax加载
  278 + $(document).pjax('a[data-pjax]', pjaxContainer);
  279 +
  280 + //左菜单点击事件
  281 + $(document).on('click','#leftMenuSidebar a[data-pjax]', function(){
  282 + $('#leftMenuSidebar li.nav-item.active').removeClass('active');
  283 + $(this).parent().addClass('active');
  284 + });
  285 +
  286 + //加载左菜单栏
  287 + $get('/module/findByCurrentUser', null,
  288 + function(ms){
  289 + var treeArray = createTreeData(ms);
  290 + treeArray.sort(function(a, b){
  291 + return a.createDate - b.createDate;
  292 + });
  293 + var menuHtml = template('menu_list_temp', {list: treeArray});
  294 + $('#leftMenuSidebar').html(menuHtml);
  295 +
  296 + // 检查Hash值
  297 + var h = location.hash;
  298 + if(h && h.indexOf(dir) != -1){
  299 + var path = h.substring(1, h.length);
  300 + loadPage(path);
  301 + //选中对应菜单项
  302 + $.each($('#leftMenuSidebar a'), function(i, item){
  303 + if(urlPattern($(item).attr('href'), path)){
  304 + $(item).parent('.nav-item').addClass('active').parent('.sub-menu').show().parent().addClass('open');
  305 + }
  306 + });
  307 + }
  308 + else{
  309 + //加载主页
  310 + loadPage('pages/home.html');
  311 + }
  312 + });
  313 +});
  314 +
  315 + //modal关闭时销毁dom
  316 + $(document).on('hidden.bs.modal', '.modal', function(){
  317 + $(this).remove();
  318 + });
  319 +
  320 + function loadPage(url){
  321 + $.pjax({url: url, container: pjaxContainer});
  322 + }
  323 +
  324 + function urlPattern(a , b){
  325 + var r;
  326 + try {
  327 + r = a.substring(0, a.lastIndexOf('/')) == b.substring(0, b.lastIndexOf('/'));
  328 + } catch (e) {
  329 + r = false;
  330 + }
  331 + return r;
  332 + }
  333 +</script>
  334 +</body>
332 </html> 335 </html>
333 \ No newline at end of file 336 \ No newline at end of file
src/main/resources/static/metronic_v4.5.4/plugins/bootstrap-datetimepicker-2/LICENSE 0 → 100644
  1 +The MIT License (MIT)
  2 +
  3 +Copyright (c) 2015 Jonathan Peterson (@Eonasdan)
  4 +
  5 +Permission is hereby granted, free of charge, to any person obtaining a copy
  6 +of this software and associated documentation files (the "Software"), to deal
  7 +in the Software without restriction, including without limitation the rights
  8 +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
  9 +copies of the Software, and to permit persons to whom the Software is
  10 +furnished to do so, subject to the following conditions:
  11 +
  12 +The above copyright notice and this permission notice shall be included in all
  13 +copies or substantial portions of the Software.
  14 +
  15 +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  16 +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  17 +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
  18 +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  19 +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
  20 +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
  21 +SOFTWARE.
src/main/resources/static/metronic_v4.5.4/plugins/bootstrap-datetimepicker-2/README.md 0 → 100644
  1 +# Bootstrap 3 Date/Time Picker
  2 +![GitHub version](https://badge.fury.io/gh/Eonasdan%2Fbootstrap-datetimepicker.png)&nbsp;&nbsp;&nbsp;![Travis](https://travis-ci.org/Eonasdan/bootstrap-datetimepicker.svg?branch=development)&nbsp;&nbsp;&nbsp;[![Stories in Ready](https://badge.waffle.io/Eonasdan/bootstrap-datetimepicker.png?label=ready&title=Ready)](https://waffle.io/Eonasdan/bootstrap-datetimepicker)
  3 +
  4 +![DateTimePicker](http://i.imgur.com/nfnvh5g.png)
  5 +
  6 +## [View the manual and demos](http://eonasdan.github.io/bootstrap-datetimepicker/)
  7 +
  8 +# v4.17.37
  9 +
  10 +Is the current stable release. The latest and greatest changes are available from the [development branch](https://github.com/Eonasdan/bootstrap-datetimepicker/tree/development)
  11 +
  12 +# Version 5
  13 +
  14 +IMPORANT! The Nuget packages will be depreciated in this release. Moving forward, Asp.Net/Nuget will **NOT** be delivering content packages like this one and you will need to use bower. See [this issue for more]( https://github.com/Eonasdan/bootstrap-datetimepicker/issues/1128)
  15 +
  16 +v5 is [in planning](https://github.com/Eonasdan/bootstrap-datetimepicker/issues/841). We welcome your suggestions.
  17 +
  18 +A major update is a great time to make be able to make breaking changes.
  19 +
  20 +## Submitting Issues
  21 +If you have issues, please check the following first:
  22 +* Have you read the docs?
  23 +* Do you have the latest version of momentjs?
  24 +* Do you have the latest version of jQuery?
  25 +* Please test and/or fork [this jsfiddle](http://jsfiddle.net/Eonasdan/0Ltv25o8/) with an example of your issue before you post an issue here.
  26 +* Please indicate which version of the picker you are using (this can be found at the top of any included file)
  27 +
  28 +## Where do you use this?
  29 +I'd love to know if your public site is using this plugin and list your logo on the documentation site. Please email me `me at eonasdan dot com`.
  30 +
  31 +##Priority support is available at an hourly rate.
  32 +
  33 +If you have an urgent request, bug or need installation help, please contact me at `me at eonasdan dot com` for a quote.
  34 +
  35 +## [Installation instructions](http://eonasdan.github.io/bootstrap-datetimepicker/Installing/)
  36 +
  37 +## [Change Log](http://eonasdan.github.io/bootstrap-datetimepicker/Changelog/)
src/main/resources/static/metronic_v4.5.4/plugins/bootstrap-datetimepicker-2/css/bootstrap-datetimepicker-standalone.css 0 → 100644
  1 +/*!
  2 + * Datetimepicker for Bootstrap 3
  3 + * version : 4.17.37
  4 + * https://github.com/Eonasdan/bootstrap-datetimepicker/
  5 + */
  6 +@font-face {
  7 + font-family: 'Glyphicons Halflings';
  8 + src: url('../fonts/glyphicons-halflings-regular.eot');
  9 + src: url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/glyphicons-halflings-regular.woff2') format('woff2'), url('../fonts/glyphicons-halflings-regular.woff') format('woff'), url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg');
  10 +}
  11 +
  12 +.glyphicon {
  13 + position: relative;
  14 + top: 1px;
  15 + display: inline-block;
  16 + font-family: 'Glyphicons Halflings';
  17 + font-style: normal;
  18 + font-weight: normal;
  19 + line-height: 1;
  20 + -webkit-font-smoothing: antialiased;
  21 + -moz-osx-font-smoothing: grayscale;
  22 +}
  23 +
  24 +.glyphicon-time:before {
  25 + content: "\e023";
  26 +}
  27 +
  28 +.glyphicon-chevron-left:before {
  29 + content: "\e079";
  30 +}
  31 +
  32 +.glyphicon-chevron-right:before {
  33 + content: "\e080";
  34 +}
  35 +
  36 +.glyphicon-chevron-up:before {
  37 + content: "\e113";
  38 +}
  39 +
  40 +.glyphicon-chevron-down:before {
  41 + content: "\e114";
  42 +}
  43 +
  44 +.glyphicon-calendar:before {
  45 + content: "\e109";
  46 +}
  47 +
  48 +.btn {
  49 + display: inline-block;
  50 + padding: 6px 12px;
  51 + margin-bottom: 0;
  52 + font-size: 14px;
  53 + font-weight: normal;
  54 + line-height: 1.42857143;
  55 + text-align: center;
  56 + white-space: nowrap;
  57 + vertical-align: middle;
  58 + -ms-touch-action: manipulation;
  59 + touch-action: manipulation;
  60 + cursor: pointer;
  61 + -webkit-user-select: none;
  62 + -moz-user-select: none;
  63 + -ms-user-select: none;
  64 + user-select: none;
  65 + background-image: none;
  66 + border: 1px solid transparent;
  67 + border-radius: 4px;
  68 +}
  69 +
  70 +.collapse {
  71 + display: none;
  72 +}
  73 +
  74 + .collapse.in {
  75 + display: block;
  76 + }
  77 +
  78 +.dropdown-menu {
  79 + position: absolute;
  80 + left: 0;
  81 + z-index: 1000;
  82 + display: none;
  83 + float: left;
  84 + min-width: 160px;
  85 + padding: 5px 0;
  86 + margin: 2px 0 0;
  87 + font-size: 14px;
  88 + text-align: left;
  89 + list-style: none;
  90 + background-color: #fff;
  91 + -webkit-background-clip: padding-box;
  92 + background-clip: padding-box;
  93 + border: 1px solid #ccc;
  94 + border: 1px solid rgba(0, 0, 0, .15);
  95 + border-radius: 4px;
  96 + -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, .175);
  97 + box-shadow: 0 6px 12px rgba(0, 0, 0, .175);
  98 +}
  99 +
  100 +.list-unstyled {
  101 + padding-left: 0;
  102 + list-style: none;
  103 +}
0 \ No newline at end of file 104 \ No newline at end of file
src/main/resources/static/metronic_v4.5.4/plugins/bootstrap-datetimepicker-2/css/bootstrap-datetimepicker.css 0 → 100644
  1 +/*!
  2 + * Datetimepicker for Bootstrap 3
  3 + * version : 4.17.37
  4 + * https://github.com/Eonasdan/bootstrap-datetimepicker/
  5 + */
  6 +.bootstrap-datetimepicker-widget {
  7 + list-style: none;
  8 +}
  9 +.bootstrap-datetimepicker-widget.dropdown-menu {
  10 + margin: 2px 0;
  11 + padding: 4px;
  12 + width: 19em;
  13 +}
  14 +@media (min-width: 768px) {
  15 + .bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs {
  16 + width: 38em;
  17 + }
  18 +}
  19 +@media (min-width: 992px) {
  20 + .bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs {
  21 + width: 38em;
  22 + }
  23 +}
  24 +@media (min-width: 1200px) {
  25 + .bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs {
  26 + width: 38em;
  27 + }
  28 +}
  29 +.bootstrap-datetimepicker-widget.dropdown-menu:before,
  30 +.bootstrap-datetimepicker-widget.dropdown-menu:after {
  31 + content: '';
  32 + display: inline-block;
  33 + position: absolute;
  34 +}
  35 +.bootstrap-datetimepicker-widget.dropdown-menu.bottom:before {
  36 + border-left: 7px solid transparent;
  37 + border-right: 7px solid transparent;
  38 + border-bottom: 7px solid #cccccc;
  39 + border-bottom-color: rgba(0, 0, 0, 0.2);
  40 + top: -7px;
  41 + left: 7px;
  42 +}
  43 +.bootstrap-datetimepicker-widget.dropdown-menu.bottom:after {
  44 + border-left: 6px solid transparent;
  45 + border-right: 6px solid transparent;
  46 + border-bottom: 6px solid white;
  47 + top: -6px;
  48 + left: 8px;
  49 +}
  50 +.bootstrap-datetimepicker-widget.dropdown-menu.top:before {
  51 + border-left: 7px solid transparent;
  52 + border-right: 7px solid transparent;
  53 + border-top: 7px solid #cccccc;
  54 + border-top-color: rgba(0, 0, 0, 0.2);
  55 + bottom: -7px;
  56 + left: 6px;
  57 +}
  58 +.bootstrap-datetimepicker-widget.dropdown-menu.top:after {
  59 + border-left: 6px solid transparent;
  60 + border-right: 6px solid transparent;
  61 + border-top: 6px solid white;
  62 + bottom: -6px;
  63 + left: 7px;
  64 +}
  65 +.bootstrap-datetimepicker-widget.dropdown-menu.pull-right:before {
  66 + left: auto;
  67 + right: 6px;
  68 +}
  69 +.bootstrap-datetimepicker-widget.dropdown-menu.pull-right:after {
  70 + left: auto;
  71 + right: 7px;
  72 +}
  73 +.bootstrap-datetimepicker-widget .list-unstyled {
  74 + margin: 0;
  75 +}
  76 +.bootstrap-datetimepicker-widget a[data-action] {
  77 + padding: 6px 0;
  78 +}
  79 +.bootstrap-datetimepicker-widget a[data-action]:active {
  80 + box-shadow: none;
  81 +}
  82 +.bootstrap-datetimepicker-widget .timepicker-hour,
  83 +.bootstrap-datetimepicker-widget .timepicker-minute,
  84 +.bootstrap-datetimepicker-widget .timepicker-second {
  85 + width: 54px;
  86 + font-weight: bold;
  87 + font-size: 1.2em;
  88 + margin: 0;
  89 +}
  90 +.bootstrap-datetimepicker-widget button[data-action] {
  91 + padding: 6px;
  92 +}
  93 +.bootstrap-datetimepicker-widget .btn[data-action="incrementHours"]::after {
  94 + position: absolute;
  95 + width: 1px;
  96 + height: 1px;
  97 + margin: -1px;
  98 + padding: 0;
  99 + overflow: hidden;
  100 + clip: rect(0, 0, 0, 0);
  101 + border: 0;
  102 + content: "Increment Hours";
  103 +}
  104 +.bootstrap-datetimepicker-widget .btn[data-action="incrementMinutes"]::after {
  105 + position: absolute;
  106 + width: 1px;
  107 + height: 1px;
  108 + margin: -1px;
  109 + padding: 0;
  110 + overflow: hidden;
  111 + clip: rect(0, 0, 0, 0);
  112 + border: 0;
  113 + content: "Increment Minutes";
  114 +}
  115 +.bootstrap-datetimepicker-widget .btn[data-action="decrementHours"]::after {
  116 + position: absolute;
  117 + width: 1px;
  118 + height: 1px;
  119 + margin: -1px;
  120 + padding: 0;
  121 + overflow: hidden;
  122 + clip: rect(0, 0, 0, 0);
  123 + border: 0;
  124 + content: "Decrement Hours";
  125 +}
  126 +.bootstrap-datetimepicker-widget .btn[data-action="decrementMinutes"]::after {
  127 + position: absolute;
  128 + width: 1px;
  129 + height: 1px;
  130 + margin: -1px;
  131 + padding: 0;
  132 + overflow: hidden;
  133 + clip: rect(0, 0, 0, 0);
  134 + border: 0;
  135 + content: "Decrement Minutes";
  136 +}
  137 +.bootstrap-datetimepicker-widget .btn[data-action="showHours"]::after {
  138 + position: absolute;
  139 + width: 1px;
  140 + height: 1px;
  141 + margin: -1px;
  142 + padding: 0;
  143 + overflow: hidden;
  144 + clip: rect(0, 0, 0, 0);
  145 + border: 0;
  146 + content: "Show Hours";
  147 +}
  148 +.bootstrap-datetimepicker-widget .btn[data-action="showMinutes"]::after {
  149 + position: absolute;
  150 + width: 1px;
  151 + height: 1px;
  152 + margin: -1px;
  153 + padding: 0;
  154 + overflow: hidden;
  155 + clip: rect(0, 0, 0, 0);
  156 + border: 0;
  157 + content: "Show Minutes";
  158 +}
  159 +.bootstrap-datetimepicker-widget .btn[data-action="togglePeriod"]::after {
  160 + position: absolute;
  161 + width: 1px;
  162 + height: 1px;
  163 + margin: -1px;
  164 + padding: 0;
  165 + overflow: hidden;
  166 + clip: rect(0, 0, 0, 0);
  167 + border: 0;
  168 + content: "Toggle AM/PM";
  169 +}
  170 +.bootstrap-datetimepicker-widget .btn[data-action="clear"]::after {
  171 + position: absolute;
  172 + width: 1px;
  173 + height: 1px;
  174 + margin: -1px;
  175 + padding: 0;
  176 + overflow: hidden;
  177 + clip: rect(0, 0, 0, 0);
  178 + border: 0;
  179 + content: "Clear the picker";
  180 +}
  181 +.bootstrap-datetimepicker-widget .btn[data-action="today"]::after {
  182 + position: absolute;
  183 + width: 1px;
  184 + height: 1px;
  185 + margin: -1px;
  186 + padding: 0;
  187 + overflow: hidden;
  188 + clip: rect(0, 0, 0, 0);
  189 + border: 0;
  190 + content: "Set the date to today";
  191 +}
  192 +.bootstrap-datetimepicker-widget .picker-switch {
  193 + text-align: center;
  194 +}
  195 +.bootstrap-datetimepicker-widget .picker-switch::after {
  196 + position: absolute;
  197 + width: 1px;
  198 + height: 1px;
  199 + margin: -1px;
  200 + padding: 0;
  201 + overflow: hidden;
  202 + clip: rect(0, 0, 0, 0);
  203 + border: 0;
  204 + content: "Toggle Date and Time Screens";
  205 +}
  206 +.bootstrap-datetimepicker-widget .picker-switch td {
  207 + padding: 0;
  208 + margin: 0;
  209 + height: auto;
  210 + width: auto;
  211 + line-height: inherit;
  212 +}
  213 +.bootstrap-datetimepicker-widget .picker-switch td span {
  214 + line-height: 2.5;
  215 + height: 2.5em;
  216 + width: 100%;
  217 +}
  218 +.bootstrap-datetimepicker-widget table {
  219 + width: 100%;
  220 + margin: 0;
  221 +}
  222 +.bootstrap-datetimepicker-widget table td,
  223 +.bootstrap-datetimepicker-widget table th {
  224 + text-align: center;
  225 + border-radius: 4px;
  226 +}
  227 +.bootstrap-datetimepicker-widget table th {
  228 + height: 20px;
  229 + line-height: 20px;
  230 + width: 20px;
  231 +}
  232 +.bootstrap-datetimepicker-widget table th.picker-switch {
  233 + width: 145px;
  234 +}
  235 +.bootstrap-datetimepicker-widget table th.disabled,
  236 +.bootstrap-datetimepicker-widget table th.disabled:hover {
  237 + background: none;
  238 + color: #777777;
  239 + cursor: not-allowed;
  240 +}
  241 +.bootstrap-datetimepicker-widget table th.prev::after {
  242 + position: absolute;
  243 + width: 1px;
  244 + height: 1px;
  245 + margin: -1px;
  246 + padding: 0;
  247 + overflow: hidden;
  248 + clip: rect(0, 0, 0, 0);
  249 + border: 0;
  250 + content: "Previous Month";
  251 +}
  252 +.bootstrap-datetimepicker-widget table th.next::after {
  253 + position: absolute;
  254 + width: 1px;
  255 + height: 1px;
  256 + margin: -1px;
  257 + padding: 0;
  258 + overflow: hidden;
  259 + clip: rect(0, 0, 0, 0);
  260 + border: 0;
  261 + content: "Next Month";
  262 +}
  263 +.bootstrap-datetimepicker-widget table thead tr:first-child th {
  264 + cursor: pointer;
  265 +}
  266 +.bootstrap-datetimepicker-widget table thead tr:first-child th:hover {
  267 + background: #eeeeee;
  268 +}
  269 +.bootstrap-datetimepicker-widget table td {
  270 + height: 54px;
  271 + line-height: 54px;
  272 + width: 54px;
  273 +}
  274 +.bootstrap-datetimepicker-widget table td.cw {
  275 + font-size: .8em;
  276 + height: 20px;
  277 + line-height: 20px;
  278 + color: #777777;
  279 +}
  280 +.bootstrap-datetimepicker-widget table td.day {
  281 + height: 20px;
  282 + line-height: 20px;
  283 + width: 20px;
  284 +}
  285 +.bootstrap-datetimepicker-widget table td.day:hover,
  286 +.bootstrap-datetimepicker-widget table td.hour:hover,
  287 +.bootstrap-datetimepicker-widget table td.minute:hover,
  288 +.bootstrap-datetimepicker-widget table td.second:hover {
  289 + background: #eeeeee;
  290 + cursor: pointer;
  291 +}
  292 +.bootstrap-datetimepicker-widget table td.old,
  293 +.bootstrap-datetimepicker-widget table td.new {
  294 + color: #777777;
  295 +}
  296 +.bootstrap-datetimepicker-widget table td.today {
  297 + position: relative;
  298 +}
  299 +.bootstrap-datetimepicker-widget table td.today:before {
  300 + content: '';
  301 + display: inline-block;
  302 + border: solid transparent;
  303 + border-width: 0 0 7px 7px;
  304 + border-bottom-color: #337ab7;
  305 + border-top-color: rgba(0, 0, 0, 0.2);
  306 + position: absolute;
  307 + bottom: 4px;
  308 + right: 4px;
  309 +}
  310 +.bootstrap-datetimepicker-widget table td.active,
  311 +.bootstrap-datetimepicker-widget table td.active:hover {
  312 + background-color: #337ab7;
  313 + color: #ffffff;
  314 + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
  315 +}
  316 +.bootstrap-datetimepicker-widget table td.active.today:before {
  317 + border-bottom-color: #fff;
  318 +}
  319 +.bootstrap-datetimepicker-widget table td.disabled,
  320 +.bootstrap-datetimepicker-widget table td.disabled:hover {
  321 + background: none;
  322 + color: #777777;
  323 + cursor: not-allowed;
  324 +}
  325 +.bootstrap-datetimepicker-widget table td span {
  326 + display: inline-block;
  327 + width: 54px;
  328 + height: 54px;
  329 + line-height: 54px;
  330 + margin: 2px 1.5px;
  331 + cursor: pointer;
  332 + border-radius: 4px;
  333 +}
  334 +.bootstrap-datetimepicker-widget table td span:hover {
  335 + background: #eeeeee;
  336 +}
  337 +.bootstrap-datetimepicker-widget table td span.active {
  338 + background-color: #337ab7;
  339 + color: #ffffff;
  340 + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
  341 +}
  342 +.bootstrap-datetimepicker-widget table td span.old {
  343 + color: #777777;
  344 +}
  345 +.bootstrap-datetimepicker-widget table td span.disabled,
  346 +.bootstrap-datetimepicker-widget table td span.disabled:hover {
  347 + background: none;
  348 + color: #777777;
  349 + cursor: not-allowed;
  350 +}
  351 +.bootstrap-datetimepicker-widget.usetwentyfour td.hour {
  352 + height: 27px;
  353 + line-height: 27px;
  354 +}
  355 +.bootstrap-datetimepicker-widget.wider {
  356 + width: 21em;
  357 +}
  358 +.bootstrap-datetimepicker-widget .datepicker-decades .decade {
  359 + line-height: 1.8em !important;
  360 +}
  361 +.input-group.date .input-group-addon {
  362 + cursor: pointer;
  363 +}
  364 +.sr-only {
  365 + position: absolute;
  366 + width: 1px;
  367 + height: 1px;
  368 + margin: -1px;
  369 + padding: 0;
  370 + overflow: hidden;
  371 + clip: rect(0, 0, 0, 0);
  372 + border: 0;
  373 +}
src/main/resources/static/metronic_v4.5.4/plugins/bootstrap-datetimepicker-2/css/bootstrap-datetimepicker.min.css 0 → 100644
  1 +/*!
  2 + * Datetimepicker for Bootstrap 3
  3 + * version : 4.17.37
  4 + * https://github.com/Eonasdan/bootstrap-datetimepicker/
  5 + */.bootstrap-datetimepicker-widget{list-style:none}.bootstrap-datetimepicker-widget.dropdown-menu{margin:2px 0;padding:4px;width:19em}@media (min-width:768px){.bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs{width:38em}}@media (min-width:992px){.bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs{width:38em}}@media (min-width:1200px){.bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs{width:38em}}.bootstrap-datetimepicker-widget.dropdown-menu:before,.bootstrap-datetimepicker-widget.dropdown-menu:after{content:'';display:inline-block;position:absolute}.bootstrap-datetimepicker-widget.dropdown-menu.bottom:before{border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid #ccc;border-bottom-color:rgba(0,0,0,0.2);top:-7px;left:7px}.bootstrap-datetimepicker-widget.dropdown-menu.bottom:after{border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid white;top:-6px;left:8px}.bootstrap-datetimepicker-widget.dropdown-menu.top:before{border-left:7px solid transparent;border-right:7px solid transparent;border-top:7px solid #ccc;border-top-color:rgba(0,0,0,0.2);bottom:-7px;left:6px}.bootstrap-datetimepicker-widget.dropdown-menu.top:after{border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid white;bottom:-6px;left:7px}.bootstrap-datetimepicker-widget.dropdown-menu.pull-right:before{left:auto;right:6px}.bootstrap-datetimepicker-widget.dropdown-menu.pull-right:after{left:auto;right:7px}.bootstrap-datetimepicker-widget .list-unstyled{margin:0}.bootstrap-datetimepicker-widget a[data-action]{padding:6px 0}.bootstrap-datetimepicker-widget a[data-action]:active{box-shadow:none}.bootstrap-datetimepicker-widget .timepicker-hour,.bootstrap-datetimepicker-widget .timepicker-minute,.bootstrap-datetimepicker-widget .timepicker-second{width:54px;font-weight:bold;font-size:1.2em;margin:0}.bootstrap-datetimepicker-widget button[data-action]{padding:6px}.bootstrap-datetimepicker-widget .btn[data-action="incrementHours"]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0;content:"Increment Hours"}.bootstrap-datetimepicker-widget .btn[data-action="incrementMinutes"]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0;content:"Increment Minutes"}.bootstrap-datetimepicker-widget .btn[data-action="decrementHours"]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0;content:"Decrement Hours"}.bootstrap-datetimepicker-widget .btn[data-action="decrementMinutes"]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0;content:"Decrement Minutes"}.bootstrap-datetimepicker-widget .btn[data-action="showHours"]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0;content:"Show Hours"}.bootstrap-datetimepicker-widget .btn[data-action="showMinutes"]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0;content:"Show Minutes"}.bootstrap-datetimepicker-widget .btn[data-action="togglePeriod"]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0;content:"Toggle AM/PM"}.bootstrap-datetimepicker-widget .btn[data-action="clear"]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0;content:"Clear the picker"}.bootstrap-datetimepicker-widget .btn[data-action="today"]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0;content:"Set the date to today"}.bootstrap-datetimepicker-widget .picker-switch{text-align:center}.bootstrap-datetimepicker-widget .picker-switch::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0;content:"Toggle Date and Time Screens"}.bootstrap-datetimepicker-widget .picker-switch td{padding:0;margin:0;height:auto;width:auto;line-height:inherit}.bootstrap-datetimepicker-widget .picker-switch td span{line-height:2.5;height:2.5em;width:100%}.bootstrap-datetimepicker-widget table{width:100%;margin:0}.bootstrap-datetimepicker-widget table td,.bootstrap-datetimepicker-widget table th{text-align:center;border-radius:4px}.bootstrap-datetimepicker-widget table th{height:20px;line-height:20px;width:20px}.bootstrap-datetimepicker-widget table th.picker-switch{width:145px}.bootstrap-datetimepicker-widget table th.disabled,.bootstrap-datetimepicker-widget table th.disabled:hover{background:none;color:#777;cursor:not-allowed}.bootstrap-datetimepicker-widget table th.prev::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0;content:"Previous Month"}.bootstrap-datetimepicker-widget table th.next::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0;content:"Next Month"}.bootstrap-datetimepicker-widget table thead tr:first-child th{cursor:pointer}.bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#eee}.bootstrap-datetimepicker-widget table td{height:54px;line-height:54px;width:54px}.bootstrap-datetimepicker-widget table td.cw{font-size:.8em;height:20px;line-height:20px;color:#777}.bootstrap-datetimepicker-widget table td.day{height:20px;line-height:20px;width:20px}.bootstrap-datetimepicker-widget table td.day:hover,.bootstrap-datetimepicker-widget table td.hour:hover,.bootstrap-datetimepicker-widget table td.minute:hover,.bootstrap-datetimepicker-widget table td.second:hover{background:#eee;cursor:pointer}.bootstrap-datetimepicker-widget table td.old,.bootstrap-datetimepicker-widget table td.new{color:#777}.bootstrap-datetimepicker-widget table td.today{position:relative}.bootstrap-datetimepicker-widget table td.today:before{content:'';display:inline-block;border:solid transparent;border-width:0 0 7px 7px;border-bottom-color:#337ab7;border-top-color:rgba(0,0,0,0.2);position:absolute;bottom:4px;right:4px}.bootstrap-datetimepicker-widget table td.active,.bootstrap-datetimepicker-widget table td.active:hover{background-color:#337ab7;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25)}.bootstrap-datetimepicker-widget table td.active.today:before{border-bottom-color:#fff}.bootstrap-datetimepicker-widget table td.disabled,.bootstrap-datetimepicker-widget table td.disabled:hover{background:none;color:#777;cursor:not-allowed}.bootstrap-datetimepicker-widget table td span{display:inline-block;width:54px;height:54px;line-height:54px;margin:2px 1.5px;cursor:pointer;border-radius:4px}.bootstrap-datetimepicker-widget table td span:hover{background:#eee}.bootstrap-datetimepicker-widget table td span.active{background-color:#337ab7;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25)}.bootstrap-datetimepicker-widget table td span.old{color:#777}.bootstrap-datetimepicker-widget table td span.disabled,.bootstrap-datetimepicker-widget table td span.disabled:hover{background:none;color:#777;cursor:not-allowed}.bootstrap-datetimepicker-widget.usetwentyfour td.hour{height:27px;line-height:27px}.bootstrap-datetimepicker-widget.wider{width:21em}.bootstrap-datetimepicker-widget .datepicker-decades .decade{line-height:1.8em !important}.input-group.date .input-group-addon{cursor:pointer}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}
0 \ No newline at end of file 6 \ No newline at end of file
src/main/resources/static/metronic_v4.5.4/plugins/bootstrap-datetimepicker-2/js/bootstrap-datetimepicker.min.js 0 → 100644
  1 +/*! version : 4.17.37
  2 + =========================================================
  3 + bootstrap-datetimejs
  4 + https://github.com/Eonasdan/bootstrap-datetimepicker
  5 + Copyright (c) 2015 Jonathan Peterson
  6 + =========================================================
  7 + */
  8 +!function(a){"use strict";if("function"==typeof define&&define.amd)define(["jquery","moment"],a);else if("object"==typeof exports)a(require("jquery"),require("moment"));else{if("undefined"==typeof jQuery)throw"bootstrap-datetimepicker requires jQuery to be loaded first";if("undefined"==typeof moment)throw"bootstrap-datetimepicker requires Moment.js to be loaded first";a(jQuery,moment)}}(function(a,b){"use strict";if(!b)throw new Error("bootstrap-datetimepicker requires Moment.js to be loaded first");var c=function(c,d){var e,f,g,h,i,j,k,l={},m=!0,n=!1,o=!1,p=0,q=[{clsName:"days",navFnc:"M",navStep:1},{clsName:"months",navFnc:"y",navStep:1},{clsName:"years",navFnc:"y",navStep:10},{clsName:"decades",navFnc:"y",navStep:100}],r=["days","months","years","decades"],s=["top","bottom","auto"],t=["left","right","auto"],u=["default","top","bottom"],v={up:38,38:"up",down:40,40:"down",left:37,37:"left",right:39,39:"right",tab:9,9:"tab",escape:27,27:"escape",enter:13,13:"enter",pageUp:33,33:"pageUp",pageDown:34,34:"pageDown",shift:16,16:"shift",control:17,17:"control",space:32,32:"space",t:84,84:"t","delete":46,46:"delete"},w={},x=function(a){var c,e,f,g,h,i=!1;return void 0!==b.tz&&void 0!==d.timeZone&&null!==d.timeZone&&""!==d.timeZone&&(i=!0),void 0===a||null===a?c=i?b().tz(d.timeZone).startOf("d"):b().startOf("d"):i?(e=b().tz(d.timeZone).utcOffset(),f=b(a,j,d.useStrict).utcOffset(),f!==e?(g=b().tz(d.timeZone).format("Z"),h=b(a,j,d.useStrict).format("YYYY-MM-DD[T]HH:mm:ss")+g,c=b(h,j,d.useStrict).tz(d.timeZone)):c=b(a,j,d.useStrict).tz(d.timeZone)):c=b(a,j,d.useStrict),c},y=function(a){if("string"!=typeof a||a.length>1)throw new TypeError("isEnabled expects a single character string parameter");switch(a){case"y":return-1!==i.indexOf("Y");case"M":return-1!==i.indexOf("M");case"d":return-1!==i.toLowerCase().indexOf("d");case"h":case"H":return-1!==i.toLowerCase().indexOf("h");case"m":return-1!==i.indexOf("m");case"s":return-1!==i.indexOf("s");default:return!1}},z=function(){return y("h")||y("m")||y("s")},A=function(){return y("y")||y("M")||y("d")},B=function(){var b=a("<thead>").append(a("<tr>").append(a("<th>").addClass("prev").attr("data-action","previous").append(a("<span>").addClass(d.icons.previous))).append(a("<th>").addClass("picker-switch").attr("data-action","pickerSwitch").attr("colspan",d.calendarWeeks?"6":"5")).append(a("<th>").addClass("next").attr("data-action","next").append(a("<span>").addClass(d.icons.next)))),c=a("<tbody>").append(a("<tr>").append(a("<td>").attr("colspan",d.calendarWeeks?"8":"7")));return[a("<div>").addClass("datepicker-days").append(a("<table>").addClass("table-condensed").append(b).append(a("<tbody>"))),a("<div>").addClass("datepicker-months").append(a("<table>").addClass("table-condensed").append(b.clone()).append(c.clone())),a("<div>").addClass("datepicker-years").append(a("<table>").addClass("table-condensed").append(b.clone()).append(c.clone())),a("<div>").addClass("datepicker-decades").append(a("<table>").addClass("table-condensed").append(b.clone()).append(c.clone()))]},C=function(){var b=a("<tr>"),c=a("<tr>"),e=a("<tr>");return y("h")&&(b.append(a("<td>").append(a("<a>").attr({href:"#",tabindex:"-1",title:d.tooltips.incrementHour}).addClass("btn").attr("data-action","incrementHours").append(a("<span>").addClass(d.icons.up)))),c.append(a("<td>").append(a("<span>").addClass("timepicker-hour").attr({"data-time-component":"hours",title:d.tooltips.pickHour}).attr("data-action","showHours"))),e.append(a("<td>").append(a("<a>").attr({href:"#",tabindex:"-1",title:d.tooltips.decrementHour}).addClass("btn").attr("data-action","decrementHours").append(a("<span>").addClass(d.icons.down))))),y("m")&&(y("h")&&(b.append(a("<td>").addClass("separator")),c.append(a("<td>").addClass("separator").html(":")),e.append(a("<td>").addClass("separator"))),b.append(a("<td>").append(a("<a>").attr({href:"#",tabindex:"-1",title:d.tooltips.incrementMinute}).addClass("btn").attr("data-action","incrementMinutes").append(a("<span>").addClass(d.icons.up)))),c.append(a("<td>").append(a("<span>").addClass("timepicker-minute").attr({"data-time-component":"minutes",title:d.tooltips.pickMinute}).attr("data-action","showMinutes"))),e.append(a("<td>").append(a("<a>").attr({href:"#",tabindex:"-1",title:d.tooltips.decrementMinute}).addClass("btn").attr("data-action","decrementMinutes").append(a("<span>").addClass(d.icons.down))))),y("s")&&(y("m")&&(b.append(a("<td>").addClass("separator")),c.append(a("<td>").addClass("separator").html(":")),e.append(a("<td>").addClass("separator"))),b.append(a("<td>").append(a("<a>").attr({href:"#",tabindex:"-1",title:d.tooltips.incrementSecond}).addClass("btn").attr("data-action","incrementSeconds").append(a("<span>").addClass(d.icons.up)))),c.append(a("<td>").append(a("<span>").addClass("timepicker-second").attr({"data-time-component":"seconds",title:d.tooltips.pickSecond}).attr("data-action","showSeconds"))),e.append(a("<td>").append(a("<a>").attr({href:"#",tabindex:"-1",title:d.tooltips.decrementSecond}).addClass("btn").attr("data-action","decrementSeconds").append(a("<span>").addClass(d.icons.down))))),h||(b.append(a("<td>").addClass("separator")),c.append(a("<td>").append(a("<button>").addClass("btn btn-primary").attr({"data-action":"togglePeriod",tabindex:"-1",title:d.tooltips.togglePeriod}))),e.append(a("<td>").addClass("separator"))),a("<div>").addClass("timepicker-picker").append(a("<table>").addClass("table-condensed").append([b,c,e]))},D=function(){var b=a("<div>").addClass("timepicker-hours").append(a("<table>").addClass("table-condensed")),c=a("<div>").addClass("timepicker-minutes").append(a("<table>").addClass("table-condensed")),d=a("<div>").addClass("timepicker-seconds").append(a("<table>").addClass("table-condensed")),e=[C()];return y("h")&&e.push(b),y("m")&&e.push(c),y("s")&&e.push(d),e},E=function(){var b=[];return d.showTodayButton&&b.push(a("<td>").append(a("<a>").attr({"data-action":"today",title:d.tooltips.today}).append(a("<span>").addClass(d.icons.today)))),!d.sideBySide&&A()&&z()&&b.push(a("<td>").append(a("<a>").attr({"data-action":"togglePicker",title:d.tooltips.selectTime}).append(a("<span>").addClass(d.icons.time)))),d.showClear&&b.push(a("<td>").append(a("<a>").attr({"data-action":"clear",title:d.tooltips.clear}).append(a("<span>").addClass(d.icons.clear)))),d.showClose&&b.push(a("<td>").append(a("<a>").attr({"data-action":"close",title:d.tooltips.close}).append(a("<span>").addClass(d.icons.close)))),a("<table>").addClass("table-condensed").append(a("<tbody>").append(a("<tr>").append(b)))},F=function(){var b=a("<div>").addClass("bootstrap-datetimepicker-widget dropdown-menu"),c=a("<div>").addClass("datepicker").append(B()),e=a("<div>").addClass("timepicker").append(D()),f=a("<ul>").addClass("list-unstyled"),g=a("<li>").addClass("picker-switch"+(d.collapse?" accordion-toggle":"")).append(E());return d.inline&&b.removeClass("dropdown-menu"),h&&b.addClass("usetwentyfour"),y("s")&&!h&&b.addClass("wider"),d.sideBySide&&A()&&z()?(b.addClass("timepicker-sbs"),"top"===d.toolbarPlacement&&b.append(g),b.append(a("<div>").addClass("row").append(c.addClass("col-md-6")).append(e.addClass("col-md-6"))),"bottom"===d.toolbarPlacement&&b.append(g),b):("top"===d.toolbarPlacement&&f.append(g),A()&&f.append(a("<li>").addClass(d.collapse&&z()?"collapse in":"").append(c)),"default"===d.toolbarPlacement&&f.append(g),z()&&f.append(a("<li>").addClass(d.collapse&&A()?"collapse":"").append(e)),"bottom"===d.toolbarPlacement&&f.append(g),b.append(f))},G=function(){var b,e={};return b=c.is("input")||d.inline?c.data():c.find("input").data(),b.dateOptions&&b.dateOptions instanceof Object&&(e=a.extend(!0,e,b.dateOptions)),a.each(d,function(a){var c="date"+a.charAt(0).toUpperCase()+a.slice(1);void 0!==b[c]&&(e[a]=b[c])}),e},H=function(){var b,e=(n||c).position(),f=(n||c).offset(),g=d.widgetPositioning.vertical,h=d.widgetPositioning.horizontal;if(d.widgetParent)b=d.widgetParent.append(o);else if(c.is("input"))b=c.after(o).parent();else{if(d.inline)return void(b=c.append(o));b=c,c.children().first().after(o)}if("auto"===g&&(g=f.top+1.5*o.height()>=a(window).height()+a(window).scrollTop()&&o.height()+c.outerHeight()<f.top?"top":"bottom"),"auto"===h&&(h=b.width()<f.left+o.outerWidth()/2&&f.left+o.outerWidth()>a(window).width()?"right":"left"),"top"===g?o.addClass("top").removeClass("bottom"):o.addClass("bottom").removeClass("top"),"right"===h?o.addClass("pull-right"):o.removeClass("pull-right"),"relative"!==b.css("position")&&(b=b.parents().filter(function(){return"relative"===a(this).css("position")}).first()),0===b.length)throw new Error("datetimepicker component should be placed within a relative positioned container");o.css({top:"top"===g?"auto":e.top+c.outerHeight(),bottom:"top"===g?e.top+c.outerHeight():"auto",left:"left"===h?b===c?0:e.left:"auto",right:"left"===h?"auto":b.outerWidth()-c.outerWidth()-(b===c?0:e.left)})},I=function(a){"dp.change"===a.type&&(a.date&&a.date.isSame(a.oldDate)||!a.date&&!a.oldDate)||c.trigger(a)},J=function(a){"y"===a&&(a="YYYY"),I({type:"dp.update",change:a,viewDate:f.clone()})},K=function(a){o&&(a&&(k=Math.max(p,Math.min(3,k+a))),o.find(".datepicker > div").hide().filter(".datepicker-"+q[k].clsName).show())},L=function(){var b=a("<tr>"),c=f.clone().startOf("w").startOf("d");for(d.calendarWeeks===!0&&b.append(a("<th>").addClass("cw").text("#"));c.isBefore(f.clone().endOf("w"));)b.append(a("<th>").addClass("dow").text(c.format("dd"))),c.add(1,"d");o.find(".datepicker-days thead").append(b)},M=function(a){return d.disabledDates[a.format("YYYY-MM-DD")]===!0},N=function(a){return d.enabledDates[a.format("YYYY-MM-DD")]===!0},O=function(a){return d.disabledHours[a.format("H")]===!0},P=function(a){return d.enabledHours[a.format("H")]===!0},Q=function(b,c){if(!b.isValid())return!1;if(d.disabledDates&&"d"===c&&M(b))return!1;if(d.enabledDates&&"d"===c&&!N(b))return!1;if(d.minDate&&b.isBefore(d.minDate,c))return!1;if(d.maxDate&&b.isAfter(d.maxDate,c))return!1;if(d.daysOfWeekDisabled&&"d"===c&&-1!==d.daysOfWeekDisabled.indexOf(b.day()))return!1;if(d.disabledHours&&("h"===c||"m"===c||"s"===c)&&O(b))return!1;if(d.enabledHours&&("h"===c||"m"===c||"s"===c)&&!P(b))return!1;if(d.disabledTimeIntervals&&("h"===c||"m"===c||"s"===c)){var e=!1;if(a.each(d.disabledTimeIntervals,function(){return b.isBetween(this[0],this[1])?(e=!0,!1):void 0}),e)return!1}return!0},R=function(){for(var b=[],c=f.clone().startOf("y").startOf("d");c.isSame(f,"y");)b.push(a("<span>").attr("data-action","selectMonth").addClass("month").text(c.format("MMM"))),c.add(1,"M");o.find(".datepicker-months td").empty().append(b)},S=function(){var b=o.find(".datepicker-months"),c=b.find("th"),g=b.find("tbody").find("span");c.eq(0).find("span").attr("title",d.tooltips.prevYear),c.eq(1).attr("title",d.tooltips.selectYear),c.eq(2).find("span").attr("title",d.tooltips.nextYear),b.find(".disabled").removeClass("disabled"),Q(f.clone().subtract(1,"y"),"y")||c.eq(0).addClass("disabled"),c.eq(1).text(f.year()),Q(f.clone().add(1,"y"),"y")||c.eq(2).addClass("disabled"),g.removeClass("active"),e.isSame(f,"y")&&!m&&g.eq(e.month()).addClass("active"),g.each(function(b){Q(f.clone().month(b),"M")||a(this).addClass("disabled")})},T=function(){var a=o.find(".datepicker-years"),b=a.find("th"),c=f.clone().subtract(5,"y"),g=f.clone().add(6,"y"),h="";for(b.eq(0).find("span").attr("title",d.tooltips.prevDecade),b.eq(1).attr("title",d.tooltips.selectDecade),b.eq(2).find("span").attr("title",d.tooltips.nextDecade),a.find(".disabled").removeClass("disabled"),d.minDate&&d.minDate.isAfter(c,"y")&&b.eq(0).addClass("disabled"),b.eq(1).text(c.year()+"-"+g.year()),d.maxDate&&d.maxDate.isBefore(g,"y")&&b.eq(2).addClass("disabled");!c.isAfter(g,"y");)h+='<span data-action="selectYear" class="year'+(c.isSame(e,"y")&&!m?" active":"")+(Q(c,"y")?"":" disabled")+'">'+c.year()+"</span>",c.add(1,"y");a.find("td").html(h)},U=function(){var a=o.find(".datepicker-decades"),c=a.find("th"),g=b({y:f.year()-f.year()%100-1}),h=g.clone().add(100,"y"),i=g.clone(),j="";for(c.eq(0).find("span").attr("title",d.tooltips.prevCentury),c.eq(2).find("span").attr("title",d.tooltips.nextCentury),a.find(".disabled").removeClass("disabled"),(g.isSame(b({y:1900}))||d.minDate&&d.minDate.isAfter(g,"y"))&&c.eq(0).addClass("disabled"),c.eq(1).text(g.year()+"-"+h.year()),(g.isSame(b({y:2e3}))||d.maxDate&&d.maxDate.isBefore(h,"y"))&&c.eq(2).addClass("disabled");!g.isAfter(h,"y");)j+='<span data-action="selectDecade" class="decade'+(g.isSame(e,"y")?" active":"")+(Q(g,"y")?"":" disabled")+'" data-selection="'+(g.year()+6)+'">'+(g.year()+1)+" - "+(g.year()+12)+"</span>",g.add(12,"y");j+="<span></span><span></span><span></span>",a.find("td").html(j),c.eq(1).text(i.year()+1+"-"+g.year())},V=function(){var b,c,g,h,i=o.find(".datepicker-days"),j=i.find("th"),k=[];if(A()){for(j.eq(0).find("span").attr("title",d.tooltips.prevMonth),j.eq(1).attr("title",d.tooltips.selectMonth),j.eq(2).find("span").attr("title",d.tooltips.nextMonth),i.find(".disabled").removeClass("disabled"),j.eq(1).text(f.format(d.dayViewHeaderFormat)),Q(f.clone().subtract(1,"M"),"M")||j.eq(0).addClass("disabled"),Q(f.clone().add(1,"M"),"M")||j.eq(2).addClass("disabled"),b=f.clone().startOf("M").startOf("w").startOf("d"),h=0;42>h;h++)0===b.weekday()&&(c=a("<tr>"),d.calendarWeeks&&c.append('<td class="cw">'+b.week()+"</td>"),k.push(c)),g="",b.isBefore(f,"M")&&(g+=" old"),b.isAfter(f,"M")&&(g+=" new"),b.isSame(e,"d")&&!m&&(g+=" active"),Q(b,"d")||(g+=" disabled"),b.isSame(x(),"d")&&(g+=" today"),(0===b.day()||6===b.day())&&(g+=" weekend"),c.append('<td data-action="selectDay" data-day="'+b.format("L")+'" class="day'+g+'">'+b.date()+"</td>"),b.add(1,"d");i.find("tbody").empty().append(k),S(),T(),U()}},W=function(){var b=o.find(".timepicker-hours table"),c=f.clone().startOf("d"),d=[],e=a("<tr>");for(f.hour()>11&&!h&&c.hour(12);c.isSame(f,"d")&&(h||f.hour()<12&&c.hour()<12||f.hour()>11);)c.hour()%4===0&&(e=a("<tr>"),d.push(e)),e.append('<td data-action="selectHour" class="hour'+(Q(c,"h")?"":" disabled")+'">'+c.format(h?"HH":"hh")+"</td>"),c.add(1,"h");b.empty().append(d)},X=function(){for(var b=o.find(".timepicker-minutes table"),c=f.clone().startOf("h"),e=[],g=a("<tr>"),h=1===d.stepping?5:d.stepping;f.isSame(c,"h");)c.minute()%(4*h)===0&&(g=a("<tr>"),e.push(g)),g.append('<td data-action="selectMinute" class="minute'+(Q(c,"m")?"":" disabled")+'">'+c.format("mm")+"</td>"),c.add(h,"m");b.empty().append(e)},Y=function(){for(var b=o.find(".timepicker-seconds table"),c=f.clone().startOf("m"),d=[],e=a("<tr>");f.isSame(c,"m");)c.second()%20===0&&(e=a("<tr>"),d.push(e)),e.append('<td data-action="selectSecond" class="second'+(Q(c,"s")?"":" disabled")+'">'+c.format("ss")+"</td>"),c.add(5,"s");b.empty().append(d)},Z=function(){var a,b,c=o.find(".timepicker span[data-time-component]");h||(a=o.find(".timepicker [data-action=togglePeriod]"),b=e.clone().add(e.hours()>=12?-12:12,"h"),a.text(e.format("A")),Q(b,"h")?a.removeClass("disabled"):a.addClass("disabled")),c.filter("[data-time-component=hours]").text(e.format(h?"HH":"hh")),c.filter("[data-time-component=minutes]").text(e.format("mm")),c.filter("[data-time-component=seconds]").text(e.format("ss")),W(),X(),Y()},$=function(){o&&(V(),Z())},_=function(a){var b=m?null:e;return a?(a=a.clone().locale(d.locale),1!==d.stepping&&a.minutes(Math.round(a.minutes()/d.stepping)*d.stepping%60).seconds(0),void(Q(a)?(e=a,f=e.clone(),g.val(e.format(i)),c.data("date",e.format(i)),m=!1,$(),I({type:"dp.change",date:e.clone(),oldDate:b})):(d.keepInvalid||g.val(m?"":e.format(i)),I({type:"dp.error",date:a})))):(m=!0,g.val(""),c.data("date",""),I({type:"dp.change",date:!1,oldDate:b}),void $())},aa=function(){var b=!1;return o?(o.find(".collapse").each(function(){var c=a(this).data("collapse");return c&&c.transitioning?(b=!0,!1):!0}),b?l:(n&&n.hasClass("btn")&&n.toggleClass("active"),o.hide(),a(window).off("resize",H),o.off("click","[data-action]"),o.off("mousedown",!1),o.remove(),o=!1,I({type:"dp.hide",date:e.clone()}),g.blur(),l)):l},ba=function(){_(null)},ca={next:function(){var a=q[k].navFnc;f.add(q[k].navStep,a),V(),J(a)},previous:function(){var a=q[k].navFnc;f.subtract(q[k].navStep,a),V(),J(a)},pickerSwitch:function(){K(1)},selectMonth:function(b){var c=a(b.target).closest("tbody").find("span").index(a(b.target));f.month(c),k===p?(_(e.clone().year(f.year()).month(f.month())),d.inline||aa()):(K(-1),V()),J("M")},selectYear:function(b){var c=parseInt(a(b.target).text(),10)||0;f.year(c),k===p?(_(e.clone().year(f.year())),d.inline||aa()):(K(-1),V()),J("YYYY")},selectDecade:function(b){var c=parseInt(a(b.target).data("selection"),10)||0;f.year(c),k===p?(_(e.clone().year(f.year())),d.inline||aa()):(K(-1),V()),J("YYYY")},selectDay:function(b){var c=f.clone();a(b.target).is(".old")&&c.subtract(1,"M"),a(b.target).is(".new")&&c.add(1,"M"),_(c.date(parseInt(a(b.target).text(),10))),z()||d.keepOpen||d.inline||aa()},incrementHours:function(){var a=e.clone().add(1,"h");Q(a,"h")&&_(a)},incrementMinutes:function(){var a=e.clone().add(d.stepping,"m");Q(a,"m")&&_(a)},incrementSeconds:function(){var a=e.clone().add(1,"s");Q(a,"s")&&_(a)},decrementHours:function(){var a=e.clone().subtract(1,"h");Q(a,"h")&&_(a)},decrementMinutes:function(){var a=e.clone().subtract(d.stepping,"m");Q(a,"m")&&_(a)},decrementSeconds:function(){var a=e.clone().subtract(1,"s");Q(a,"s")&&_(a)},togglePeriod:function(){_(e.clone().add(e.hours()>=12?-12:12,"h"))},togglePicker:function(b){var c,e=a(b.target),f=e.closest("ul"),g=f.find(".in"),h=f.find(".collapse:not(.in)");if(g&&g.length){if(c=g.data("collapse"),c&&c.transitioning)return;g.collapse?(g.collapse("hide"),h.collapse("show")):(g.removeClass("in"),h.addClass("in")),e.is("span")?e.toggleClass(d.icons.time+" "+d.icons.date):e.find("span").toggleClass(d.icons.time+" "+d.icons.date)}},showPicker:function(){o.find(".timepicker > div:not(.timepicker-picker)").hide(),o.find(".timepicker .timepicker-picker").show()},showHours:function(){o.find(".timepicker .timepicker-picker").hide(),o.find(".timepicker .timepicker-hours").show()},showMinutes:function(){o.find(".timepicker .timepicker-picker").hide(),o.find(".timepicker .timepicker-minutes").show()},showSeconds:function(){o.find(".timepicker .timepicker-picker").hide(),o.find(".timepicker .timepicker-seconds").show()},selectHour:function(b){var c=parseInt(a(b.target).text(),10);h||(e.hours()>=12?12!==c&&(c+=12):12===c&&(c=0)),_(e.clone().hours(c)),ca.showPicker.call(l)},selectMinute:function(b){_(e.clone().minutes(parseInt(a(b.target).text(),10))),ca.showPicker.call(l)},selectSecond:function(b){_(e.clone().seconds(parseInt(a(b.target).text(),10))),ca.showPicker.call(l)},clear:ba,today:function(){var a=x();Q(a,"d")&&_(a)},close:aa},da=function(b){return a(b.currentTarget).is(".disabled")?!1:(ca[a(b.currentTarget).data("action")].apply(l,arguments),!1)},ea=function(){var b,c={year:function(a){return a.month(0).date(1).hours(0).seconds(0).minutes(0)},month:function(a){return a.date(1).hours(0).seconds(0).minutes(0)},day:function(a){return a.hours(0).seconds(0).minutes(0)},hour:function(a){return a.seconds(0).minutes(0)},minute:function(a){return a.seconds(0)}};return g.prop("disabled")||!d.ignoreReadonly&&g.prop("readonly")||o?l:(void 0!==g.val()&&0!==g.val().trim().length?_(ga(g.val().trim())):d.useCurrent&&m&&(g.is("input")&&0===g.val().trim().length||d.inline)&&(b=x(),"string"==typeof d.useCurrent&&(b=c[d.useCurrent](b)),_(b)),o=F(),L(),R(),o.find(".timepicker-hours").hide(),o.find(".timepicker-minutes").hide(),o.find(".timepicker-seconds").hide(),$(),K(),a(window).on("resize",H),o.on("click","[data-action]",da),o.on("mousedown",!1),n&&n.hasClass("btn")&&n.toggleClass("active"),o.show(),H(),d.focusOnShow&&!g.is(":focus")&&g.focus(),I({type:"dp.show"}),l)},fa=function(){return o?aa():ea()},ga=function(a){return a=void 0===d.parseInputDate?b.isMoment(a)||a instanceof Date?b(a):x(a):d.parseInputDate(a),a.locale(d.locale),a},ha=function(a){var b,c,e,f,g=null,h=[],i={},j=a.which,k="p";w[j]=k;for(b in w)w.hasOwnProperty(b)&&w[b]===k&&(h.push(b),parseInt(b,10)!==j&&(i[b]=!0));for(b in d.keyBinds)if(d.keyBinds.hasOwnProperty(b)&&"function"==typeof d.keyBinds[b]&&(e=b.split(" "),e.length===h.length&&v[j]===e[e.length-1])){for(f=!0,c=e.length-2;c>=0;c--)if(!(v[e[c]]in i)){f=!1;break}if(f){g=d.keyBinds[b];break}}g&&(g.call(l,o),a.stopPropagation(),a.preventDefault())},ia=function(a){w[a.which]="r",a.stopPropagation(),a.preventDefault()},ja=function(b){var c=a(b.target).val().trim(),d=c?ga(c):null;return _(d),b.stopImmediatePropagation(),!1},ka=function(){g.on({change:ja,blur:d.debug?"":aa,keydown:ha,keyup:ia,focus:d.allowInputToggle?ea:""}),c.is("input")?g.on({focus:ea}):n&&(n.on("click",fa),n.on("mousedown",!1))},la=function(){g.off({change:ja,blur:blur,keydown:ha,keyup:ia,focus:d.allowInputToggle?aa:""}),c.is("input")?g.off({focus:ea}):n&&(n.off("click",fa),n.off("mousedown",!1))},ma=function(b){var c={};return a.each(b,function(){var a=ga(this);a.isValid()&&(c[a.format("YYYY-MM-DD")]=!0)}),Object.keys(c).length?c:!1},na=function(b){var c={};return a.each(b,function(){c[this]=!0}),Object.keys(c).length?c:!1},oa=function(){var a=d.format||"L LT";i=a.replace(/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,function(a){var b=e.localeData().longDateFormat(a)||a;return b.replace(/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,function(a){return e.localeData().longDateFormat(a)||a})}),j=d.extraFormats?d.extraFormats.slice():[],j.indexOf(a)<0&&j.indexOf(i)<0&&j.push(i),h=i.toLowerCase().indexOf("a")<1&&i.replace(/\[.*?\]/g,"").indexOf("h")<1,y("y")&&(p=2),y("M")&&(p=1),y("d")&&(p=0),k=Math.max(p,k),m||_(e)};if(l.destroy=function(){aa(),la(),c.removeData("DateTimePicker"),c.removeData("date")},l.toggle=fa,l.show=ea,l.hide=aa,l.disable=function(){return aa(),n&&n.hasClass("btn")&&n.addClass("disabled"),g.prop("disabled",!0),l},l.enable=function(){return n&&n.hasClass("btn")&&n.removeClass("disabled"),g.prop("disabled",!1),l},l.ignoreReadonly=function(a){if(0===arguments.length)return d.ignoreReadonly;if("boolean"!=typeof a)throw new TypeError("ignoreReadonly () expects a boolean parameter");return d.ignoreReadonly=a,l},l.options=function(b){if(0===arguments.length)return a.extend(!0,{},d);if(!(b instanceof Object))throw new TypeError("options() options parameter should be an object");return a.extend(!0,d,b),a.each(d,function(a,b){if(void 0===l[a])throw new TypeError("option "+a+" is not recognized!");l[a](b)}),l},l.date=function(a){if(0===arguments.length)return m?null:e.clone();if(!(null===a||"string"==typeof a||b.isMoment(a)||a instanceof Date))throw new TypeError("date() parameter must be one of [null, string, moment or Date]");return _(null===a?null:ga(a)),l},l.format=function(a){if(0===arguments.length)return d.format;if("string"!=typeof a&&("boolean"!=typeof a||a!==!1))throw new TypeError("format() expects a sting or boolean:false parameter "+a);return d.format=a,i&&oa(),l},l.timeZone=function(a){return 0===arguments.length?d.timeZone:(d.timeZone=a,l)},l.dayViewHeaderFormat=function(a){if(0===arguments.length)return d.dayViewHeaderFormat;if("string"!=typeof a)throw new TypeError("dayViewHeaderFormat() expects a string parameter");return d.dayViewHeaderFormat=a,l},l.extraFormats=function(a){if(0===arguments.length)return d.extraFormats;if(a!==!1&&!(a instanceof Array))throw new TypeError("extraFormats() expects an array or false parameter");return d.extraFormats=a,j&&oa(),l},l.disabledDates=function(b){if(0===arguments.length)return d.disabledDates?a.extend({},d.disabledDates):d.disabledDates;if(!b)return d.disabledDates=!1,$(),l;if(!(b instanceof Array))throw new TypeError("disabledDates() expects an array parameter");return d.disabledDates=ma(b),d.enabledDates=!1,$(),l},l.enabledDates=function(b){if(0===arguments.length)return d.enabledDates?a.extend({},d.enabledDates):d.enabledDates;if(!b)return d.enabledDates=!1,$(),l;if(!(b instanceof Array))throw new TypeError("enabledDates() expects an array parameter");return d.enabledDates=ma(b),d.disabledDates=!1,$(),l},l.daysOfWeekDisabled=function(a){if(0===arguments.length)return d.daysOfWeekDisabled.splice(0);if("boolean"==typeof a&&!a)return d.daysOfWeekDisabled=!1,$(),l;if(!(a instanceof Array))throw new TypeError("daysOfWeekDisabled() expects an array parameter");if(d.daysOfWeekDisabled=a.reduce(function(a,b){return b=parseInt(b,10),b>6||0>b||isNaN(b)?a:(-1===a.indexOf(b)&&a.push(b),a)},[]).sort(),d.useCurrent&&!d.keepInvalid){for(var b=0;!Q(e,"d");){if(e.add(1,"d"),7===b)throw"Tried 7 times to find a valid date";b++}_(e)}return $(),l},l.maxDate=function(a){if(0===arguments.length)return d.maxDate?d.maxDate.clone():d.maxDate;if("boolean"==typeof a&&a===!1)return d.maxDate=!1,$(),l;"string"==typeof a&&("now"===a||"moment"===a)&&(a=x());var b=ga(a);if(!b.isValid())throw new TypeError("maxDate() Could not parse date parameter: "+a);if(d.minDate&&b.isBefore(d.minDate))throw new TypeError("maxDate() date parameter is before options.minDate: "+b.format(i));return d.maxDate=b,d.useCurrent&&!d.keepInvalid&&e.isAfter(a)&&_(d.maxDate),f.isAfter(b)&&(f=b.clone().subtract(d.stepping,"m")),$(),l},l.minDate=function(a){if(0===arguments.length)return d.minDate?d.minDate.clone():d.minDate;if("boolean"==typeof a&&a===!1)return d.minDate=!1,$(),l;"string"==typeof a&&("now"===a||"moment"===a)&&(a=x());var b=ga(a);if(!b.isValid())throw new TypeError("minDate() Could not parse date parameter: "+a);if(d.maxDate&&b.isAfter(d.maxDate))throw new TypeError("minDate() date parameter is after options.maxDate: "+b.format(i));return d.minDate=b,d.useCurrent&&!d.keepInvalid&&e.isBefore(a)&&_(d.minDate),f.isBefore(b)&&(f=b.clone().add(d.stepping,"m")),$(),l},l.defaultDate=function(a){if(0===arguments.length)return d.defaultDate?d.defaultDate.clone():d.defaultDate;if(!a)return d.defaultDate=!1,l;"string"==typeof a&&("now"===a||"moment"===a)&&(a=x());var b=ga(a);if(!b.isValid())throw new TypeError("defaultDate() Could not parse date parameter: "+a);if(!Q(b))throw new TypeError("defaultDate() date passed is invalid according to component setup validations");return d.defaultDate=b,(d.defaultDate&&d.inline||""===g.val().trim())&&_(d.defaultDate),l},l.locale=function(a){if(0===arguments.length)return d.locale;if(!b.localeData(a))throw new TypeError("locale() locale "+a+" is not loaded from moment locales!");return d.locale=a,e.locale(d.locale),f.locale(d.locale),i&&oa(),o&&(aa(),ea()),l},l.stepping=function(a){return 0===arguments.length?d.stepping:(a=parseInt(a,10),(isNaN(a)||1>a)&&(a=1),d.stepping=a,l)},l.useCurrent=function(a){var b=["year","month","day","hour","minute"];if(0===arguments.length)return d.useCurrent;if("boolean"!=typeof a&&"string"!=typeof a)throw new TypeError("useCurrent() expects a boolean or string parameter");if("string"==typeof a&&-1===b.indexOf(a.toLowerCase()))throw new TypeError("useCurrent() expects a string parameter of "+b.join(", "));return d.useCurrent=a,l},l.collapse=function(a){if(0===arguments.length)return d.collapse;if("boolean"!=typeof a)throw new TypeError("collapse() expects a boolean parameter");return d.collapse===a?l:(d.collapse=a,o&&(aa(),ea()),l)},l.icons=function(b){if(0===arguments.length)return a.extend({},d.icons);if(!(b instanceof Object))throw new TypeError("icons() expects parameter to be an Object");return a.extend(d.icons,b),o&&(aa(),ea()),l},l.tooltips=function(b){if(0===arguments.length)return a.extend({},d.tooltips);if(!(b instanceof Object))throw new TypeError("tooltips() expects parameter to be an Object");return a.extend(d.tooltips,b),o&&(aa(),ea()),l},l.useStrict=function(a){if(0===arguments.length)return d.useStrict;if("boolean"!=typeof a)throw new TypeError("useStrict() expects a boolean parameter");return d.useStrict=a,l},l.sideBySide=function(a){if(0===arguments.length)return d.sideBySide;if("boolean"!=typeof a)throw new TypeError("sideBySide() expects a boolean parameter");return d.sideBySide=a,o&&(aa(),ea()),l},l.viewMode=function(a){if(0===arguments.length)return d.viewMode;if("string"!=typeof a)throw new TypeError("viewMode() expects a string parameter");if(-1===r.indexOf(a))throw new TypeError("viewMode() parameter must be one of ("+r.join(", ")+") value");return d.viewMode=a,k=Math.max(r.indexOf(a),p),K(),l},l.toolbarPlacement=function(a){if(0===arguments.length)return d.toolbarPlacement;if("string"!=typeof a)throw new TypeError("toolbarPlacement() expects a string parameter");if(-1===u.indexOf(a))throw new TypeError("toolbarPlacement() parameter must be one of ("+u.join(", ")+") value");return d.toolbarPlacement=a,o&&(aa(),ea()),l},l.widgetPositioning=function(b){if(0===arguments.length)return a.extend({},d.widgetPositioning);if("[object Object]"!=={}.toString.call(b))throw new TypeError("widgetPositioning() expects an object variable");if(b.horizontal){if("string"!=typeof b.horizontal)throw new TypeError("widgetPositioning() horizontal variable must be a string");if(b.horizontal=b.horizontal.toLowerCase(),-1===t.indexOf(b.horizontal))throw new TypeError("widgetPositioning() expects horizontal parameter to be one of ("+t.join(", ")+")");d.widgetPositioning.horizontal=b.horizontal}if(b.vertical){if("string"!=typeof b.vertical)throw new TypeError("widgetPositioning() vertical variable must be a string");if(b.vertical=b.vertical.toLowerCase(),-1===s.indexOf(b.vertical))throw new TypeError("widgetPositioning() expects vertical parameter to be one of ("+s.join(", ")+")");d.widgetPositioning.vertical=b.vertical}return $(),l},l.calendarWeeks=function(a){if(0===arguments.length)return d.calendarWeeks;if("boolean"!=typeof a)throw new TypeError("calendarWeeks() expects parameter to be a boolean value");return d.calendarWeeks=a,$(),l},l.showTodayButton=function(a){if(0===arguments.length)return d.showTodayButton;if("boolean"!=typeof a)throw new TypeError("showTodayButton() expects a boolean parameter");return d.showTodayButton=a,o&&(aa(),ea()),l},l.showClear=function(a){if(0===arguments.length)return d.showClear;if("boolean"!=typeof a)throw new TypeError("showClear() expects a boolean parameter");return d.showClear=a,o&&(aa(),ea()),l},l.widgetParent=function(b){if(0===arguments.length)return d.widgetParent;if("string"==typeof b&&(b=a(b)),null!==b&&"string"!=typeof b&&!(b instanceof a))throw new TypeError("widgetParent() expects a string or a jQuery object parameter");return d.widgetParent=b,o&&(aa(),ea()),l},l.keepOpen=function(a){if(0===arguments.length)return d.keepOpen;if("boolean"!=typeof a)throw new TypeError("keepOpen() expects a boolean parameter");return d.keepOpen=a,l},l.focusOnShow=function(a){if(0===arguments.length)return d.focusOnShow;if("boolean"!=typeof a)throw new TypeError("focusOnShow() expects a boolean parameter");return d.focusOnShow=a,l},l.inline=function(a){if(0===arguments.length)return d.inline;if("boolean"!=typeof a)throw new TypeError("inline() expects a boolean parameter");return d.inline=a,l},l.clear=function(){return ba(),l},l.keyBinds=function(a){return d.keyBinds=a,l},l.getMoment=function(a){return x(a)},l.debug=function(a){if("boolean"!=typeof a)throw new TypeError("debug() expects a boolean parameter");return d.debug=a,l},l.allowInputToggle=function(a){if(0===arguments.length)return d.allowInputToggle;if("boolean"!=typeof a)throw new TypeError("allowInputToggle() expects a boolean parameter");return d.allowInputToggle=a,l},l.showClose=function(a){if(0===arguments.length)return d.showClose;if("boolean"!=typeof a)throw new TypeError("showClose() expects a boolean parameter");return d.showClose=a,l},l.keepInvalid=function(a){if(0===arguments.length)return d.keepInvalid;if("boolean"!=typeof a)throw new TypeError("keepInvalid() expects a boolean parameter");return d.keepInvalid=a,l},l.datepickerInput=function(a){if(0===arguments.length)return d.datepickerInput;if("string"!=typeof a)throw new TypeError("datepickerInput() expects a string parameter");return d.datepickerInput=a,l},l.parseInputDate=function(a){if(0===arguments.length)return d.parseInputDate;
  9 +if("function"!=typeof a)throw new TypeError("parseInputDate() sholud be as function");return d.parseInputDate=a,l},l.disabledTimeIntervals=function(b){if(0===arguments.length)return d.disabledTimeIntervals?a.extend({},d.disabledTimeIntervals):d.disabledTimeIntervals;if(!b)return d.disabledTimeIntervals=!1,$(),l;if(!(b instanceof Array))throw new TypeError("disabledTimeIntervals() expects an array parameter");return d.disabledTimeIntervals=b,$(),l},l.disabledHours=function(b){if(0===arguments.length)return d.disabledHours?a.extend({},d.disabledHours):d.disabledHours;if(!b)return d.disabledHours=!1,$(),l;if(!(b instanceof Array))throw new TypeError("disabledHours() expects an array parameter");if(d.disabledHours=na(b),d.enabledHours=!1,d.useCurrent&&!d.keepInvalid){for(var c=0;!Q(e,"h");){if(e.add(1,"h"),24===c)throw"Tried 24 times to find a valid date";c++}_(e)}return $(),l},l.enabledHours=function(b){if(0===arguments.length)return d.enabledHours?a.extend({},d.enabledHours):d.enabledHours;if(!b)return d.enabledHours=!1,$(),l;if(!(b instanceof Array))throw new TypeError("enabledHours() expects an array parameter");if(d.enabledHours=na(b),d.disabledHours=!1,d.useCurrent&&!d.keepInvalid){for(var c=0;!Q(e,"h");){if(e.add(1,"h"),24===c)throw"Tried 24 times to find a valid date";c++}_(e)}return $(),l},l.viewDate=function(a){if(0===arguments.length)return f.clone();if(!a)return f=e.clone(),l;if(!("string"==typeof a||b.isMoment(a)||a instanceof Date))throw new TypeError("viewDate() parameter must be one of [string, moment or Date]");return f=ga(a),J(),l},c.is("input"))g=c;else if(g=c.find(d.datepickerInput),0===g.size())g=c.find("input");else if(!g.is("input"))throw new Error('CSS class "'+d.datepickerInput+'" cannot be applied to non input element');if(c.hasClass("input-group")&&(n=0===c.find(".datepickerbutton").size()?c.find(".input-group-addon"):c.find(".datepickerbutton")),!d.inline&&!g.is("input"))throw new Error("Could not initialize DateTimePicker without an input element");return e=x(),f=e.clone(),a.extend(!0,d,G()),l.options(d),oa(),ka(),g.prop("disabled")&&l.disable(),g.is("input")&&0!==g.val().trim().length?_(ga(g.val().trim())):d.defaultDate&&void 0===g.attr("placeholder")&&_(d.defaultDate),d.inline&&ea(),l};a.fn.datetimepicker=function(b){return this.each(function(){var d=a(this);d.data("DateTimePicker")||(b=a.extend(!0,{},a.fn.datetimepicker.defaults,b),d.data("DateTimePicker",c(d,b)))})},a.fn.datetimepicker.defaults={timeZone:"Etc/UTC",format:!1,dayViewHeaderFormat:"MMMM YYYY",extraFormats:!1,stepping:1,minDate:!1,maxDate:!1,useCurrent:!0,collapse:!0,locale:b.locale(),defaultDate:!1,disabledDates:!1,enabledDates:!1,icons:{time:"glyphicon glyphicon-time",date:"glyphicon glyphicon-calendar",up:"glyphicon glyphicon-chevron-up",down:"glyphicon glyphicon-chevron-down",previous:"glyphicon glyphicon-chevron-left",next:"glyphicon glyphicon-chevron-right",today:"glyphicon glyphicon-screenshot",clear:"glyphicon glyphicon-trash",close:"glyphicon glyphicon-remove"},tooltips:{today:"Go to today",clear:"Clear selection",close:"Close the picker",selectMonth:"Select Month",prevMonth:"Previous Month",nextMonth:"Next Month",selectYear:"Select Year",prevYear:"Previous Year",nextYear:"Next Year",selectDecade:"Select Decade",prevDecade:"Previous Decade",nextDecade:"Next Decade",prevCentury:"Previous Century",nextCentury:"Next Century",pickHour:"Pick Hour",incrementHour:"Increment Hour",decrementHour:"Decrement Hour",pickMinute:"Pick Minute",incrementMinute:"Increment Minute",decrementMinute:"Decrement Minute",pickSecond:"Pick Second",incrementSecond:"Increment Second",decrementSecond:"Decrement Second",togglePeriod:"Toggle Period",selectTime:"Select Time"},useStrict:!1,sideBySide:!1,daysOfWeekDisabled:!1,calendarWeeks:!1,viewMode:"days",toolbarPlacement:"default",showTodayButton:!1,showClear:!1,showClose:!1,widgetPositioning:{horizontal:"auto",vertical:"auto"},widgetParent:null,ignoreReadonly:!1,keepOpen:!1,focusOnShow:!0,inline:!1,keepInvalid:!1,datepickerInput:".datepickerinput",keyBinds:{up:function(a){if(a){var b=this.date()||this.getMoment();a.find(".datepicker").is(":visible")?this.date(b.clone().subtract(7,"d")):this.date(b.clone().add(this.stepping(),"m"))}},down:function(a){if(!a)return void this.show();var b=this.date()||this.getMoment();a.find(".datepicker").is(":visible")?this.date(b.clone().add(7,"d")):this.date(b.clone().subtract(this.stepping(),"m"))},"control up":function(a){if(a){var b=this.date()||this.getMoment();a.find(".datepicker").is(":visible")?this.date(b.clone().subtract(1,"y")):this.date(b.clone().add(1,"h"))}},"control down":function(a){if(a){var b=this.date()||this.getMoment();a.find(".datepicker").is(":visible")?this.date(b.clone().add(1,"y")):this.date(b.clone().subtract(1,"h"))}},left:function(a){if(a){var b=this.date()||this.getMoment();a.find(".datepicker").is(":visible")&&this.date(b.clone().subtract(1,"d"))}},right:function(a){if(a){var b=this.date()||this.getMoment();a.find(".datepicker").is(":visible")&&this.date(b.clone().add(1,"d"))}},pageUp:function(a){if(a){var b=this.date()||this.getMoment();a.find(".datepicker").is(":visible")&&this.date(b.clone().subtract(1,"M"))}},pageDown:function(a){if(a){var b=this.date()||this.getMoment();a.find(".datepicker").is(":visible")&&this.date(b.clone().add(1,"M"))}},enter:function(){this.hide()},escape:function(){this.hide()},"control space":function(a){a.find(".timepicker").is(":visible")&&a.find('.btn[data-action="togglePeriod"]').click()},t:function(){this.date(this.getMoment())},"delete":function(){this.clear()}},debug:!1,allowInputToggle:!1,disabledTimeIntervals:!1,disabledHours:!1,enabledHours:!1,viewDate:!1}});
0 \ No newline at end of file 10 \ No newline at end of file
src/main/resources/static/pages/home.html
1 -home 1 +home
src/main/resources/static/pages/permission/user/list.html
1 -<div class="page-head">  
2 - <div class="page-title">  
3 - <h1>用户管理</h1>  
4 - </div>  
5 -</div>  
6 -  
7 -<ul class="page-breadcrumb breadcrumb">  
8 - <li><a href="/pages/home.html" data-pjax>首页</a> <i class="fa fa-circle"></i></li>  
9 - <li><span class="active">权限管理</span> <i class="fa fa-circle"></i></li>  
10 - <li><span class="active">用户管理</span></li>  
11 -</ul>  
12 -  
13 -<div class="row">  
14 - <div class="col-md-12">  
15 - <!-- Begin: life time stats -->  
16 - <div class="portlet light portlet-fit portlet-datatable bordered">  
17 - <div class="portlet-title">  
18 - <div class="caption">  
19 - <i class="fa fa-users font-dark"></i> <span  
20 - class="caption-subject font-dark sbold uppercase">用户数据表</span>  
21 - </div>  
22 - <div class="actions">  
23 - <a class="btn btn-circle blue" href="add.html" data-pjax><i class="fa fa-plus"></i> 添加用户</a>  
24 - <!-- <button type="button" class="btn btn-circle red" disabled="disabled" id="removeButton"><i class="fa fa-trash"></i> 删除用户</button> -->  
25 - <div class="btn-group">  
26 - <a class="btn red btn-outline btn-circle" href="javascript:;"  
27 - data-toggle="dropdown"> <i class="fa fa-share"></i> <span  
28 - class="hidden-xs"> 系统工具 </span> <i class="fa fa-angle-down"></i>  
29 - </a>  
30 - <ul class="dropdown-menu pull-right" id="datatable_ajax_tools">  
31 - <li><a href="javascript:;" data-action="0"  
32 - class="tool-action"> <i class="fa fa-print"></i> 打印  
33 - </a></li>  
34 - <li><a href="javascript:;" data-action="1"  
35 - class="tool-action"> <i class="fa fa-copy"></i> 复制  
36 - </a></li>  
37 - <li><a href="javascript:;" data-action="3"  
38 - class="tool-action"> <i class="fa fa-file-excel-o"></i>  
39 - 导出Excel  
40 - </a></li>  
41 - <li class="divider"></li>  
42 - <li><a href="javascript:;" data-action="5"  
43 - class="tool-action"> <i class="fa fa-refresh"></i> 刷新数据  
44 - </a></li>  
45 - </ul>  
46 - </div>  
47 - </div>  
48 - </div>  
49 - <div class="portlet-body">  
50 - <div class="table-container" style="margin-top: 10px">  
51 - <table  
52 - class="table table-striped table-bordered table-hover table-checkable"  
53 - id="datatable_user">  
54 - <thead>  
55 - <tr role="row" class="heading">  
56 - <th width="3%">#</th>  
57 - <th width="15%">登录名</th>  
58 - <th width="13%">姓名</th>  
59 - <th width="100">所属机构</th>  
60 - <th width="11%">角色</th>  
61 - <th width="10%">状态</th>  
62 - <th width="18%">最后登录时间</th>  
63 - <th width="18%">操作</th>  
64 - </tr>  
65 - <tr role="row" class="filter">  
66 - <td></td>  
67 - <td>  
68 - <input type="text" class="form-control form-filter input-sm" name="userName_like">  
69 - </td>  
70 - <td>  
71 - <input type="text" class="form-control form-filter input-sm" name="name_like">  
72 - </td>  
73 - <td>  
74 - <input type="text" class="form-control form-filter input-sm" name="agencies_like">  
75 - </td>  
76 - <td></td>  
77 - <td>  
78 - <select class="form-control form-filter " name="enable_eq">  
79 - <option value="">请选择...</option>  
80 - <option value="1">可用</option>  
81 - <option value="0">禁用</option>  
82 - </select>  
83 - </td>  
84 - <td></td>  
85 - <td>  
86 - <button class="btn btn-sm green btn-outline filter-submit margin-bottom" >  
87 - <i class="fa fa-search"></i> 搜索</button>  
88 -  
89 - <button class="btn btn-sm red btn-outline filter-cancel">  
90 - <i class="fa fa-times"></i> 重置</button>  
91 - </td>  
92 - </tr>  
93 - </thead>  
94 - <tbody></tbody>  
95 - </table>  
96 - <div style="text-align: right;">  
97 - <ul id="pagination" class="pagination"></ul>  
98 - </div>  
99 - </div>  
100 - </div>  
101 - </div>  
102 - </div>  
103 -</div>  
104 -  
105 -<script id="user_list_temp" type="text/html">  
106 -{{each list as obj i}}  
107 -<tr>  
108 - <td style="vertical-align: middle;">  
109 - <input type="checkbox" class="group-checkable icheck" data-id="{{obj.id}}">  
110 - </td>  
111 - <td>  
112 - {{obj.userName}}  
113 - </td>  
114 - <td>  
115 - {{obj.name}}  
116 - </td>  
117 - <td>  
118 - {{obj.agencies}}  
119 - </td>  
120 - <td>  
121 - {{each obj.roles as role j}}  
122 - {{role.roleName}}、  
123 - {{/each}}  
124 - </td>  
125 - <td>  
126 - {{if obj.enabled}}  
127 - 可用  
128 - {{else}}  
129 - 禁用  
130 - {{/if}}  
131 - </td>  
132 - <td>  
133 - {{obj.lastLoginDate}}  
134 - </td>  
135 - <td><a href="edit.html?no={{obj.id}}" class="btn default blue-stripe btn-sm" data-pjax> 详细 </a></td>  
136 -</tr>  
137 -{{/each}}  
138 -{{if list.length == 0}}  
139 -<tr>  
140 - <td colspan=8><h6 class="muted">没有找到相关数据</h6></td>  
141 -</tr>  
142 -{{/if}}  
143 -</script>  
144 -  
145 -<script>  
146 -$(function(){  
147 - var page = 0, initPagination;  
148 - var icheckOptions = {  
149 - checkboxClass: 'icheckbox_flat-blue',  
150 - increaseArea: '20%'  
151 - }  
152 -  
153 - jsDoQuery(null,true);  
154 -  
155 - //重置  
156 - $('tr.filter .filter-cancel').on('click', function(){  
157 - $('tr.filter input, select').val('').change();  
158 - jsDoQuery(null, true);  
159 - });  
160 -  
161 - //提交  
162 - $('tr.filter .filter-submit').on('click', function(){  
163 - var cells = $('tr.filter')[0].cells  
164 - ,params = {}  
165 - ,name;  
166 - $.each(cells, function(i, cell){  
167 - var items = $('input,select', cell);  
168 - for(var j = 0, item; item = items[j++];){  
169 - name = $(item).attr('name');  
170 - if(name){  
171 - params[name] = $(item).val();  
172 - }  
173 - }  
174 - });  
175 - page = 0;  
176 - jsDoQuery(params, true);  
177 - });  
178 -  
179 - /*  
180 - * 获取数据 p: 要提交的参数, pagination: 是否重新分页  
181 - */  
182 - function jsDoQuery(p, pagination){  
183 - var params = {};  
184 - if(p)  
185 - params = p;  
186 - //更新时间排序  
187 - params['order'] = 'lastLoginDate';  
188 - params['page'] = page;  
189 - var i = layer.load(2);  
190 - $get('/user' ,params, function(data){  
191 - var bodyHtm = template('user_list_temp', {list: data.content});  
192 -  
193 - $('#datatable_user tbody').html(bodyHtm)  
194 - .find('.icheck').iCheck(icheckOptions)  
195 - .on('ifChanged', iCheckChange);  
196 - if(pagination && data.content.length > 0){  
197 - //重新分页  
198 - initPagination = true;  
199 - showPagination(data);  
200 - }  
201 - layer.close(i);  
202 - });  
203 - }  
204 -  
205 - function iCheckChange(){  
206 - var tr = $(this).parents('tr');  
207 - if(this.checked)  
208 - tr.addClass('row-active');  
209 - else  
210 - tr.removeClass('row-active');  
211 -  
212 - if($('#datatable_resource input.icheck:checked').length == 1)  
213 - $('#removeButton').removeAttr('disabled');  
214 - else  
215 - $('#removeButton').attr('disabled', 'disabled');  
216 - }  
217 -  
218 - function showPagination(data){  
219 - //分页  
220 - $('#pagination').jqPaginator({  
221 - totalPages: data.totalPages,  
222 - visiblePages: 6,  
223 - currentPage: page + 1,  
224 - first: '<li class="first"><a href="javascript:void(0);">首页<\/a><\/li>',  
225 - prev: '<li class="prev"><a href="javascript:void(0);">上一页<\/a><\/li>',  
226 - next: '<li class="next"><a href="javascript:void(0);">下一页<\/a><\/li>',  
227 - last: '<li class="last"><a href="javascript:void(0);">尾页<\/a><\/li>',  
228 - page: '<li class="page"><a href="javascript:void(0);">{{page}}<\/a><\/li>',  
229 - onPageChange: function (num, type) {  
230 - if(initPagination){  
231 - initPagination = false;  
232 - return;  
233 - }  
234 -  
235 -  
236 - page = num - 1;  
237 - jsDoQuery(null, false);  
238 - }  
239 - });  
240 - }  
241 -  
242 -  
243 - //删除  
244 - $('#removeButton').on('click', function(){  
245 - if($(this).attr('disabled'))  
246 - return;  
247 -  
248 - var id = $('#datatable_resource input.icheck:checked').data('id');  
249 -  
250 - removeConfirm('确定要删除选中的数据?', '/resource/' + id ,function(){  
251 - $('tr.filter .filter-submit').click();  
252 - });  
253 - });  
254 -}); 1 +<div class="page-head">
  2 + <div class="page-title">
  3 + <h1>用户管理</h1>
  4 + </div>
  5 +</div>
  6 +
  7 +<ul class="page-breadcrumb breadcrumb">
  8 + <li><a href="/pages/home.html" data-pjax>首页</a> <i class="fa fa-circle"></i></li>
  9 + <li><span class="active">权限管理</span> <i class="fa fa-circle"></i></li>
  10 + <li><span class="active">用户管理</span></li>
  11 +</ul>
  12 +
  13 +<div class="row">
  14 + <div class="col-md-12">
  15 + <!-- Begin: life time stats -->
  16 + <div class="portlet light portlet-fit portlet-datatable bordered">
  17 + <div class="portlet-title">
  18 + <div class="caption">
  19 + <i class="fa fa-users font-dark"></i> <span
  20 + class="caption-subject font-dark sbold uppercase">用户数据表</span>
  21 + </div>
  22 + <div class="actions">
  23 + <a class="btn btn-circle blue" href="add.html" data-pjax><i class="fa fa-plus"></i> 添加用户</a>
  24 + <!-- <button type="button" class="btn btn-circle red" disabled="disabled" id="removeButton"><i class="fa fa-trash"></i> 删除用户</button> -->
  25 + <div class="btn-group">
  26 + <a class="btn red btn-outline btn-circle" href="javascript:;"
  27 + data-toggle="dropdown"> <i class="fa fa-share"></i> <span
  28 + class="hidden-xs"> 系统工具 </span> <i class="fa fa-angle-down"></i>
  29 + </a>
  30 + <ul class="dropdown-menu pull-right" id="datatable_ajax_tools">
  31 + <li><a href="javascript:;" data-action="0"
  32 + class="tool-action"> <i class="fa fa-print"></i> 打印
  33 + </a></li>
  34 + <li><a href="javascript:;" data-action="1"
  35 + class="tool-action"> <i class="fa fa-copy"></i> 复制
  36 + </a></li>
  37 + <li><a href="javascript:;" data-action="3"
  38 + class="tool-action"> <i class="fa fa-file-excel-o"></i>
  39 + 导出Excel
  40 + </a></li>
  41 + <li class="divider"></li>
  42 + <li><a href="javascript:;" data-action="5"
  43 + class="tool-action"> <i class="fa fa-refresh"></i> 刷新数据
  44 + </a></li>
  45 + </ul>
  46 + </div>
  47 + </div>
  48 + </div>
  49 + <div class="portlet-body">
  50 + <div class="table-container" style="margin-top: 10px">
  51 + <table
  52 + class="table table-striped table-bordered table-hover table-checkable"
  53 + id="datatable_user">
  54 + <thead>
  55 + <tr role="row" class="heading">
  56 + <th width="3%">#</th>
  57 + <th width="15%">登录名</th>
  58 + <th width="13%">姓名</th>
  59 + <th width="100">所属机构</th>
  60 + <th width="11%">角色</th>
  61 + <th width="10%">状态</th>
  62 + <th width="18%">最后登录时间</th>
  63 + <th width="18%">操作</th>
  64 + </tr>
  65 + <tr role="row" class="filter">
  66 + <td></td>
  67 + <td>
  68 + <input type="text" class="form-control form-filter input-sm" name="userName_like">
  69 + </td>
  70 + <td>
  71 + <input type="text" class="form-control form-filter input-sm" name="name_like">
  72 + </td>
  73 + <td>
  74 + <input type="text" class="form-control form-filter input-sm" name="agencies_like">
  75 + </td>
  76 + <td></td>
  77 + <td>
  78 + <select class="form-control form-filter " name="enable_eq">
  79 + <option value="">请选择...</option>
  80 + <option value="1">可用</option>
  81 + <option value="0">禁用</option>
  82 + </select>
  83 + </td>
  84 + <td></td>
  85 + <td>
  86 + <button class="btn btn-sm green btn-outline filter-submit margin-bottom" >
  87 + <i class="fa fa-search"></i> 搜索</button>
  88 +
  89 + <button class="btn btn-sm red btn-outline filter-cancel">
  90 + <i class="fa fa-times"></i> 重置</button>
  91 + </td>
  92 + </tr>
  93 + </thead>
  94 + <tbody></tbody>
  95 + </table>
  96 + <div style="text-align: right;">
  97 + <ul id="pagination" class="pagination"></ul>
  98 + </div>
  99 + </div>
  100 + </div>
  101 + </div>
  102 + </div>
  103 +</div>
  104 +
  105 +<script id="user_list_temp" type="text/html">
  106 +{{each list as obj i}}
  107 +<tr>
  108 + <td style="vertical-align: middle;">
  109 + <input type="checkbox" class="group-checkable icheck" data-id="{{obj.id}}">
  110 + </td>
  111 + <td>
  112 + {{obj.userName}}
  113 + </td>
  114 + <td>
  115 + {{obj.name}}
  116 + </td>
  117 + <td>
  118 + {{obj.agencies}}
  119 + </td>
  120 + <td>
  121 + {{each obj.roles as role j}}
  122 + {{role.roleName}}、
  123 + {{/each}}
  124 + </td>
  125 + <td>
  126 + {{if obj.enabled}}
  127 + 可用
  128 + {{else}}
  129 + 禁用
  130 + {{/if}}
  131 + </td>
  132 + <td>
  133 + {{obj.lastLoginDate}}
  134 + </td>
  135 + <td><a href="edit.html?no={{obj.id}}" class="btn default blue-stripe btn-sm" data-pjax> 详细 </a></td>
  136 +</tr>
  137 +{{/each}}
  138 +{{if list.length == 0}}
  139 +<tr>
  140 + <td colspan=8><h6 class="muted">没有找到相关数据</h6></td>
  141 +</tr>
  142 +{{/if}}
  143 +</script>
  144 +
  145 +<script>
  146 +$(function(){
  147 + var page = 0, initPagination;
  148 + var icheckOptions = {
  149 + checkboxClass: 'icheckbox_flat-blue',
  150 + increaseArea: '20%'
  151 + }
  152 +
  153 + jsDoQuery(null,true);
  154 +
  155 + //重置
  156 + $('tr.filter .filter-cancel').on('click', function(){
  157 + $('tr.filter input, select').val('').change();
  158 + jsDoQuery(null, true);
  159 + });
  160 +
  161 + //提交
  162 + $('tr.filter .filter-submit').on('click', function(){
  163 + var cells = $('tr.filter')[0].cells
  164 + ,params = {}
  165 + ,name;
  166 + $.each(cells, function(i, cell){
  167 + var items = $('input,select', cell);
  168 + for(var j = 0, item; item = items[j++];){
  169 + name = $(item).attr('name');
  170 + if(name){
  171 + params[name] = $(item).val();
  172 + }
  173 + }
  174 + });
  175 + page = 0;
  176 + jsDoQuery(params, true);
  177 + });
  178 +
  179 + /*
  180 + * 获取数据 p: 要提交的参数, pagination: 是否重新分页
  181 + */
  182 + function jsDoQuery(p, pagination){
  183 + var params = {};
  184 + if(p)
  185 + params = p;
  186 + //更新时间排序
  187 + params['order'] = 'lastLoginDate';
  188 + params['page'] = page;
  189 + var i = layer.load(2);
  190 + $get('/user' ,params, function(data){
  191 + var bodyHtm = template('user_list_temp', {list: data.content});
  192 +
  193 + $('#datatable_user tbody').html(bodyHtm)
  194 + .find('.icheck').iCheck(icheckOptions)
  195 + .on('ifChanged', iCheckChange);
  196 + if(pagination && data.content.length > 0){
  197 + //重新分页
  198 + initPagination = true;
  199 + showPagination(data);
  200 + }
  201 + layer.close(i);
  202 + });
  203 + }
  204 +
  205 + function iCheckChange(){
  206 + var tr = $(this).parents('tr');
  207 + if(this.checked)
  208 + tr.addClass('row-active');
  209 + else
  210 + tr.removeClass('row-active');
  211 +
  212 + if($('#datatable_resource input.icheck:checked').length == 1)
  213 + $('#removeButton').removeAttr('disabled');
  214 + else
  215 + $('#removeButton').attr('disabled', 'disabled');
  216 + }
  217 +
  218 + function showPagination(data){
  219 + //分页
  220 + $('#pagination').jqPaginator({
  221 + totalPages: data.totalPages,
  222 + visiblePages: 6,
  223 + currentPage: page + 1,
  224 + first: '<li class="first"><a href="javascript:void(0);">首页<\/a><\/li>',
  225 + prev: '<li class="prev"><a href="javascript:void(0);">上一页<\/a><\/li>',
  226 + next: '<li class="next"><a href="javascript:void(0);">下一页<\/a><\/li>',
  227 + last: '<li class="last"><a href="javascript:void(0);">尾页<\/a><\/li>',
  228 + page: '<li class="page"><a href="javascript:void(0);">{{page}}<\/a><\/li>',
  229 + onPageChange: function (num, type) {
  230 + if(initPagination){
  231 + initPagination = false;
  232 + return;
  233 + }
  234 +
  235 +
  236 + page = num - 1;
  237 + jsDoQuery(null, false);
  238 + }
  239 + });
  240 + }
  241 +
  242 +
  243 + //删除
  244 + $('#removeButton').on('click', function(){
  245 + if($(this).attr('disabled'))
  246 + return;
  247 +
  248 + var id = $('#datatable_resource input.icheck:checked').data('id');
  249 +
  250 + removeConfirm('确定要删除选中的数据?', '/resource/' + id ,function(){
  251 + $('tr.filter .filter-submit').click();
  252 + });
  253 + });
  254 +});
255 </script> 255 </script>
256 \ No newline at end of file 256 \ No newline at end of file