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 335 </html>
333 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 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 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 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 255 </script>
256 256 \ No newline at end of file
... ...