Commit 7cf75518cb5fb8134ba9bd3c6eabf61cbf057fbc
Merge branch 'test' of http://192.168.1.195:9998/web_developers/workreport into test
# Conflicts: # .idea/modules.xml
Showing
129 changed files
with
15940 additions
and
5 deletions
Too many changes.
To preserve performance only 100 of 129 files are displayed.
workreport renamed to .gitignore
.idea/modules.xml
1 | 1 | <?xml version="1.0" encoding="UTF-8"?> |
2 | 2 | <project version="4"> |
3 | - <component name="ProjectModuleManager"> | |
4 | - <modules> | |
5 | - <module fileurl="file://$PROJECT_DIR$/workreport.iml" filepath="$PROJECT_DIR$/workreport.iml" /> | |
6 | - </modules> | |
7 | - </component> | |
3 | + <component name="ProjectModuleManager"> | |
4 | + <modules> | |
5 | + <module fileurl="file://$PROJECT_DIR$/workreport.iml" filepath="$PROJECT_DIR$/workreport.iml" /> | |
6 | + </modules> | |
7 | + </component> | |
8 | 8 | </project> |
9 | 9 | \ No newline at end of file | ... | ... |
home.html
0 → 100644
index/index.html
0 → 100644
1 | +<!DOCTYPE html> | |
2 | +<html lang="en"> | |
3 | +<head> | |
4 | + <meta charset="UTF-8"> | |
5 | + <title>工时系统</title> | |
6 | + <link rel="stylesheet" id="pageCssLink" type="text/css" href=""/> | |
7 | + <link rel="stylesheet" href="../resource/lib/bootstrap/css/bootstrap.min.css"> | |
8 | + <link rel="stylesheet" href="../resource/lib/bootstrap-daterangepicker/daterangepicker.css"> | |
9 | + <link rel="stylesheet" href="../resource/lib/bootstrap-datetimepicker/bootstrap-datetimepicker.css"> | |
10 | + <link rel="stylesheet" href="../resource/lib/bootstrap-select/css/bootstrap-select.css"> | |
11 | + <link rel="stylesheet" href="../resource/lib/bootstrap-table/bootstrap-table.min.css"> | |
12 | + <link rel="stylesheet" href="../resource/lib/bootstrap-table/bootstrap-table-fixed-columns.css"> | |
13 | + <link rel="stylesheet" href="../resource/lib/font-awesome/css/font-awesome.min.css"> | |
14 | + <link rel="stylesheet" href="../resource/public/components.min.css?a=2"> | |
15 | + <link rel="stylesheet" href="../resource/public/plugins.min.css?a=2"> | |
16 | + <link rel="stylesheet" href="../resource/public/commoncss.css?a=2"> | |
17 | + | |
18 | + | |
19 | +</head> | |
20 | +<body> | |
21 | +<!----------------------------------------------头部--> | |
22 | +<header> | |
23 | + <div class="nav-bar-wrap"> | |
24 | + <div class="float-left login-name"> | |
25 | + <span id="">张志涛</span> <span class="cursorpointer">退出</span> | |
26 | + </div> | |
27 | + | |
28 | + <nav class="float-right"> | |
29 | + <ul class="nav-bar-container"> | |
30 | + <li class="navbar-active" id="button-workfill"><a href="#/workfill">工时填报</a></li> | |
31 | + <li id="button-workquery"><a href="#/workquery" >工时查询</a></li> | |
32 | + <li id="button-hourscount"><a href="#/hourscount" >工时统计</a></li> | |
33 | + <li id="button-staffmanage"><a href="#/staffmanage" >员工管理</a></li> | |
34 | + </ul> | |
35 | + </nav> | |
36 | + </div> | |
37 | +</header> | |
38 | + | |
39 | +<!----------------------------------------------内容--> | |
40 | +<div id="main-con" class="main-con"></div> | |
41 | +<script src="../resource/lib/jquery/jquery.min.js"></script> | |
42 | +<script src="../resource/lib/bootstrap/js/bootstrap.min.js"></script> | |
43 | +<script src="../resource/lib/bootstrap-daterangepicker/moment.js"></script> | |
44 | +<script src="../resource/lib/bootstrap-daterangepicker/daterangepicker.js"></script> | |
45 | +<script src="../resource/lib/bootstrap-datetimepicker/bootstrap-datetimepicker.js"></script> | |
46 | +<script src="../resource/lib/bootstrap-datetimepicker/bootstrap-datetimepicker.zh-CN.js"></script> | |
47 | +<script src="../resource/lib/bootstrap-select/js/bootstrap-select.js"></script> | |
48 | +<script src="../resource/lib/bootstrap-table/bootstrap-table.min.js"></script> | |
49 | +<script src="../resource/lib/bootstrap-table/bootstrap-table-fixed-columns.js"></script> | |
50 | +<script src="../resource/lib/bootstrap-table/bootstrap-table-zh-CN.js"></script> | |
51 | +<script src="../resource/lib/dateUtils/DateUtils.js"></script> | |
52 | +<script src="../resource/lib/jqueryform/jquery.form.js"></script> | |
53 | + | |
54 | +<script src="../topages/topagesTmp.js"></script> | |
55 | +<!--<script src="../topages/workquery/workquery.js"></script>--> | |
56 | +</body> | |
57 | +</html> | |
0 | 58 | \ No newline at end of file | ... | ... |
login/login.html
0 → 100644
1 | +<!DOCTYPE html> | |
2 | +<html lang="en"> | |
3 | +<head> | |
4 | + <meta charset="UTF-8"> | |
5 | + <title>登录</title> | |
6 | + <link rel="stylesheet" href="../resource/lib/bootstrap/css/bootstrap.min.css"> | |
7 | + <link rel="stylesheet" href="../resource/public/components.min.css?a=2"> | |
8 | + <link rel="stylesheet" href="../resource/public/plugins.min.css?a=2"> | |
9 | + <link rel="stylesheet" href="../resource/public/commoncss.css?a=2"> | |
10 | + <link rel="stylesheet" href="../topages/login/login.css"> | |
11 | + | |
12 | +</head> | |
13 | +<body> | |
14 | + | |
15 | + <div class="float-left login-wrap"> | |
16 | + <div class="login-main"> | |
17 | + <div class="login-name">中兴智能日报系统</div> | |
18 | + <div class="login-hint">轻松工作每一天</div> | |
19 | + <input type="text" class="login-username" id="login-username" placeholder="邮箱或者账户名"> | |
20 | + <input type="password" class="login-password" id="login-password" placeholder="密码"> | |
21 | + <div class="login-btn" id="login-btn">登录</div> | |
22 | + </div> | |
23 | + </div> | |
24 | + <div class="float-left login-bg"></div> | |
25 | + | |
26 | + | |
27 | +<script src="../resource/lib/jquery/jquery.min.js"></script> | |
28 | +<script src="../topages/login/login.js"></script> | |
29 | +</body> | |
30 | +</html> | |
0 | 31 | \ No newline at end of file | ... | ... |
resource/img/arrow-down.png
0 → 100644
168 Bytes
resource/img/arrow-up.png
0 → 100644
165 Bytes
resource/img/circle-icon.png
0 → 100644
234 Bytes
resource/img/commited-icon-1.png
0 → 100644
441 Bytes
resource/img/commited-icon-2.png
0 → 100644
408 Bytes
resource/img/commited-icon-3.png
0 → 100644
422 Bytes
resource/img/commited-icon-4.png
0 → 100644
472 Bytes
resource/img/commited-icon-5.png
0 → 100644
440 Bytes
resource/img/commited-icon-6.png
0 → 100644
418 Bytes
resource/img/commited-icon-7.png
0 → 100644
397 Bytes
resource/img/dataicon.png
0 → 100644
326 Bytes
resource/img/login-bg.png
0 → 100644
295 KB
resource/img/login-btn.png
0 → 100644
2.41 KB
resource/img/nodata-icon.png
0 → 100644
45.5 KB
resource/img/person-cion.png
0 → 100644
366 Bytes
resource/img/search-btn.png
0 → 100644
2.05 KB
resource/img/time-opr-area.png
0 → 100644
1.82 KB
resource/img/workquery-card-allcounter.png
0 → 100644
2.6 KB
resource/img/workquery-card-commitedcounter.png
0 → 100644
3.23 KB
resource/img/workquery-card-nocommitedcounter.png
0 → 100644
2.92 KB
resource/lib/bootstrap-daterangepicker/daterangepicker.css
0 → 100755
1 | +.daterangepicker { | |
2 | + position: absolute; | |
3 | + color: inherit; | |
4 | + background: #fff; | |
5 | + border-radius: 4px; | |
6 | + width: 278px; | |
7 | + padding: 4px; | |
8 | + margin-top: 1px; | |
9 | + top: 100px; | |
10 | + left: 20px; | |
11 | + /* Calendars */ } | |
12 | + .daterangepicker:before, .daterangepicker:after { | |
13 | + position: absolute; | |
14 | + display: inline-block; | |
15 | + border-bottom-color: rgba(0, 0, 0, 0.2); | |
16 | + content: ''; } | |
17 | + .daterangepicker:before { | |
18 | + top: -7px; | |
19 | + border-right: 7px solid transparent; | |
20 | + border-left: 7px solid transparent; | |
21 | + border-bottom: 7px solid #ccc; } | |
22 | + .daterangepicker:after { | |
23 | + top: -6px; | |
24 | + border-right: 6px solid transparent; | |
25 | + border-bottom: 6px solid #fff; | |
26 | + border-left: 6px solid transparent; } | |
27 | + .daterangepicker.opensleft:before { | |
28 | + right: 9px; } | |
29 | + .daterangepicker.opensleft:after { | |
30 | + right: 10px; } | |
31 | + .daterangepicker.openscenter:before { | |
32 | + left: 0; | |
33 | + right: 0; | |
34 | + width: 0; | |
35 | + margin-left: auto; | |
36 | + margin-right: auto; } | |
37 | + .daterangepicker.openscenter:after { | |
38 | + left: 0; | |
39 | + right: 0; | |
40 | + width: 0; | |
41 | + margin-left: auto; | |
42 | + margin-right: auto; } | |
43 | + .daterangepicker.opensright:before { | |
44 | + left: 9px; } | |
45 | + .daterangepicker.opensright:after { | |
46 | + left: 10px; } | |
47 | + .daterangepicker.dropup { | |
48 | + margin-top: -5px; } | |
49 | + .daterangepicker.dropup:before { | |
50 | + top: initial; | |
51 | + bottom: -7px; | |
52 | + border-bottom: initial; | |
53 | + border-top: 7px solid #ccc; } | |
54 | + .daterangepicker.dropup:after { | |
55 | + top: initial; | |
56 | + bottom: -6px; | |
57 | + border-bottom: initial; | |
58 | + border-top: 6px solid #fff; } | |
59 | + .daterangepicker.dropdown-menu { | |
60 | + max-width: none; | |
61 | + z-index: 3001; } | |
62 | + .daterangepicker.single .ranges, .daterangepicker.single .calendar { | |
63 | + float: none; } | |
64 | + .daterangepicker.show-calendar .calendar { | |
65 | + display: block; } | |
66 | + .daterangepicker .calendar { | |
67 | + display: none; | |
68 | + max-width: 270px; | |
69 | + margin: 4px; } | |
70 | + .daterangepicker .calendar.single .calendar-table { | |
71 | + border: none; } | |
72 | + .daterangepicker .calendar th, .daterangepicker .calendar td { | |
73 | + white-space: nowrap; | |
74 | + text-align: center; | |
75 | + min-width: 32px; } | |
76 | + .daterangepicker .calendar-table { | |
77 | + border: 1px solid #fff; | |
78 | + padding: 4px; | |
79 | + border-radius: 4px; | |
80 | + background: #fff; } | |
81 | + .daterangepicker table { | |
82 | + width: 100%; | |
83 | + margin: 0; } | |
84 | + .daterangepicker td, .daterangepicker th { | |
85 | + text-align: center; | |
86 | + width: 20px; | |
87 | + height: 20px; | |
88 | + border-radius: 4px; | |
89 | + border: 1px solid transparent; | |
90 | + white-space: nowrap; | |
91 | + cursor: pointer; } | |
92 | + .daterangepicker td.available:hover, .daterangepicker th.available:hover { | |
93 | + background: #eee; } | |
94 | + .daterangepicker td.week, .daterangepicker th.week { | |
95 | + font-size: 80%; | |
96 | + color: #ccc; } | |
97 | + .daterangepicker td.off, .daterangepicker td.off.in-range, .daterangepicker td.off.start-date, .daterangepicker td.off.end-date { | |
98 | + background-color: #fff; | |
99 | + border-color: transparent; | |
100 | + color: #999; } | |
101 | + .daterangepicker td.in-range { | |
102 | + background-color: #ebf4f8; | |
103 | + border-color: transparent; | |
104 | + color: #000; | |
105 | + border-radius: 0; } | |
106 | + .daterangepicker td.start-date { | |
107 | + border-radius: 4px 0 0 4px; } | |
108 | + .daterangepicker td.end-date { | |
109 | + border-radius: 0 4px 4px 0; } | |
110 | + .daterangepicker td.start-date.end-date { | |
111 | + border-radius: 4px; } | |
112 | + .daterangepicker td.active, .daterangepicker td.active:hover { | |
113 | + background-color: #357ebd; | |
114 | + border-color: transparent; | |
115 | + color: #fff; } | |
116 | + .daterangepicker th.month { | |
117 | + width: auto; } | |
118 | + .daterangepicker td.disabled, .daterangepicker option.disabled { | |
119 | + color: #999; | |
120 | + cursor: not-allowed; | |
121 | + text-decoration: line-through; } | |
122 | + .daterangepicker select.monthselect, .daterangepicker select.yearselect { | |
123 | + font-size: 12px; | |
124 | + padding: 1px; | |
125 | + height: auto; | |
126 | + margin: 0; | |
127 | + cursor: default; } | |
128 | + .daterangepicker select.monthselect { | |
129 | + margin-right: 2%; | |
130 | + width: 56%; } | |
131 | + .daterangepicker select.yearselect { | |
132 | + width: 40%; } | |
133 | + .daterangepicker select.hourselect, .daterangepicker select.minuteselect, .daterangepicker select.secondselect, .daterangepicker select.ampmselect { | |
134 | + width: 50px; | |
135 | + margin-bottom: 0; } | |
136 | + .daterangepicker .input-mini { | |
137 | + border: 1px solid #ccc; | |
138 | + border-radius: 4px; | |
139 | + color: #555; | |
140 | + height: 30px; | |
141 | + line-height: 30px; | |
142 | + display: block; | |
143 | + vertical-align: middle; | |
144 | + margin: 0 0 5px 0; | |
145 | + padding: 0 6px 0 28px; | |
146 | + width: 100%; } | |
147 | + .daterangepicker .input-mini.active { | |
148 | + border: 1px solid #08c; | |
149 | + border-radius: 4px; } | |
150 | + .daterangepicker .daterangepicker_input { | |
151 | + position: relative; } | |
152 | + .daterangepicker .daterangepicker_input i { | |
153 | + position: absolute; | |
154 | + left: 8px; | |
155 | + top: 8px; } | |
156 | + .daterangepicker .calendar-time { | |
157 | + text-align: center; | |
158 | + margin: 5px auto; | |
159 | + line-height: 30px; | |
160 | + position: relative; | |
161 | + padding-left: 28px; } | |
162 | + .daterangepicker .calendar-time select.disabled { | |
163 | + color: #ccc; | |
164 | + cursor: not-allowed; } | |
165 | + | |
166 | +.ranges { | |
167 | + font-size: 11px; | |
168 | + float: none; | |
169 | + margin: 4px; | |
170 | + text-align: left; } | |
171 | + .ranges ul { | |
172 | + list-style: none; | |
173 | + margin: 0 auto; | |
174 | + padding: 0; | |
175 | + width: 100%; } | |
176 | + .ranges li { | |
177 | + font-size: 13px; | |
178 | + background: #f5f5f5; | |
179 | + border: 1px solid #f5f5f5; | |
180 | + border-radius: 4px; | |
181 | + color: #08c; | |
182 | + padding: 3px 12px; | |
183 | + margin-bottom: 8px; | |
184 | + cursor: pointer; } | |
185 | + .ranges li:hover { | |
186 | + background: #08c; | |
187 | + border: 1px solid #08c; | |
188 | + color: #fff; } | |
189 | + .ranges li.active { | |
190 | + background: #08c; | |
191 | + border: 1px solid #08c; | |
192 | + color: #fff; } | |
193 | + | |
194 | +/* Larger Screen Styling */ | |
195 | +@media (min-width: 564px) { | |
196 | + .daterangepicker { | |
197 | + width: auto; } | |
198 | + .daterangepicker .ranges ul { | |
199 | + width: 160px; } | |
200 | + .daterangepicker.single .ranges ul { | |
201 | + width: 100%; } | |
202 | + .daterangepicker.single .calendar.left { | |
203 | + clear: none; } | |
204 | + .daterangepicker.single .ranges, .daterangepicker.single .calendar { | |
205 | + float: left; } | |
206 | + .daterangepicker .calendar.left { | |
207 | + clear: left; | |
208 | + margin-right: 0; } | |
209 | + .daterangepicker .calendar.left .calendar-table { | |
210 | + border-right: none; | |
211 | + border-top-right-radius: 0; | |
212 | + border-bottom-right-radius: 0; } | |
213 | + .daterangepicker .calendar.right { | |
214 | + margin-left: 0; } | |
215 | + .daterangepicker .calendar.right .calendar-table { | |
216 | + border-left: none; | |
217 | + border-top-left-radius: 0; | |
218 | + border-bottom-left-radius: 0; } | |
219 | + .daterangepicker .left .daterangepicker_input { | |
220 | + padding-right: 12px; } | |
221 | + .daterangepicker .calendar.left .calendar-table { | |
222 | + padding-right: 12px; } | |
223 | + .daterangepicker .ranges, .daterangepicker .calendar { | |
224 | + float: left; } } | |
225 | + | |
226 | +@media (min-width: 730px) { | |
227 | + .daterangepicker .ranges { | |
228 | + width: auto; | |
229 | + float: left; } | |
230 | + .daterangepicker .calendar.left { | |
231 | + clear: none; } } | |
232 | + | ... | ... |
resource/lib/bootstrap-daterangepicker/daterangepicker.js
0 → 100755
1 | +/** | |
2 | +* @version: 2.1.19 | |
3 | +* @author: Dan Grossman http://www.dangrossman.info/ | |
4 | +* @copyright: Copyright (c) 2012-2015 Dan Grossman. All rights reserved. | |
5 | +* @license: Licensed under the MIT license. See http://www.opensource.org/licenses/mit-license.php | |
6 | +* @website: https://www.improvely.com/ | |
7 | +*/ | |
8 | + | |
9 | +(function(root, factory) { | |
10 | + | |
11 | + if (typeof define === 'function' && define.amd) { | |
12 | + define(['moment', 'jquery', 'exports'], function(momentjs, $, exports) { | |
13 | + root.daterangepicker = factory(root, exports, momentjs, $); | |
14 | + }); | |
15 | + | |
16 | + } else if (typeof exports !== 'undefined') { | |
17 | + var momentjs = require('moment'); | |
18 | + var jQuery = (typeof window != 'undefined') ? window.jQuery : undefined; //isomorphic issue | |
19 | + if (!jQuery) { | |
20 | + try { | |
21 | + jQuery = require('jquery'); | |
22 | + if (!jQuery.fn) jQuery.fn = {}; //isomorphic issue | |
23 | + } catch (err) { | |
24 | + if (!jQuery) throw new Error('jQuery dependency not found'); | |
25 | + } | |
26 | + } | |
27 | + | |
28 | + factory(root, exports, momentjs, jQuery); | |
29 | + | |
30 | + // Finally, as a browser global. | |
31 | + } else { | |
32 | + root.daterangepicker = factory(root, {}, root.moment || moment, (root.jQuery || root.Zepto || root.ender || root.$)); | |
33 | + } | |
34 | + | |
35 | +}(this || {}, function(root, daterangepicker, moment, $) { // 'this' doesn't exist on a server | |
36 | + | |
37 | + var DateRangePicker = function(element, options, cb) { | |
38 | + | |
39 | + //default settings for options | |
40 | + this.parentEl = 'body'; | |
41 | + this.element = $(element); | |
42 | + this.startDate = moment().startOf('day'); | |
43 | + this.endDate = moment().endOf('day'); | |
44 | + this.minDate = false; | |
45 | + this.maxDate = false; | |
46 | + this.dateLimit = false; | |
47 | + this.autoApply = false; | |
48 | + this.singleDatePicker = false; | |
49 | + this.showDropdowns = false; | |
50 | + this.showWeekNumbers = false; | |
51 | + this.showISOWeekNumbers = false; | |
52 | + this.timePicker = false; | |
53 | + this.timePicker24Hour = false; | |
54 | + this.timePickerIncrement = 1; | |
55 | + this.timePickerSeconds = false; | |
56 | + this.linkedCalendars = true; | |
57 | + this.autoUpdateInput = true; | |
58 | + this.alwaysShowCalendars = false; | |
59 | + this.ranges = {}; | |
60 | + | |
61 | + this.opens = 'right'; | |
62 | + if (this.element.hasClass('pull-right')) | |
63 | + this.opens = 'left'; | |
64 | + | |
65 | + this.drops = 'down'; | |
66 | + if (this.element.hasClass('dropup')) | |
67 | + this.drops = 'up'; | |
68 | + | |
69 | + this.buttonClasses = 'btn btn-sm'; | |
70 | + this.applyClass = 'btn-success'; | |
71 | + this.cancelClass = 'btn-default'; | |
72 | + | |
73 | + this.locale = { | |
74 | + format: 'YYYY-MM-DD', | |
75 | + separator: ' - ', | |
76 | + applyLabel: '确定', | |
77 | + cancelLabel: '取消', | |
78 | + weekLabel: 'W', | |
79 | + customRangeLabel: '自定义', | |
80 | + daysOfWeek: moment.weekdaysMin(), | |
81 | + monthNames: moment.monthsShort(), | |
82 | + firstDay: moment.localeData().firstDayOfWeek() | |
83 | + }; | |
84 | + | |
85 | + this.callback = function() { }; | |
86 | + | |
87 | + //some state information | |
88 | + this.isShowing = false; | |
89 | + this.leftCalendar = {}; | |
90 | + this.rightCalendar = {}; | |
91 | + | |
92 | + //custom options from user | |
93 | + if (typeof options !== 'object' || options === null) | |
94 | + options = {}; | |
95 | + | |
96 | + //allow setting options with data attributes | |
97 | + //data-api options will be overwritten with custom javascript options | |
98 | + options = $.extend(this.element.data(), options); | |
99 | + | |
100 | + //html template for the picker UI | |
101 | + if (typeof options.template !== 'string' && !(options.template instanceof $)) | |
102 | + options.template = '<div class="daterangepicker dropdown-menu">' + | |
103 | + '<div class="calendar left">' + | |
104 | + '<div class="daterangepicker_input">' + | |
105 | + '<input class="input-mini" type="text" name="daterangepicker_start" value="" />' + | |
106 | + '<i class="fa fa-calendar glyphicon glyphicon-calendar"></i>' + | |
107 | + '<div class="calendar-time">' + | |
108 | + '<div></div>' + | |
109 | + '<i class="fa fa-clock-o glyphicon glyphicon-time"></i>' + | |
110 | + '</div>' + | |
111 | + '</div>' + | |
112 | + '<div class="calendar-table"></div>' + | |
113 | + '</div>' + | |
114 | + '<div class="calendar right">' + | |
115 | + '<div class="daterangepicker_input">' + | |
116 | + '<input class="input-mini" type="text" name="daterangepicker_end" value="" />' + | |
117 | + '<i class="fa fa-calendar glyphicon glyphicon-calendar"></i>' + | |
118 | + '<div class="calendar-time">' + | |
119 | + '<div></div>' + | |
120 | + '<i class="fa fa-clock-o glyphicon glyphicon-time"></i>' + | |
121 | + '</div>' + | |
122 | + '</div>' + | |
123 | + '<div class="calendar-table"></div>' + | |
124 | + '</div>' + | |
125 | + '<div class="ranges">' + | |
126 | + '<div class="range_inputs">' + | |
127 | + '<button class="applyBtn" disabled="disabled" type="button"></button> ' + | |
128 | + '<button class="cancelBtn" type="button"></button>' + | |
129 | + '</div>' + | |
130 | + '</div>' + | |
131 | + '</div>'; | |
132 | + | |
133 | + this.parentEl = (options.parentEl && $(options.parentEl).length) ? $(options.parentEl) : $(this.parentEl); | |
134 | + this.container = $(options.template).appendTo(this.parentEl); | |
135 | + | |
136 | + // | |
137 | + // handle all the possible options overriding defaults | |
138 | + // | |
139 | + | |
140 | + if (typeof options.locale === 'object') { | |
141 | + | |
142 | + if (typeof options.locale.format === 'string') | |
143 | + this.locale.format = options.locale.format; | |
144 | + | |
145 | + if (typeof options.locale.separator === 'string') | |
146 | + this.locale.separator = options.locale.separator; | |
147 | + | |
148 | + if (typeof options.locale.daysOfWeek === 'object') | |
149 | + this.locale.daysOfWeek = options.locale.daysOfWeek.slice(); | |
150 | + | |
151 | + if (typeof options.locale.monthNames === 'object') | |
152 | + this.locale.monthNames = options.locale.monthNames.slice(); | |
153 | + | |
154 | + if (typeof options.locale.firstDay === 'number') | |
155 | + this.locale.firstDay = options.locale.firstDay; | |
156 | + | |
157 | + if (typeof options.locale.applyLabel === 'string') | |
158 | + this.locale.applyLabel = options.locale.applyLabel; | |
159 | + | |
160 | + if (typeof options.locale.cancelLabel === 'string') | |
161 | + this.locale.cancelLabel = options.locale.cancelLabel; | |
162 | + | |
163 | + if (typeof options.locale.weekLabel === 'string') | |
164 | + this.locale.weekLabel = options.locale.weekLabel; | |
165 | + | |
166 | + if (typeof options.locale.customRangeLabel === 'string') | |
167 | + this.locale.customRangeLabel = options.locale.customRangeLabel; | |
168 | + | |
169 | + } | |
170 | + | |
171 | + if (typeof options.startDate === 'string') | |
172 | + this.startDate = moment(options.startDate, this.locale.format); | |
173 | + | |
174 | + if (typeof options.endDate === 'string') | |
175 | + this.endDate = moment(options.endDate, this.locale.format); | |
176 | + | |
177 | + if (typeof options.minDate === 'string') | |
178 | + this.minDate = moment(options.minDate, this.locale.format); | |
179 | + | |
180 | + if (typeof options.maxDate === 'string') | |
181 | + this.maxDate = moment(options.maxDate, this.locale.format); | |
182 | + | |
183 | + if (typeof options.startDate === 'object') | |
184 | + this.startDate = moment(options.startDate); | |
185 | + | |
186 | + if (typeof options.endDate === 'object') | |
187 | + this.endDate = moment(options.endDate); | |
188 | + | |
189 | + if (typeof options.minDate === 'object') | |
190 | + this.minDate = moment(options.minDate); | |
191 | + | |
192 | + if (typeof options.maxDate === 'object') | |
193 | + this.maxDate = moment(options.maxDate); | |
194 | + | |
195 | + // sanity check for bad options | |
196 | + if (this.minDate && this.startDate.isBefore(this.minDate)) | |
197 | + this.startDate = this.minDate.clone(); | |
198 | + | |
199 | + // sanity check for bad options | |
200 | + if (this.maxDate && this.endDate.isAfter(this.maxDate)) | |
201 | + this.endDate = this.maxDate.clone(); | |
202 | + | |
203 | + if (typeof options.applyClass === 'string') | |
204 | + this.applyClass = options.applyClass; | |
205 | + | |
206 | + if (typeof options.cancelClass === 'string') | |
207 | + this.cancelClass = options.cancelClass; | |
208 | + | |
209 | + if (typeof options.dateLimit === 'object') | |
210 | + this.dateLimit = options.dateLimit; | |
211 | + | |
212 | + if (typeof options.opens === 'string') | |
213 | + this.opens = options.opens; | |
214 | + | |
215 | + if (typeof options.drops === 'string') | |
216 | + this.drops = options.drops; | |
217 | + | |
218 | + if (typeof options.showWeekNumbers === 'boolean') | |
219 | + this.showWeekNumbers = options.showWeekNumbers; | |
220 | + | |
221 | + if (typeof options.showISOWeekNumbers === 'boolean') | |
222 | + this.showISOWeekNumbers = options.showISOWeekNumbers; | |
223 | + | |
224 | + if (typeof options.buttonClasses === 'string') | |
225 | + this.buttonClasses = options.buttonClasses; | |
226 | + | |
227 | + if (typeof options.buttonClasses === 'object') | |
228 | + this.buttonClasses = options.buttonClasses.join(' '); | |
229 | + | |
230 | + if (typeof options.showDropdowns === 'boolean') | |
231 | + this.showDropdowns = options.showDropdowns; | |
232 | + | |
233 | + if (typeof options.singleDatePicker === 'boolean') { | |
234 | + this.singleDatePicker = options.singleDatePicker; | |
235 | + if (this.singleDatePicker) | |
236 | + this.endDate = this.startDate.clone(); | |
237 | + } | |
238 | + | |
239 | + if (typeof options.timePicker === 'boolean') | |
240 | + this.timePicker = options.timePicker; | |
241 | + | |
242 | + if (typeof options.timePickerSeconds === 'boolean') | |
243 | + this.timePickerSeconds = options.timePickerSeconds; | |
244 | + | |
245 | + if (typeof options.timePickerIncrement === 'number') | |
246 | + this.timePickerIncrement = options.timePickerIncrement; | |
247 | + | |
248 | + if (typeof options.timePicker24Hour === 'boolean') | |
249 | + this.timePicker24Hour = options.timePicker24Hour; | |
250 | + | |
251 | + if (typeof options.autoApply === 'boolean') | |
252 | + this.autoApply = options.autoApply; | |
253 | + | |
254 | + if (typeof options.autoUpdateInput === 'boolean') | |
255 | + this.autoUpdateInput = options.autoUpdateInput; | |
256 | + | |
257 | + if (typeof options.linkedCalendars === 'boolean') | |
258 | + this.linkedCalendars = options.linkedCalendars; | |
259 | + | |
260 | + if (typeof options.isInvalidDate === 'function') | |
261 | + this.isInvalidDate = options.isInvalidDate; | |
262 | + | |
263 | + if (typeof options.alwaysShowCalendars === 'boolean') | |
264 | + this.alwaysShowCalendars = options.alwaysShowCalendars; | |
265 | + | |
266 | + // update day names order to firstDay | |
267 | + if (this.locale.firstDay != 0) { | |
268 | + var iterator = this.locale.firstDay; | |
269 | + while (iterator > 0) { | |
270 | + this.locale.daysOfWeek.push(this.locale.daysOfWeek.shift()); | |
271 | + iterator--; | |
272 | + } | |
273 | + } | |
274 | + | |
275 | + var start, end, range; | |
276 | + | |
277 | + //if no start/end dates set, check if an input element contains initial values | |
278 | + if (typeof options.startDate === 'undefined' && typeof options.endDate === 'undefined') { | |
279 | + if ($(this.element).is('input[type=text]')) { | |
280 | + var val = $(this.element).val(), | |
281 | + split = val.split(this.locale.separator); | |
282 | + | |
283 | + start = end = null; | |
284 | + | |
285 | + if (split.length == 2) { | |
286 | + start = moment(split[0], this.locale.format); | |
287 | + end = moment(split[1], this.locale.format); | |
288 | + } else if (this.singleDatePicker && val !== "") { | |
289 | + start = moment(val, this.locale.format); | |
290 | + end = moment(val, this.locale.format); | |
291 | + } | |
292 | + if (start !== null && end !== null) { | |
293 | + this.setStartDate(start); | |
294 | + this.setEndDate(end); | |
295 | + } | |
296 | + } | |
297 | + } | |
298 | + | |
299 | + if (typeof options.ranges === 'object') { | |
300 | + for (range in options.ranges) { | |
301 | + | |
302 | + if (typeof options.ranges[range][0] === 'string') | |
303 | + start = moment(options.ranges[range][0], this.locale.format); | |
304 | + else | |
305 | + start = moment(options.ranges[range][0]); | |
306 | + | |
307 | + if (typeof options.ranges[range][1] === 'string') | |
308 | + end = moment(options.ranges[range][1], this.locale.format); | |
309 | + else | |
310 | + end = moment(options.ranges[range][1]); | |
311 | + | |
312 | + // If the start or end date exceed those allowed by the minDate or dateLimit | |
313 | + // options, shorten the range to the allowable period. | |
314 | + if (this.minDate && start.isBefore(this.minDate)) | |
315 | + start = this.minDate.clone(); | |
316 | + | |
317 | + var maxDate = this.maxDate; | |
318 | + if (this.dateLimit && start.clone().add(this.dateLimit).isAfter(maxDate)) | |
319 | + maxDate = start.clone().add(this.dateLimit); | |
320 | + if (maxDate && end.isAfter(maxDate)) | |
321 | + end = maxDate.clone(); | |
322 | + | |
323 | + // If the end of the range is before the minimum or the start of the range is | |
324 | + // after the maximum, don't display this range option at all. | |
325 | + if ((this.minDate && end.isBefore(this.minDate)) || (maxDate && start.isAfter(maxDate))) | |
326 | + continue; | |
327 | + | |
328 | + //Support unicode chars in the range names. | |
329 | + var elem = document.createElement('textarea'); | |
330 | + elem.innerHTML = range; | |
331 | + var rangeHtml = elem.value; | |
332 | + | |
333 | + this.ranges[rangeHtml] = [start, end]; | |
334 | + } | |
335 | + | |
336 | + var list = '<ul>'; | |
337 | + for (range in this.ranges) { | |
338 | + list += '<li>' + range + '</li>'; | |
339 | + } | |
340 | + list += '<li>' + this.locale.customRangeLabel + '</li>'; | |
341 | + list += '</ul>'; | |
342 | + this.container.find('.ranges').prepend(list); | |
343 | + } | |
344 | + | |
345 | + if (typeof cb === 'function') { | |
346 | + this.callback = cb; | |
347 | + } | |
348 | + | |
349 | + if (!this.timePicker) { | |
350 | + this.startDate = this.startDate.startOf('day'); | |
351 | + this.endDate = this.endDate.endOf('day'); | |
352 | + this.container.find('.calendar-time').hide(); | |
353 | + } | |
354 | + | |
355 | + //can't be used together for now | |
356 | + if (this.timePicker && this.autoApply) | |
357 | + this.autoApply = false; | |
358 | + | |
359 | + if (this.autoApply && typeof options.ranges !== 'object') { | |
360 | + this.container.find('.ranges').hide(); | |
361 | + } else if (this.autoApply) { | |
362 | + this.container.find('.applyBtn, .cancelBtn').addClass('hide'); | |
363 | + } | |
364 | + | |
365 | + if (this.singleDatePicker) { | |
366 | + this.container.addClass('single'); | |
367 | + this.container.find('.calendar.left').addClass('single'); | |
368 | + this.container.find('.calendar.left').show(); | |
369 | + this.container.find('.calendar.right').hide(); | |
370 | + this.container.find('.daterangepicker_input input, .daterangepicker_input i').hide(); | |
371 | + if (!this.timePicker) { | |
372 | + this.container.find('.ranges').hide(); | |
373 | + } | |
374 | + } | |
375 | + | |
376 | + if ((typeof options.ranges === 'undefined' && !this.singleDatePicker) || this.alwaysShowCalendars) { | |
377 | + this.container.addClass('show-calendar'); | |
378 | + } | |
379 | + | |
380 | + this.container.addClass('opens' + this.opens); | |
381 | + | |
382 | + //swap the position of the predefined ranges if opens right | |
383 | + if (typeof options.ranges !== 'undefined' && this.opens == 'right') { | |
384 | + var ranges = this.container.find('.ranges'); | |
385 | + var html = ranges.clone(); | |
386 | + ranges.remove(); | |
387 | + this.container.find('.calendar.left').parent().prepend(html); | |
388 | + } | |
389 | + | |
390 | + //apply CSS classes and labels to buttons | |
391 | + this.container.find('.applyBtn, .cancelBtn').addClass(this.buttonClasses); | |
392 | + if (this.applyClass.length) | |
393 | + this.container.find('.applyBtn').addClass(this.applyClass); | |
394 | + if (this.cancelClass.length) | |
395 | + this.container.find('.cancelBtn').addClass(this.cancelClass); | |
396 | + this.container.find('.applyBtn').html(this.locale.applyLabel); | |
397 | + this.container.find('.cancelBtn').html(this.locale.cancelLabel); | |
398 | + | |
399 | + // | |
400 | + // event listeners | |
401 | + // | |
402 | + | |
403 | + this.container.find('.calendar') | |
404 | + .on('click.daterangepicker', '.prev', $.proxy(this.clickPrev, this)) | |
405 | + .on('click.daterangepicker', '.next', $.proxy(this.clickNext, this)) | |
406 | + .on('click.daterangepicker', 'td.available', $.proxy(this.clickDate, this)) | |
407 | + .on('mouseenter.daterangepicker', 'td.available', $.proxy(this.hoverDate, this)) | |
408 | + .on('mouseleave.daterangepicker', 'td.available', $.proxy(this.updateFormInputs, this)) | |
409 | + .on('change.daterangepicker', 'select.yearselect', $.proxy(this.monthOrYearChanged, this)) | |
410 | + .on('change.daterangepicker', 'select.monthselect', $.proxy(this.monthOrYearChanged, this)) | |
411 | + .on('change.daterangepicker', 'select.hourselect,select.minuteselect,select.secondselect,select.ampmselect', $.proxy(this.timeChanged, this)) | |
412 | + .on('click.daterangepicker', '.daterangepicker_input input', $.proxy(this.showCalendars, this)) | |
413 | + //.on('keyup.daterangepicker', '.daterangepicker_input input', $.proxy(this.formInputsChanged, this)) | |
414 | + .on('change.daterangepicker', '.daterangepicker_input input', $.proxy(this.formInputsChanged, this)); | |
415 | + | |
416 | + this.container.find('.ranges') | |
417 | + .on('click.daterangepicker', 'button.applyBtn', $.proxy(this.clickApply, this)) | |
418 | + .on('click.daterangepicker', 'button.cancelBtn', $.proxy(this.clickCancel, this)) | |
419 | + .on('click.daterangepicker', 'li', $.proxy(this.clickRange, this)) | |
420 | + .on('mouseenter.daterangepicker', 'li', $.proxy(this.hoverRange, this)) | |
421 | + .on('mouseleave.daterangepicker', 'li', $.proxy(this.updateFormInputs, this)); | |
422 | + | |
423 | + if (this.element.is('input')) { | |
424 | + this.element.on({ | |
425 | + 'click.daterangepicker': $.proxy(this.show, this), | |
426 | + 'focus.daterangepicker': $.proxy(this.show, this), | |
427 | + 'keyup.daterangepicker': $.proxy(this.elementChanged, this), | |
428 | + 'keydown.daterangepicker': $.proxy(this.keydown, this) | |
429 | + }); | |
430 | + } else { | |
431 | + this.element.on('click.daterangepicker', $.proxy(this.toggle, this)); | |
432 | + } | |
433 | + | |
434 | + // | |
435 | + // if attached to a text input, set the initial value | |
436 | + // | |
437 | + | |
438 | + if (this.element.is('input') && !this.singleDatePicker && this.autoUpdateInput) { | |
439 | + this.element.val(this.startDate.format(this.locale.format) + this.locale.separator + this.endDate.format(this.locale.format)); | |
440 | + this.element.trigger('change'); | |
441 | + } else if (this.element.is('input') && this.autoUpdateInput) { | |
442 | + this.element.val(this.startDate.format(this.locale.format)); | |
443 | + this.element.trigger('change'); | |
444 | + } | |
445 | + | |
446 | + }; | |
447 | + | |
448 | + DateRangePicker.prototype = { | |
449 | + | |
450 | + constructor: DateRangePicker, | |
451 | + | |
452 | + setStartDate: function(startDate) { | |
453 | + if (typeof startDate === 'string') | |
454 | + this.startDate = moment(startDate, this.locale.format); | |
455 | + | |
456 | + if (typeof startDate === 'object') | |
457 | + this.startDate = moment(startDate); | |
458 | + | |
459 | + if (!this.timePicker) | |
460 | + this.startDate = this.startDate.startOf('day'); | |
461 | + | |
462 | + if (this.timePicker && this.timePickerIncrement) | |
463 | + this.startDate.minute(Math.round(this.startDate.minute() / this.timePickerIncrement) * this.timePickerIncrement); | |
464 | + | |
465 | + if (this.minDate && this.startDate.isBefore(this.minDate)) | |
466 | + this.startDate = this.minDate; | |
467 | + | |
468 | + if (this.maxDate && this.startDate.isAfter(this.maxDate)) | |
469 | + this.startDate = this.maxDate; | |
470 | + | |
471 | + if (!this.isShowing) | |
472 | + this.updateElement(); | |
473 | + | |
474 | + this.updateMonthsInView(); | |
475 | + }, | |
476 | + | |
477 | + setEndDate: function(endDate) { | |
478 | + if (typeof endDate === 'string') | |
479 | + this.endDate = moment(endDate, this.locale.format); | |
480 | + | |
481 | + if (typeof endDate === 'object') | |
482 | + this.endDate = moment(endDate); | |
483 | + | |
484 | + if (!this.timePicker) | |
485 | + this.endDate = this.endDate.endOf('day'); | |
486 | + | |
487 | + if (this.timePicker && this.timePickerIncrement) | |
488 | + this.endDate.minute(Math.round(this.endDate.minute() / this.timePickerIncrement) * this.timePickerIncrement); | |
489 | + | |
490 | + if (this.endDate.isBefore(this.startDate)) | |
491 | + this.endDate = this.startDate.clone(); | |
492 | + | |
493 | + if (this.maxDate && this.endDate.isAfter(this.maxDate)) | |
494 | + this.endDate = this.maxDate; | |
495 | + | |
496 | + if (this.dateLimit && this.startDate.clone().add(this.dateLimit).isBefore(this.endDate)) | |
497 | + this.endDate = this.startDate.clone().add(this.dateLimit); | |
498 | + | |
499 | + this.previousRightTime = this.endDate.clone(); | |
500 | + | |
501 | + if (!this.isShowing) | |
502 | + this.updateElement(); | |
503 | + | |
504 | + this.updateMonthsInView(); | |
505 | + }, | |
506 | + | |
507 | + isInvalidDate: function() { | |
508 | + return false; | |
509 | + }, | |
510 | + | |
511 | + updateView: function() { | |
512 | + if (this.timePicker) { | |
513 | + this.renderTimePicker('left'); | |
514 | + this.renderTimePicker('right'); | |
515 | + if (!this.endDate) { | |
516 | + this.container.find('.right .calendar-time select').attr('disabled', 'disabled').addClass('disabled'); | |
517 | + } else { | |
518 | + this.container.find('.right .calendar-time select').removeAttr('disabled').removeClass('disabled'); | |
519 | + } | |
520 | + } | |
521 | + if (this.endDate) { | |
522 | + this.container.find('input[name="daterangepicker_end"]').removeClass('active'); | |
523 | + this.container.find('input[name="daterangepicker_start"]').addClass('active'); | |
524 | + } else { | |
525 | + this.container.find('input[name="daterangepicker_end"]').addClass('active'); | |
526 | + this.container.find('input[name="daterangepicker_start"]').removeClass('active'); | |
527 | + } | |
528 | + this.updateMonthsInView(); | |
529 | + this.updateCalendars(); | |
530 | + this.updateFormInputs(); | |
531 | + }, | |
532 | + | |
533 | + updateMonthsInView: function() { | |
534 | + if (this.endDate) { | |
535 | + | |
536 | + //if both dates are visible already, do nothing | |
537 | + if (!this.singleDatePicker && this.leftCalendar.month && this.rightCalendar.month && | |
538 | + (this.startDate.format('YYYY-MM') == this.leftCalendar.month.format('YYYY-MM') || this.startDate.format('YYYY-MM') == this.rightCalendar.month.format('YYYY-MM')) | |
539 | + && | |
540 | + (this.endDate.format('YYYY-MM') == this.leftCalendar.month.format('YYYY-MM') || this.endDate.format('YYYY-MM') == this.rightCalendar.month.format('YYYY-MM')) | |
541 | + ) { | |
542 | + return; | |
543 | + } | |
544 | + | |
545 | + this.leftCalendar.month = this.startDate.clone().date(2); | |
546 | + if (!this.linkedCalendars && (this.endDate.month() != this.startDate.month() || this.endDate.year() != this.startDate.year())) { | |
547 | + this.rightCalendar.month = this.endDate.clone().date(2); | |
548 | + } else { | |
549 | + this.rightCalendar.month = this.startDate.clone().date(2).add(1, 'month'); | |
550 | + } | |
551 | + | |
552 | + } else { | |
553 | + if (this.leftCalendar.month.format('YYYY-MM') != this.startDate.format('YYYY-MM') && this.rightCalendar.month.format('YYYY-MM') != this.startDate.format('YYYY-MM')) { | |
554 | + this.leftCalendar.month = this.startDate.clone().date(2); | |
555 | + this.rightCalendar.month = this.startDate.clone().date(2).add(1, 'month'); | |
556 | + } | |
557 | + } | |
558 | + }, | |
559 | + | |
560 | + updateCalendars: function() { | |
561 | + | |
562 | + if (this.timePicker) { | |
563 | + var hour, minute, second; | |
564 | + if (this.endDate) { | |
565 | + hour = parseInt(this.container.find('.left .hourselect').val(), 10); | |
566 | + minute = parseInt(this.container.find('.left .minuteselect').val(), 10); | |
567 | + second = this.timePickerSeconds ? parseInt(this.container.find('.left .secondselect').val(), 10) : 0; | |
568 | + if (!this.timePicker24Hour) { | |
569 | + var ampm = this.container.find('.left .ampmselect').val(); | |
570 | + if (ampm === 'PM' && hour < 12) | |
571 | + hour += 12; | |
572 | + if (ampm === 'AM' && hour === 12) | |
573 | + hour = 0; | |
574 | + } | |
575 | + } else { | |
576 | + hour = parseInt(this.container.find('.right .hourselect').val(), 10); | |
577 | + minute = parseInt(this.container.find('.right .minuteselect').val(), 10); | |
578 | + second = this.timePickerSeconds ? parseInt(this.container.find('.right .secondselect').val(), 10) : 0; | |
579 | + if (!this.timePicker24Hour) { | |
580 | + var ampm = this.container.find('.right .ampmselect').val(); | |
581 | + if (ampm === 'PM' && hour < 12) | |
582 | + hour += 12; | |
583 | + if (ampm === 'AM' && hour === 12) | |
584 | + hour = 0; | |
585 | + } | |
586 | + } | |
587 | + this.leftCalendar.month.hour(hour).minute(minute).second(second); | |
588 | + this.rightCalendar.month.hour(hour).minute(minute).second(second); | |
589 | + } | |
590 | + | |
591 | + this.renderCalendar('left'); | |
592 | + this.renderCalendar('right'); | |
593 | + | |
594 | + //highlight any predefined range matching the current start and end dates | |
595 | + this.container.find('.ranges li').removeClass('active'); | |
596 | + if (this.endDate == null) return; | |
597 | + | |
598 | + this.calculateChosenLabel(); | |
599 | + }, | |
600 | + | |
601 | + renderCalendar: function(side) { | |
602 | + | |
603 | + // | |
604 | + // Build the matrix of dates that will populate the calendar | |
605 | + // | |
606 | + | |
607 | + var calendar = side == 'left' ? this.leftCalendar : this.rightCalendar; | |
608 | + var month = calendar.month.month(); | |
609 | + var year = calendar.month.year(); | |
610 | + var hour = calendar.month.hour(); | |
611 | + var minute = calendar.month.minute(); | |
612 | + var second = calendar.month.second(); | |
613 | + var daysInMonth = moment([year, month]).daysInMonth(); | |
614 | + var firstDay = moment([year, month, 1]); | |
615 | + var lastDay = moment([year, month, daysInMonth]); | |
616 | + var lastMonth = moment(firstDay).subtract(1, 'month').month(); | |
617 | + var lastYear = moment(firstDay).subtract(1, 'month').year(); | |
618 | + var daysInLastMonth = moment([lastYear, lastMonth]).daysInMonth(); | |
619 | + var dayOfWeek = firstDay.day(); | |
620 | + | |
621 | + //initialize a 6 rows x 7 columns array for the calendar | |
622 | + var calendar = []; | |
623 | + calendar.firstDay = firstDay; | |
624 | + calendar.lastDay = lastDay; | |
625 | + | |
626 | + for (var i = 0; i < 6; i++) { | |
627 | + calendar[i] = []; | |
628 | + } | |
629 | + | |
630 | + //populate the calendar with date objects | |
631 | + var startDay = daysInLastMonth - dayOfWeek + this.locale.firstDay + 1; | |
632 | + if (startDay > daysInLastMonth) | |
633 | + startDay -= 7; | |
634 | + | |
635 | + if (dayOfWeek == this.locale.firstDay) | |
636 | + startDay = daysInLastMonth - 6; | |
637 | + | |
638 | + var curDate = moment([lastYear, lastMonth, startDay, 12, minute, second]); | |
639 | + | |
640 | + var col, row; | |
641 | + for (var i = 0, col = 0, row = 0; i < 42; i++, col++, curDate = moment(curDate).add(24, 'hour')) { | |
642 | + if (i > 0 && col % 7 === 0) { | |
643 | + col = 0; | |
644 | + row++; | |
645 | + } | |
646 | + calendar[row][col] = curDate.clone().hour(hour).minute(minute).second(second); | |
647 | + curDate.hour(12); | |
648 | + | |
649 | + if (this.minDate && calendar[row][col].format('YYYY-MM-DD') == this.minDate.format('YYYY-MM-DD') && calendar[row][col].isBefore(this.minDate) && side == 'left') { | |
650 | + calendar[row][col] = this.minDate.clone(); | |
651 | + } | |
652 | + | |
653 | + if (this.maxDate && calendar[row][col].format('YYYY-MM-DD') == this.maxDate.format('YYYY-MM-DD') && calendar[row][col].isAfter(this.maxDate) && side == 'right') { | |
654 | + calendar[row][col] = this.maxDate.clone(); | |
655 | + } | |
656 | + | |
657 | + } | |
658 | + | |
659 | + //make the calendar object available to hoverDate/clickDate | |
660 | + if (side == 'left') { | |
661 | + this.leftCalendar.calendar = calendar; | |
662 | + } else { | |
663 | + this.rightCalendar.calendar = calendar; | |
664 | + } | |
665 | + | |
666 | + // | |
667 | + // Display the calendar | |
668 | + // | |
669 | + | |
670 | + var minDate = side == 'left' ? this.minDate : this.startDate; | |
671 | + var maxDate = this.maxDate; | |
672 | + var selected = side == 'left' ? this.startDate : this.endDate; | |
673 | + | |
674 | + var html = '<table class="table-condensed">'; | |
675 | + html += '<thead>'; | |
676 | + html += '<tr>'; | |
677 | + | |
678 | + // add empty cell for week number | |
679 | + if (this.showWeekNumbers || this.showISOWeekNumbers) | |
680 | + html += '<th></th>'; | |
681 | + | |
682 | + if ((!minDate || minDate.isBefore(calendar.firstDay)) && (!this.linkedCalendars || side == 'left')) { | |
683 | + html += '<th class="prev available"><i class="fa fa-chevron-left glyphicon glyphicon-chevron-left"></i></th>'; | |
684 | + } else { | |
685 | + html += '<th></th>'; | |
686 | + } | |
687 | + | |
688 | + var dateHtml = this.locale.monthNames[calendar[1][1].month()] + calendar[1][1].format(" YYYY"); | |
689 | + | |
690 | + if (this.showDropdowns) { | |
691 | + var currentMonth = calendar[1][1].month(); | |
692 | + var currentYear = calendar[1][1].year(); | |
693 | + var maxYear = (maxDate && maxDate.year()) || (currentYear + 5); | |
694 | + var minYear = (minDate && minDate.year()) || (currentYear - 50); | |
695 | + var inMinYear = currentYear == minYear; | |
696 | + var inMaxYear = currentYear == maxYear; | |
697 | + | |
698 | + var monthHtml = '<select class="monthselect">'; | |
699 | + for (var m = 0; m < 12; m++) { | |
700 | + if ((!inMinYear || m >= minDate.month()) && (!inMaxYear || m <= maxDate.month())) { | |
701 | + monthHtml += "<option value='" + m + "'" + | |
702 | + (m === currentMonth ? " selected='selected'" : "") + | |
703 | + ">" + this.locale.monthNames[m] + "</option>"; | |
704 | + } else { | |
705 | + monthHtml += "<option value='" + m + "'" + | |
706 | + (m === currentMonth ? " selected='selected'" : "") + | |
707 | + " disabled='disabled'>" + this.locale.monthNames[m] + "</option>"; | |
708 | + } | |
709 | + } | |
710 | + monthHtml += "</select>"; | |
711 | + | |
712 | + var yearHtml = '<select class="yearselect">'; | |
713 | + for (var y = minYear; y <= maxYear; y++) { | |
714 | + yearHtml += '<option value="' + y + '"' + | |
715 | + (y === currentYear ? ' selected="selected"' : '') + | |
716 | + '>' + y + '</option>'; | |
717 | + } | |
718 | + yearHtml += '</select>'; | |
719 | + | |
720 | + dateHtml = monthHtml + yearHtml; | |
721 | + } | |
722 | + | |
723 | + html += '<th colspan="5" class="month">' + dateHtml + '</th>'; | |
724 | + if ((!maxDate || maxDate.isAfter(calendar.lastDay)) && (!this.linkedCalendars || side == 'right' || this.singleDatePicker)) { | |
725 | + html += '<th class="next available"><i class="fa fa-chevron-right glyphicon glyphicon-chevron-right"></i></th>'; | |
726 | + } else { | |
727 | + html += '<th></th>'; | |
728 | + } | |
729 | + | |
730 | + html += '</tr>'; | |
731 | + html += '<tr>'; | |
732 | + | |
733 | + // add week number label | |
734 | + if (this.showWeekNumbers || this.showISOWeekNumbers) | |
735 | + html += '<th class="week">' + this.locale.weekLabel + '</th>'; | |
736 | + | |
737 | + $.each(this.locale.daysOfWeek, function(index, dayOfWeek) { | |
738 | + html += '<th>' + dayOfWeek + '</th>'; | |
739 | + }); | |
740 | + | |
741 | + html += '</tr>'; | |
742 | + html += '</thead>'; | |
743 | + html += '<tbody>'; | |
744 | + | |
745 | + //adjust maxDate to reflect the dateLimit setting in order to | |
746 | + //grey out end dates beyond the dateLimit | |
747 | + if (this.endDate == null && this.dateLimit) { | |
748 | + var maxLimit = this.startDate.clone().add(this.dateLimit).endOf('day'); | |
749 | + if (!maxDate || maxLimit.isBefore(maxDate)) { | |
750 | + maxDate = maxLimit; | |
751 | + } | |
752 | + } | |
753 | + | |
754 | + for (var row = 0; row < 6; row++) { | |
755 | + html += '<tr>'; | |
756 | + | |
757 | + // add week number | |
758 | + if (this.showWeekNumbers) | |
759 | + html += '<td class="week">' + calendar[row][0].week() + '</td>'; | |
760 | + else if (this.showISOWeekNumbers) | |
761 | + html += '<td class="week">' + calendar[row][0].isoWeek() + '</td>'; | |
762 | + | |
763 | + for (var col = 0; col < 7; col++) { | |
764 | + | |
765 | + var classes = []; | |
766 | + | |
767 | + //highlight today's date | |
768 | + if (calendar[row][col].isSame(new Date(), "day")) | |
769 | + classes.push('today'); | |
770 | + | |
771 | + //highlight weekends | |
772 | + if (calendar[row][col].isoWeekday() > 5) | |
773 | + classes.push('weekend'); | |
774 | + | |
775 | + //grey out the dates in other months displayed at beginning and end of this calendar | |
776 | + if (calendar[row][col].month() != calendar[1][1].month()) | |
777 | + classes.push('off'); | |
778 | + | |
779 | + //don't allow selection of dates before the minimum date | |
780 | + if (this.minDate && calendar[row][col].isBefore(this.minDate, 'day')) | |
781 | + classes.push('off', 'disabled'); | |
782 | + | |
783 | + //don't allow selection of dates after the maximum date | |
784 | + if (maxDate && calendar[row][col].isAfter(maxDate, 'day')) | |
785 | + classes.push('off', 'disabled'); | |
786 | + | |
787 | + //don't allow selection of date if a custom function decides it's invalid | |
788 | + if (this.isInvalidDate(calendar[row][col])) | |
789 | + classes.push('off', 'disabled'); | |
790 | + | |
791 | + //highlight the currently selected start date | |
792 | + if (calendar[row][col].format('YYYY-MM-DD') == this.startDate.format('YYYY-MM-DD')) | |
793 | + classes.push('active', 'start-date'); | |
794 | + | |
795 | + //highlight the currently selected end date | |
796 | + if (this.endDate != null && calendar[row][col].format('YYYY-MM-DD') == this.endDate.format('YYYY-MM-DD')) | |
797 | + classes.push('active', 'end-date'); | |
798 | + | |
799 | + //highlight dates in-between the selected dates | |
800 | + if (this.endDate != null && calendar[row][col] > this.startDate && calendar[row][col] < this.endDate) | |
801 | + classes.push('in-range'); | |
802 | + | |
803 | + var cname = '', disabled = false; | |
804 | + for (var i = 0; i < classes.length; i++) { | |
805 | + cname += classes[i] + ' '; | |
806 | + if (classes[i] == 'disabled') | |
807 | + disabled = true; | |
808 | + } | |
809 | + if (!disabled) | |
810 | + cname += 'available'; | |
811 | + | |
812 | + html += '<td class="' + cname.replace(/^\s+|\s+$/g, '') + '" data-title="' + 'r' + row + 'c' + col + '">' + calendar[row][col].date() + '</td>'; | |
813 | + | |
814 | + } | |
815 | + html += '</tr>'; | |
816 | + } | |
817 | + | |
818 | + html += '</tbody>'; | |
819 | + html += '</table>'; | |
820 | + | |
821 | + this.container.find('.calendar.' + side + ' .calendar-table').html(html); | |
822 | + | |
823 | + }, | |
824 | + | |
825 | + renderTimePicker: function(side) { | |
826 | + | |
827 | + var html, selected, minDate, maxDate = this.maxDate; | |
828 | + | |
829 | + if (this.dateLimit && (!this.maxDate || this.startDate.clone().add(this.dateLimit).isAfter(this.maxDate))) | |
830 | + maxDate = this.startDate.clone().add(this.dateLimit); | |
831 | + | |
832 | + if (side == 'left') { | |
833 | + selected = this.startDate.clone(); | |
834 | + minDate = this.minDate; | |
835 | + } else if (side == 'right') { | |
836 | + selected = this.endDate ? this.endDate.clone() : this.previousRightTime.clone(); | |
837 | + minDate = this.startDate; | |
838 | + | |
839 | + //Preserve the time already selected | |
840 | + var timeSelector = this.container.find('.calendar.right .calendar-time div'); | |
841 | + if (timeSelector.html() != '') { | |
842 | + | |
843 | + selected.hour(timeSelector.find('.hourselect option:selected').val() || selected.hour()); | |
844 | + selected.minute(timeSelector.find('.minuteselect option:selected').val() || selected.minute()); | |
845 | + selected.second(timeSelector.find('.secondselect option:selected').val() || selected.second()); | |
846 | + | |
847 | + if (!this.timePicker24Hour) { | |
848 | + var ampm = timeSelector.find('.ampmselect option:selected').val(); | |
849 | + if (ampm === 'PM' && selected.hour() < 12) | |
850 | + selected.hour(selected.hour() + 12); | |
851 | + if (ampm === 'AM' && selected.hour() === 12) | |
852 | + selected.hour(0); | |
853 | + } | |
854 | + | |
855 | + if (selected.isBefore(this.startDate)) | |
856 | + selected = this.startDate.clone(); | |
857 | + | |
858 | + if (selected.isAfter(maxDate)) | |
859 | + selected = maxDate.clone(); | |
860 | + | |
861 | + } | |
862 | + } | |
863 | + | |
864 | + // | |
865 | + // hours | |
866 | + // | |
867 | + | |
868 | + html = '<select class="hourselect">'; | |
869 | + | |
870 | + var start = this.timePicker24Hour ? 0 : 1; | |
871 | + var end = this.timePicker24Hour ? 23 : 12; | |
872 | + | |
873 | + for (var i = start; i <= end; i++) { | |
874 | + var i_in_24 = i; | |
875 | + if (!this.timePicker24Hour) | |
876 | + i_in_24 = selected.hour() >= 12 ? (i == 12 ? 12 : i + 12) : (i == 12 ? 0 : i); | |
877 | + | |
878 | + var time = selected.clone().hour(i_in_24); | |
879 | + var disabled = false; | |
880 | + if (minDate && time.minute(59).isBefore(minDate)) | |
881 | + disabled = true; | |
882 | + if (maxDate && time.minute(0).isAfter(maxDate)) | |
883 | + disabled = true; | |
884 | + | |
885 | + if (i_in_24 == selected.hour() && !disabled) { | |
886 | + html += '<option value="' + i + '" selected="selected">' + i + '</option>'; | |
887 | + } else if (disabled) { | |
888 | + html += '<option value="' + i + '" disabled="disabled" class="disabled">' + i + '</option>'; | |
889 | + } else { | |
890 | + html += '<option value="' + i + '">' + i + '</option>'; | |
891 | + } | |
892 | + } | |
893 | + | |
894 | + html += '</select> '; | |
895 | + | |
896 | + // | |
897 | + // minutes | |
898 | + // | |
899 | + | |
900 | + html += ': <select class="minuteselect">'; | |
901 | + | |
902 | + for (var i = 0; i < 60; i += this.timePickerIncrement) { | |
903 | + var padded = i < 10 ? '0' + i : i; | |
904 | + var time = selected.clone().minute(i); | |
905 | + | |
906 | + var disabled = false; | |
907 | + if (minDate && time.second(59).isBefore(minDate)) | |
908 | + disabled = true; | |
909 | + if (maxDate && time.second(0).isAfter(maxDate)) | |
910 | + disabled = true; | |
911 | + | |
912 | + if (selected.minute() == i && !disabled) { | |
913 | + html += '<option value="' + i + '" selected="selected">' + padded + '</option>'; | |
914 | + } else if (disabled) { | |
915 | + html += '<option value="' + i + '" disabled="disabled" class="disabled">' + padded + '</option>'; | |
916 | + } else { | |
917 | + html += '<option value="' + i + '">' + padded + '</option>'; | |
918 | + } | |
919 | + } | |
920 | + | |
921 | + html += '</select> '; | |
922 | + | |
923 | + // | |
924 | + // seconds | |
925 | + // | |
926 | + | |
927 | + if (this.timePickerSeconds) { | |
928 | + html += ': <select class="secondselect">'; | |
929 | + | |
930 | + for (var i = 0; i < 60; i++) { | |
931 | + var padded = i < 10 ? '0' + i : i; | |
932 | + var time = selected.clone().second(i); | |
933 | + | |
934 | + var disabled = false; | |
935 | + if (minDate && time.isBefore(minDate)) | |
936 | + disabled = true; | |
937 | + if (maxDate && time.isAfter(maxDate)) | |
938 | + disabled = true; | |
939 | + | |
940 | + if (selected.second() == i && !disabled) { | |
941 | + html += '<option value="' + i + '" selected="selected">' + padded + '</option>'; | |
942 | + } else if (disabled) { | |
943 | + html += '<option value="' + i + '" disabled="disabled" class="disabled">' + padded + '</option>'; | |
944 | + } else { | |
945 | + html += '<option value="' + i + '">' + padded + '</option>'; | |
946 | + } | |
947 | + } | |
948 | + | |
949 | + html += '</select> '; | |
950 | + } | |
951 | + | |
952 | + // | |
953 | + // AM/PM | |
954 | + // | |
955 | + | |
956 | + if (!this.timePicker24Hour) { | |
957 | + html += '<select class="ampmselect">'; | |
958 | + | |
959 | + var am_html = ''; | |
960 | + var pm_html = ''; | |
961 | + | |
962 | + if (minDate && selected.clone().hour(12).minute(0).second(0).isBefore(minDate)) | |
963 | + am_html = ' disabled="disabled" class="disabled"'; | |
964 | + | |
965 | + if (maxDate && selected.clone().hour(0).minute(0).second(0).isAfter(maxDate)) | |
966 | + pm_html = ' disabled="disabled" class="disabled"'; | |
967 | + | |
968 | + if (selected.hour() >= 12) { | |
969 | + html += '<option value="AM"' + am_html + '>AM</option><option value="PM" selected="selected"' + pm_html + '>PM</option>'; | |
970 | + } else { | |
971 | + html += '<option value="AM" selected="selected"' + am_html + '>AM</option><option value="PM"' + pm_html + '>PM</option>'; | |
972 | + } | |
973 | + | |
974 | + html += '</select>'; | |
975 | + } | |
976 | + | |
977 | + this.container.find('.calendar.' + side + ' .calendar-time div').html(html); | |
978 | + | |
979 | + }, | |
980 | + | |
981 | + updateFormInputs: function() { | |
982 | + | |
983 | + //ignore mouse movements while an above-calendar text input has focus | |
984 | + if (this.container.find('input[name=daterangepicker_start]').is(":focus") || this.container.find('input[name=daterangepicker_end]').is(":focus")) | |
985 | + return; | |
986 | + | |
987 | + this.container.find('input[name=daterangepicker_start]').val(this.startDate.format(this.locale.format)); | |
988 | + if (this.endDate) | |
989 | + this.container.find('input[name=daterangepicker_end]').val(this.endDate.format(this.locale.format)); | |
990 | + | |
991 | + if (this.singleDatePicker || (this.endDate && (this.startDate.isBefore(this.endDate) || this.startDate.isSame(this.endDate)))) { | |
992 | + this.container.find('button.applyBtn').removeAttr('disabled'); | |
993 | + } else { | |
994 | + this.container.find('button.applyBtn').attr('disabled', 'disabled'); | |
995 | + } | |
996 | + | |
997 | + }, | |
998 | + | |
999 | + move: function() { | |
1000 | + var parentOffset = { top: 0, left: 0 }, | |
1001 | + containerTop; | |
1002 | + var parentRightEdge = $(window).width(); | |
1003 | + if (!this.parentEl.is('body')) { | |
1004 | + parentOffset = { | |
1005 | + top: this.parentEl.offset().top - this.parentEl.scrollTop(), | |
1006 | + left: this.parentEl.offset().left - this.parentEl.scrollLeft() | |
1007 | + }; | |
1008 | + parentRightEdge = this.parentEl[0].clientWidth + this.parentEl.offset().left; | |
1009 | + } | |
1010 | + | |
1011 | + if (this.drops == 'up') | |
1012 | + containerTop = this.element.offset().top - this.container.outerHeight() - parentOffset.top; | |
1013 | + else | |
1014 | + containerTop = this.element.offset().top + this.element.outerHeight() - parentOffset.top; | |
1015 | + this.container[this.drops == 'up' ? 'addClass' : 'removeClass']('dropup'); | |
1016 | + | |
1017 | + if (this.opens == 'left') { | |
1018 | + this.container.css({ | |
1019 | + top: containerTop, | |
1020 | + right: parentRightEdge - this.element.offset().left - this.element.outerWidth(), | |
1021 | + left: 'auto' | |
1022 | + }); | |
1023 | + if (this.container.offset().left < 0) { | |
1024 | + this.container.css({ | |
1025 | + right: 'auto', | |
1026 | + left: 9 | |
1027 | + }); | |
1028 | + } | |
1029 | + } else if (this.opens == 'center') { | |
1030 | + this.container.css({ | |
1031 | + top: containerTop, | |
1032 | + left: this.element.offset().left - parentOffset.left + this.element.outerWidth() / 2 | |
1033 | + - this.container.outerWidth() / 2, | |
1034 | + right: 'auto' | |
1035 | + }); | |
1036 | + if (this.container.offset().left < 0) { | |
1037 | + this.container.css({ | |
1038 | + right: 'auto', | |
1039 | + left: 9 | |
1040 | + }); | |
1041 | + } | |
1042 | + } else { | |
1043 | + this.container.css({ | |
1044 | + top: containerTop, | |
1045 | + left: this.element.offset().left - parentOffset.left, | |
1046 | + right: 'auto' | |
1047 | + }); | |
1048 | + if (this.container.offset().left + this.container.outerWidth() > $(window).width()) { | |
1049 | + this.container.css({ | |
1050 | + left: 'auto', | |
1051 | + right: 0 | |
1052 | + }); | |
1053 | + } | |
1054 | + } | |
1055 | + }, | |
1056 | + | |
1057 | + show: function(e) { | |
1058 | + if (this.isShowing) return; | |
1059 | + | |
1060 | + // Create a click proxy that is private to this instance of datepicker, for unbinding | |
1061 | + this._outsideClickProxy = $.proxy(function(e) { this.outsideClick(e); }, this); | |
1062 | + | |
1063 | + // Bind global datepicker mousedown for hiding and | |
1064 | + $(document) | |
1065 | + .on('mousedown.daterangepicker', this._outsideClickProxy) | |
1066 | + // also support mobile devices | |
1067 | + .on('touchend.daterangepicker', this._outsideClickProxy) | |
1068 | + // also explicitly play nice with Bootstrap dropdowns, which stopPropagation when clicking them | |
1069 | + .on('click.daterangepicker', '[data-toggle=dropdown]', this._outsideClickProxy) | |
1070 | + // and also close when focus changes to outside the picker (eg. tabbing between controls) | |
1071 | + .on('focusin.daterangepicker', this._outsideClickProxy); | |
1072 | + | |
1073 | + // Reposition the picker if the window is resized while it's open | |
1074 | + $(window).on('resize.daterangepicker', $.proxy(function(e) { this.move(e); }, this)); | |
1075 | + | |
1076 | + this.oldStartDate = this.startDate.clone(); | |
1077 | + this.oldEndDate = this.endDate.clone(); | |
1078 | + this.previousRightTime = this.endDate.clone(); | |
1079 | + | |
1080 | + this.updateView(); | |
1081 | + this.container.show(); | |
1082 | + this.move(); | |
1083 | + this.element.trigger('show.daterangepicker', this); | |
1084 | + this.isShowing = true; | |
1085 | + }, | |
1086 | + | |
1087 | + hide: function(e) { | |
1088 | + if (!this.isShowing) return; | |
1089 | + | |
1090 | + //incomplete date selection, revert to last values | |
1091 | + if (!this.endDate) { | |
1092 | + this.startDate = this.oldStartDate.clone(); | |
1093 | + this.endDate = this.oldEndDate.clone(); | |
1094 | + } | |
1095 | + | |
1096 | + //if a new date range was selected, invoke the user callback function | |
1097 | + if (!this.startDate.isSame(this.oldStartDate) || !this.endDate.isSame(this.oldEndDate)) | |
1098 | + this.callback(this.startDate, this.endDate, this.chosenLabel); | |
1099 | + | |
1100 | + //if picker is attached to a text input, update it | |
1101 | + this.updateElement(); | |
1102 | + | |
1103 | + $(document).off('.daterangepicker'); | |
1104 | + $(window).off('.daterangepicker'); | |
1105 | + this.container.hide(); | |
1106 | + this.element.trigger('hide.daterangepicker', this); | |
1107 | + this.isShowing = false; | |
1108 | + }, | |
1109 | + | |
1110 | + toggle: function(e) { | |
1111 | + if (this.isShowing) { | |
1112 | + this.hide(); | |
1113 | + } else { | |
1114 | + this.show(); | |
1115 | + } | |
1116 | + }, | |
1117 | + | |
1118 | + outsideClick: function(e) { | |
1119 | + var target = $(e.target); | |
1120 | + // if the page is clicked anywhere except within the daterangerpicker/button | |
1121 | + // itself then call this.hide() | |
1122 | + if ( | |
1123 | + // ie modal dialog fix | |
1124 | + e.type == "focusin" || | |
1125 | + target.closest(this.element).length || | |
1126 | + target.closest(this.container).length || | |
1127 | + target.closest('.calendar-table').length | |
1128 | + ) return; | |
1129 | + this.hide(); | |
1130 | + }, | |
1131 | + | |
1132 | + showCalendars: function() { | |
1133 | + this.container.addClass('show-calendar'); | |
1134 | + this.move(); | |
1135 | + this.element.trigger('showCalendar.daterangepicker', this); | |
1136 | + }, | |
1137 | + | |
1138 | + hideCalendars: function() { | |
1139 | + this.container.removeClass('show-calendar'); | |
1140 | + this.element.trigger('hideCalendar.daterangepicker', this); | |
1141 | + }, | |
1142 | + | |
1143 | + hoverRange: function(e) { | |
1144 | + | |
1145 | + //ignore mouse movements while an above-calendar text input has focus | |
1146 | + if (this.container.find('input[name=daterangepicker_start]').is(":focus") || this.container.find('input[name=daterangepicker_end]').is(":focus")) | |
1147 | + return; | |
1148 | + | |
1149 | + var label = e.target.innerHTML; | |
1150 | + if (label == this.locale.customRangeLabel) { | |
1151 | + this.updateView(); | |
1152 | + } else { | |
1153 | + var dates = this.ranges[label]; | |
1154 | + this.container.find('input[name=daterangepicker_start]').val(dates[0].format(this.locale.format)); | |
1155 | + this.container.find('input[name=daterangepicker_end]').val(dates[1].format(this.locale.format)); | |
1156 | + } | |
1157 | + | |
1158 | + }, | |
1159 | + | |
1160 | + clickRange: function(e) { | |
1161 | + var label = e.target.innerHTML; | |
1162 | + this.chosenLabel = label; | |
1163 | + if (label == this.locale.customRangeLabel) { | |
1164 | + this.showCalendars(); | |
1165 | + } else { | |
1166 | + var dates = this.ranges[label]; | |
1167 | + this.startDate = dates[0]; | |
1168 | + this.endDate = dates[1]; | |
1169 | + | |
1170 | + if (!this.timePicker) { | |
1171 | + this.startDate.startOf('day'); | |
1172 | + this.endDate.endOf('day'); | |
1173 | + } | |
1174 | + | |
1175 | + if (!this.alwaysShowCalendars) | |
1176 | + this.hideCalendars(); | |
1177 | + this.clickApply(); | |
1178 | + } | |
1179 | + }, | |
1180 | + | |
1181 | + clickPrev: function(e) { | |
1182 | + var cal = $(e.target).parents('.calendar'); | |
1183 | + if (cal.hasClass('left')) { | |
1184 | + this.leftCalendar.month.subtract(1, 'month'); | |
1185 | + if (this.linkedCalendars) | |
1186 | + this.rightCalendar.month.subtract(1, 'month'); | |
1187 | + } else { | |
1188 | + this.rightCalendar.month.subtract(1, 'month'); | |
1189 | + } | |
1190 | + this.updateCalendars(); | |
1191 | + }, | |
1192 | + | |
1193 | + clickNext: function(e) { | |
1194 | + var cal = $(e.target).parents('.calendar'); | |
1195 | + if (cal.hasClass('left')) { | |
1196 | + this.leftCalendar.month.add(1, 'month'); | |
1197 | + } else { | |
1198 | + this.rightCalendar.month.add(1, 'month'); | |
1199 | + if (this.linkedCalendars) | |
1200 | + this.leftCalendar.month.add(1, 'month'); | |
1201 | + } | |
1202 | + this.updateCalendars(); | |
1203 | + }, | |
1204 | + | |
1205 | + hoverDate: function(e) { | |
1206 | + | |
1207 | + //ignore mouse movements while an above-calendar text input has focus | |
1208 | + if (this.container.find('input[name=daterangepicker_start]').is(":focus") || this.container.find('input[name=daterangepicker_end]').is(":focus")) | |
1209 | + return; | |
1210 | + | |
1211 | + //ignore dates that can't be selected | |
1212 | + if (!$(e.target).hasClass('available')) return; | |
1213 | + | |
1214 | + //have the text inputs above calendars reflect the date being hovered over | |
1215 | + var title = $(e.target).attr('data-title'); | |
1216 | + var row = title.substr(1, 1); | |
1217 | + var col = title.substr(3, 1); | |
1218 | + var cal = $(e.target).parents('.calendar'); | |
1219 | + var date = cal.hasClass('left') ? this.leftCalendar.calendar[row][col] : this.rightCalendar.calendar[row][col]; | |
1220 | + | |
1221 | + if (this.endDate) { | |
1222 | + this.container.find('input[name=daterangepicker_start]').val(date.format(this.locale.format)); | |
1223 | + } else { | |
1224 | + this.container.find('input[name=daterangepicker_end]').val(date.format(this.locale.format)); | |
1225 | + } | |
1226 | + | |
1227 | + //highlight the dates between the start date and the date being hovered as a potential end date | |
1228 | + var leftCalendar = this.leftCalendar; | |
1229 | + var rightCalendar = this.rightCalendar; | |
1230 | + var startDate = this.startDate; | |
1231 | + if (!this.endDate) { | |
1232 | + this.container.find('.calendar td').each(function(index, el) { | |
1233 | + | |
1234 | + //skip week numbers, only look at dates | |
1235 | + if ($(el).hasClass('week')) return; | |
1236 | + | |
1237 | + var title = $(el).attr('data-title'); | |
1238 | + var row = title.substr(1, 1); | |
1239 | + var col = title.substr(3, 1); | |
1240 | + var cal = $(el).parents('.calendar'); | |
1241 | + var dt = cal.hasClass('left') ? leftCalendar.calendar[row][col] : rightCalendar.calendar[row][col]; | |
1242 | + | |
1243 | + if (dt.isAfter(startDate) && dt.isBefore(date)) { | |
1244 | + $(el).addClass('in-range'); | |
1245 | + } else { | |
1246 | + $(el).removeClass('in-range'); | |
1247 | + } | |
1248 | + | |
1249 | + }); | |
1250 | + } | |
1251 | + | |
1252 | + }, | |
1253 | + | |
1254 | + clickDate: function(e) { | |
1255 | + | |
1256 | + if (!$(e.target).hasClass('available')) return; | |
1257 | + | |
1258 | + var title = $(e.target).attr('data-title'); | |
1259 | + var row = title.substr(1, 1); | |
1260 | + var col = title.substr(3, 1); | |
1261 | + var cal = $(e.target).parents('.calendar'); | |
1262 | + var date = cal.hasClass('left') ? this.leftCalendar.calendar[row][col] : this.rightCalendar.calendar[row][col]; | |
1263 | + | |
1264 | + // | |
1265 | + // this function needs to do a few things: | |
1266 | + // * alternate between selecting a start and end date for the range, | |
1267 | + // * if the time picker is enabled, apply the hour/minute/second from the select boxes to the clicked date | |
1268 | + // * if autoapply is enabled, and an end date was chosen, apply the selection | |
1269 | + // * if single date picker mode, and time picker isn't enabled, apply the selection immediately | |
1270 | + // | |
1271 | + | |
1272 | + if (this.endDate || date.isBefore(this.startDate, 'day')) { | |
1273 | + if (this.timePicker) { | |
1274 | + var hour = parseInt(this.container.find('.left .hourselect').val(), 10); | |
1275 | + if (!this.timePicker24Hour) { | |
1276 | + var ampm = this.container.find('.left .ampmselect').val(); | |
1277 | + if (ampm === 'PM' && hour < 12) | |
1278 | + hour += 12; | |
1279 | + if (ampm === 'AM' && hour === 12) | |
1280 | + hour = 0; | |
1281 | + } | |
1282 | + var minute = parseInt(this.container.find('.left .minuteselect').val(), 10); | |
1283 | + var second = this.timePickerSeconds ? parseInt(this.container.find('.left .secondselect').val(), 10) : 0; | |
1284 | + date = date.clone().hour(hour).minute(minute).second(second); | |
1285 | + } | |
1286 | + this.endDate = null; | |
1287 | + this.setStartDate(date.clone()); | |
1288 | + } else if (!this.endDate && date.isBefore(this.startDate)) { | |
1289 | + //special case: clicking the same date for start/end, | |
1290 | + //but the time of the end date is before the start date | |
1291 | + this.setEndDate(this.startDate.clone()); | |
1292 | + } else { | |
1293 | + if (this.timePicker) { | |
1294 | + var hour = parseInt(this.container.find('.right .hourselect').val(), 10); | |
1295 | + if (!this.timePicker24Hour) { | |
1296 | + var ampm = this.container.find('.right .ampmselect').val(); | |
1297 | + if (ampm === 'PM' && hour < 12) | |
1298 | + hour += 12; | |
1299 | + if (ampm === 'AM' && hour === 12) | |
1300 | + hour = 0; | |
1301 | + } | |
1302 | + var minute = parseInt(this.container.find('.right .minuteselect').val(), 10); | |
1303 | + var second = this.timePickerSeconds ? parseInt(this.container.find('.right .secondselect').val(), 10) : 0; | |
1304 | + date = date.clone().hour(hour).minute(minute).second(second); | |
1305 | + } | |
1306 | + this.setEndDate(date.clone()); | |
1307 | + if (this.autoApply) { | |
1308 | + this.calculateChosenLabel(); | |
1309 | + this.clickApply(); | |
1310 | + } | |
1311 | + } | |
1312 | + | |
1313 | + if (this.singleDatePicker) { | |
1314 | + this.setEndDate(this.startDate); | |
1315 | + if (!this.timePicker) | |
1316 | + this.clickApply(); | |
1317 | + } | |
1318 | + | |
1319 | + this.updateView(); | |
1320 | + | |
1321 | + }, | |
1322 | + | |
1323 | + calculateChosenLabel: function() { | |
1324 | + var customRange = true; | |
1325 | + var i = 0; | |
1326 | + for (var range in this.ranges) { | |
1327 | + if (this.timePicker) { | |
1328 | + if (this.startDate.isSame(this.ranges[range][0]) && this.endDate.isSame(this.ranges[range][1])) { | |
1329 | + customRange = false; | |
1330 | + this.chosenLabel = this.container.find('.ranges li:eq(' + i + ')').addClass('active').html(); | |
1331 | + break; | |
1332 | + } | |
1333 | + } else { | |
1334 | + //ignore times when comparing dates if time picker is not enabled | |
1335 | + if (this.startDate.format('YYYY-MM-DD') == this.ranges[range][0].format('YYYY-MM-DD') && this.endDate.format('YYYY-MM-DD') == this.ranges[range][1].format('YYYY-MM-DD')) { | |
1336 | + customRange = false; | |
1337 | + this.chosenLabel = this.container.find('.ranges li:eq(' + i + ')').addClass('active').html(); | |
1338 | + break; | |
1339 | + } | |
1340 | + } | |
1341 | + i++; | |
1342 | + } | |
1343 | + if (customRange) { | |
1344 | + this.chosenLabel = this.container.find('.ranges li:last').addClass('active').html(); | |
1345 | + this.showCalendars(); | |
1346 | + } | |
1347 | + }, | |
1348 | + | |
1349 | + clickApply: function(e) { | |
1350 | + this.hide(); | |
1351 | + this.element.trigger('apply.daterangepicker', this); | |
1352 | + }, | |
1353 | + | |
1354 | + clickCancel: function(e) { | |
1355 | + this.startDate = this.oldStartDate; | |
1356 | + this.endDate = this.oldEndDate; | |
1357 | + this.hide(); | |
1358 | + this.element.trigger('cancel.daterangepicker', this); | |
1359 | + }, | |
1360 | + | |
1361 | + monthOrYearChanged: function(e) { | |
1362 | + var isLeft = $(e.target).closest('.calendar').hasClass('left'), | |
1363 | + leftOrRight = isLeft ? 'left' : 'right', | |
1364 | + cal = this.container.find('.calendar.'+leftOrRight); | |
1365 | + | |
1366 | + // Month must be Number for new moment versions | |
1367 | + var month = parseInt(cal.find('.monthselect').val(), 10); | |
1368 | + var year = cal.find('.yearselect').val(); | |
1369 | + | |
1370 | + if (!isLeft) { | |
1371 | + if (year < this.startDate.year() || (year == this.startDate.year() && month < this.startDate.month())) { | |
1372 | + month = this.startDate.month(); | |
1373 | + year = this.startDate.year(); | |
1374 | + } | |
1375 | + } | |
1376 | + | |
1377 | + if (this.minDate) { | |
1378 | + if (year < this.minDate.year() || (year == this.minDate.year() && month < this.minDate.month())) { | |
1379 | + month = this.minDate.month(); | |
1380 | + year = this.minDate.year(); | |
1381 | + } | |
1382 | + } | |
1383 | + | |
1384 | + if (this.maxDate) { | |
1385 | + if (year > this.maxDate.year() || (year == this.maxDate.year() && month > this.maxDate.month())) { | |
1386 | + month = this.maxDate.month(); | |
1387 | + year = this.maxDate.year(); | |
1388 | + } | |
1389 | + } | |
1390 | + | |
1391 | + if (isLeft) { | |
1392 | + this.leftCalendar.month.month(month).year(year); | |
1393 | + if (this.linkedCalendars) | |
1394 | + this.rightCalendar.month = this.leftCalendar.month.clone().add(1, 'month'); | |
1395 | + } else { | |
1396 | + this.rightCalendar.month.month(month).year(year); | |
1397 | + if (this.linkedCalendars) | |
1398 | + this.leftCalendar.month = this.rightCalendar.month.clone().subtract(1, 'month'); | |
1399 | + } | |
1400 | + this.updateCalendars(); | |
1401 | + }, | |
1402 | + | |
1403 | + timeChanged: function(e) { | |
1404 | + | |
1405 | + var cal = $(e.target).closest('.calendar'), | |
1406 | + isLeft = cal.hasClass('left'); | |
1407 | + | |
1408 | + var hour = parseInt(cal.find('.hourselect').val(), 10); | |
1409 | + var minute = parseInt(cal.find('.minuteselect').val(), 10); | |
1410 | + var second = this.timePickerSeconds ? parseInt(cal.find('.secondselect').val(), 10) : 0; | |
1411 | + | |
1412 | + if (!this.timePicker24Hour) { | |
1413 | + var ampm = cal.find('.ampmselect').val(); | |
1414 | + if (ampm === 'PM' && hour < 12) | |
1415 | + hour += 12; | |
1416 | + if (ampm === 'AM' && hour === 12) | |
1417 | + hour = 0; | |
1418 | + } | |
1419 | + | |
1420 | + if (isLeft) { | |
1421 | + var start = this.startDate.clone(); | |
1422 | + start.hour(hour); | |
1423 | + start.minute(minute); | |
1424 | + start.second(second); | |
1425 | + this.setStartDate(start); | |
1426 | + if (this.singleDatePicker) { | |
1427 | + this.endDate = this.startDate.clone(); | |
1428 | + } else if (this.endDate && this.endDate.format('YYYY-MM-DD') == start.format('YYYY-MM-DD') && this.endDate.isBefore(start)) { | |
1429 | + this.setEndDate(start.clone()); | |
1430 | + } | |
1431 | + } else if (this.endDate) { | |
1432 | + var end = this.endDate.clone(); | |
1433 | + end.hour(hour); | |
1434 | + end.minute(minute); | |
1435 | + end.second(second); | |
1436 | + this.setEndDate(end); | |
1437 | + } | |
1438 | + | |
1439 | + //update the calendars so all clickable dates reflect the new time component | |
1440 | + this.updateCalendars(); | |
1441 | + | |
1442 | + //update the form inputs above the calendars with the new time | |
1443 | + this.updateFormInputs(); | |
1444 | + | |
1445 | + //re-render the time pickers because changing one selection can affect what's enabled in another | |
1446 | + this.renderTimePicker('left'); | |
1447 | + this.renderTimePicker('right'); | |
1448 | + | |
1449 | + }, | |
1450 | + | |
1451 | + formInputsChanged: function(e) { | |
1452 | + var isRight = $(e.target).closest('.calendar').hasClass('right'); | |
1453 | + var start = moment(this.container.find('input[name="daterangepicker_start"]').val(), this.locale.format); | |
1454 | + var end = moment(this.container.find('input[name="daterangepicker_end"]').val(), this.locale.format); | |
1455 | + | |
1456 | + if (start.isValid() && end.isValid()) { | |
1457 | + | |
1458 | + if (isRight && end.isBefore(start)) | |
1459 | + start = end.clone(); | |
1460 | + | |
1461 | + this.setStartDate(start); | |
1462 | + this.setEndDate(end); | |
1463 | + | |
1464 | + if (isRight) { | |
1465 | + this.container.find('input[name="daterangepicker_start"]').val(this.startDate.format(this.locale.format)); | |
1466 | + } else { | |
1467 | + this.container.find('input[name="daterangepicker_end"]').val(this.endDate.format(this.locale.format)); | |
1468 | + } | |
1469 | + | |
1470 | + } | |
1471 | + | |
1472 | + this.updateCalendars(); | |
1473 | + if (this.timePicker) { | |
1474 | + this.renderTimePicker('left'); | |
1475 | + this.renderTimePicker('right'); | |
1476 | + } | |
1477 | + }, | |
1478 | + | |
1479 | + elementChanged: function() { | |
1480 | + if (!this.element.is('input')) return; | |
1481 | + if (!this.element.val().length) return; | |
1482 | + if (this.element.val().length < this.locale.format.length) return; | |
1483 | + | |
1484 | + var dateString = this.element.val().split(this.locale.separator), | |
1485 | + start = null, | |
1486 | + end = null; | |
1487 | + | |
1488 | + if (dateString.length === 2) { | |
1489 | + start = moment(dateString[0], this.locale.format); | |
1490 | + end = moment(dateString[1], this.locale.format); | |
1491 | + } | |
1492 | + | |
1493 | + if (this.singleDatePicker || start === null || end === null) { | |
1494 | + start = moment(this.element.val(), this.locale.format); | |
1495 | + end = start; | |
1496 | + } | |
1497 | + | |
1498 | + if (!start.isValid() || !end.isValid()) return; | |
1499 | + | |
1500 | + this.setStartDate(start); | |
1501 | + this.setEndDate(end); | |
1502 | + this.updateView(); | |
1503 | + }, | |
1504 | + | |
1505 | + keydown: function(e) { | |
1506 | + //hide on tab or enter | |
1507 | + if ((e.keyCode === 9) || (e.keyCode === 13)) { | |
1508 | + this.hide(); | |
1509 | + } | |
1510 | + }, | |
1511 | + | |
1512 | + updateElement: function() { | |
1513 | + if (this.element.is('input') && !this.singleDatePicker && this.autoUpdateInput) { | |
1514 | + this.element.val(this.startDate.format(this.locale.format) + this.locale.separator + this.endDate.format(this.locale.format)); | |
1515 | + this.element.trigger('change'); | |
1516 | + } else if (this.element.is('input') && this.autoUpdateInput) { | |
1517 | + this.element.val(this.startDate.format(this.locale.format)); | |
1518 | + this.element.trigger('change'); | |
1519 | + } | |
1520 | + }, | |
1521 | + | |
1522 | + remove: function() { | |
1523 | + this.container.remove(); | |
1524 | + this.element.off('.daterangepicker'); | |
1525 | + this.element.removeData(); | |
1526 | + } | |
1527 | + | |
1528 | + }; | |
1529 | + | |
1530 | + $.fn.daterangepicker = function(options, callback) { | |
1531 | + this.each(function() { | |
1532 | + var el = $(this); | |
1533 | + if (el.data('daterangepicker')) | |
1534 | + el.data('daterangepicker').remove(); | |
1535 | + el.data('daterangepicker', new DateRangePicker(el, options, callback)); | |
1536 | + }); | |
1537 | + return this; | |
1538 | + }; | |
1539 | + | |
1540 | + return DateRangePicker; | |
1541 | + | |
1542 | +})); | ... | ... |
resource/lib/bootstrap-daterangepicker/moment.js
0 → 100755
1 | +//! moment.js | |
2 | +//! version : 2.10.6 | |
3 | +//! authors : Tim Wood, Iskren Chernev, Moment.js contributors | |
4 | +//! license : MIT | |
5 | +//! momentjs.com | |
6 | + | |
7 | +(function (global, factory) { | |
8 | + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : | |
9 | + typeof define === 'function' && define.amd ? define(factory) : | |
10 | + global.moment = factory() | |
11 | +}(this, function () { 'use strict'; | |
12 | + | |
13 | + var hookCallback; | |
14 | + | |
15 | + function utils_hooks__hooks () { | |
16 | + return hookCallback.apply(null, arguments); | |
17 | + } | |
18 | + | |
19 | + // This is done to register the method called with moment() | |
20 | + // without creating circular dependencies. | |
21 | + function setHookCallback (callback) { | |
22 | + hookCallback = callback; | |
23 | + } | |
24 | + | |
25 | + function isArray(input) { | |
26 | + return Object.prototype.toString.call(input) === '[object Array]'; | |
27 | + } | |
28 | + | |
29 | + function isDate(input) { | |
30 | + return input instanceof Date || Object.prototype.toString.call(input) === '[object Date]'; | |
31 | + } | |
32 | + | |
33 | + function map(arr, fn) { | |
34 | + var res = [], i; | |
35 | + for (i = 0; i < arr.length; ++i) { | |
36 | + res.push(fn(arr[i], i)); | |
37 | + } | |
38 | + return res; | |
39 | + } | |
40 | + | |
41 | + function hasOwnProp(a, b) { | |
42 | + return Object.prototype.hasOwnProperty.call(a, b); | |
43 | + } | |
44 | + | |
45 | + function extend(a, b) { | |
46 | + for (var i in b) { | |
47 | + if (hasOwnProp(b, i)) { | |
48 | + a[i] = b[i]; | |
49 | + } | |
50 | + } | |
51 | + | |
52 | + if (hasOwnProp(b, 'toString')) { | |
53 | + a.toString = b.toString; | |
54 | + } | |
55 | + | |
56 | + if (hasOwnProp(b, 'valueOf')) { | |
57 | + a.valueOf = b.valueOf; | |
58 | + } | |
59 | + | |
60 | + return a; | |
61 | + } | |
62 | + | |
63 | + function create_utc__createUTC (input, format, locale, strict) { | |
64 | + return createLocalOrUTC(input, format, locale, strict, true).utc(); | |
65 | + } | |
66 | + | |
67 | + function defaultParsingFlags() { | |
68 | + // We need to deep clone this object. | |
69 | + return { | |
70 | + empty : false, | |
71 | + unusedTokens : [], | |
72 | + unusedInput : [], | |
73 | + overflow : -2, | |
74 | + charsLeftOver : 0, | |
75 | + nullInput : false, | |
76 | + invalidMonth : null, | |
77 | + invalidFormat : false, | |
78 | + userInvalidated : false, | |
79 | + iso : false | |
80 | + }; | |
81 | + } | |
82 | + | |
83 | + function getParsingFlags(m) { | |
84 | + if (m._pf == null) { | |
85 | + m._pf = defaultParsingFlags(); | |
86 | + } | |
87 | + return m._pf; | |
88 | + } | |
89 | + | |
90 | + function valid__isValid(m) { | |
91 | + if (m._isValid == null) { | |
92 | + var flags = getParsingFlags(m); | |
93 | + m._isValid = !isNaN(m._d.getTime()) && | |
94 | + flags.overflow < 0 && | |
95 | + !flags.empty && | |
96 | + !flags.invalidMonth && | |
97 | + !flags.invalidWeekday && | |
98 | + !flags.nullInput && | |
99 | + !flags.invalidFormat && | |
100 | + !flags.userInvalidated; | |
101 | + | |
102 | + if (m._strict) { | |
103 | + m._isValid = m._isValid && | |
104 | + flags.charsLeftOver === 0 && | |
105 | + flags.unusedTokens.length === 0 && | |
106 | + flags.bigHour === undefined; | |
107 | + } | |
108 | + } | |
109 | + return m._isValid; | |
110 | + } | |
111 | + | |
112 | + function valid__createInvalid (flags) { | |
113 | + var m = create_utc__createUTC(NaN); | |
114 | + if (flags != null) { | |
115 | + extend(getParsingFlags(m), flags); | |
116 | + } | |
117 | + else { | |
118 | + getParsingFlags(m).userInvalidated = true; | |
119 | + } | |
120 | + | |
121 | + return m; | |
122 | + } | |
123 | + | |
124 | + var momentProperties = utils_hooks__hooks.momentProperties = []; | |
125 | + | |
126 | + function copyConfig(to, from) { | |
127 | + var i, prop, val; | |
128 | + | |
129 | + if (typeof from._isAMomentObject !== 'undefined') { | |
130 | + to._isAMomentObject = from._isAMomentObject; | |
131 | + } | |
132 | + if (typeof from._i !== 'undefined') { | |
133 | + to._i = from._i; | |
134 | + } | |
135 | + if (typeof from._f !== 'undefined') { | |
136 | + to._f = from._f; | |
137 | + } | |
138 | + if (typeof from._l !== 'undefined') { | |
139 | + to._l = from._l; | |
140 | + } | |
141 | + if (typeof from._strict !== 'undefined') { | |
142 | + to._strict = from._strict; | |
143 | + } | |
144 | + if (typeof from._tzm !== 'undefined') { | |
145 | + to._tzm = from._tzm; | |
146 | + } | |
147 | + if (typeof from._isUTC !== 'undefined') { | |
148 | + to._isUTC = from._isUTC; | |
149 | + } | |
150 | + if (typeof from._offset !== 'undefined') { | |
151 | + to._offset = from._offset; | |
152 | + } | |
153 | + if (typeof from._pf !== 'undefined') { | |
154 | + to._pf = getParsingFlags(from); | |
155 | + } | |
156 | + if (typeof from._locale !== 'undefined') { | |
157 | + to._locale = from._locale; | |
158 | + } | |
159 | + | |
160 | + if (momentProperties.length > 0) { | |
161 | + for (i in momentProperties) { | |
162 | + prop = momentProperties[i]; | |
163 | + val = from[prop]; | |
164 | + if (typeof val !== 'undefined') { | |
165 | + to[prop] = val; | |
166 | + } | |
167 | + } | |
168 | + } | |
169 | + | |
170 | + return to; | |
171 | + } | |
172 | + | |
173 | + var updateInProgress = false; | |
174 | + | |
175 | + // Moment prototype object | |
176 | + function Moment(config) { | |
177 | + copyConfig(this, config); | |
178 | + this._d = new Date(config._d != null ? config._d.getTime() : NaN); | |
179 | + // Prevent infinite loop in case updateOffset creates new moment | |
180 | + // objects. | |
181 | + if (updateInProgress === false) { | |
182 | + updateInProgress = true; | |
183 | + utils_hooks__hooks.updateOffset(this); | |
184 | + updateInProgress = false; | |
185 | + } | |
186 | + } | |
187 | + | |
188 | + function isMoment (obj) { | |
189 | + return obj instanceof Moment || (obj != null && obj._isAMomentObject != null); | |
190 | + } | |
191 | + | |
192 | + function absFloor (number) { | |
193 | + if (number < 0) { | |
194 | + return Math.ceil(number); | |
195 | + } else { | |
196 | + return Math.floor(number); | |
197 | + } | |
198 | + } | |
199 | + | |
200 | + function toInt(argumentForCoercion) { | |
201 | + var coercedNumber = +argumentForCoercion, | |
202 | + value = 0; | |
203 | + | |
204 | + if (coercedNumber !== 0 && isFinite(coercedNumber)) { | |
205 | + value = absFloor(coercedNumber); | |
206 | + } | |
207 | + | |
208 | + return value; | |
209 | + } | |
210 | + | |
211 | + function compareArrays(array1, array2, dontConvert) { | |
212 | + var len = Math.min(array1.length, array2.length), | |
213 | + lengthDiff = Math.abs(array1.length - array2.length), | |
214 | + diffs = 0, | |
215 | + i; | |
216 | + for (i = 0; i < len; i++) { | |
217 | + if ((dontConvert && array1[i] !== array2[i]) || | |
218 | + (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))) { | |
219 | + diffs++; | |
220 | + } | |
221 | + } | |
222 | + return diffs + lengthDiff; | |
223 | + } | |
224 | + | |
225 | + function Locale() { | |
226 | + } | |
227 | + | |
228 | + var locales = {}; | |
229 | + var globalLocale; | |
230 | + | |
231 | + function normalizeLocale(key) { | |
232 | + return key ? key.toLowerCase().replace('_', '-') : key; | |
233 | + } | |
234 | + | |
235 | + // pick the locale from the array | |
236 | + // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each | |
237 | + // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root | |
238 | + function chooseLocale(names) { | |
239 | + var i = 0, j, next, locale, split; | |
240 | + | |
241 | + while (i < names.length) { | |
242 | + split = normalizeLocale(names[i]).split('-'); | |
243 | + j = split.length; | |
244 | + next = normalizeLocale(names[i + 1]); | |
245 | + next = next ? next.split('-') : null; | |
246 | + while (j > 0) { | |
247 | + locale = loadLocale(split.slice(0, j).join('-')); | |
248 | + if (locale) { | |
249 | + return locale; | |
250 | + } | |
251 | + if (next && next.length >= j && compareArrays(split, next, true) >= j - 1) { | |
252 | + //the next array item is better than a shallower substring of this one | |
253 | + break; | |
254 | + } | |
255 | + j--; | |
256 | + } | |
257 | + i++; | |
258 | + } | |
259 | + return null; | |
260 | + } | |
261 | + | |
262 | + function loadLocale(name) { | |
263 | + var oldLocale = null; | |
264 | + // TODO: Find a better way to register and load all the locales in Node | |
265 | + if (!locales[name] && typeof module !== 'undefined' && | |
266 | + module && module.exports) { | |
267 | + try { | |
268 | + oldLocale = globalLocale._abbr; | |
269 | + require('./locale/' + name); | |
270 | + // because defineLocale currently also sets the global locale, we | |
271 | + // want to undo that for lazy loaded locales | |
272 | + locale_locales__getSetGlobalLocale(oldLocale); | |
273 | + } catch (e) { } | |
274 | + } | |
275 | + return locales[name]; | |
276 | + } | |
277 | + | |
278 | + // This function will load locale and then set the global locale. If | |
279 | + // no arguments are passed in, it will simply return the current global | |
280 | + // locale key. | |
281 | + function locale_locales__getSetGlobalLocale (key, values) { | |
282 | + var data; | |
283 | + if (key) { | |
284 | + if (typeof values === 'undefined') { | |
285 | + data = locale_locales__getLocale(key); | |
286 | + } | |
287 | + else { | |
288 | + data = defineLocale(key, values); | |
289 | + } | |
290 | + | |
291 | + if (data) { | |
292 | + // moment.duration._locale = moment._locale = data; | |
293 | + globalLocale = data; | |
294 | + } | |
295 | + } | |
296 | + | |
297 | + return globalLocale._abbr; | |
298 | + } | |
299 | + | |
300 | + function defineLocale (name, values) { | |
301 | + if (values !== null) { | |
302 | + values.abbr = name; | |
303 | + locales[name] = locales[name] || new Locale(); | |
304 | + locales[name].set(values); | |
305 | + | |
306 | + // backwards compat for now: also set the locale | |
307 | + locale_locales__getSetGlobalLocale(name); | |
308 | + | |
309 | + return locales[name]; | |
310 | + } else { | |
311 | + // useful for testing | |
312 | + delete locales[name]; | |
313 | + return null; | |
314 | + } | |
315 | + } | |
316 | + | |
317 | + // returns locale data | |
318 | + function locale_locales__getLocale (key) { | |
319 | + var locale; | |
320 | + | |
321 | + if (key && key._locale && key._locale._abbr) { | |
322 | + key = key._locale._abbr; | |
323 | + } | |
324 | + | |
325 | + if (!key) { | |
326 | + return globalLocale; | |
327 | + } | |
328 | + | |
329 | + if (!isArray(key)) { | |
330 | + //short-circuit everything else | |
331 | + locale = loadLocale(key); | |
332 | + if (locale) { | |
333 | + return locale; | |
334 | + } | |
335 | + key = [key]; | |
336 | + } | |
337 | + | |
338 | + return chooseLocale(key); | |
339 | + } | |
340 | + | |
341 | + var aliases = {}; | |
342 | + | |
343 | + function addUnitAlias (unit, shorthand) { | |
344 | + var lowerCase = unit.toLowerCase(); | |
345 | + aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit; | |
346 | + } | |
347 | + | |
348 | + function normalizeUnits(units) { | |
349 | + return typeof units === 'string' ? aliases[units] || aliases[units.toLowerCase()] : undefined; | |
350 | + } | |
351 | + | |
352 | + function normalizeObjectUnits(inputObject) { | |
353 | + var normalizedInput = {}, | |
354 | + normalizedProp, | |
355 | + prop; | |
356 | + | |
357 | + for (prop in inputObject) { | |
358 | + if (hasOwnProp(inputObject, prop)) { | |
359 | + normalizedProp = normalizeUnits(prop); | |
360 | + if (normalizedProp) { | |
361 | + normalizedInput[normalizedProp] = inputObject[prop]; | |
362 | + } | |
363 | + } | |
364 | + } | |
365 | + | |
366 | + return normalizedInput; | |
367 | + } | |
368 | + | |
369 | + function makeGetSet (unit, keepTime) { | |
370 | + return function (value) { | |
371 | + if (value != null) { | |
372 | + get_set__set(this, unit, value); | |
373 | + utils_hooks__hooks.updateOffset(this, keepTime); | |
374 | + return this; | |
375 | + } else { | |
376 | + return get_set__get(this, unit); | |
377 | + } | |
378 | + }; | |
379 | + } | |
380 | + | |
381 | + function get_set__get (mom, unit) { | |
382 | + return mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit](); | |
383 | + } | |
384 | + | |
385 | + function get_set__set (mom, unit, value) { | |
386 | + return mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value); | |
387 | + } | |
388 | + | |
389 | + // MOMENTS | |
390 | + | |
391 | + function getSet (units, value) { | |
392 | + var unit; | |
393 | + if (typeof units === 'object') { | |
394 | + for (unit in units) { | |
395 | + this.set(unit, units[unit]); | |
396 | + } | |
397 | + } else { | |
398 | + units = normalizeUnits(units); | |
399 | + if (typeof this[units] === 'function') { | |
400 | + return this[units](value); | |
401 | + } | |
402 | + } | |
403 | + return this; | |
404 | + } | |
405 | + | |
406 | + function zeroFill(number, targetLength, forceSign) { | |
407 | + var absNumber = '' + Math.abs(number), | |
408 | + zerosToFill = targetLength - absNumber.length, | |
409 | + sign = number >= 0; | |
410 | + return (sign ? (forceSign ? '+' : '') : '-') + | |
411 | + Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) + absNumber; | |
412 | + } | |
413 | + | |
414 | + var formattingTokens = /(\[[^\[]*\])|(\\)?(Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Q|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g; | |
415 | + | |
416 | + var localFormattingTokens = /(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g; | |
417 | + | |
418 | + var formatFunctions = {}; | |
419 | + | |
420 | + var formatTokenFunctions = {}; | |
421 | + | |
422 | + // token: 'M' | |
423 | + // padded: ['MM', 2] | |
424 | + // ordinal: 'Mo' | |
425 | + // callback: function () { this.month() + 1 } | |
426 | + function addFormatToken (token, padded, ordinal, callback) { | |
427 | + var func = callback; | |
428 | + if (typeof callback === 'string') { | |
429 | + func = function () { | |
430 | + return this[callback](); | |
431 | + }; | |
432 | + } | |
433 | + if (token) { | |
434 | + formatTokenFunctions[token] = func; | |
435 | + } | |
436 | + if (padded) { | |
437 | + formatTokenFunctions[padded[0]] = function () { | |
438 | + return zeroFill(func.apply(this, arguments), padded[1], padded[2]); | |
439 | + }; | |
440 | + } | |
441 | + if (ordinal) { | |
442 | + formatTokenFunctions[ordinal] = function () { | |
443 | + return this.localeData().ordinal(func.apply(this, arguments), token); | |
444 | + }; | |
445 | + } | |
446 | + } | |
447 | + | |
448 | + function removeFormattingTokens(input) { | |
449 | + if (input.match(/\[[\s\S]/)) { | |
450 | + return input.replace(/^\[|\]$/g, ''); | |
451 | + } | |
452 | + return input.replace(/\\/g, ''); | |
453 | + } | |
454 | + | |
455 | + function makeFormatFunction(format) { | |
456 | + var array = format.match(formattingTokens), i, length; | |
457 | + | |
458 | + for (i = 0, length = array.length; i < length; i++) { | |
459 | + if (formatTokenFunctions[array[i]]) { | |
460 | + array[i] = formatTokenFunctions[array[i]]; | |
461 | + } else { | |
462 | + array[i] = removeFormattingTokens(array[i]); | |
463 | + } | |
464 | + } | |
465 | + | |
466 | + return function (mom) { | |
467 | + var output = ''; | |
468 | + for (i = 0; i < length; i++) { | |
469 | + output += array[i] instanceof Function ? array[i].call(mom, format) : array[i]; | |
470 | + } | |
471 | + return output; | |
472 | + }; | |
473 | + } | |
474 | + | |
475 | + // format date using native date object | |
476 | + function formatMoment(m, format) { | |
477 | + if (!m.isValid()) { | |
478 | + return m.localeData().invalidDate(); | |
479 | + } | |
480 | + | |
481 | + format = expandFormat(format, m.localeData()); | |
482 | + formatFunctions[format] = formatFunctions[format] || makeFormatFunction(format); | |
483 | + | |
484 | + return formatFunctions[format](m); | |
485 | + } | |
486 | + | |
487 | + function expandFormat(format, locale) { | |
488 | + var i = 5; | |
489 | + | |
490 | + function replaceLongDateFormatTokens(input) { | |
491 | + return locale.longDateFormat(input) || input; | |
492 | + } | |
493 | + | |
494 | + localFormattingTokens.lastIndex = 0; | |
495 | + while (i >= 0 && localFormattingTokens.test(format)) { | |
496 | + format = format.replace(localFormattingTokens, replaceLongDateFormatTokens); | |
497 | + localFormattingTokens.lastIndex = 0; | |
498 | + i -= 1; | |
499 | + } | |
500 | + | |
501 | + return format; | |
502 | + } | |
503 | + | |
504 | + var match1 = /\d/; // 0 - 9 | |
505 | + var match2 = /\d\d/; // 00 - 99 | |
506 | + var match3 = /\d{3}/; // 000 - 999 | |
507 | + var match4 = /\d{4}/; // 0000 - 9999 | |
508 | + var match6 = /[+-]?\d{6}/; // -999999 - 999999 | |
509 | + var match1to2 = /\d\d?/; // 0 - 99 | |
510 | + var match1to3 = /\d{1,3}/; // 0 - 999 | |
511 | + var match1to4 = /\d{1,4}/; // 0 - 9999 | |
512 | + var match1to6 = /[+-]?\d{1,6}/; // -999999 - 999999 | |
513 | + | |
514 | + var matchUnsigned = /\d+/; // 0 - inf | |
515 | + var matchSigned = /[+-]?\d+/; // -inf - inf | |
516 | + | |
517 | + var matchOffset = /Z|[+-]\d\d:?\d\d/gi; // +00:00 -00:00 +0000 -0000 or Z | |
518 | + | |
519 | + var matchTimestamp = /[+-]?\d+(\.\d{1,3})?/; // 123456789 123456789.123 | |
520 | + | |
521 | + // any word (or two) characters or numbers including two/three word month in arabic. | |
522 | + var matchWord = /[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i; | |
523 | + | |
524 | + var regexes = {}; | |
525 | + | |
526 | + function isFunction (sth) { | |
527 | + // https://github.com/moment/moment/issues/2325 | |
528 | + return typeof sth === 'function' && | |
529 | + Object.prototype.toString.call(sth) === '[object Function]'; | |
530 | + } | |
531 | + | |
532 | + | |
533 | + function addRegexToken (token, regex, strictRegex) { | |
534 | + regexes[token] = isFunction(regex) ? regex : function (isStrict) { | |
535 | + return (isStrict && strictRegex) ? strictRegex : regex; | |
536 | + }; | |
537 | + } | |
538 | + | |
539 | + function getParseRegexForToken (token, config) { | |
540 | + if (!hasOwnProp(regexes, token)) { | |
541 | + return new RegExp(unescapeFormat(token)); | |
542 | + } | |
543 | + | |
544 | + return regexes[token](config._strict, config._locale); | |
545 | + } | |
546 | + | |
547 | + // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript | |
548 | + function unescapeFormat(s) { | |
549 | + return s.replace('\\', '').replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, function (matched, p1, p2, p3, p4) { | |
550 | + return p1 || p2 || p3 || p4; | |
551 | + }).replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'); | |
552 | + } | |
553 | + | |
554 | + var tokens = {}; | |
555 | + | |
556 | + function addParseToken (token, callback) { | |
557 | + var i, func = callback; | |
558 | + if (typeof token === 'string') { | |
559 | + token = [token]; | |
560 | + } | |
561 | + if (typeof callback === 'number') { | |
562 | + func = function (input, array) { | |
563 | + array[callback] = toInt(input); | |
564 | + }; | |
565 | + } | |
566 | + for (i = 0; i < token.length; i++) { | |
567 | + tokens[token[i]] = func; | |
568 | + } | |
569 | + } | |
570 | + | |
571 | + function addWeekParseToken (token, callback) { | |
572 | + addParseToken(token, function (input, array, config, token) { | |
573 | + config._w = config._w || {}; | |
574 | + callback(input, config._w, config, token); | |
575 | + }); | |
576 | + } | |
577 | + | |
578 | + function addTimeToArrayFromToken(token, input, config) { | |
579 | + if (input != null && hasOwnProp(tokens, token)) { | |
580 | + tokens[token](input, config._a, config, token); | |
581 | + } | |
582 | + } | |
583 | + | |
584 | + var YEAR = 0; | |
585 | + var MONTH = 1; | |
586 | + var DATE = 2; | |
587 | + var HOUR = 3; | |
588 | + var MINUTE = 4; | |
589 | + var SECOND = 5; | |
590 | + var MILLISECOND = 6; | |
591 | + | |
592 | + function daysInMonth(year, month) { | |
593 | + return new Date(Date.UTC(year, month + 1, 0)).getUTCDate(); | |
594 | + } | |
595 | + | |
596 | + // FORMATTING | |
597 | + | |
598 | + addFormatToken('M', ['MM', 2], 'Mo', function () { | |
599 | + return this.month() + 1; | |
600 | + }); | |
601 | + | |
602 | + addFormatToken('MMM', 0, 0, function (format) { | |
603 | + return this.localeData().monthsShort(this, format); | |
604 | + }); | |
605 | + | |
606 | + addFormatToken('MMMM', 0, 0, function (format) { | |
607 | + return this.localeData().months(this, format); | |
608 | + }); | |
609 | + | |
610 | + // ALIASES | |
611 | + | |
612 | + addUnitAlias('month', 'M'); | |
613 | + | |
614 | + // PARSING | |
615 | + | |
616 | + addRegexToken('M', match1to2); | |
617 | + addRegexToken('MM', match1to2, match2); | |
618 | + addRegexToken('MMM', matchWord); | |
619 | + addRegexToken('MMMM', matchWord); | |
620 | + | |
621 | + addParseToken(['M', 'MM'], function (input, array) { | |
622 | + array[MONTH] = toInt(input) - 1; | |
623 | + }); | |
624 | + | |
625 | + addParseToken(['MMM', 'MMMM'], function (input, array, config, token) { | |
626 | + var month = config._locale.monthsParse(input, token, config._strict); | |
627 | + // if we didn't find a month name, mark the date as invalid. | |
628 | + if (month != null) { | |
629 | + array[MONTH] = month; | |
630 | + } else { | |
631 | + getParsingFlags(config).invalidMonth = input; | |
632 | + } | |
633 | + }); | |
634 | + | |
635 | + // LOCALES | |
636 | + | |
637 | + var defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'); | |
638 | + function localeMonths (m) { | |
639 | + return this._months[m.month()]; | |
640 | + } | |
641 | + | |
642 | + var defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'); | |
643 | + function localeMonthsShort (m) { | |
644 | + return this._monthsShort[m.month()]; | |
645 | + } | |
646 | + | |
647 | + function localeMonthsParse (monthName, format, strict) { | |
648 | + var i, mom, regex; | |
649 | + | |
650 | + if (!this._monthsParse) { | |
651 | + this._monthsParse = []; | |
652 | + this._longMonthsParse = []; | |
653 | + this._shortMonthsParse = []; | |
654 | + } | |
655 | + | |
656 | + for (i = 0; i < 12; i++) { | |
657 | + // make the regex if we don't have it already | |
658 | + mom = create_utc__createUTC([2000, i]); | |
659 | + if (strict && !this._longMonthsParse[i]) { | |
660 | + this._longMonthsParse[i] = new RegExp('^' + this.months(mom, '').replace('.', '') + '$', 'i'); | |
661 | + this._shortMonthsParse[i] = new RegExp('^' + this.monthsShort(mom, '').replace('.', '') + '$', 'i'); | |
662 | + } | |
663 | + if (!strict && !this._monthsParse[i]) { | |
664 | + regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, ''); | |
665 | + this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i'); | |
666 | + } | |
667 | + // test the regex | |
668 | + if (strict && format === 'MMMM' && this._longMonthsParse[i].test(monthName)) { | |
669 | + return i; | |
670 | + } else if (strict && format === 'MMM' && this._shortMonthsParse[i].test(monthName)) { | |
671 | + return i; | |
672 | + } else if (!strict && this._monthsParse[i].test(monthName)) { | |
673 | + return i; | |
674 | + } | |
675 | + } | |
676 | + } | |
677 | + | |
678 | + // MOMENTS | |
679 | + | |
680 | + function setMonth (mom, value) { | |
681 | + var dayOfMonth; | |
682 | + | |
683 | + // TODO: Move this out of here! | |
684 | + if (typeof value === 'string') { | |
685 | + value = mom.localeData().monthsParse(value); | |
686 | + // TODO: Another silent failure? | |
687 | + if (typeof value !== 'number') { | |
688 | + return mom; | |
689 | + } | |
690 | + } | |
691 | + | |
692 | + dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value)); | |
693 | + mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth); | |
694 | + return mom; | |
695 | + } | |
696 | + | |
697 | + function getSetMonth (value) { | |
698 | + if (value != null) { | |
699 | + setMonth(this, value); | |
700 | + utils_hooks__hooks.updateOffset(this, true); | |
701 | + return this; | |
702 | + } else { | |
703 | + return get_set__get(this, 'Month'); | |
704 | + } | |
705 | + } | |
706 | + | |
707 | + function getDaysInMonth () { | |
708 | + return daysInMonth(this.year(), this.month()); | |
709 | + } | |
710 | + | |
711 | + function checkOverflow (m) { | |
712 | + var overflow; | |
713 | + var a = m._a; | |
714 | + | |
715 | + if (a && getParsingFlags(m).overflow === -2) { | |
716 | + overflow = | |
717 | + a[MONTH] < 0 || a[MONTH] > 11 ? MONTH : | |
718 | + a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH]) ? DATE : | |
719 | + a[HOUR] < 0 || a[HOUR] > 24 || (a[HOUR] === 24 && (a[MINUTE] !== 0 || a[SECOND] !== 0 || a[MILLISECOND] !== 0)) ? HOUR : | |
720 | + a[MINUTE] < 0 || a[MINUTE] > 59 ? MINUTE : | |
721 | + a[SECOND] < 0 || a[SECOND] > 59 ? SECOND : | |
722 | + a[MILLISECOND] < 0 || a[MILLISECOND] > 999 ? MILLISECOND : | |
723 | + -1; | |
724 | + | |
725 | + if (getParsingFlags(m)._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) { | |
726 | + overflow = DATE; | |
727 | + } | |
728 | + | |
729 | + getParsingFlags(m).overflow = overflow; | |
730 | + } | |
731 | + | |
732 | + return m; | |
733 | + } | |
734 | + | |
735 | + function warn(msg) { | |
736 | + if (utils_hooks__hooks.suppressDeprecationWarnings === false && typeof console !== 'undefined' && console.warn) { | |
737 | + console.warn('Deprecation warning: ' + msg); | |
738 | + } | |
739 | + } | |
740 | + | |
741 | + function deprecate(msg, fn) { | |
742 | + var firstTime = true; | |
743 | + | |
744 | + return extend(function () { | |
745 | + if (firstTime) { | |
746 | + warn(msg + '\n' + (new Error()).stack); | |
747 | + firstTime = false; | |
748 | + } | |
749 | + return fn.apply(this, arguments); | |
750 | + }, fn); | |
751 | + } | |
752 | + | |
753 | + var deprecations = {}; | |
754 | + | |
755 | + function deprecateSimple(name, msg) { | |
756 | + if (!deprecations[name]) { | |
757 | + warn(msg); | |
758 | + deprecations[name] = true; | |
759 | + } | |
760 | + } | |
761 | + | |
762 | + utils_hooks__hooks.suppressDeprecationWarnings = false; | |
763 | + | |
764 | + var from_string__isoRegex = /^\s*(?:[+-]\d{6}|\d{4})-(?:(\d\d-\d\d)|(W\d\d$)|(W\d\d-\d)|(\d\d\d))((T| )(\d\d(:\d\d(:\d\d(\.\d+)?)?)?)?([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/; | |
765 | + | |
766 | + var isoDates = [ | |
767 | + ['YYYYYY-MM-DD', /[+-]\d{6}-\d{2}-\d{2}/], | |
768 | + ['YYYY-MM-DD', /\d{4}-\d{2}-\d{2}/], | |
769 | + ['GGGG-[W]WW-E', /\d{4}-W\d{2}-\d/], | |
770 | + ['GGGG-[W]WW', /\d{4}-W\d{2}/], | |
771 | + ['YYYY-DDD', /\d{4}-\d{3}/] | |
772 | + ]; | |
773 | + | |
774 | + // iso time formats and regexes | |
775 | + var isoTimes = [ | |
776 | + ['HH:mm:ss.SSSS', /(T| )\d\d:\d\d:\d\d\.\d+/], | |
777 | + ['HH:mm:ss', /(T| )\d\d:\d\d:\d\d/], | |
778 | + ['HH:mm', /(T| )\d\d:\d\d/], | |
779 | + ['HH', /(T| )\d\d/] | |
780 | + ]; | |
781 | + | |
782 | + var aspNetJsonRegex = /^\/?Date\((\-?\d+)/i; | |
783 | + | |
784 | + // date from iso format | |
785 | + function configFromISO(config) { | |
786 | + var i, l, | |
787 | + string = config._i, | |
788 | + match = from_string__isoRegex.exec(string); | |
789 | + | |
790 | + if (match) { | |
791 | + getParsingFlags(config).iso = true; | |
792 | + for (i = 0, l = isoDates.length; i < l; i++) { | |
793 | + if (isoDates[i][1].exec(string)) { | |
794 | + config._f = isoDates[i][0]; | |
795 | + break; | |
796 | + } | |
797 | + } | |
798 | + for (i = 0, l = isoTimes.length; i < l; i++) { | |
799 | + if (isoTimes[i][1].exec(string)) { | |
800 | + // match[6] should be 'T' or space | |
801 | + config._f += (match[6] || ' ') + isoTimes[i][0]; | |
802 | + break; | |
803 | + } | |
804 | + } | |
805 | + if (string.match(matchOffset)) { | |
806 | + config._f += 'Z'; | |
807 | + } | |
808 | + configFromStringAndFormat(config); | |
809 | + } else { | |
810 | + config._isValid = false; | |
811 | + } | |
812 | + } | |
813 | + | |
814 | + // date from iso format or fallback | |
815 | + function configFromString(config) { | |
816 | + var matched = aspNetJsonRegex.exec(config._i); | |
817 | + | |
818 | + if (matched !== null) { | |
819 | + config._d = new Date(+matched[1]); | |
820 | + return; | |
821 | + } | |
822 | + | |
823 | + configFromISO(config); | |
824 | + if (config._isValid === false) { | |
825 | + delete config._isValid; | |
826 | + utils_hooks__hooks.createFromInputFallback(config); | |
827 | + } | |
828 | + } | |
829 | + | |
830 | + utils_hooks__hooks.createFromInputFallback = deprecate( | |
831 | + 'moment construction falls back to js Date. This is ' + | |
832 | + 'discouraged and will be removed in upcoming major ' + | |
833 | + 'release. Please refer to ' + | |
834 | + 'https://github.com/moment/moment/issues/1407 for more info.', | |
835 | + function (config) { | |
836 | + config._d = new Date(config._i + (config._useUTC ? ' UTC' : '')); | |
837 | + } | |
838 | + ); | |
839 | + | |
840 | + function createDate (y, m, d, h, M, s, ms) { | |
841 | + //can't just apply() to create a date: | |
842 | + //http://stackoverflow.com/questions/181348/instantiating-a-javascript-object-by-calling-prototype-constructor-apply | |
843 | + var date = new Date(y, m, d, h, M, s, ms); | |
844 | + | |
845 | + //the date constructor doesn't accept years < 1970 | |
846 | + if (y < 1970) { | |
847 | + date.setFullYear(y); | |
848 | + } | |
849 | + return date; | |
850 | + } | |
851 | + | |
852 | + function createUTCDate (y) { | |
853 | + var date = new Date(Date.UTC.apply(null, arguments)); | |
854 | + if (y < 1970) { | |
855 | + date.setUTCFullYear(y); | |
856 | + } | |
857 | + return date; | |
858 | + } | |
859 | + | |
860 | + addFormatToken(0, ['YY', 2], 0, function () { | |
861 | + return this.year() % 100; | |
862 | + }); | |
863 | + | |
864 | + addFormatToken(0, ['YYYY', 4], 0, 'year'); | |
865 | + addFormatToken(0, ['YYYYY', 5], 0, 'year'); | |
866 | + addFormatToken(0, ['YYYYYY', 6, true], 0, 'year'); | |
867 | + | |
868 | + // ALIASES | |
869 | + | |
870 | + addUnitAlias('year', 'y'); | |
871 | + | |
872 | + // PARSING | |
873 | + | |
874 | + addRegexToken('Y', matchSigned); | |
875 | + addRegexToken('YY', match1to2, match2); | |
876 | + addRegexToken('YYYY', match1to4, match4); | |
877 | + addRegexToken('YYYYY', match1to6, match6); | |
878 | + addRegexToken('YYYYYY', match1to6, match6); | |
879 | + | |
880 | + addParseToken(['YYYYY', 'YYYYYY'], YEAR); | |
881 | + addParseToken('YYYY', function (input, array) { | |
882 | + array[YEAR] = input.length === 2 ? utils_hooks__hooks.parseTwoDigitYear(input) : toInt(input); | |
883 | + }); | |
884 | + addParseToken('YY', function (input, array) { | |
885 | + array[YEAR] = utils_hooks__hooks.parseTwoDigitYear(input); | |
886 | + }); | |
887 | + | |
888 | + // HELPERS | |
889 | + | |
890 | + function daysInYear(year) { | |
891 | + return isLeapYear(year) ? 366 : 365; | |
892 | + } | |
893 | + | |
894 | + function isLeapYear(year) { | |
895 | + return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0; | |
896 | + } | |
897 | + | |
898 | + // HOOKS | |
899 | + | |
900 | + utils_hooks__hooks.parseTwoDigitYear = function (input) { | |
901 | + return toInt(input) + (toInt(input) > 68 ? 1900 : 2000); | |
902 | + }; | |
903 | + | |
904 | + // MOMENTS | |
905 | + | |
906 | + var getSetYear = makeGetSet('FullYear', false); | |
907 | + | |
908 | + function getIsLeapYear () { | |
909 | + return isLeapYear(this.year()); | |
910 | + } | |
911 | + | |
912 | + addFormatToken('w', ['ww', 2], 'wo', 'week'); | |
913 | + addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek'); | |
914 | + | |
915 | + // ALIASES | |
916 | + | |
917 | + addUnitAlias('week', 'w'); | |
918 | + addUnitAlias('isoWeek', 'W'); | |
919 | + | |
920 | + // PARSING | |
921 | + | |
922 | + addRegexToken('w', match1to2); | |
923 | + addRegexToken('ww', match1to2, match2); | |
924 | + addRegexToken('W', match1to2); | |
925 | + addRegexToken('WW', match1to2, match2); | |
926 | + | |
927 | + addWeekParseToken(['w', 'ww', 'W', 'WW'], function (input, week, config, token) { | |
928 | + week[token.substr(0, 1)] = toInt(input); | |
929 | + }); | |
930 | + | |
931 | + // HELPERS | |
932 | + | |
933 | + // firstDayOfWeek 0 = sun, 6 = sat | |
934 | + // the day of the week that starts the week | |
935 | + // (usually sunday or monday) | |
936 | + // firstDayOfWeekOfYear 0 = sun, 6 = sat | |
937 | + // the first week is the week that contains the first | |
938 | + // of this day of the week | |
939 | + // (eg. ISO weeks use thursday (4)) | |
940 | + function weekOfYear(mom, firstDayOfWeek, firstDayOfWeekOfYear) { | |
941 | + var end = firstDayOfWeekOfYear - firstDayOfWeek, | |
942 | + daysToDayOfWeek = firstDayOfWeekOfYear - mom.day(), | |
943 | + adjustedMoment; | |
944 | + | |
945 | + | |
946 | + if (daysToDayOfWeek > end) { | |
947 | + daysToDayOfWeek -= 7; | |
948 | + } | |
949 | + | |
950 | + if (daysToDayOfWeek < end - 7) { | |
951 | + daysToDayOfWeek += 7; | |
952 | + } | |
953 | + | |
954 | + adjustedMoment = local__createLocal(mom).add(daysToDayOfWeek, 'd'); | |
955 | + return { | |
956 | + week: Math.ceil(adjustedMoment.dayOfYear() / 7), | |
957 | + year: adjustedMoment.year() | |
958 | + }; | |
959 | + } | |
960 | + | |
961 | + // LOCALES | |
962 | + | |
963 | + function localeWeek (mom) { | |
964 | + return weekOfYear(mom, this._week.dow, this._week.doy).week; | |
965 | + } | |
966 | + | |
967 | + var defaultLocaleWeek = { | |
968 | + dow : 0, // Sunday is the first day of the week. | |
969 | + doy : 6 // The week that contains Jan 1st is the first week of the year. | |
970 | + }; | |
971 | + | |
972 | + function localeFirstDayOfWeek () { | |
973 | + return this._week.dow; | |
974 | + } | |
975 | + | |
976 | + function localeFirstDayOfYear () { | |
977 | + return this._week.doy; | |
978 | + } | |
979 | + | |
980 | + // MOMENTS | |
981 | + | |
982 | + function getSetWeek (input) { | |
983 | + var week = this.localeData().week(this); | |
984 | + return input == null ? week : this.add((input - week) * 7, 'd'); | |
985 | + } | |
986 | + | |
987 | + function getSetISOWeek (input) { | |
988 | + var week = weekOfYear(this, 1, 4).week; | |
989 | + return input == null ? week : this.add((input - week) * 7, 'd'); | |
990 | + } | |
991 | + | |
992 | + addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear'); | |
993 | + | |
994 | + // ALIASES | |
995 | + | |
996 | + addUnitAlias('dayOfYear', 'DDD'); | |
997 | + | |
998 | + // PARSING | |
999 | + | |
1000 | + addRegexToken('DDD', match1to3); | |
1001 | + addRegexToken('DDDD', match3); | |
1002 | + addParseToken(['DDD', 'DDDD'], function (input, array, config) { | |
1003 | + config._dayOfYear = toInt(input); | |
1004 | + }); | |
1005 | + | |
1006 | + // HELPERS | |
1007 | + | |
1008 | + //http://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday | |
1009 | + function dayOfYearFromWeeks(year, week, weekday, firstDayOfWeekOfYear, firstDayOfWeek) { | |
1010 | + var week1Jan = 6 + firstDayOfWeek - firstDayOfWeekOfYear, janX = createUTCDate(year, 0, 1 + week1Jan), d = janX.getUTCDay(), dayOfYear; | |
1011 | + if (d < firstDayOfWeek) { | |
1012 | + d += 7; | |
1013 | + } | |
1014 | + | |
1015 | + weekday = weekday != null ? 1 * weekday : firstDayOfWeek; | |
1016 | + | |
1017 | + dayOfYear = 1 + week1Jan + 7 * (week - 1) - d + weekday; | |
1018 | + | |
1019 | + return { | |
1020 | + year: dayOfYear > 0 ? year : year - 1, | |
1021 | + dayOfYear: dayOfYear > 0 ? dayOfYear : daysInYear(year - 1) + dayOfYear | |
1022 | + }; | |
1023 | + } | |
1024 | + | |
1025 | + // MOMENTS | |
1026 | + | |
1027 | + function getSetDayOfYear (input) { | |
1028 | + var dayOfYear = Math.round((this.clone().startOf('day') - this.clone().startOf('year')) / 864e5) + 1; | |
1029 | + return input == null ? dayOfYear : this.add((input - dayOfYear), 'd'); | |
1030 | + } | |
1031 | + | |
1032 | + // Pick the first defined of two or three arguments. | |
1033 | + function defaults(a, b, c) { | |
1034 | + if (a != null) { | |
1035 | + return a; | |
1036 | + } | |
1037 | + if (b != null) { | |
1038 | + return b; | |
1039 | + } | |
1040 | + return c; | |
1041 | + } | |
1042 | + | |
1043 | + function currentDateArray(config) { | |
1044 | + var now = new Date(); | |
1045 | + if (config._useUTC) { | |
1046 | + return [now.getUTCFullYear(), now.getUTCMonth(), now.getUTCDate()]; | |
1047 | + } | |
1048 | + return [now.getFullYear(), now.getMonth(), now.getDate()]; | |
1049 | + } | |
1050 | + | |
1051 | + // convert an array to a date. | |
1052 | + // the array should mirror the parameters below | |
1053 | + // note: all values past the year are optional and will default to the lowest possible value. | |
1054 | + // [year, month, day , hour, minute, second, millisecond] | |
1055 | + function configFromArray (config) { | |
1056 | + var i, date, input = [], currentDate, yearToUse; | |
1057 | + | |
1058 | + if (config._d) { | |
1059 | + return; | |
1060 | + } | |
1061 | + | |
1062 | + currentDate = currentDateArray(config); | |
1063 | + | |
1064 | + //compute day of the year from weeks and weekdays | |
1065 | + if (config._w && config._a[DATE] == null && config._a[MONTH] == null) { | |
1066 | + dayOfYearFromWeekInfo(config); | |
1067 | + } | |
1068 | + | |
1069 | + //if the day of the year is set, figure out what it is | |
1070 | + if (config._dayOfYear) { | |
1071 | + yearToUse = defaults(config._a[YEAR], currentDate[YEAR]); | |
1072 | + | |
1073 | + if (config._dayOfYear > daysInYear(yearToUse)) { | |
1074 | + getParsingFlags(config)._overflowDayOfYear = true; | |
1075 | + } | |
1076 | + | |
1077 | + date = createUTCDate(yearToUse, 0, config._dayOfYear); | |
1078 | + config._a[MONTH] = date.getUTCMonth(); | |
1079 | + config._a[DATE] = date.getUTCDate(); | |
1080 | + } | |
1081 | + | |
1082 | + // Default to current date. | |
1083 | + // * if no year, month, day of month are given, default to today | |
1084 | + // * if day of month is given, default month and year | |
1085 | + // * if month is given, default only year | |
1086 | + // * if year is given, don't default anything | |
1087 | + for (i = 0; i < 3 && config._a[i] == null; ++i) { | |
1088 | + config._a[i] = input[i] = currentDate[i]; | |
1089 | + } | |
1090 | + | |
1091 | + // Zero out whatever was not defaulted, including time | |
1092 | + for (; i < 7; i++) { | |
1093 | + config._a[i] = input[i] = (config._a[i] == null) ? (i === 2 ? 1 : 0) : config._a[i]; | |
1094 | + } | |
1095 | + | |
1096 | + // Check for 24:00:00.000 | |
1097 | + if (config._a[HOUR] === 24 && | |
1098 | + config._a[MINUTE] === 0 && | |
1099 | + config._a[SECOND] === 0 && | |
1100 | + config._a[MILLISECOND] === 0) { | |
1101 | + config._nextDay = true; | |
1102 | + config._a[HOUR] = 0; | |
1103 | + } | |
1104 | + | |
1105 | + config._d = (config._useUTC ? createUTCDate : createDate).apply(null, input); | |
1106 | + // Apply timezone offset from input. The actual utcOffset can be changed | |
1107 | + // with parseZone. | |
1108 | + if (config._tzm != null) { | |
1109 | + config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm); | |
1110 | + } | |
1111 | + | |
1112 | + if (config._nextDay) { | |
1113 | + config._a[HOUR] = 24; | |
1114 | + } | |
1115 | + } | |
1116 | + | |
1117 | + function dayOfYearFromWeekInfo(config) { | |
1118 | + var w, weekYear, week, weekday, dow, doy, temp; | |
1119 | + | |
1120 | + w = config._w; | |
1121 | + if (w.GG != null || w.W != null || w.E != null) { | |
1122 | + dow = 1; | |
1123 | + doy = 4; | |
1124 | + | |
1125 | + // TODO: We need to take the current isoWeekYear, but that depends on | |
1126 | + // how we interpret now (local, utc, fixed offset). So create | |
1127 | + // a now version of current config (take local/utc/offset flags, and | |
1128 | + // create now). | |
1129 | + weekYear = defaults(w.GG, config._a[YEAR], weekOfYear(local__createLocal(), 1, 4).year); | |
1130 | + week = defaults(w.W, 1); | |
1131 | + weekday = defaults(w.E, 1); | |
1132 | + } else { | |
1133 | + dow = config._locale._week.dow; | |
1134 | + doy = config._locale._week.doy; | |
1135 | + | |
1136 | + weekYear = defaults(w.gg, config._a[YEAR], weekOfYear(local__createLocal(), dow, doy).year); | |
1137 | + week = defaults(w.w, 1); | |
1138 | + | |
1139 | + if (w.d != null) { | |
1140 | + // weekday -- low day numbers are considered next week | |
1141 | + weekday = w.d; | |
1142 | + if (weekday < dow) { | |
1143 | + ++week; | |
1144 | + } | |
1145 | + } else if (w.e != null) { | |
1146 | + // local weekday -- counting starts from begining of week | |
1147 | + weekday = w.e + dow; | |
1148 | + } else { | |
1149 | + // default to begining of week | |
1150 | + weekday = dow; | |
1151 | + } | |
1152 | + } | |
1153 | + temp = dayOfYearFromWeeks(weekYear, week, weekday, doy, dow); | |
1154 | + | |
1155 | + config._a[YEAR] = temp.year; | |
1156 | + config._dayOfYear = temp.dayOfYear; | |
1157 | + } | |
1158 | + | |
1159 | + utils_hooks__hooks.ISO_8601 = function () {}; | |
1160 | + | |
1161 | + // date from string and format string | |
1162 | + function configFromStringAndFormat(config) { | |
1163 | + // TODO: Move this to another part of the creation flow to prevent circular deps | |
1164 | + if (config._f === utils_hooks__hooks.ISO_8601) { | |
1165 | + configFromISO(config); | |
1166 | + return; | |
1167 | + } | |
1168 | + | |
1169 | + config._a = []; | |
1170 | + getParsingFlags(config).empty = true; | |
1171 | + | |
1172 | + // This array is used to make a Date, either with `new Date` or `Date.UTC` | |
1173 | + var string = '' + config._i, | |
1174 | + i, parsedInput, tokens, token, skipped, | |
1175 | + stringLength = string.length, | |
1176 | + totalParsedInputLength = 0; | |
1177 | + | |
1178 | + tokens = expandFormat(config._f, config._locale).match(formattingTokens) || []; | |
1179 | + | |
1180 | + for (i = 0; i < tokens.length; i++) { | |
1181 | + token = tokens[i]; | |
1182 | + parsedInput = (string.match(getParseRegexForToken(token, config)) || [])[0]; | |
1183 | + if (parsedInput) { | |
1184 | + skipped = string.substr(0, string.indexOf(parsedInput)); | |
1185 | + if (skipped.length > 0) { | |
1186 | + getParsingFlags(config).unusedInput.push(skipped); | |
1187 | + } | |
1188 | + string = string.slice(string.indexOf(parsedInput) + parsedInput.length); | |
1189 | + totalParsedInputLength += parsedInput.length; | |
1190 | + } | |
1191 | + // don't parse if it's not a known token | |
1192 | + if (formatTokenFunctions[token]) { | |
1193 | + if (parsedInput) { | |
1194 | + getParsingFlags(config).empty = false; | |
1195 | + } | |
1196 | + else { | |
1197 | + getParsingFlags(config).unusedTokens.push(token); | |
1198 | + } | |
1199 | + addTimeToArrayFromToken(token, parsedInput, config); | |
1200 | + } | |
1201 | + else if (config._strict && !parsedInput) { | |
1202 | + getParsingFlags(config).unusedTokens.push(token); | |
1203 | + } | |
1204 | + } | |
1205 | + | |
1206 | + // add remaining unparsed input length to the string | |
1207 | + getParsingFlags(config).charsLeftOver = stringLength - totalParsedInputLength; | |
1208 | + if (string.length > 0) { | |
1209 | + getParsingFlags(config).unusedInput.push(string); | |
1210 | + } | |
1211 | + | |
1212 | + // clear _12h flag if hour is <= 12 | |
1213 | + if (getParsingFlags(config).bigHour === true && | |
1214 | + config._a[HOUR] <= 12 && | |
1215 | + config._a[HOUR] > 0) { | |
1216 | + getParsingFlags(config).bigHour = undefined; | |
1217 | + } | |
1218 | + // handle meridiem | |
1219 | + config._a[HOUR] = meridiemFixWrap(config._locale, config._a[HOUR], config._meridiem); | |
1220 | + | |
1221 | + configFromArray(config); | |
1222 | + checkOverflow(config); | |
1223 | + } | |
1224 | + | |
1225 | + | |
1226 | + function meridiemFixWrap (locale, hour, meridiem) { | |
1227 | + var isPm; | |
1228 | + | |
1229 | + if (meridiem == null) { | |
1230 | + // nothing to do | |
1231 | + return hour; | |
1232 | + } | |
1233 | + if (locale.meridiemHour != null) { | |
1234 | + return locale.meridiemHour(hour, meridiem); | |
1235 | + } else if (locale.isPM != null) { | |
1236 | + // Fallback | |
1237 | + isPm = locale.isPM(meridiem); | |
1238 | + if (isPm && hour < 12) { | |
1239 | + hour += 12; | |
1240 | + } | |
1241 | + if (!isPm && hour === 12) { | |
1242 | + hour = 0; | |
1243 | + } | |
1244 | + return hour; | |
1245 | + } else { | |
1246 | + // this is not supposed to happen | |
1247 | + return hour; | |
1248 | + } | |
1249 | + } | |
1250 | + | |
1251 | + function configFromStringAndArray(config) { | |
1252 | + var tempConfig, | |
1253 | + bestMoment, | |
1254 | + | |
1255 | + scoreToBeat, | |
1256 | + i, | |
1257 | + currentScore; | |
1258 | + | |
1259 | + if (config._f.length === 0) { | |
1260 | + getParsingFlags(config).invalidFormat = true; | |
1261 | + config._d = new Date(NaN); | |
1262 | + return; | |
1263 | + } | |
1264 | + | |
1265 | + for (i = 0; i < config._f.length; i++) { | |
1266 | + currentScore = 0; | |
1267 | + tempConfig = copyConfig({}, config); | |
1268 | + if (config._useUTC != null) { | |
1269 | + tempConfig._useUTC = config._useUTC; | |
1270 | + } | |
1271 | + tempConfig._f = config._f[i]; | |
1272 | + configFromStringAndFormat(tempConfig); | |
1273 | + | |
1274 | + if (!valid__isValid(tempConfig)) { | |
1275 | + continue; | |
1276 | + } | |
1277 | + | |
1278 | + // if there is any input that was not parsed add a penalty for that format | |
1279 | + currentScore += getParsingFlags(tempConfig).charsLeftOver; | |
1280 | + | |
1281 | + //or tokens | |
1282 | + currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10; | |
1283 | + | |
1284 | + getParsingFlags(tempConfig).score = currentScore; | |
1285 | + | |
1286 | + if (scoreToBeat == null || currentScore < scoreToBeat) { | |
1287 | + scoreToBeat = currentScore; | |
1288 | + bestMoment = tempConfig; | |
1289 | + } | |
1290 | + } | |
1291 | + | |
1292 | + extend(config, bestMoment || tempConfig); | |
1293 | + } | |
1294 | + | |
1295 | + function configFromObject(config) { | |
1296 | + if (config._d) { | |
1297 | + return; | |
1298 | + } | |
1299 | + | |
1300 | + var i = normalizeObjectUnits(config._i); | |
1301 | + config._a = [i.year, i.month, i.day || i.date, i.hour, i.minute, i.second, i.millisecond]; | |
1302 | + | |
1303 | + configFromArray(config); | |
1304 | + } | |
1305 | + | |
1306 | + function createFromConfig (config) { | |
1307 | + var res = new Moment(checkOverflow(prepareConfig(config))); | |
1308 | + if (res._nextDay) { | |
1309 | + // Adding is smart enough around DST | |
1310 | + res.add(1, 'd'); | |
1311 | + res._nextDay = undefined; | |
1312 | + } | |
1313 | + | |
1314 | + return res; | |
1315 | + } | |
1316 | + | |
1317 | + function prepareConfig (config) { | |
1318 | + var input = config._i, | |
1319 | + format = config._f; | |
1320 | + | |
1321 | + config._locale = config._locale || locale_locales__getLocale(config._l); | |
1322 | + | |
1323 | + if (input === null || (format === undefined && input === '')) { | |
1324 | + return valid__createInvalid({nullInput: true}); | |
1325 | + } | |
1326 | + | |
1327 | + if (typeof input === 'string') { | |
1328 | + config._i = input = config._locale.preparse(input); | |
1329 | + } | |
1330 | + | |
1331 | + if (isMoment(input)) { | |
1332 | + return new Moment(checkOverflow(input)); | |
1333 | + } else if (isArray(format)) { | |
1334 | + configFromStringAndArray(config); | |
1335 | + } else if (format) { | |
1336 | + configFromStringAndFormat(config); | |
1337 | + } else if (isDate(input)) { | |
1338 | + config._d = input; | |
1339 | + } else { | |
1340 | + configFromInput(config); | |
1341 | + } | |
1342 | + | |
1343 | + return config; | |
1344 | + } | |
1345 | + | |
1346 | + function configFromInput(config) { | |
1347 | + var input = config._i; | |
1348 | + if (input === undefined) { | |
1349 | + config._d = new Date(); | |
1350 | + } else if (isDate(input)) { | |
1351 | + config._d = new Date(+input); | |
1352 | + } else if (typeof input === 'string') { | |
1353 | + configFromString(config); | |
1354 | + } else if (isArray(input)) { | |
1355 | + config._a = map(input.slice(0), function (obj) { | |
1356 | + return parseInt(obj, 10); | |
1357 | + }); | |
1358 | + configFromArray(config); | |
1359 | + } else if (typeof(input) === 'object') { | |
1360 | + configFromObject(config); | |
1361 | + } else if (typeof(input) === 'number') { | |
1362 | + // from milliseconds | |
1363 | + config._d = new Date(input); | |
1364 | + } else { | |
1365 | + utils_hooks__hooks.createFromInputFallback(config); | |
1366 | + } | |
1367 | + } | |
1368 | + | |
1369 | + function createLocalOrUTC (input, format, locale, strict, isUTC) { | |
1370 | + var c = {}; | |
1371 | + | |
1372 | + if (typeof(locale) === 'boolean') { | |
1373 | + strict = locale; | |
1374 | + locale = undefined; | |
1375 | + } | |
1376 | + // object construction must be done this way. | |
1377 | + // https://github.com/moment/moment/issues/1423 | |
1378 | + c._isAMomentObject = true; | |
1379 | + c._useUTC = c._isUTC = isUTC; | |
1380 | + c._l = locale; | |
1381 | + c._i = input; | |
1382 | + c._f = format; | |
1383 | + c._strict = strict; | |
1384 | + | |
1385 | + return createFromConfig(c); | |
1386 | + } | |
1387 | + | |
1388 | + function local__createLocal (input, format, locale, strict) { | |
1389 | + return createLocalOrUTC(input, format, locale, strict, false); | |
1390 | + } | |
1391 | + | |
1392 | + var prototypeMin = deprecate( | |
1393 | + 'moment().min is deprecated, use moment.min instead. https://github.com/moment/moment/issues/1548', | |
1394 | + function () { | |
1395 | + var other = local__createLocal.apply(null, arguments); | |
1396 | + return other < this ? this : other; | |
1397 | + } | |
1398 | + ); | |
1399 | + | |
1400 | + var prototypeMax = deprecate( | |
1401 | + 'moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548', | |
1402 | + function () { | |
1403 | + var other = local__createLocal.apply(null, arguments); | |
1404 | + return other > this ? this : other; | |
1405 | + } | |
1406 | + ); | |
1407 | + | |
1408 | + // Pick a moment m from moments so that m[fn](other) is true for all | |
1409 | + // other. This relies on the function fn to be transitive. | |
1410 | + // | |
1411 | + // moments should either be an array of moment objects or an array, whose | |
1412 | + // first element is an array of moment objects. | |
1413 | + function pickBy(fn, moments) { | |
1414 | + var res, i; | |
1415 | + if (moments.length === 1 && isArray(moments[0])) { | |
1416 | + moments = moments[0]; | |
1417 | + } | |
1418 | + if (!moments.length) { | |
1419 | + return local__createLocal(); | |
1420 | + } | |
1421 | + res = moments[0]; | |
1422 | + for (i = 1; i < moments.length; ++i) { | |
1423 | + if (!moments[i].isValid() || moments[i][fn](res)) { | |
1424 | + res = moments[i]; | |
1425 | + } | |
1426 | + } | |
1427 | + return res; | |
1428 | + } | |
1429 | + | |
1430 | + // TODO: Use [].sort instead? | |
1431 | + function min () { | |
1432 | + var args = [].slice.call(arguments, 0); | |
1433 | + | |
1434 | + return pickBy('isBefore', args); | |
1435 | + } | |
1436 | + | |
1437 | + function max () { | |
1438 | + var args = [].slice.call(arguments, 0); | |
1439 | + | |
1440 | + return pickBy('isAfter', args); | |
1441 | + } | |
1442 | + | |
1443 | + function Duration (duration) { | |
1444 | + var normalizedInput = normalizeObjectUnits(duration), | |
1445 | + years = normalizedInput.year || 0, | |
1446 | + quarters = normalizedInput.quarter || 0, | |
1447 | + months = normalizedInput.month || 0, | |
1448 | + weeks = normalizedInput.week || 0, | |
1449 | + days = normalizedInput.day || 0, | |
1450 | + hours = normalizedInput.hour || 0, | |
1451 | + minutes = normalizedInput.minute || 0, | |
1452 | + seconds = normalizedInput.second || 0, | |
1453 | + milliseconds = normalizedInput.millisecond || 0; | |
1454 | + | |
1455 | + // representation for dateAddRemove | |
1456 | + this._milliseconds = +milliseconds + | |
1457 | + seconds * 1e3 + // 1000 | |
1458 | + minutes * 6e4 + // 1000 * 60 | |
1459 | + hours * 36e5; // 1000 * 60 * 60 | |
1460 | + // Because of dateAddRemove treats 24 hours as different from a | |
1461 | + // day when working around DST, we need to store them separately | |
1462 | + this._days = +days + | |
1463 | + weeks * 7; | |
1464 | + // It is impossible translate months into days without knowing | |
1465 | + // which months you are are talking about, so we have to store | |
1466 | + // it separately. | |
1467 | + this._months = +months + | |
1468 | + quarters * 3 + | |
1469 | + years * 12; | |
1470 | + | |
1471 | + this._data = {}; | |
1472 | + | |
1473 | + this._locale = locale_locales__getLocale(); | |
1474 | + | |
1475 | + this._bubble(); | |
1476 | + } | |
1477 | + | |
1478 | + function isDuration (obj) { | |
1479 | + return obj instanceof Duration; | |
1480 | + } | |
1481 | + | |
1482 | + function offset (token, separator) { | |
1483 | + addFormatToken(token, 0, 0, function () { | |
1484 | + var offset = this.utcOffset(); | |
1485 | + var sign = '+'; | |
1486 | + if (offset < 0) { | |
1487 | + offset = -offset; | |
1488 | + sign = '-'; | |
1489 | + } | |
1490 | + return sign + zeroFill(~~(offset / 60), 2) + separator + zeroFill(~~(offset) % 60, 2); | |
1491 | + }); | |
1492 | + } | |
1493 | + | |
1494 | + offset('Z', ':'); | |
1495 | + offset('ZZ', ''); | |
1496 | + | |
1497 | + // PARSING | |
1498 | + | |
1499 | + addRegexToken('Z', matchOffset); | |
1500 | + addRegexToken('ZZ', matchOffset); | |
1501 | + addParseToken(['Z', 'ZZ'], function (input, array, config) { | |
1502 | + config._useUTC = true; | |
1503 | + config._tzm = offsetFromString(input); | |
1504 | + }); | |
1505 | + | |
1506 | + // HELPERS | |
1507 | + | |
1508 | + // timezone chunker | |
1509 | + // '+10:00' > ['10', '00'] | |
1510 | + // '-1530' > ['-15', '30'] | |
1511 | + var chunkOffset = /([\+\-]|\d\d)/gi; | |
1512 | + | |
1513 | + function offsetFromString(string) { | |
1514 | + var matches = ((string || '').match(matchOffset) || []); | |
1515 | + var chunk = matches[matches.length - 1] || []; | |
1516 | + var parts = (chunk + '').match(chunkOffset) || ['-', 0, 0]; | |
1517 | + var minutes = +(parts[1] * 60) + toInt(parts[2]); | |
1518 | + | |
1519 | + return parts[0] === '+' ? minutes : -minutes; | |
1520 | + } | |
1521 | + | |
1522 | + // Return a moment from input, that is local/utc/zone equivalent to model. | |
1523 | + function cloneWithOffset(input, model) { | |
1524 | + var res, diff; | |
1525 | + if (model._isUTC) { | |
1526 | + res = model.clone(); | |
1527 | + diff = (isMoment(input) || isDate(input) ? +input : +local__createLocal(input)) - (+res); | |
1528 | + // Use low-level api, because this fn is low-level api. | |
1529 | + res._d.setTime(+res._d + diff); | |
1530 | + utils_hooks__hooks.updateOffset(res, false); | |
1531 | + return res; | |
1532 | + } else { | |
1533 | + return local__createLocal(input).local(); | |
1534 | + } | |
1535 | + } | |
1536 | + | |
1537 | + function getDateOffset (m) { | |
1538 | + // On Firefox.24 Date#getTimezoneOffset returns a floating point. | |
1539 | + // https://github.com/moment/moment/pull/1871 | |
1540 | + return -Math.round(m._d.getTimezoneOffset() / 15) * 15; | |
1541 | + } | |
1542 | + | |
1543 | + // HOOKS | |
1544 | + | |
1545 | + // This function will be called whenever a moment is mutated. | |
1546 | + // It is intended to keep the offset in sync with the timezone. | |
1547 | + utils_hooks__hooks.updateOffset = function () {}; | |
1548 | + | |
1549 | + // MOMENTS | |
1550 | + | |
1551 | + // keepLocalTime = true means only change the timezone, without | |
1552 | + // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]--> | |
1553 | + // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset | |
1554 | + // +0200, so we adjust the time as needed, to be valid. | |
1555 | + // | |
1556 | + // Keeping the time actually adds/subtracts (one hour) | |
1557 | + // from the actual represented time. That is why we call updateOffset | |
1558 | + // a second time. In case it wants us to change the offset again | |
1559 | + // _changeInProgress == true case, then we have to adjust, because | |
1560 | + // there is no such time in the given timezone. | |
1561 | + function getSetOffset (input, keepLocalTime) { | |
1562 | + var offset = this._offset || 0, | |
1563 | + localAdjust; | |
1564 | + if (input != null) { | |
1565 | + if (typeof input === 'string') { | |
1566 | + input = offsetFromString(input); | |
1567 | + } | |
1568 | + if (Math.abs(input) < 16) { | |
1569 | + input = input * 60; | |
1570 | + } | |
1571 | + if (!this._isUTC && keepLocalTime) { | |
1572 | + localAdjust = getDateOffset(this); | |
1573 | + } | |
1574 | + this._offset = input; | |
1575 | + this._isUTC = true; | |
1576 | + if (localAdjust != null) { | |
1577 | + this.add(localAdjust, 'm'); | |
1578 | + } | |
1579 | + if (offset !== input) { | |
1580 | + if (!keepLocalTime || this._changeInProgress) { | |
1581 | + add_subtract__addSubtract(this, create__createDuration(input - offset, 'm'), 1, false); | |
1582 | + } else if (!this._changeInProgress) { | |
1583 | + this._changeInProgress = true; | |
1584 | + utils_hooks__hooks.updateOffset(this, true); | |
1585 | + this._changeInProgress = null; | |
1586 | + } | |
1587 | + } | |
1588 | + return this; | |
1589 | + } else { | |
1590 | + return this._isUTC ? offset : getDateOffset(this); | |
1591 | + } | |
1592 | + } | |
1593 | + | |
1594 | + function getSetZone (input, keepLocalTime) { | |
1595 | + if (input != null) { | |
1596 | + if (typeof input !== 'string') { | |
1597 | + input = -input; | |
1598 | + } | |
1599 | + | |
1600 | + this.utcOffset(input, keepLocalTime); | |
1601 | + | |
1602 | + return this; | |
1603 | + } else { | |
1604 | + return -this.utcOffset(); | |
1605 | + } | |
1606 | + } | |
1607 | + | |
1608 | + function setOffsetToUTC (keepLocalTime) { | |
1609 | + return this.utcOffset(0, keepLocalTime); | |
1610 | + } | |
1611 | + | |
1612 | + function setOffsetToLocal (keepLocalTime) { | |
1613 | + if (this._isUTC) { | |
1614 | + this.utcOffset(0, keepLocalTime); | |
1615 | + this._isUTC = false; | |
1616 | + | |
1617 | + if (keepLocalTime) { | |
1618 | + this.subtract(getDateOffset(this), 'm'); | |
1619 | + } | |
1620 | + } | |
1621 | + return this; | |
1622 | + } | |
1623 | + | |
1624 | + function setOffsetToParsedOffset () { | |
1625 | + if (this._tzm) { | |
1626 | + this.utcOffset(this._tzm); | |
1627 | + } else if (typeof this._i === 'string') { | |
1628 | + this.utcOffset(offsetFromString(this._i)); | |
1629 | + } | |
1630 | + return this; | |
1631 | + } | |
1632 | + | |
1633 | + function hasAlignedHourOffset (input) { | |
1634 | + input = input ? local__createLocal(input).utcOffset() : 0; | |
1635 | + | |
1636 | + return (this.utcOffset() - input) % 60 === 0; | |
1637 | + } | |
1638 | + | |
1639 | + function isDaylightSavingTime () { | |
1640 | + return ( | |
1641 | + this.utcOffset() > this.clone().month(0).utcOffset() || | |
1642 | + this.utcOffset() > this.clone().month(5).utcOffset() | |
1643 | + ); | |
1644 | + } | |
1645 | + | |
1646 | + function isDaylightSavingTimeShifted () { | |
1647 | + if (typeof this._isDSTShifted !== 'undefined') { | |
1648 | + return this._isDSTShifted; | |
1649 | + } | |
1650 | + | |
1651 | + var c = {}; | |
1652 | + | |
1653 | + copyConfig(c, this); | |
1654 | + c = prepareConfig(c); | |
1655 | + | |
1656 | + if (c._a) { | |
1657 | + var other = c._isUTC ? create_utc__createUTC(c._a) : local__createLocal(c._a); | |
1658 | + this._isDSTShifted = this.isValid() && | |
1659 | + compareArrays(c._a, other.toArray()) > 0; | |
1660 | + } else { | |
1661 | + this._isDSTShifted = false; | |
1662 | + } | |
1663 | + | |
1664 | + return this._isDSTShifted; | |
1665 | + } | |
1666 | + | |
1667 | + function isLocal () { | |
1668 | + return !this._isUTC; | |
1669 | + } | |
1670 | + | |
1671 | + function isUtcOffset () { | |
1672 | + return this._isUTC; | |
1673 | + } | |
1674 | + | |
1675 | + function isUtc () { | |
1676 | + return this._isUTC && this._offset === 0; | |
1677 | + } | |
1678 | + | |
1679 | + var aspNetRegex = /(\-)?(?:(\d*)\.)?(\d+)\:(\d+)(?:\:(\d+)\.?(\d{3})?)?/; | |
1680 | + | |
1681 | + // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html | |
1682 | + // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere | |
1683 | + var create__isoRegex = /^(-)?P(?:(?:([0-9,.]*)Y)?(?:([0-9,.]*)M)?(?:([0-9,.]*)D)?(?:T(?:([0-9,.]*)H)?(?:([0-9,.]*)M)?(?:([0-9,.]*)S)?)?|([0-9,.]*)W)$/; | |
1684 | + | |
1685 | + function create__createDuration (input, key) { | |
1686 | + var duration = input, | |
1687 | + // matching against regexp is expensive, do it on demand | |
1688 | + match = null, | |
1689 | + sign, | |
1690 | + ret, | |
1691 | + diffRes; | |
1692 | + | |
1693 | + if (isDuration(input)) { | |
1694 | + duration = { | |
1695 | + ms : input._milliseconds, | |
1696 | + d : input._days, | |
1697 | + M : input._months | |
1698 | + }; | |
1699 | + } else if (typeof input === 'number') { | |
1700 | + duration = {}; | |
1701 | + if (key) { | |
1702 | + duration[key] = input; | |
1703 | + } else { | |
1704 | + duration.milliseconds = input; | |
1705 | + } | |
1706 | + } else if (!!(match = aspNetRegex.exec(input))) { | |
1707 | + sign = (match[1] === '-') ? -1 : 1; | |
1708 | + duration = { | |
1709 | + y : 0, | |
1710 | + d : toInt(match[DATE]) * sign, | |
1711 | + h : toInt(match[HOUR]) * sign, | |
1712 | + m : toInt(match[MINUTE]) * sign, | |
1713 | + s : toInt(match[SECOND]) * sign, | |
1714 | + ms : toInt(match[MILLISECOND]) * sign | |
1715 | + }; | |
1716 | + } else if (!!(match = create__isoRegex.exec(input))) { | |
1717 | + sign = (match[1] === '-') ? -1 : 1; | |
1718 | + duration = { | |
1719 | + y : parseIso(match[2], sign), | |
1720 | + M : parseIso(match[3], sign), | |
1721 | + d : parseIso(match[4], sign), | |
1722 | + h : parseIso(match[5], sign), | |
1723 | + m : parseIso(match[6], sign), | |
1724 | + s : parseIso(match[7], sign), | |
1725 | + w : parseIso(match[8], sign) | |
1726 | + }; | |
1727 | + } else if (duration == null) {// checks for null or undefined | |
1728 | + duration = {}; | |
1729 | + } else if (typeof duration === 'object' && ('from' in duration || 'to' in duration)) { | |
1730 | + diffRes = momentsDifference(local__createLocal(duration.from), local__createLocal(duration.to)); | |
1731 | + | |
1732 | + duration = {}; | |
1733 | + duration.ms = diffRes.milliseconds; | |
1734 | + duration.M = diffRes.months; | |
1735 | + } | |
1736 | + | |
1737 | + ret = new Duration(duration); | |
1738 | + | |
1739 | + if (isDuration(input) && hasOwnProp(input, '_locale')) { | |
1740 | + ret._locale = input._locale; | |
1741 | + } | |
1742 | + | |
1743 | + return ret; | |
1744 | + } | |
1745 | + | |
1746 | + create__createDuration.fn = Duration.prototype; | |
1747 | + | |
1748 | + function parseIso (inp, sign) { | |
1749 | + // We'd normally use ~~inp for this, but unfortunately it also | |
1750 | + // converts floats to ints. | |
1751 | + // inp may be undefined, so careful calling replace on it. | |
1752 | + var res = inp && parseFloat(inp.replace(',', '.')); | |
1753 | + // apply sign while we're at it | |
1754 | + return (isNaN(res) ? 0 : res) * sign; | |
1755 | + } | |
1756 | + | |
1757 | + function positiveMomentsDifference(base, other) { | |
1758 | + var res = {milliseconds: 0, months: 0}; | |
1759 | + | |
1760 | + res.months = other.month() - base.month() + | |
1761 | + (other.year() - base.year()) * 12; | |
1762 | + if (base.clone().add(res.months, 'M').isAfter(other)) { | |
1763 | + --res.months; | |
1764 | + } | |
1765 | + | |
1766 | + res.milliseconds = +other - +(base.clone().add(res.months, 'M')); | |
1767 | + | |
1768 | + return res; | |
1769 | + } | |
1770 | + | |
1771 | + function momentsDifference(base, other) { | |
1772 | + var res; | |
1773 | + other = cloneWithOffset(other, base); | |
1774 | + if (base.isBefore(other)) { | |
1775 | + res = positiveMomentsDifference(base, other); | |
1776 | + } else { | |
1777 | + res = positiveMomentsDifference(other, base); | |
1778 | + res.milliseconds = -res.milliseconds; | |
1779 | + res.months = -res.months; | |
1780 | + } | |
1781 | + | |
1782 | + return res; | |
1783 | + } | |
1784 | + | |
1785 | + function createAdder(direction, name) { | |
1786 | + return function (val, period) { | |
1787 | + var dur, tmp; | |
1788 | + //invert the arguments, but complain about it | |
1789 | + if (period !== null && !isNaN(+period)) { | |
1790 | + deprecateSimple(name, 'moment().' + name + '(period, number) is deprecated. Please use moment().' + name + '(number, period).'); | |
1791 | + tmp = val; val = period; period = tmp; | |
1792 | + } | |
1793 | + | |
1794 | + val = typeof val === 'string' ? +val : val; | |
1795 | + dur = create__createDuration(val, period); | |
1796 | + add_subtract__addSubtract(this, dur, direction); | |
1797 | + return this; | |
1798 | + }; | |
1799 | + } | |
1800 | + | |
1801 | + function add_subtract__addSubtract (mom, duration, isAdding, updateOffset) { | |
1802 | + var milliseconds = duration._milliseconds, | |
1803 | + days = duration._days, | |
1804 | + months = duration._months; | |
1805 | + updateOffset = updateOffset == null ? true : updateOffset; | |
1806 | + | |
1807 | + if (milliseconds) { | |
1808 | + mom._d.setTime(+mom._d + milliseconds * isAdding); | |
1809 | + } | |
1810 | + if (days) { | |
1811 | + get_set__set(mom, 'Date', get_set__get(mom, 'Date') + days * isAdding); | |
1812 | + } | |
1813 | + if (months) { | |
1814 | + setMonth(mom, get_set__get(mom, 'Month') + months * isAdding); | |
1815 | + } | |
1816 | + if (updateOffset) { | |
1817 | + utils_hooks__hooks.updateOffset(mom, days || months); | |
1818 | + } | |
1819 | + } | |
1820 | + | |
1821 | + var add_subtract__add = createAdder(1, 'add'); | |
1822 | + var add_subtract__subtract = createAdder(-1, 'subtract'); | |
1823 | + | |
1824 | + function moment_calendar__calendar (time, formats) { | |
1825 | + // We want to compare the start of today, vs this. | |
1826 | + // Getting start-of-today depends on whether we're local/utc/offset or not. | |
1827 | + var now = time || local__createLocal(), | |
1828 | + sod = cloneWithOffset(now, this).startOf('day'), | |
1829 | + diff = this.diff(sod, 'days', true), | |
1830 | + format = diff < -6 ? 'sameElse' : | |
1831 | + diff < -1 ? 'lastWeek' : | |
1832 | + diff < 0 ? 'lastDay' : | |
1833 | + diff < 1 ? 'sameDay' : | |
1834 | + diff < 2 ? 'nextDay' : | |
1835 | + diff < 7 ? 'nextWeek' : 'sameElse'; | |
1836 | + return this.format(formats && formats[format] || this.localeData().calendar(format, this, local__createLocal(now))); | |
1837 | + } | |
1838 | + | |
1839 | + function clone () { | |
1840 | + return new Moment(this); | |
1841 | + } | |
1842 | + | |
1843 | + function isAfter (input, units) { | |
1844 | + var inputMs; | |
1845 | + units = normalizeUnits(typeof units !== 'undefined' ? units : 'millisecond'); | |
1846 | + if (units === 'millisecond') { | |
1847 | + input = isMoment(input) ? input : local__createLocal(input); | |
1848 | + return +this > +input; | |
1849 | + } else { | |
1850 | + inputMs = isMoment(input) ? +input : +local__createLocal(input); | |
1851 | + return inputMs < +this.clone().startOf(units); | |
1852 | + } | |
1853 | + } | |
1854 | + | |
1855 | + function isBefore (input, units) { | |
1856 | + var inputMs; | |
1857 | + units = normalizeUnits(typeof units !== 'undefined' ? units : 'millisecond'); | |
1858 | + if (units === 'millisecond') { | |
1859 | + input = isMoment(input) ? input : local__createLocal(input); | |
1860 | + return +this < +input; | |
1861 | + } else { | |
1862 | + inputMs = isMoment(input) ? +input : +local__createLocal(input); | |
1863 | + return +this.clone().endOf(units) < inputMs; | |
1864 | + } | |
1865 | + } | |
1866 | + | |
1867 | + function isBetween (from, to, units) { | |
1868 | + return this.isAfter(from, units) && this.isBefore(to, units); | |
1869 | + } | |
1870 | + | |
1871 | + function isSame (input, units) { | |
1872 | + var inputMs; | |
1873 | + units = normalizeUnits(units || 'millisecond'); | |
1874 | + if (units === 'millisecond') { | |
1875 | + input = isMoment(input) ? input : local__createLocal(input); | |
1876 | + return +this === +input; | |
1877 | + } else { | |
1878 | + inputMs = +local__createLocal(input); | |
1879 | + return +(this.clone().startOf(units)) <= inputMs && inputMs <= +(this.clone().endOf(units)); | |
1880 | + } | |
1881 | + } | |
1882 | + | |
1883 | + function diff (input, units, asFloat) { | |
1884 | + var that = cloneWithOffset(input, this), | |
1885 | + zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4, | |
1886 | + delta, output; | |
1887 | + | |
1888 | + units = normalizeUnits(units); | |
1889 | + | |
1890 | + if (units === 'year' || units === 'month' || units === 'quarter') { | |
1891 | + output = monthDiff(this, that); | |
1892 | + if (units === 'quarter') { | |
1893 | + output = output / 3; | |
1894 | + } else if (units === 'year') { | |
1895 | + output = output / 12; | |
1896 | + } | |
1897 | + } else { | |
1898 | + delta = this - that; | |
1899 | + output = units === 'second' ? delta / 1e3 : // 1000 | |
1900 | + units === 'minute' ? delta / 6e4 : // 1000 * 60 | |
1901 | + units === 'hour' ? delta / 36e5 : // 1000 * 60 * 60 | |
1902 | + units === 'day' ? (delta - zoneDelta) / 864e5 : // 1000 * 60 * 60 * 24, negate dst | |
1903 | + units === 'week' ? (delta - zoneDelta) / 6048e5 : // 1000 * 60 * 60 * 24 * 7, negate dst | |
1904 | + delta; | |
1905 | + } | |
1906 | + return asFloat ? output : absFloor(output); | |
1907 | + } | |
1908 | + | |
1909 | + function monthDiff (a, b) { | |
1910 | + // difference in months | |
1911 | + var wholeMonthDiff = ((b.year() - a.year()) * 12) + (b.month() - a.month()), | |
1912 | + // b is in (anchor - 1 month, anchor + 1 month) | |
1913 | + anchor = a.clone().add(wholeMonthDiff, 'months'), | |
1914 | + anchor2, adjust; | |
1915 | + | |
1916 | + if (b - anchor < 0) { | |
1917 | + anchor2 = a.clone().add(wholeMonthDiff - 1, 'months'); | |
1918 | + // linear across the month | |
1919 | + adjust = (b - anchor) / (anchor - anchor2); | |
1920 | + } else { | |
1921 | + anchor2 = a.clone().add(wholeMonthDiff + 1, 'months'); | |
1922 | + // linear across the month | |
1923 | + adjust = (b - anchor) / (anchor2 - anchor); | |
1924 | + } | |
1925 | + | |
1926 | + return -(wholeMonthDiff + adjust); | |
1927 | + } | |
1928 | + | |
1929 | + utils_hooks__hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ'; | |
1930 | + | |
1931 | + function toString () { | |
1932 | + return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ'); | |
1933 | + } | |
1934 | + | |
1935 | + function moment_format__toISOString () { | |
1936 | + var m = this.clone().utc(); | |
1937 | + if (0 < m.year() && m.year() <= 9999) { | |
1938 | + if ('function' === typeof Date.prototype.toISOString) { | |
1939 | + // native implementation is ~50x faster, use it when we can | |
1940 | + return this.toDate().toISOString(); | |
1941 | + } else { | |
1942 | + return formatMoment(m, 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]'); | |
1943 | + } | |
1944 | + } else { | |
1945 | + return formatMoment(m, 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'); | |
1946 | + } | |
1947 | + } | |
1948 | + | |
1949 | + function format (inputString) { | |
1950 | + var output = formatMoment(this, inputString || utils_hooks__hooks.defaultFormat); | |
1951 | + return this.localeData().postformat(output); | |
1952 | + } | |
1953 | + | |
1954 | + function from (time, withoutSuffix) { | |
1955 | + if (!this.isValid()) { | |
1956 | + return this.localeData().invalidDate(); | |
1957 | + } | |
1958 | + return create__createDuration({to: this, from: time}).locale(this.locale()).humanize(!withoutSuffix); | |
1959 | + } | |
1960 | + | |
1961 | + function fromNow (withoutSuffix) { | |
1962 | + return this.from(local__createLocal(), withoutSuffix); | |
1963 | + } | |
1964 | + | |
1965 | + function to (time, withoutSuffix) { | |
1966 | + if (!this.isValid()) { | |
1967 | + return this.localeData().invalidDate(); | |
1968 | + } | |
1969 | + return create__createDuration({from: this, to: time}).locale(this.locale()).humanize(!withoutSuffix); | |
1970 | + } | |
1971 | + | |
1972 | + function toNow (withoutSuffix) { | |
1973 | + return this.to(local__createLocal(), withoutSuffix); | |
1974 | + } | |
1975 | + | |
1976 | + function locale (key) { | |
1977 | + var newLocaleData; | |
1978 | + | |
1979 | + if (key === undefined) { | |
1980 | + return this._locale._abbr; | |
1981 | + } else { | |
1982 | + newLocaleData = locale_locales__getLocale(key); | |
1983 | + if (newLocaleData != null) { | |
1984 | + this._locale = newLocaleData; | |
1985 | + } | |
1986 | + return this; | |
1987 | + } | |
1988 | + } | |
1989 | + | |
1990 | + var lang = deprecate( | |
1991 | + 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.', | |
1992 | + function (key) { | |
1993 | + if (key === undefined) { | |
1994 | + return this.localeData(); | |
1995 | + } else { | |
1996 | + return this.locale(key); | |
1997 | + } | |
1998 | + } | |
1999 | + ); | |
2000 | + | |
2001 | + function localeData () { | |
2002 | + return this._locale; | |
2003 | + } | |
2004 | + | |
2005 | + function startOf (units) { | |
2006 | + units = normalizeUnits(units); | |
2007 | + // the following switch intentionally omits break keywords | |
2008 | + // to utilize falling through the cases. | |
2009 | + switch (units) { | |
2010 | + case 'year': | |
2011 | + this.month(0); | |
2012 | + /* falls through */ | |
2013 | + case 'quarter': | |
2014 | + case 'month': | |
2015 | + this.date(1); | |
2016 | + /* falls through */ | |
2017 | + case 'week': | |
2018 | + case 'isoWeek': | |
2019 | + case 'day': | |
2020 | + this.hours(0); | |
2021 | + /* falls through */ | |
2022 | + case 'hour': | |
2023 | + this.minutes(0); | |
2024 | + /* falls through */ | |
2025 | + case 'minute': | |
2026 | + this.seconds(0); | |
2027 | + /* falls through */ | |
2028 | + case 'second': | |
2029 | + this.milliseconds(0); | |
2030 | + } | |
2031 | + | |
2032 | + // weeks are a special case | |
2033 | + if (units === 'week') { | |
2034 | + this.weekday(0); | |
2035 | + } | |
2036 | + if (units === 'isoWeek') { | |
2037 | + this.isoWeekday(1); | |
2038 | + } | |
2039 | + | |
2040 | + // quarters are also special | |
2041 | + if (units === 'quarter') { | |
2042 | + this.month(Math.floor(this.month() / 3) * 3); | |
2043 | + } | |
2044 | + | |
2045 | + return this; | |
2046 | + } | |
2047 | + | |
2048 | + function endOf (units) { | |
2049 | + units = normalizeUnits(units); | |
2050 | + if (units === undefined || units === 'millisecond') { | |
2051 | + return this; | |
2052 | + } | |
2053 | + return this.startOf(units).add(1, (units === 'isoWeek' ? 'week' : units)).subtract(1, 'ms'); | |
2054 | + } | |
2055 | + | |
2056 | + function to_type__valueOf () { | |
2057 | + return +this._d - ((this._offset || 0) * 60000); | |
2058 | + } | |
2059 | + | |
2060 | + function unix () { | |
2061 | + return Math.floor(+this / 1000); | |
2062 | + } | |
2063 | + | |
2064 | + function toDate () { | |
2065 | + return this._offset ? new Date(+this) : this._d; | |
2066 | + } | |
2067 | + | |
2068 | + function toArray () { | |
2069 | + var m = this; | |
2070 | + return [m.year(), m.month(), m.date(), m.hour(), m.minute(), m.second(), m.millisecond()]; | |
2071 | + } | |
2072 | + | |
2073 | + function toObject () { | |
2074 | + var m = this; | |
2075 | + return { | |
2076 | + years: m.year(), | |
2077 | + months: m.month(), | |
2078 | + date: m.date(), | |
2079 | + hours: m.hours(), | |
2080 | + minutes: m.minutes(), | |
2081 | + seconds: m.seconds(), | |
2082 | + milliseconds: m.milliseconds() | |
2083 | + }; | |
2084 | + } | |
2085 | + | |
2086 | + function moment_valid__isValid () { | |
2087 | + return valid__isValid(this); | |
2088 | + } | |
2089 | + | |
2090 | + function parsingFlags () { | |
2091 | + return extend({}, getParsingFlags(this)); | |
2092 | + } | |
2093 | + | |
2094 | + function invalidAt () { | |
2095 | + return getParsingFlags(this).overflow; | |
2096 | + } | |
2097 | + | |
2098 | + addFormatToken(0, ['gg', 2], 0, function () { | |
2099 | + return this.weekYear() % 100; | |
2100 | + }); | |
2101 | + | |
2102 | + addFormatToken(0, ['GG', 2], 0, function () { | |
2103 | + return this.isoWeekYear() % 100; | |
2104 | + }); | |
2105 | + | |
2106 | + function addWeekYearFormatToken (token, getter) { | |
2107 | + addFormatToken(0, [token, token.length], 0, getter); | |
2108 | + } | |
2109 | + | |
2110 | + addWeekYearFormatToken('gggg', 'weekYear'); | |
2111 | + addWeekYearFormatToken('ggggg', 'weekYear'); | |
2112 | + addWeekYearFormatToken('GGGG', 'isoWeekYear'); | |
2113 | + addWeekYearFormatToken('GGGGG', 'isoWeekYear'); | |
2114 | + | |
2115 | + // ALIASES | |
2116 | + | |
2117 | + addUnitAlias('weekYear', 'gg'); | |
2118 | + addUnitAlias('isoWeekYear', 'GG'); | |
2119 | + | |
2120 | + // PARSING | |
2121 | + | |
2122 | + addRegexToken('G', matchSigned); | |
2123 | + addRegexToken('g', matchSigned); | |
2124 | + addRegexToken('GG', match1to2, match2); | |
2125 | + addRegexToken('gg', match1to2, match2); | |
2126 | + addRegexToken('GGGG', match1to4, match4); | |
2127 | + addRegexToken('gggg', match1to4, match4); | |
2128 | + addRegexToken('GGGGG', match1to6, match6); | |
2129 | + addRegexToken('ggggg', match1to6, match6); | |
2130 | + | |
2131 | + addWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (input, week, config, token) { | |
2132 | + week[token.substr(0, 2)] = toInt(input); | |
2133 | + }); | |
2134 | + | |
2135 | + addWeekParseToken(['gg', 'GG'], function (input, week, config, token) { | |
2136 | + week[token] = utils_hooks__hooks.parseTwoDigitYear(input); | |
2137 | + }); | |
2138 | + | |
2139 | + // HELPERS | |
2140 | + | |
2141 | + function weeksInYear(year, dow, doy) { | |
2142 | + return weekOfYear(local__createLocal([year, 11, 31 + dow - doy]), dow, doy).week; | |
2143 | + } | |
2144 | + | |
2145 | + // MOMENTS | |
2146 | + | |
2147 | + function getSetWeekYear (input) { | |
2148 | + var year = weekOfYear(this, this.localeData()._week.dow, this.localeData()._week.doy).year; | |
2149 | + return input == null ? year : this.add((input - year), 'y'); | |
2150 | + } | |
2151 | + | |
2152 | + function getSetISOWeekYear (input) { | |
2153 | + var year = weekOfYear(this, 1, 4).year; | |
2154 | + return input == null ? year : this.add((input - year), 'y'); | |
2155 | + } | |
2156 | + | |
2157 | + function getISOWeeksInYear () { | |
2158 | + return weeksInYear(this.year(), 1, 4); | |
2159 | + } | |
2160 | + | |
2161 | + function getWeeksInYear () { | |
2162 | + var weekInfo = this.localeData()._week; | |
2163 | + return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy); | |
2164 | + } | |
2165 | + | |
2166 | + addFormatToken('Q', 0, 0, 'quarter'); | |
2167 | + | |
2168 | + // ALIASES | |
2169 | + | |
2170 | + addUnitAlias('quarter', 'Q'); | |
2171 | + | |
2172 | + // PARSING | |
2173 | + | |
2174 | + addRegexToken('Q', match1); | |
2175 | + addParseToken('Q', function (input, array) { | |
2176 | + array[MONTH] = (toInt(input) - 1) * 3; | |
2177 | + }); | |
2178 | + | |
2179 | + // MOMENTS | |
2180 | + | |
2181 | + function getSetQuarter (input) { | |
2182 | + return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3); | |
2183 | + } | |
2184 | + | |
2185 | + addFormatToken('D', ['DD', 2], 'Do', 'date'); | |
2186 | + | |
2187 | + // ALIASES | |
2188 | + | |
2189 | + addUnitAlias('date', 'D'); | |
2190 | + | |
2191 | + // PARSING | |
2192 | + | |
2193 | + addRegexToken('D', match1to2); | |
2194 | + addRegexToken('DD', match1to2, match2); | |
2195 | + addRegexToken('Do', function (isStrict, locale) { | |
2196 | + return isStrict ? locale._ordinalParse : locale._ordinalParseLenient; | |
2197 | + }); | |
2198 | + | |
2199 | + addParseToken(['D', 'DD'], DATE); | |
2200 | + addParseToken('Do', function (input, array) { | |
2201 | + array[DATE] = toInt(input.match(match1to2)[0], 10); | |
2202 | + }); | |
2203 | + | |
2204 | + // MOMENTS | |
2205 | + | |
2206 | + var getSetDayOfMonth = makeGetSet('Date', true); | |
2207 | + | |
2208 | + addFormatToken('d', 0, 'do', 'day'); | |
2209 | + | |
2210 | + addFormatToken('dd', 0, 0, function (format) { | |
2211 | + return this.localeData().weekdaysMin(this, format); | |
2212 | + }); | |
2213 | + | |
2214 | + addFormatToken('ddd', 0, 0, function (format) { | |
2215 | + return this.localeData().weekdaysShort(this, format); | |
2216 | + }); | |
2217 | + | |
2218 | + addFormatToken('dddd', 0, 0, function (format) { | |
2219 | + return this.localeData().weekdays(this, format); | |
2220 | + }); | |
2221 | + | |
2222 | + addFormatToken('e', 0, 0, 'weekday'); | |
2223 | + addFormatToken('E', 0, 0, 'isoWeekday'); | |
2224 | + | |
2225 | + // ALIASES | |
2226 | + | |
2227 | + addUnitAlias('day', 'd'); | |
2228 | + addUnitAlias('weekday', 'e'); | |
2229 | + addUnitAlias('isoWeekday', 'E'); | |
2230 | + | |
2231 | + // PARSING | |
2232 | + | |
2233 | + addRegexToken('d', match1to2); | |
2234 | + addRegexToken('e', match1to2); | |
2235 | + addRegexToken('E', match1to2); | |
2236 | + addRegexToken('dd', matchWord); | |
2237 | + addRegexToken('ddd', matchWord); | |
2238 | + addRegexToken('dddd', matchWord); | |
2239 | + | |
2240 | + addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config) { | |
2241 | + var weekday = config._locale.weekdaysParse(input); | |
2242 | + // if we didn't get a weekday name, mark the date as invalid | |
2243 | + if (weekday != null) { | |
2244 | + week.d = weekday; | |
2245 | + } else { | |
2246 | + getParsingFlags(config).invalidWeekday = input; | |
2247 | + } | |
2248 | + }); | |
2249 | + | |
2250 | + addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) { | |
2251 | + week[token] = toInt(input); | |
2252 | + }); | |
2253 | + | |
2254 | + // HELPERS | |
2255 | + | |
2256 | + function parseWeekday(input, locale) { | |
2257 | + if (typeof input !== 'string') { | |
2258 | + return input; | |
2259 | + } | |
2260 | + | |
2261 | + if (!isNaN(input)) { | |
2262 | + return parseInt(input, 10); | |
2263 | + } | |
2264 | + | |
2265 | + input = locale.weekdaysParse(input); | |
2266 | + if (typeof input === 'number') { | |
2267 | + return input; | |
2268 | + } | |
2269 | + | |
2270 | + return null; | |
2271 | + } | |
2272 | + | |
2273 | + // LOCALES | |
2274 | + | |
2275 | + var defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'); | |
2276 | + function localeWeekdays (m) { | |
2277 | + return this._weekdays[m.day()]; | |
2278 | + } | |
2279 | + | |
2280 | + var defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'); | |
2281 | + function localeWeekdaysShort (m) { | |
2282 | + return this._weekdaysShort[m.day()]; | |
2283 | + } | |
2284 | + | |
2285 | + var defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'); | |
2286 | + function localeWeekdaysMin (m) { | |
2287 | + return this._weekdaysMin[m.day()]; | |
2288 | + } | |
2289 | + | |
2290 | + function localeWeekdaysParse (weekdayName) { | |
2291 | + var i, mom, regex; | |
2292 | + | |
2293 | + this._weekdaysParse = this._weekdaysParse || []; | |
2294 | + | |
2295 | + for (i = 0; i < 7; i++) { | |
2296 | + // make the regex if we don't have it already | |
2297 | + if (!this._weekdaysParse[i]) { | |
2298 | + mom = local__createLocal([2000, 1]).day(i); | |
2299 | + regex = '^' + this.weekdays(mom, '') + '|^' + this.weekdaysShort(mom, '') + '|^' + this.weekdaysMin(mom, ''); | |
2300 | + this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i'); | |
2301 | + } | |
2302 | + // test the regex | |
2303 | + if (this._weekdaysParse[i].test(weekdayName)) { | |
2304 | + return i; | |
2305 | + } | |
2306 | + } | |
2307 | + } | |
2308 | + | |
2309 | + // MOMENTS | |
2310 | + | |
2311 | + function getSetDayOfWeek (input) { | |
2312 | + var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay(); | |
2313 | + if (input != null) { | |
2314 | + input = parseWeekday(input, this.localeData()); | |
2315 | + return this.add(input - day, 'd'); | |
2316 | + } else { | |
2317 | + return day; | |
2318 | + } | |
2319 | + } | |
2320 | + | |
2321 | + function getSetLocaleDayOfWeek (input) { | |
2322 | + var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7; | |
2323 | + return input == null ? weekday : this.add(input - weekday, 'd'); | |
2324 | + } | |
2325 | + | |
2326 | + function getSetISODayOfWeek (input) { | |
2327 | + // behaves the same as moment#day except | |
2328 | + // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6) | |
2329 | + // as a setter, sunday should belong to the previous week. | |
2330 | + return input == null ? this.day() || 7 : this.day(this.day() % 7 ? input : input - 7); | |
2331 | + } | |
2332 | + | |
2333 | + addFormatToken('H', ['HH', 2], 0, 'hour'); | |
2334 | + addFormatToken('h', ['hh', 2], 0, function () { | |
2335 | + return this.hours() % 12 || 12; | |
2336 | + }); | |
2337 | + | |
2338 | + function meridiem (token, lowercase) { | |
2339 | + addFormatToken(token, 0, 0, function () { | |
2340 | + return this.localeData().meridiem(this.hours(), this.minutes(), lowercase); | |
2341 | + }); | |
2342 | + } | |
2343 | + | |
2344 | + meridiem('a', true); | |
2345 | + meridiem('A', false); | |
2346 | + | |
2347 | + // ALIASES | |
2348 | + | |
2349 | + addUnitAlias('hour', 'h'); | |
2350 | + | |
2351 | + // PARSING | |
2352 | + | |
2353 | + function matchMeridiem (isStrict, locale) { | |
2354 | + return locale._meridiemParse; | |
2355 | + } | |
2356 | + | |
2357 | + addRegexToken('a', matchMeridiem); | |
2358 | + addRegexToken('A', matchMeridiem); | |
2359 | + addRegexToken('H', match1to2); | |
2360 | + addRegexToken('h', match1to2); | |
2361 | + addRegexToken('HH', match1to2, match2); | |
2362 | + addRegexToken('hh', match1to2, match2); | |
2363 | + | |
2364 | + addParseToken(['H', 'HH'], HOUR); | |
2365 | + addParseToken(['a', 'A'], function (input, array, config) { | |
2366 | + config._isPm = config._locale.isPM(input); | |
2367 | + config._meridiem = input; | |
2368 | + }); | |
2369 | + addParseToken(['h', 'hh'], function (input, array, config) { | |
2370 | + array[HOUR] = toInt(input); | |
2371 | + getParsingFlags(config).bigHour = true; | |
2372 | + }); | |
2373 | + | |
2374 | + // LOCALES | |
2375 | + | |
2376 | + function localeIsPM (input) { | |
2377 | + // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays | |
2378 | + // Using charAt should be more compatible. | |
2379 | + return ((input + '').toLowerCase().charAt(0) === 'p'); | |
2380 | + } | |
2381 | + | |
2382 | + var defaultLocaleMeridiemParse = /[ap]\.?m?\.?/i; | |
2383 | + function localeMeridiem (hours, minutes, isLower) { | |
2384 | + if (hours > 11) { | |
2385 | + return isLower ? 'pm' : 'PM'; | |
2386 | + } else { | |
2387 | + return isLower ? 'am' : 'AM'; | |
2388 | + } | |
2389 | + } | |
2390 | + | |
2391 | + | |
2392 | + // MOMENTS | |
2393 | + | |
2394 | + // Setting the hour should keep the time, because the user explicitly | |
2395 | + // specified which hour he wants. So trying to maintain the same hour (in | |
2396 | + // a new timezone) makes sense. Adding/subtracting hours does not follow | |
2397 | + // this rule. | |
2398 | + var getSetHour = makeGetSet('Hours', true); | |
2399 | + | |
2400 | + addFormatToken('m', ['mm', 2], 0, 'minute'); | |
2401 | + | |
2402 | + // ALIASES | |
2403 | + | |
2404 | + addUnitAlias('minute', 'm'); | |
2405 | + | |
2406 | + // PARSING | |
2407 | + | |
2408 | + addRegexToken('m', match1to2); | |
2409 | + addRegexToken('mm', match1to2, match2); | |
2410 | + addParseToken(['m', 'mm'], MINUTE); | |
2411 | + | |
2412 | + // MOMENTS | |
2413 | + | |
2414 | + var getSetMinute = makeGetSet('Minutes', false); | |
2415 | + | |
2416 | + addFormatToken('s', ['ss', 2], 0, 'second'); | |
2417 | + | |
2418 | + // ALIASES | |
2419 | + | |
2420 | + addUnitAlias('second', 's'); | |
2421 | + | |
2422 | + // PARSING | |
2423 | + | |
2424 | + addRegexToken('s', match1to2); | |
2425 | + addRegexToken('ss', match1to2, match2); | |
2426 | + addParseToken(['s', 'ss'], SECOND); | |
2427 | + | |
2428 | + // MOMENTS | |
2429 | + | |
2430 | + var getSetSecond = makeGetSet('Seconds', false); | |
2431 | + | |
2432 | + addFormatToken('S', 0, 0, function () { | |
2433 | + return ~~(this.millisecond() / 100); | |
2434 | + }); | |
2435 | + | |
2436 | + addFormatToken(0, ['SS', 2], 0, function () { | |
2437 | + return ~~(this.millisecond() / 10); | |
2438 | + }); | |
2439 | + | |
2440 | + addFormatToken(0, ['SSS', 3], 0, 'millisecond'); | |
2441 | + addFormatToken(0, ['SSSS', 4], 0, function () { | |
2442 | + return this.millisecond() * 10; | |
2443 | + }); | |
2444 | + addFormatToken(0, ['SSSSS', 5], 0, function () { | |
2445 | + return this.millisecond() * 100; | |
2446 | + }); | |
2447 | + addFormatToken(0, ['SSSSSS', 6], 0, function () { | |
2448 | + return this.millisecond() * 1000; | |
2449 | + }); | |
2450 | + addFormatToken(0, ['SSSSSSS', 7], 0, function () { | |
2451 | + return this.millisecond() * 10000; | |
2452 | + }); | |
2453 | + addFormatToken(0, ['SSSSSSSS', 8], 0, function () { | |
2454 | + return this.millisecond() * 100000; | |
2455 | + }); | |
2456 | + addFormatToken(0, ['SSSSSSSSS', 9], 0, function () { | |
2457 | + return this.millisecond() * 1000000; | |
2458 | + }); | |
2459 | + | |
2460 | + | |
2461 | + // ALIASES | |
2462 | + | |
2463 | + addUnitAlias('millisecond', 'ms'); | |
2464 | + | |
2465 | + // PARSING | |
2466 | + | |
2467 | + addRegexToken('S', match1to3, match1); | |
2468 | + addRegexToken('SS', match1to3, match2); | |
2469 | + addRegexToken('SSS', match1to3, match3); | |
2470 | + | |
2471 | + var token; | |
2472 | + for (token = 'SSSS'; token.length <= 9; token += 'S') { | |
2473 | + addRegexToken(token, matchUnsigned); | |
2474 | + } | |
2475 | + | |
2476 | + function parseMs(input, array) { | |
2477 | + array[MILLISECOND] = toInt(('0.' + input) * 1000); | |
2478 | + } | |
2479 | + | |
2480 | + for (token = 'S'; token.length <= 9; token += 'S') { | |
2481 | + addParseToken(token, parseMs); | |
2482 | + } | |
2483 | + // MOMENTS | |
2484 | + | |
2485 | + var getSetMillisecond = makeGetSet('Milliseconds', false); | |
2486 | + | |
2487 | + addFormatToken('z', 0, 0, 'zoneAbbr'); | |
2488 | + addFormatToken('zz', 0, 0, 'zoneName'); | |
2489 | + | |
2490 | + // MOMENTS | |
2491 | + | |
2492 | + function getZoneAbbr () { | |
2493 | + return this._isUTC ? 'UTC' : ''; | |
2494 | + } | |
2495 | + | |
2496 | + function getZoneName () { | |
2497 | + return this._isUTC ? 'Coordinated Universal Time' : ''; | |
2498 | + } | |
2499 | + | |
2500 | + var momentPrototype__proto = Moment.prototype; | |
2501 | + | |
2502 | + momentPrototype__proto.add = add_subtract__add; | |
2503 | + momentPrototype__proto.calendar = moment_calendar__calendar; | |
2504 | + momentPrototype__proto.clone = clone; | |
2505 | + momentPrototype__proto.diff = diff; | |
2506 | + momentPrototype__proto.endOf = endOf; | |
2507 | + momentPrototype__proto.format = format; | |
2508 | + momentPrototype__proto.from = from; | |
2509 | + momentPrototype__proto.fromNow = fromNow; | |
2510 | + momentPrototype__proto.to = to; | |
2511 | + momentPrototype__proto.toNow = toNow; | |
2512 | + momentPrototype__proto.get = getSet; | |
2513 | + momentPrototype__proto.invalidAt = invalidAt; | |
2514 | + momentPrototype__proto.isAfter = isAfter; | |
2515 | + momentPrototype__proto.isBefore = isBefore; | |
2516 | + momentPrototype__proto.isBetween = isBetween; | |
2517 | + momentPrototype__proto.isSame = isSame; | |
2518 | + momentPrototype__proto.isValid = moment_valid__isValid; | |
2519 | + momentPrototype__proto.lang = lang; | |
2520 | + momentPrototype__proto.locale = locale; | |
2521 | + momentPrototype__proto.localeData = localeData; | |
2522 | + momentPrototype__proto.max = prototypeMax; | |
2523 | + momentPrototype__proto.min = prototypeMin; | |
2524 | + momentPrototype__proto.parsingFlags = parsingFlags; | |
2525 | + momentPrototype__proto.set = getSet; | |
2526 | + momentPrototype__proto.startOf = startOf; | |
2527 | + momentPrototype__proto.subtract = add_subtract__subtract; | |
2528 | + momentPrototype__proto.toArray = toArray; | |
2529 | + momentPrototype__proto.toObject = toObject; | |
2530 | + momentPrototype__proto.toDate = toDate; | |
2531 | + momentPrototype__proto.toISOString = moment_format__toISOString; | |
2532 | + momentPrototype__proto.toJSON = moment_format__toISOString; | |
2533 | + momentPrototype__proto.toString = toString; | |
2534 | + momentPrototype__proto.unix = unix; | |
2535 | + momentPrototype__proto.valueOf = to_type__valueOf; | |
2536 | + | |
2537 | + // Year | |
2538 | + momentPrototype__proto.year = getSetYear; | |
2539 | + momentPrototype__proto.isLeapYear = getIsLeapYear; | |
2540 | + | |
2541 | + // Week Year | |
2542 | + momentPrototype__proto.weekYear = getSetWeekYear; | |
2543 | + momentPrototype__proto.isoWeekYear = getSetISOWeekYear; | |
2544 | + | |
2545 | + // Quarter | |
2546 | + momentPrototype__proto.quarter = momentPrototype__proto.quarters = getSetQuarter; | |
2547 | + | |
2548 | + // Month | |
2549 | + momentPrototype__proto.month = getSetMonth; | |
2550 | + momentPrototype__proto.daysInMonth = getDaysInMonth; | |
2551 | + | |
2552 | + // Week | |
2553 | + momentPrototype__proto.week = momentPrototype__proto.weeks = getSetWeek; | |
2554 | + momentPrototype__proto.isoWeek = momentPrototype__proto.isoWeeks = getSetISOWeek; | |
2555 | + momentPrototype__proto.weeksInYear = getWeeksInYear; | |
2556 | + momentPrototype__proto.isoWeeksInYear = getISOWeeksInYear; | |
2557 | + | |
2558 | + // Day | |
2559 | + momentPrototype__proto.date = getSetDayOfMonth; | |
2560 | + momentPrototype__proto.day = momentPrototype__proto.days = getSetDayOfWeek; | |
2561 | + momentPrototype__proto.weekday = getSetLocaleDayOfWeek; | |
2562 | + momentPrototype__proto.isoWeekday = getSetISODayOfWeek; | |
2563 | + momentPrototype__proto.dayOfYear = getSetDayOfYear; | |
2564 | + | |
2565 | + // Hour | |
2566 | + momentPrototype__proto.hour = momentPrototype__proto.hours = getSetHour; | |
2567 | + | |
2568 | + // Minute | |
2569 | + momentPrototype__proto.minute = momentPrototype__proto.minutes = getSetMinute; | |
2570 | + | |
2571 | + // Second | |
2572 | + momentPrototype__proto.second = momentPrototype__proto.seconds = getSetSecond; | |
2573 | + | |
2574 | + // Millisecond | |
2575 | + momentPrototype__proto.millisecond = momentPrototype__proto.milliseconds = getSetMillisecond; | |
2576 | + | |
2577 | + // Offset | |
2578 | + momentPrototype__proto.utcOffset = getSetOffset; | |
2579 | + momentPrototype__proto.utc = setOffsetToUTC; | |
2580 | + momentPrototype__proto.local = setOffsetToLocal; | |
2581 | + momentPrototype__proto.parseZone = setOffsetToParsedOffset; | |
2582 | + momentPrototype__proto.hasAlignedHourOffset = hasAlignedHourOffset; | |
2583 | + momentPrototype__proto.isDST = isDaylightSavingTime; | |
2584 | + momentPrototype__proto.isDSTShifted = isDaylightSavingTimeShifted; | |
2585 | + momentPrototype__proto.isLocal = isLocal; | |
2586 | + momentPrototype__proto.isUtcOffset = isUtcOffset; | |
2587 | + momentPrototype__proto.isUtc = isUtc; | |
2588 | + momentPrototype__proto.isUTC = isUtc; | |
2589 | + | |
2590 | + // Timezone | |
2591 | + momentPrototype__proto.zoneAbbr = getZoneAbbr; | |
2592 | + momentPrototype__proto.zoneName = getZoneName; | |
2593 | + | |
2594 | + // Deprecations | |
2595 | + momentPrototype__proto.dates = deprecate('dates accessor is deprecated. Use date instead.', getSetDayOfMonth); | |
2596 | + momentPrototype__proto.months = deprecate('months accessor is deprecated. Use month instead', getSetMonth); | |
2597 | + momentPrototype__proto.years = deprecate('years accessor is deprecated. Use year instead', getSetYear); | |
2598 | + momentPrototype__proto.zone = deprecate('moment().zone is deprecated, use moment().utcOffset instead. https://github.com/moment/moment/issues/1779', getSetZone); | |
2599 | + | |
2600 | + var momentPrototype = momentPrototype__proto; | |
2601 | + | |
2602 | + function moment__createUnix (input) { | |
2603 | + return local__createLocal(input * 1000); | |
2604 | + } | |
2605 | + | |
2606 | + function moment__createInZone () { | |
2607 | + return local__createLocal.apply(null, arguments).parseZone(); | |
2608 | + } | |
2609 | + | |
2610 | + var defaultCalendar = { | |
2611 | + sameDay : '[Today at] LT', | |
2612 | + nextDay : '[Tomorrow at] LT', | |
2613 | + nextWeek : 'dddd [at] LT', | |
2614 | + lastDay : '[Yesterday at] LT', | |
2615 | + lastWeek : '[Last] dddd [at] LT', | |
2616 | + sameElse : 'L' | |
2617 | + }; | |
2618 | + | |
2619 | + function locale_calendar__calendar (key, mom, now) { | |
2620 | + var output = this._calendar[key]; | |
2621 | + return typeof output === 'function' ? output.call(mom, now) : output; | |
2622 | + } | |
2623 | + | |
2624 | + var defaultLongDateFormat = { | |
2625 | + LTS : 'h:mm:ss A', | |
2626 | + LT : 'h:mm A', | |
2627 | + L : 'MM/DD/YYYY', | |
2628 | + LL : 'MMMM D, YYYY', | |
2629 | + LLL : 'MMMM D, YYYY h:mm A', | |
2630 | + LLLL : 'dddd, MMMM D, YYYY h:mm A' | |
2631 | + }; | |
2632 | + | |
2633 | + function longDateFormat (key) { | |
2634 | + var format = this._longDateFormat[key], | |
2635 | + formatUpper = this._longDateFormat[key.toUpperCase()]; | |
2636 | + | |
2637 | + if (format || !formatUpper) { | |
2638 | + return format; | |
2639 | + } | |
2640 | + | |
2641 | + this._longDateFormat[key] = formatUpper.replace(/MMMM|MM|DD|dddd/g, function (val) { | |
2642 | + return val.slice(1); | |
2643 | + }); | |
2644 | + | |
2645 | + return this._longDateFormat[key]; | |
2646 | + } | |
2647 | + | |
2648 | + var defaultInvalidDate = 'Invalid date'; | |
2649 | + | |
2650 | + function invalidDate () { | |
2651 | + return this._invalidDate; | |
2652 | + } | |
2653 | + | |
2654 | + var defaultOrdinal = '%d'; | |
2655 | + var defaultOrdinalParse = /\d{1,2}/; | |
2656 | + | |
2657 | + function ordinal (number) { | |
2658 | + return this._ordinal.replace('%d', number); | |
2659 | + } | |
2660 | + | |
2661 | + function preParsePostFormat (string) { | |
2662 | + return string; | |
2663 | + } | |
2664 | + | |
2665 | + var defaultRelativeTime = { | |
2666 | + future : 'in %s', | |
2667 | + past : '%s ago', | |
2668 | + s : 'a few seconds', | |
2669 | + m : 'a minute', | |
2670 | + mm : '%d minutes', | |
2671 | + h : 'an hour', | |
2672 | + hh : '%d hours', | |
2673 | + d : 'a day', | |
2674 | + dd : '%d days', | |
2675 | + M : 'a month', | |
2676 | + MM : '%d months', | |
2677 | + y : 'a year', | |
2678 | + yy : '%d years' | |
2679 | + }; | |
2680 | + | |
2681 | + function relative__relativeTime (number, withoutSuffix, string, isFuture) { | |
2682 | + var output = this._relativeTime[string]; | |
2683 | + return (typeof output === 'function') ? | |
2684 | + output(number, withoutSuffix, string, isFuture) : | |
2685 | + output.replace(/%d/i, number); | |
2686 | + } | |
2687 | + | |
2688 | + function pastFuture (diff, output) { | |
2689 | + var format = this._relativeTime[diff > 0 ? 'future' : 'past']; | |
2690 | + return typeof format === 'function' ? format(output) : format.replace(/%s/i, output); | |
2691 | + } | |
2692 | + | |
2693 | + function locale_set__set (config) { | |
2694 | + var prop, i; | |
2695 | + for (i in config) { | |
2696 | + prop = config[i]; | |
2697 | + if (typeof prop === 'function') { | |
2698 | + this[i] = prop; | |
2699 | + } else { | |
2700 | + this['_' + i] = prop; | |
2701 | + } | |
2702 | + } | |
2703 | + // Lenient ordinal parsing accepts just a number in addition to | |
2704 | + // number + (possibly) stuff coming from _ordinalParseLenient. | |
2705 | + this._ordinalParseLenient = new RegExp(this._ordinalParse.source + '|' + (/\d{1,2}/).source); | |
2706 | + } | |
2707 | + | |
2708 | + var prototype__proto = Locale.prototype; | |
2709 | + | |
2710 | + prototype__proto._calendar = defaultCalendar; | |
2711 | + prototype__proto.calendar = locale_calendar__calendar; | |
2712 | + prototype__proto._longDateFormat = defaultLongDateFormat; | |
2713 | + prototype__proto.longDateFormat = longDateFormat; | |
2714 | + prototype__proto._invalidDate = defaultInvalidDate; | |
2715 | + prototype__proto.invalidDate = invalidDate; | |
2716 | + prototype__proto._ordinal = defaultOrdinal; | |
2717 | + prototype__proto.ordinal = ordinal; | |
2718 | + prototype__proto._ordinalParse = defaultOrdinalParse; | |
2719 | + prototype__proto.preparse = preParsePostFormat; | |
2720 | + prototype__proto.postformat = preParsePostFormat; | |
2721 | + prototype__proto._relativeTime = defaultRelativeTime; | |
2722 | + prototype__proto.relativeTime = relative__relativeTime; | |
2723 | + prototype__proto.pastFuture = pastFuture; | |
2724 | + prototype__proto.set = locale_set__set; | |
2725 | + | |
2726 | + // Month | |
2727 | + prototype__proto.months = localeMonths; | |
2728 | + prototype__proto._months = defaultLocaleMonths; | |
2729 | + prototype__proto.monthsShort = localeMonthsShort; | |
2730 | + prototype__proto._monthsShort = defaultLocaleMonthsShort; | |
2731 | + prototype__proto.monthsParse = localeMonthsParse; | |
2732 | + | |
2733 | + // Week | |
2734 | + prototype__proto.week = localeWeek; | |
2735 | + prototype__proto._week = defaultLocaleWeek; | |
2736 | + prototype__proto.firstDayOfYear = localeFirstDayOfYear; | |
2737 | + prototype__proto.firstDayOfWeek = localeFirstDayOfWeek; | |
2738 | + | |
2739 | + // Day of Week | |
2740 | + prototype__proto.weekdays = localeWeekdays; | |
2741 | + prototype__proto._weekdays = defaultLocaleWeekdays; | |
2742 | + prototype__proto.weekdaysMin = localeWeekdaysMin; | |
2743 | + prototype__proto._weekdaysMin = defaultLocaleWeekdaysMin; | |
2744 | + prototype__proto.weekdaysShort = localeWeekdaysShort; | |
2745 | + prototype__proto._weekdaysShort = defaultLocaleWeekdaysShort; | |
2746 | + prototype__proto.weekdaysParse = localeWeekdaysParse; | |
2747 | + | |
2748 | + // Hours | |
2749 | + prototype__proto.isPM = localeIsPM; | |
2750 | + prototype__proto._meridiemParse = defaultLocaleMeridiemParse; | |
2751 | + prototype__proto.meridiem = localeMeridiem; | |
2752 | + | |
2753 | + function lists__get (format, index, field, setter) { | |
2754 | + var locale = locale_locales__getLocale(); | |
2755 | + var utc = create_utc__createUTC().set(setter, index); | |
2756 | + return locale[field](utc, format); | |
2757 | + } | |
2758 | + | |
2759 | + function list (format, index, field, count, setter) { | |
2760 | + if (typeof format === 'number') { | |
2761 | + index = format; | |
2762 | + format = undefined; | |
2763 | + } | |
2764 | + | |
2765 | + format = format || ''; | |
2766 | + | |
2767 | + if (index != null) { | |
2768 | + return lists__get(format, index, field, setter); | |
2769 | + } | |
2770 | + | |
2771 | + var i; | |
2772 | + var out = []; | |
2773 | + for (i = 0; i < count; i++) { | |
2774 | + out[i] = lists__get(format, i, field, setter); | |
2775 | + } | |
2776 | + return out; | |
2777 | + } | |
2778 | + | |
2779 | + function lists__listMonths (format, index) { | |
2780 | + return list(format, index, 'months', 12, 'month'); | |
2781 | + } | |
2782 | + | |
2783 | + function lists__listMonthsShort (format, index) { | |
2784 | + return list(format, index, 'monthsShort', 12, 'month'); | |
2785 | + } | |
2786 | + | |
2787 | + function lists__listWeekdays (format, index) { | |
2788 | + return list(format, index, 'weekdays', 7, 'day'); | |
2789 | + } | |
2790 | + | |
2791 | + function lists__listWeekdaysShort (format, index) { | |
2792 | + return list(format, index, 'weekdaysShort', 7, 'day'); | |
2793 | + } | |
2794 | + | |
2795 | + function lists__listWeekdaysMin (format, index) { | |
2796 | + return list(format, index, 'weekdaysMin', 7, 'day'); | |
2797 | + } | |
2798 | + | |
2799 | + locale_locales__getSetGlobalLocale('en', { | |
2800 | + ordinalParse: /\d{1,2}(th|st|nd|rd)/, | |
2801 | + ordinal : function (number) { | |
2802 | + var b = number % 10, | |
2803 | + output = (toInt(number % 100 / 10) === 1) ? 'th' : | |
2804 | + (b === 1) ? 'st' : | |
2805 | + (b === 2) ? 'nd' : | |
2806 | + (b === 3) ? 'rd' : 'th'; | |
2807 | + return number + output; | |
2808 | + } | |
2809 | + }); | |
2810 | + | |
2811 | + // Side effect imports | |
2812 | + utils_hooks__hooks.lang = deprecate('moment.lang is deprecated. Use moment.locale instead.', locale_locales__getSetGlobalLocale); | |
2813 | + utils_hooks__hooks.langData = deprecate('moment.langData is deprecated. Use moment.localeData instead.', locale_locales__getLocale); | |
2814 | + | |
2815 | + var mathAbs = Math.abs; | |
2816 | + | |
2817 | + function duration_abs__abs () { | |
2818 | + var data = this._data; | |
2819 | + | |
2820 | + this._milliseconds = mathAbs(this._milliseconds); | |
2821 | + this._days = mathAbs(this._days); | |
2822 | + this._months = mathAbs(this._months); | |
2823 | + | |
2824 | + data.milliseconds = mathAbs(data.milliseconds); | |
2825 | + data.seconds = mathAbs(data.seconds); | |
2826 | + data.minutes = mathAbs(data.minutes); | |
2827 | + data.hours = mathAbs(data.hours); | |
2828 | + data.months = mathAbs(data.months); | |
2829 | + data.years = mathAbs(data.years); | |
2830 | + | |
2831 | + return this; | |
2832 | + } | |
2833 | + | |
2834 | + function duration_add_subtract__addSubtract (duration, input, value, direction) { | |
2835 | + var other = create__createDuration(input, value); | |
2836 | + | |
2837 | + duration._milliseconds += direction * other._milliseconds; | |
2838 | + duration._days += direction * other._days; | |
2839 | + duration._months += direction * other._months; | |
2840 | + | |
2841 | + return duration._bubble(); | |
2842 | + } | |
2843 | + | |
2844 | + // supports only 2.0-style add(1, 's') or add(duration) | |
2845 | + function duration_add_subtract__add (input, value) { | |
2846 | + return duration_add_subtract__addSubtract(this, input, value, 1); | |
2847 | + } | |
2848 | + | |
2849 | + // supports only 2.0-style subtract(1, 's') or subtract(duration) | |
2850 | + function duration_add_subtract__subtract (input, value) { | |
2851 | + return duration_add_subtract__addSubtract(this, input, value, -1); | |
2852 | + } | |
2853 | + | |
2854 | + function absCeil (number) { | |
2855 | + if (number < 0) { | |
2856 | + return Math.floor(number); | |
2857 | + } else { | |
2858 | + return Math.ceil(number); | |
2859 | + } | |
2860 | + } | |
2861 | + | |
2862 | + function bubble () { | |
2863 | + var milliseconds = this._milliseconds; | |
2864 | + var days = this._days; | |
2865 | + var months = this._months; | |
2866 | + var data = this._data; | |
2867 | + var seconds, minutes, hours, years, monthsFromDays; | |
2868 | + | |
2869 | + // if we have a mix of positive and negative values, bubble down first | |
2870 | + // check: https://github.com/moment/moment/issues/2166 | |
2871 | + if (!((milliseconds >= 0 && days >= 0 && months >= 0) || | |
2872 | + (milliseconds <= 0 && days <= 0 && months <= 0))) { | |
2873 | + milliseconds += absCeil(monthsToDays(months) + days) * 864e5; | |
2874 | + days = 0; | |
2875 | + months = 0; | |
2876 | + } | |
2877 | + | |
2878 | + // The following code bubbles up values, see the tests for | |
2879 | + // examples of what that means. | |
2880 | + data.milliseconds = milliseconds % 1000; | |
2881 | + | |
2882 | + seconds = absFloor(milliseconds / 1000); | |
2883 | + data.seconds = seconds % 60; | |
2884 | + | |
2885 | + minutes = absFloor(seconds / 60); | |
2886 | + data.minutes = minutes % 60; | |
2887 | + | |
2888 | + hours = absFloor(minutes / 60); | |
2889 | + data.hours = hours % 24; | |
2890 | + | |
2891 | + days += absFloor(hours / 24); | |
2892 | + | |
2893 | + // convert days to months | |
2894 | + monthsFromDays = absFloor(daysToMonths(days)); | |
2895 | + months += monthsFromDays; | |
2896 | + days -= absCeil(monthsToDays(monthsFromDays)); | |
2897 | + | |
2898 | + // 12 months -> 1 year | |
2899 | + years = absFloor(months / 12); | |
2900 | + months %= 12; | |
2901 | + | |
2902 | + data.days = days; | |
2903 | + data.months = months; | |
2904 | + data.years = years; | |
2905 | + | |
2906 | + return this; | |
2907 | + } | |
2908 | + | |
2909 | + function daysToMonths (days) { | |
2910 | + // 400 years have 146097 days (taking into account leap year rules) | |
2911 | + // 400 years have 12 months === 4800 | |
2912 | + return days * 4800 / 146097; | |
2913 | + } | |
2914 | + | |
2915 | + function monthsToDays (months) { | |
2916 | + // the reverse of daysToMonths | |
2917 | + return months * 146097 / 4800; | |
2918 | + } | |
2919 | + | |
2920 | + function as (units) { | |
2921 | + var days; | |
2922 | + var months; | |
2923 | + var milliseconds = this._milliseconds; | |
2924 | + | |
2925 | + units = normalizeUnits(units); | |
2926 | + | |
2927 | + if (units === 'month' || units === 'year') { | |
2928 | + days = this._days + milliseconds / 864e5; | |
2929 | + months = this._months + daysToMonths(days); | |
2930 | + return units === 'month' ? months : months / 12; | |
2931 | + } else { | |
2932 | + // handle milliseconds separately because of floating point math errors (issue #1867) | |
2933 | + days = this._days + Math.round(monthsToDays(this._months)); | |
2934 | + switch (units) { | |
2935 | + case 'week' : return days / 7 + milliseconds / 6048e5; | |
2936 | + case 'day' : return days + milliseconds / 864e5; | |
2937 | + case 'hour' : return days * 24 + milliseconds / 36e5; | |
2938 | + case 'minute' : return days * 1440 + milliseconds / 6e4; | |
2939 | + case 'second' : return days * 86400 + milliseconds / 1000; | |
2940 | + // Math.floor prevents floating point math errors here | |
2941 | + case 'millisecond': return Math.floor(days * 864e5) + milliseconds; | |
2942 | + default: throw new Error('Unknown unit ' + units); | |
2943 | + } | |
2944 | + } | |
2945 | + } | |
2946 | + | |
2947 | + // TODO: Use this.as('ms')? | |
2948 | + function duration_as__valueOf () { | |
2949 | + return ( | |
2950 | + this._milliseconds + | |
2951 | + this._days * 864e5 + | |
2952 | + (this._months % 12) * 2592e6 + | |
2953 | + toInt(this._months / 12) * 31536e6 | |
2954 | + ); | |
2955 | + } | |
2956 | + | |
2957 | + function makeAs (alias) { | |
2958 | + return function () { | |
2959 | + return this.as(alias); | |
2960 | + }; | |
2961 | + } | |
2962 | + | |
2963 | + var asMilliseconds = makeAs('ms'); | |
2964 | + var asSeconds = makeAs('s'); | |
2965 | + var asMinutes = makeAs('m'); | |
2966 | + var asHours = makeAs('h'); | |
2967 | + var asDays = makeAs('d'); | |
2968 | + var asWeeks = makeAs('w'); | |
2969 | + var asMonths = makeAs('M'); | |
2970 | + var asYears = makeAs('y'); | |
2971 | + | |
2972 | + function duration_get__get (units) { | |
2973 | + units = normalizeUnits(units); | |
2974 | + return this[units + 's'](); | |
2975 | + } | |
2976 | + | |
2977 | + function makeGetter(name) { | |
2978 | + return function () { | |
2979 | + return this._data[name]; | |
2980 | + }; | |
2981 | + } | |
2982 | + | |
2983 | + var milliseconds = makeGetter('milliseconds'); | |
2984 | + var seconds = makeGetter('seconds'); | |
2985 | + var minutes = makeGetter('minutes'); | |
2986 | + var hours = makeGetter('hours'); | |
2987 | + var days = makeGetter('days'); | |
2988 | + var months = makeGetter('months'); | |
2989 | + var years = makeGetter('years'); | |
2990 | + | |
2991 | + function weeks () { | |
2992 | + return absFloor(this.days() / 7); | |
2993 | + } | |
2994 | + | |
2995 | + var round = Math.round; | |
2996 | + var thresholds = { | |
2997 | + s: 45, // seconds to minute | |
2998 | + m: 45, // minutes to hour | |
2999 | + h: 22, // hours to day | |
3000 | + d: 26, // days to month | |
3001 | + M: 11 // months to year | |
3002 | + }; | |
3003 | + | |
3004 | + // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize | |
3005 | + function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) { | |
3006 | + return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture); | |
3007 | + } | |
3008 | + | |
3009 | + function duration_humanize__relativeTime (posNegDuration, withoutSuffix, locale) { | |
3010 | + var duration = create__createDuration(posNegDuration).abs(); | |
3011 | + var seconds = round(duration.as('s')); | |
3012 | + var minutes = round(duration.as('m')); | |
3013 | + var hours = round(duration.as('h')); | |
3014 | + var days = round(duration.as('d')); | |
3015 | + var months = round(duration.as('M')); | |
3016 | + var years = round(duration.as('y')); | |
3017 | + | |
3018 | + var a = seconds < thresholds.s && ['s', seconds] || | |
3019 | + minutes === 1 && ['m'] || | |
3020 | + minutes < thresholds.m && ['mm', minutes] || | |
3021 | + hours === 1 && ['h'] || | |
3022 | + hours < thresholds.h && ['hh', hours] || | |
3023 | + days === 1 && ['d'] || | |
3024 | + days < thresholds.d && ['dd', days] || | |
3025 | + months === 1 && ['M'] || | |
3026 | + months < thresholds.M && ['MM', months] || | |
3027 | + years === 1 && ['y'] || ['yy', years]; | |
3028 | + | |
3029 | + a[2] = withoutSuffix; | |
3030 | + a[3] = +posNegDuration > 0; | |
3031 | + a[4] = locale; | |
3032 | + return substituteTimeAgo.apply(null, a); | |
3033 | + } | |
3034 | + | |
3035 | + // This function allows you to set a threshold for relative time strings | |
3036 | + function duration_humanize__getSetRelativeTimeThreshold (threshold, limit) { | |
3037 | + if (thresholds[threshold] === undefined) { | |
3038 | + return false; | |
3039 | + } | |
3040 | + if (limit === undefined) { | |
3041 | + return thresholds[threshold]; | |
3042 | + } | |
3043 | + thresholds[threshold] = limit; | |
3044 | + return true; | |
3045 | + } | |
3046 | + | |
3047 | + function humanize (withSuffix) { | |
3048 | + var locale = this.localeData(); | |
3049 | + var output = duration_humanize__relativeTime(this, !withSuffix, locale); | |
3050 | + | |
3051 | + if (withSuffix) { | |
3052 | + output = locale.pastFuture(+this, output); | |
3053 | + } | |
3054 | + | |
3055 | + return locale.postformat(output); | |
3056 | + } | |
3057 | + | |
3058 | + var iso_string__abs = Math.abs; | |
3059 | + | |
3060 | + function iso_string__toISOString() { | |
3061 | + // for ISO strings we do not use the normal bubbling rules: | |
3062 | + // * milliseconds bubble up until they become hours | |
3063 | + // * days do not bubble at all | |
3064 | + // * months bubble up until they become years | |
3065 | + // This is because there is no context-free conversion between hours and days | |
3066 | + // (think of clock changes) | |
3067 | + // and also not between days and months (28-31 days per month) | |
3068 | + var seconds = iso_string__abs(this._milliseconds) / 1000; | |
3069 | + var days = iso_string__abs(this._days); | |
3070 | + var months = iso_string__abs(this._months); | |
3071 | + var minutes, hours, years; | |
3072 | + | |
3073 | + // 3600 seconds -> 60 minutes -> 1 hour | |
3074 | + minutes = absFloor(seconds / 60); | |
3075 | + hours = absFloor(minutes / 60); | |
3076 | + seconds %= 60; | |
3077 | + minutes %= 60; | |
3078 | + | |
3079 | + // 12 months -> 1 year | |
3080 | + years = absFloor(months / 12); | |
3081 | + months %= 12; | |
3082 | + | |
3083 | + | |
3084 | + // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js | |
3085 | + var Y = years; | |
3086 | + var M = months; | |
3087 | + var D = days; | |
3088 | + var h = hours; | |
3089 | + var m = minutes; | |
3090 | + var s = seconds; | |
3091 | + var total = this.asSeconds(); | |
3092 | + | |
3093 | + if (!total) { | |
3094 | + // this is the same as C#'s (Noda) and python (isodate)... | |
3095 | + // but not other JS (goog.date) | |
3096 | + return 'P0D'; | |
3097 | + } | |
3098 | + | |
3099 | + return (total < 0 ? '-' : '') + | |
3100 | + 'P' + | |
3101 | + (Y ? Y + 'Y' : '') + | |
3102 | + (M ? M + 'M' : '') + | |
3103 | + (D ? D + 'D' : '') + | |
3104 | + ((h || m || s) ? 'T' : '') + | |
3105 | + (h ? h + 'H' : '') + | |
3106 | + (m ? m + 'M' : '') + | |
3107 | + (s ? s + 'S' : ''); | |
3108 | + } | |
3109 | + | |
3110 | + var duration_prototype__proto = Duration.prototype; | |
3111 | + | |
3112 | + duration_prototype__proto.abs = duration_abs__abs; | |
3113 | + duration_prototype__proto.add = duration_add_subtract__add; | |
3114 | + duration_prototype__proto.subtract = duration_add_subtract__subtract; | |
3115 | + duration_prototype__proto.as = as; | |
3116 | + duration_prototype__proto.asMilliseconds = asMilliseconds; | |
3117 | + duration_prototype__proto.asSeconds = asSeconds; | |
3118 | + duration_prototype__proto.asMinutes = asMinutes; | |
3119 | + duration_prototype__proto.asHours = asHours; | |
3120 | + duration_prototype__proto.asDays = asDays; | |
3121 | + duration_prototype__proto.asWeeks = asWeeks; | |
3122 | + duration_prototype__proto.asMonths = asMonths; | |
3123 | + duration_prototype__proto.asYears = asYears; | |
3124 | + duration_prototype__proto.valueOf = duration_as__valueOf; | |
3125 | + duration_prototype__proto._bubble = bubble; | |
3126 | + duration_prototype__proto.get = duration_get__get; | |
3127 | + duration_prototype__proto.milliseconds = milliseconds; | |
3128 | + duration_prototype__proto.seconds = seconds; | |
3129 | + duration_prototype__proto.minutes = minutes; | |
3130 | + duration_prototype__proto.hours = hours; | |
3131 | + duration_prototype__proto.days = days; | |
3132 | + duration_prototype__proto.weeks = weeks; | |
3133 | + duration_prototype__proto.months = months; | |
3134 | + duration_prototype__proto.years = years; | |
3135 | + duration_prototype__proto.humanize = humanize; | |
3136 | + duration_prototype__proto.toISOString = iso_string__toISOString; | |
3137 | + duration_prototype__proto.toString = iso_string__toISOString; | |
3138 | + duration_prototype__proto.toJSON = iso_string__toISOString; | |
3139 | + duration_prototype__proto.locale = locale; | |
3140 | + duration_prototype__proto.localeData = localeData; | |
3141 | + | |
3142 | + // Deprecations | |
3143 | + duration_prototype__proto.toIsoString = deprecate('toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)', iso_string__toISOString); | |
3144 | + duration_prototype__proto.lang = lang; | |
3145 | + | |
3146 | + // Side effect imports | |
3147 | + | |
3148 | + addFormatToken('X', 0, 0, 'unix'); | |
3149 | + addFormatToken('x', 0, 0, 'valueOf'); | |
3150 | + | |
3151 | + // PARSING | |
3152 | + | |
3153 | + addRegexToken('x', matchSigned); | |
3154 | + addRegexToken('X', matchTimestamp); | |
3155 | + addParseToken('X', function (input, array, config) { | |
3156 | + config._d = new Date(parseFloat(input, 10) * 1000); | |
3157 | + }); | |
3158 | + addParseToken('x', function (input, array, config) { | |
3159 | + config._d = new Date(toInt(input)); | |
3160 | + }); | |
3161 | + | |
3162 | + // Side effect imports | |
3163 | + | |
3164 | + | |
3165 | + utils_hooks__hooks.version = '2.10.6'; | |
3166 | + | |
3167 | + setHookCallback(local__createLocal); | |
3168 | + | |
3169 | + utils_hooks__hooks.fn = momentPrototype; | |
3170 | + utils_hooks__hooks.min = min; | |
3171 | + utils_hooks__hooks.max = max; | |
3172 | + utils_hooks__hooks.utc = create_utc__createUTC; | |
3173 | + utils_hooks__hooks.unix = moment__createUnix; | |
3174 | + utils_hooks__hooks.months = lists__listMonths; | |
3175 | + utils_hooks__hooks.isDate = isDate; | |
3176 | + utils_hooks__hooks.locale = locale_locales__getSetGlobalLocale; | |
3177 | + utils_hooks__hooks.invalid = valid__createInvalid; | |
3178 | + utils_hooks__hooks.duration = create__createDuration; | |
3179 | + utils_hooks__hooks.isMoment = isMoment; | |
3180 | + utils_hooks__hooks.weekdays = lists__listWeekdays; | |
3181 | + utils_hooks__hooks.parseZone = moment__createInZone; | |
3182 | + utils_hooks__hooks.localeData = locale_locales__getLocale; | |
3183 | + utils_hooks__hooks.isDuration = isDuration; | |
3184 | + utils_hooks__hooks.monthsShort = lists__listMonthsShort; | |
3185 | + utils_hooks__hooks.weekdaysMin = lists__listWeekdaysMin; | |
3186 | + utils_hooks__hooks.defineLocale = defineLocale; | |
3187 | + utils_hooks__hooks.weekdaysShort = lists__listWeekdaysShort; | |
3188 | + utils_hooks__hooks.normalizeUnits = normalizeUnits; | |
3189 | + utils_hooks__hooks.relativeTimeThreshold = duration_humanize__getSetRelativeTimeThreshold; | |
3190 | + | |
3191 | + var _moment = utils_hooks__hooks; | |
3192 | + | |
3193 | + return _moment; | |
3194 | + | |
3195 | +})); | |
0 | 3196 | \ No newline at end of file | ... | ... |
resource/lib/bootstrap-datetimepicker/bootstrap-datetimepicker.css
0 → 100755
1 | +/*! | |
2 | + * Datetimepicker for Bootstrap | |
3 | + * | |
4 | + * Copyright 2012 Stefan Petre | |
5 | + * Improvements by Andrew Rowls | |
6 | + * Licensed under the Apache License v2.0 | |
7 | + * http://www.apache.org/licenses/LICENSE-2.0 | |
8 | + * | |
9 | + */ | |
10 | +.datetimepicker { | |
11 | + padding: 4px; | |
12 | + margin-top: 1px; | |
13 | + -webkit-border-radius: 4px; | |
14 | + -moz-border-radius: 4px; | |
15 | + border-radius: 4px; | |
16 | + direction: ltr; | |
17 | +} | |
18 | + | |
19 | +.datetimepicker-inline { | |
20 | + width: 220px; | |
21 | +} | |
22 | + | |
23 | +.datetimepicker.datetimepicker-rtl { | |
24 | + direction: rtl; | |
25 | +} | |
26 | + | |
27 | +.datetimepicker.datetimepicker-rtl table tr td span { | |
28 | + float: right; | |
29 | +} | |
30 | + | |
31 | +.datetimepicker-dropdown, .datetimepicker-dropdown-left { | |
32 | + top: 0; | |
33 | + left: 0; | |
34 | +} | |
35 | + | |
36 | +[class*=" datetimepicker-dropdown"]:before { | |
37 | + content: ''; | |
38 | + display: inline-block; | |
39 | + border-left: 7px solid transparent; | |
40 | + border-right: 7px solid transparent; | |
41 | + border-bottom: 7px solid #cccccc; | |
42 | + border-bottom-color: rgba(0, 0, 0, 0.2); | |
43 | + position: absolute; | |
44 | +} | |
45 | + | |
46 | +[class*=" datetimepicker-dropdown"]:after { | |
47 | + content: ''; | |
48 | + display: inline-block; | |
49 | + border-left: 6px solid transparent; | |
50 | + border-right: 6px solid transparent; | |
51 | + border-bottom: 6px solid #ffffff; | |
52 | + position: absolute; | |
53 | +} | |
54 | + | |
55 | +[class*=" datetimepicker-dropdown-top"]:before { | |
56 | + content: ''; | |
57 | + display: inline-block; | |
58 | + border-left: 7px solid transparent; | |
59 | + border-right: 7px solid transparent; | |
60 | + border-top: 7px solid #cccccc; | |
61 | + border-top-color: rgba(0, 0, 0, 0.2); | |
62 | + border-bottom: 0; | |
63 | +} | |
64 | + | |
65 | +[class*=" datetimepicker-dropdown-top"]:after { | |
66 | + content: ''; | |
67 | + display: inline-block; | |
68 | + border-left: 6px solid transparent; | |
69 | + border-right: 6px solid transparent; | |
70 | + border-top: 6px solid #ffffff; | |
71 | + border-bottom: 0; | |
72 | +} | |
73 | + | |
74 | +.datetimepicker-dropdown-bottom-left:before { | |
75 | + top: -7px; | |
76 | + right: 6px; | |
77 | +} | |
78 | + | |
79 | +.datetimepicker-dropdown-bottom-left:after { | |
80 | + top: -6px; | |
81 | + right: 7px; | |
82 | +} | |
83 | + | |
84 | +.datetimepicker-dropdown-bottom-right:before { | |
85 | + top: -7px; | |
86 | + left: 6px; | |
87 | +} | |
88 | + | |
89 | +.datetimepicker-dropdown-bottom-right:after { | |
90 | + top: -6px; | |
91 | + left: 7px; | |
92 | +} | |
93 | + | |
94 | +.datetimepicker-dropdown-top-left:before { | |
95 | + bottom: -7px; | |
96 | + right: 6px; | |
97 | +} | |
98 | + | |
99 | +.datetimepicker-dropdown-top-left:after { | |
100 | + bottom: -6px; | |
101 | + right: 7px; | |
102 | +} | |
103 | + | |
104 | +.datetimepicker-dropdown-top-right:before { | |
105 | + bottom: -7px; | |
106 | + left: 6px; | |
107 | +} | |
108 | + | |
109 | +.datetimepicker-dropdown-top-right:after { | |
110 | + bottom: -6px; | |
111 | + left: 7px; | |
112 | +} | |
113 | + | |
114 | +.datetimepicker > div { | |
115 | + display: none; | |
116 | +} | |
117 | + | |
118 | +.datetimepicker.minutes div.datetimepicker-minutes { | |
119 | + display: block; | |
120 | +} | |
121 | + | |
122 | +.datetimepicker.hours div.datetimepicker-hours { | |
123 | + display: block; | |
124 | +} | |
125 | + | |
126 | +.datetimepicker.days div.datetimepicker-days { | |
127 | + display: block; | |
128 | +} | |
129 | + | |
130 | +.datetimepicker.months div.datetimepicker-months { | |
131 | + display: block; | |
132 | +} | |
133 | + | |
134 | +.datetimepicker.years div.datetimepicker-years { | |
135 | + display: block; | |
136 | +} | |
137 | + | |
138 | +.datetimepicker table { | |
139 | + margin: 0; | |
140 | +} | |
141 | + | |
142 | +.datetimepicker td, | |
143 | +.datetimepicker th { | |
144 | + text-align: center; | |
145 | + width: 20px; | |
146 | + height: 20px; | |
147 | + -webkit-border-radius: 4px; | |
148 | + -moz-border-radius: 4px; | |
149 | + border-radius: 4px; | |
150 | + border: none; | |
151 | +} | |
152 | + | |
153 | +.table-striped .datetimepicker table tr td, | |
154 | +.table-striped .datetimepicker table tr th { | |
155 | + background-color: transparent; | |
156 | +} | |
157 | + | |
158 | +.datetimepicker table tr td.minute:hover { | |
159 | + background: #eeeeee; | |
160 | + cursor: pointer; | |
161 | +} | |
162 | + | |
163 | +.datetimepicker table tr td.hour:hover { | |
164 | + background: #eeeeee; | |
165 | + cursor: pointer; | |
166 | +} | |
167 | + | |
168 | +.datetimepicker table tr td.day:hover { | |
169 | + background: #eeeeee; | |
170 | + cursor: pointer; | |
171 | +} | |
172 | + | |
173 | +.datetimepicker table tr td.old, | |
174 | +.datetimepicker table tr td.new { | |
175 | + color: #999999; | |
176 | +} | |
177 | + | |
178 | +.datetimepicker table tr td.disabled, | |
179 | +.datetimepicker table tr td.disabled:hover { | |
180 | + background: none; | |
181 | + color: #999999; | |
182 | + cursor: default; | |
183 | +} | |
184 | + | |
185 | +.datetimepicker table tr td.today, | |
186 | +.datetimepicker table tr td.today:hover, | |
187 | +.datetimepicker table tr td.today.disabled, | |
188 | +.datetimepicker table tr td.today.disabled:hover { | |
189 | + background-color: #fde19a; | |
190 | + background-image: -moz-linear-gradient(top, #fdd49a, #fdf59a); | |
191 | + background-image: -ms-linear-gradient(top, #fdd49a, #fdf59a); | |
192 | + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fdd49a), to(#fdf59a)); | |
193 | + background-image: -webkit-linear-gradient(top, #fdd49a, #fdf59a); | |
194 | + background-image: -o-linear-gradient(top, #fdd49a, #fdf59a); | |
195 | + background-image: linear-gradient(to bottom, #fdd49a, #fdf59a); | |
196 | + background-repeat: repeat-x; | |
197 | + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fdd49a', endColorstr='#fdf59a', GradientType=0); | |
198 | + border-color: #fdf59a #fdf59a #fbed50; | |
199 | + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); | |
200 | + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); | |
201 | +} | |
202 | + | |
203 | +.datetimepicker table tr td.today:hover, | |
204 | +.datetimepicker table tr td.today:hover:hover, | |
205 | +.datetimepicker table tr td.today.disabled:hover, | |
206 | +.datetimepicker table tr td.today.disabled:hover:hover, | |
207 | +.datetimepicker table tr td.today:active, | |
208 | +.datetimepicker table tr td.today:hover:active, | |
209 | +.datetimepicker table tr td.today.disabled:active, | |
210 | +.datetimepicker table tr td.today.disabled:hover:active, | |
211 | +.datetimepicker table tr td.today.active, | |
212 | +.datetimepicker table tr td.today:hover.active, | |
213 | +.datetimepicker table tr td.today.disabled.active, | |
214 | +.datetimepicker table tr td.today.disabled:hover.active, | |
215 | +.datetimepicker table tr td.today.disabled, | |
216 | +.datetimepicker table tr td.today:hover.disabled, | |
217 | +.datetimepicker table tr td.today.disabled.disabled, | |
218 | +.datetimepicker table tr td.today.disabled:hover.disabled, | |
219 | +.datetimepicker table tr td.today[disabled], | |
220 | +.datetimepicker table tr td.today:hover[disabled], | |
221 | +.datetimepicker table tr td.today.disabled[disabled], | |
222 | +.datetimepicker table tr td.today.disabled:hover[disabled] { | |
223 | + background-color: #fdf59a; | |
224 | +} | |
225 | + | |
226 | +.datetimepicker table tr td.today:active, | |
227 | +.datetimepicker table tr td.today:hover:active, | |
228 | +.datetimepicker table tr td.today.disabled:active, | |
229 | +.datetimepicker table tr td.today.disabled:hover:active, | |
230 | +.datetimepicker table tr td.today.active, | |
231 | +.datetimepicker table tr td.today:hover.active, | |
232 | +.datetimepicker table tr td.today.disabled.active, | |
233 | +.datetimepicker table tr td.today.disabled:hover.active { | |
234 | + background-color: #fbf069; | |
235 | +} | |
236 | + | |
237 | +.datetimepicker table tr td.active, | |
238 | +.datetimepicker table tr td.active:hover, | |
239 | +.datetimepicker table tr td.active.disabled, | |
240 | +.datetimepicker table tr td.active.disabled:hover { | |
241 | + background-color: #006dcc; | |
242 | + background-image: -moz-linear-gradient(top, #0088cc, #0044cc); | |
243 | + background-image: -ms-linear-gradient(top, #0088cc, #0044cc); | |
244 | + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc)); | |
245 | + background-image: -webkit-linear-gradient(top, #0088cc, #0044cc); | |
246 | + background-image: -o-linear-gradient(top, #0088cc, #0044cc); | |
247 | + background-image: linear-gradient(to bottom, #0088cc, #0044cc); | |
248 | + background-repeat: repeat-x; | |
249 | + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc', endColorstr='#0044cc', GradientType=0); | |
250 | + border-color: #0044cc #0044cc #002a80; | |
251 | + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); | |
252 | + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); | |
253 | + color: #ffffff; | |
254 | + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); | |
255 | +} | |
256 | + | |
257 | +.datetimepicker table tr td.active:hover, | |
258 | +.datetimepicker table tr td.active:hover:hover, | |
259 | +.datetimepicker table tr td.active.disabled:hover, | |
260 | +.datetimepicker table tr td.active.disabled:hover:hover, | |
261 | +.datetimepicker table tr td.active:active, | |
262 | +.datetimepicker table tr td.active:hover:active, | |
263 | +.datetimepicker table tr td.active.disabled:active, | |
264 | +.datetimepicker table tr td.active.disabled:hover:active, | |
265 | +.datetimepicker table tr td.active.active, | |
266 | +.datetimepicker table tr td.active:hover.active, | |
267 | +.datetimepicker table tr td.active.disabled.active, | |
268 | +.datetimepicker table tr td.active.disabled:hover.active, | |
269 | +.datetimepicker table tr td.active.disabled, | |
270 | +.datetimepicker table tr td.active:hover.disabled, | |
271 | +.datetimepicker table tr td.active.disabled.disabled, | |
272 | +.datetimepicker table tr td.active.disabled:hover.disabled, | |
273 | +.datetimepicker table tr td.active[disabled], | |
274 | +.datetimepicker table tr td.active:hover[disabled], | |
275 | +.datetimepicker table tr td.active.disabled[disabled], | |
276 | +.datetimepicker table tr td.active.disabled:hover[disabled] { | |
277 | + background-color: #0044cc; | |
278 | +} | |
279 | + | |
280 | +.datetimepicker table tr td.active:active, | |
281 | +.datetimepicker table tr td.active:hover:active, | |
282 | +.datetimepicker table tr td.active.disabled:active, | |
283 | +.datetimepicker table tr td.active.disabled:hover:active, | |
284 | +.datetimepicker table tr td.active.active, | |
285 | +.datetimepicker table tr td.active:hover.active, | |
286 | +.datetimepicker table tr td.active.disabled.active, | |
287 | +.datetimepicker table tr td.active.disabled:hover.active { | |
288 | + background-color: #003399; | |
289 | +} | |
290 | + | |
291 | +.datetimepicker table tr td span { | |
292 | + display: block; | |
293 | + width: 23%; | |
294 | + height: 54px; | |
295 | + line-height: 54px; | |
296 | + float: left; | |
297 | + margin: 1%; | |
298 | + cursor: pointer; | |
299 | + -webkit-border-radius: 4px; | |
300 | + -moz-border-radius: 4px; | |
301 | + border-radius: 4px; | |
302 | +} | |
303 | + | |
304 | +.datetimepicker .datetimepicker-hours span { | |
305 | + height: 26px; | |
306 | + line-height: 26px; | |
307 | +} | |
308 | + | |
309 | +.datetimepicker .datetimepicker-hours table tr td span.hour_am, | |
310 | +.datetimepicker .datetimepicker-hours table tr td span.hour_pm { | |
311 | + width: 14.6%; | |
312 | +} | |
313 | + | |
314 | +.datetimepicker .datetimepicker-hours fieldset legend, | |
315 | +.datetimepicker .datetimepicker-minutes fieldset legend { | |
316 | + margin-bottom: inherit; | |
317 | + line-height: 30px; | |
318 | +} | |
319 | + | |
320 | +.datetimepicker .datetimepicker-minutes span { | |
321 | + height: 26px; | |
322 | + line-height: 26px; | |
323 | +} | |
324 | + | |
325 | +.datetimepicker table tr td span:hover { | |
326 | + background: #eeeeee; | |
327 | +} | |
328 | + | |
329 | +.datetimepicker table tr td span.disabled, | |
330 | +.datetimepicker table tr td span.disabled:hover { | |
331 | + background: none; | |
332 | + color: #999999; | |
333 | + cursor: default; | |
334 | +} | |
335 | + | |
336 | +.datetimepicker table tr td span.active, | |
337 | +.datetimepicker table tr td span.active:hover, | |
338 | +.datetimepicker table tr td span.active.disabled, | |
339 | +.datetimepicker table tr td span.active.disabled:hover { | |
340 | + background-color: #006dcc; | |
341 | + background-image: -moz-linear-gradient(top, #0088cc, #0044cc); | |
342 | + background-image: -ms-linear-gradient(top, #0088cc, #0044cc); | |
343 | + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc)); | |
344 | + background-image: -webkit-linear-gradient(top, #0088cc, #0044cc); | |
345 | + background-image: -o-linear-gradient(top, #0088cc, #0044cc); | |
346 | + background-image: linear-gradient(to bottom, #0088cc, #0044cc); | |
347 | + background-repeat: repeat-x; | |
348 | + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc', endColorstr='#0044cc', GradientType=0); | |
349 | + border-color: #0044cc #0044cc #002a80; | |
350 | + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); | |
351 | + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); | |
352 | + color: #ffffff; | |
353 | + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); | |
354 | +} | |
355 | + | |
356 | +.datetimepicker table tr td span.active:hover, | |
357 | +.datetimepicker table tr td span.active:hover:hover, | |
358 | +.datetimepicker table tr td span.active.disabled:hover, | |
359 | +.datetimepicker table tr td span.active.disabled:hover:hover, | |
360 | +.datetimepicker table tr td span.active:active, | |
361 | +.datetimepicker table tr td span.active:hover:active, | |
362 | +.datetimepicker table tr td span.active.disabled:active, | |
363 | +.datetimepicker table tr td span.active.disabled:hover:active, | |
364 | +.datetimepicker table tr td span.active.active, | |
365 | +.datetimepicker table tr td span.active:hover.active, | |
366 | +.datetimepicker table tr td span.active.disabled.active, | |
367 | +.datetimepicker table tr td span.active.disabled:hover.active, | |
368 | +.datetimepicker table tr td span.active.disabled, | |
369 | +.datetimepicker table tr td span.active:hover.disabled, | |
370 | +.datetimepicker table tr td span.active.disabled.disabled, | |
371 | +.datetimepicker table tr td span.active.disabled:hover.disabled, | |
372 | +.datetimepicker table tr td span.active[disabled], | |
373 | +.datetimepicker table tr td span.active:hover[disabled], | |
374 | +.datetimepicker table tr td span.active.disabled[disabled], | |
375 | +.datetimepicker table tr td span.active.disabled:hover[disabled] { | |
376 | + background-color: #0044cc; | |
377 | +} | |
378 | + | |
379 | +.datetimepicker table tr td span.active:active, | |
380 | +.datetimepicker table tr td span.active:hover:active, | |
381 | +.datetimepicker table tr td span.active.disabled:active, | |
382 | +.datetimepicker table tr td span.active.disabled:hover:active, | |
383 | +.datetimepicker table tr td span.active.active, | |
384 | +.datetimepicker table tr td span.active:hover.active, | |
385 | +.datetimepicker table tr td span.active.disabled.active, | |
386 | +.datetimepicker table tr td span.active.disabled:hover.active { | |
387 | + background-color: #003399; | |
388 | +} | |
389 | + | |
390 | +.datetimepicker table tr td span.old { | |
391 | + color: #999999; | |
392 | +} | |
393 | + | |
394 | +.datetimepicker th.switch { | |
395 | + width: 145px; | |
396 | +} | |
397 | + | |
398 | +.datetimepicker th span.glyphicon { | |
399 | + pointer-events: none; | |
400 | +} | |
401 | + | |
402 | +.datetimepicker thead tr:first-child th, | |
403 | +.datetimepicker tfoot th { | |
404 | + cursor: pointer; | |
405 | +} | |
406 | + | |
407 | +.datetimepicker thead tr:first-child th:hover, | |
408 | +.datetimepicker tfoot th:hover { | |
409 | + background: #eeeeee; | |
410 | +} | |
411 | + | |
412 | +.input-append.date .add-on i, | |
413 | +.input-prepend.date .add-on i, | |
414 | +.input-group.date .input-group-addon span { | |
415 | + cursor: pointer; | |
416 | + width: 14px; | |
417 | + height: 14px; | |
418 | +} | ... | ... |
resource/lib/bootstrap-datetimepicker/bootstrap-datetimepicker.js
0 → 100755
1 | +/* ========================================================= | |
2 | + * bootstrap-datetimepicker.js | |
3 | + * ========================================================= | |
4 | + * Copyright 2012 Stefan Petre | |
5 | + * | |
6 | + * Improvements by Andrew Rowls | |
7 | + * Improvements by Sébastien Malot | |
8 | + * Improvements by Yun Lai | |
9 | + * Improvements by Kenneth Henderick | |
10 | + * Improvements by CuGBabyBeaR | |
11 | + * Improvements by Christian Vaas <auspex@auspex.eu> | |
12 | + * | |
13 | + * Project URL : http://www.malot.fr/bootstrap-datetimepicker | |
14 | + * | |
15 | + * Licensed under the Apache License, Version 2.0 (the "License"); | |
16 | + * you may not use this file except in compliance with the License. | |
17 | + * You may obtain a copy of the License at | |
18 | + * | |
19 | + * http://www.apache.org/licenses/LICENSE-2.0 | |
20 | + * | |
21 | + * Unless required by applicable law or agreed to in writing, software | |
22 | + * distributed under the License is distributed on an "AS IS" BASIS, | |
23 | + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
24 | + * See the License for the specific language governing permissions and | |
25 | + * limitations under the License. | |
26 | + * ========================================================= */ | |
27 | + | |
28 | +(function(factory){ | |
29 | + if (typeof define === 'function' && define.amd) | |
30 | + define(['jquery'], factory); | |
31 | + else if (typeof exports === 'object') | |
32 | + factory(require('jquery')); | |
33 | + else | |
34 | + factory(jQuery); | |
35 | + | |
36 | +}(function($, undefined){ | |
37 | + | |
38 | + // Add ECMA262-5 Array methods if not supported natively (IE8) | |
39 | + if (!('indexOf' in Array.prototype)) { | |
40 | + Array.prototype.indexOf = function (find, i) { | |
41 | + if (i === undefined) i = 0; | |
42 | + if (i < 0) i += this.length; | |
43 | + if (i < 0) i = 0; | |
44 | + for (var n = this.length; i < n; i++) { | |
45 | + if (i in this && this[i] === find) { | |
46 | + return i; | |
47 | + } | |
48 | + } | |
49 | + return -1; | |
50 | + } | |
51 | + } | |
52 | + | |
53 | + // Add timezone abbreviation support for ie6+, Chrome, Firefox | |
54 | + function timeZoneAbbreviation() { | |
55 | + var abbreviation, date, formattedStr, i, len, matchedStrings, ref, str; | |
56 | + date = (new Date()).toString(); | |
57 | + formattedStr = ((ref = date.split('(')[1]) != null ? ref.slice(0, -1) : 0) || date.split(' '); | |
58 | + if (formattedStr instanceof Array) { | |
59 | + matchedStrings = []; | |
60 | + for (var i = 0, len = formattedStr.length; i < len; i++) { | |
61 | + str = formattedStr[i]; | |
62 | + if ((abbreviation = (ref = str.match(/\b[A-Z]+\b/)) !== null) ? ref[0] : 0) { | |
63 | + matchedStrings.push(abbreviation); | |
64 | + } | |
65 | + } | |
66 | + formattedStr = matchedStrings.pop(); | |
67 | + } | |
68 | + return formattedStr; | |
69 | + } | |
70 | + | |
71 | + function UTCDate() { | |
72 | + return new Date(Date.UTC.apply(Date, arguments)); | |
73 | + } | |
74 | + | |
75 | + // Picker object | |
76 | + var Datetimepicker = function (element, options) { | |
77 | + var that = this; | |
78 | + | |
79 | + this.element = $(element); | |
80 | + | |
81 | + // add container for single page application | |
82 | + // when page switch the datetimepicker div will be removed also. | |
83 | + this.container = options.container || 'body'; | |
84 | + | |
85 | + this.language = options.language || this.element.data('date-language') || 'en'; | |
86 | + this.language = this.language in dates ? this.language : this.language.split('-')[0]; // fr-CA fallback to fr | |
87 | + this.language = this.language in dates ? this.language : 'en'; | |
88 | + this.isRTL = dates[this.language].rtl || false; | |
89 | + this.formatType = options.formatType || this.element.data('format-type') || 'standard'; | |
90 | + this.format = DPGlobal.parseFormat(options.format || this.element.data('date-format') || dates[this.language].format || DPGlobal.getDefaultFormat(this.formatType, 'input'), this.formatType); | |
91 | + this.isInline = false; | |
92 | + this.isVisible = false; | |
93 | + this.isInput = this.element.is('input'); | |
94 | + this.fontAwesome = options.fontAwesome || this.element.data('font-awesome') || false; | |
95 | + | |
96 | + this.bootcssVer = options.bootcssVer || (this.isInput ? (this.element.is('.form-control') ? 3 : 2) : ( this.bootcssVer = this.element.is('.input-group') ? 3 : 2 )); | |
97 | + | |
98 | + this.component = this.element.is('.date') ? ( this.bootcssVer === 3 ? this.element.find('.input-group-addon .glyphicon-th, .input-group-addon .glyphicon-time, .input-group-addon .glyphicon-remove, .input-group-addon .glyphicon-calendar, .input-group-addon .fa-calendar, .input-group-addon .fa-clock-o').parent() : this.element.find('.add-on .icon-th, .add-on .icon-time, .add-on .icon-calendar, .add-on .fa-calendar, .add-on .fa-clock-o').parent()) : false; | |
99 | + this.componentReset = this.element.is('.date') ? ( this.bootcssVer === 3 ? this.element.find('.input-group-addon .glyphicon-remove, .input-group-addon .fa-times').parent():this.element.find('.add-on .icon-remove, .add-on .fa-times').parent()) : false; | |
100 | + this.hasInput = this.component && this.element.find('input').length; | |
101 | + if (this.component && this.component.length === 0) { | |
102 | + this.component = false; | |
103 | + } | |
104 | + this.linkField = options.linkField || this.element.data('link-field') || false; | |
105 | + this.linkFormat = DPGlobal.parseFormat(options.linkFormat || this.element.data('link-format') || DPGlobal.getDefaultFormat(this.formatType, 'link'), this.formatType); | |
106 | + this.minuteStep = options.minuteStep || this.element.data('minute-step') || 5; | |
107 | + this.pickerPosition = options.pickerPosition || this.element.data('picker-position') || 'bottom-right'; | |
108 | + this.showMeridian = options.showMeridian || this.element.data('show-meridian') || false; | |
109 | + this.initialDate = options.initialDate || new Date(); | |
110 | + this.zIndex = options.zIndex || this.element.data('z-index') || undefined; | |
111 | + this.title = typeof options.title === 'undefined' ? false : options.title; | |
112 | + this.timezone = options.timezone || timeZoneAbbreviation(); | |
113 | + | |
114 | + this.icons = { | |
115 | + leftArrow: this.fontAwesome ? 'fa-arrow-left' : (this.bootcssVer === 3 ? 'glyphicon-arrow-left' : 'icon-arrow-left'), | |
116 | + rightArrow: this.fontAwesome ? 'fa-arrow-right' : (this.bootcssVer === 3 ? 'glyphicon-arrow-right' : 'icon-arrow-right') | |
117 | + } | |
118 | + this.icontype = this.fontAwesome ? 'fa' : 'glyphicon'; | |
119 | + | |
120 | + this._attachEvents(); | |
121 | + | |
122 | + this.clickedOutside = function (e) { | |
123 | + // Clicked outside the datetimepicker, hide it | |
124 | + if ($(e.target).closest('.datetimepicker').length === 0) { | |
125 | + that.hide(); | |
126 | + } | |
127 | + } | |
128 | + | |
129 | + this.formatViewType = 'datetime'; | |
130 | + if ('formatViewType' in options) { | |
131 | + this.formatViewType = options.formatViewType; | |
132 | + } else if ('formatViewType' in this.element.data()) { | |
133 | + this.formatViewType = this.element.data('formatViewType'); | |
134 | + } | |
135 | + | |
136 | + this.minView = 0; | |
137 | + if ('minView' in options) { | |
138 | + this.minView = options.minView; | |
139 | + } else if ('minView' in this.element.data()) { | |
140 | + this.minView = this.element.data('min-view'); | |
141 | + } | |
142 | + this.minView = DPGlobal.convertViewMode(this.minView); | |
143 | + | |
144 | + this.maxView = DPGlobal.modes.length - 1; | |
145 | + if ('maxView' in options) { | |
146 | + this.maxView = options.maxView; | |
147 | + } else if ('maxView' in this.element.data()) { | |
148 | + this.maxView = this.element.data('max-view'); | |
149 | + } | |
150 | + this.maxView = DPGlobal.convertViewMode(this.maxView); | |
151 | + | |
152 | + this.wheelViewModeNavigation = false; | |
153 | + if ('wheelViewModeNavigation' in options) { | |
154 | + this.wheelViewModeNavigation = options.wheelViewModeNavigation; | |
155 | + } else if ('wheelViewModeNavigation' in this.element.data()) { | |
156 | + this.wheelViewModeNavigation = this.element.data('view-mode-wheel-navigation'); | |
157 | + } | |
158 | + | |
159 | + this.wheelViewModeNavigationInverseDirection = false; | |
160 | + | |
161 | + if ('wheelViewModeNavigationInverseDirection' in options) { | |
162 | + this.wheelViewModeNavigationInverseDirection = options.wheelViewModeNavigationInverseDirection; | |
163 | + } else if ('wheelViewModeNavigationInverseDirection' in this.element.data()) { | |
164 | + this.wheelViewModeNavigationInverseDirection = this.element.data('view-mode-wheel-navigation-inverse-dir'); | |
165 | + } | |
166 | + | |
167 | + this.wheelViewModeNavigationDelay = 100; | |
168 | + if ('wheelViewModeNavigationDelay' in options) { | |
169 | + this.wheelViewModeNavigationDelay = options.wheelViewModeNavigationDelay; | |
170 | + } else if ('wheelViewModeNavigationDelay' in this.element.data()) { | |
171 | + this.wheelViewModeNavigationDelay = this.element.data('view-mode-wheel-navigation-delay'); | |
172 | + } | |
173 | + | |
174 | + this.startViewMode = 2; | |
175 | + if ('startView' in options) { | |
176 | + this.startViewMode = options.startView; | |
177 | + } else if ('startView' in this.element.data()) { | |
178 | + this.startViewMode = this.element.data('start-view'); | |
179 | + } | |
180 | + this.startViewMode = DPGlobal.convertViewMode(this.startViewMode); | |
181 | + this.viewMode = this.startViewMode; | |
182 | + | |
183 | + this.viewSelect = this.minView; | |
184 | + if ('viewSelect' in options) { | |
185 | + this.viewSelect = options.viewSelect; | |
186 | + } else if ('viewSelect' in this.element.data()) { | |
187 | + this.viewSelect = this.element.data('view-select'); | |
188 | + } | |
189 | + this.viewSelect = DPGlobal.convertViewMode(this.viewSelect); | |
190 | + | |
191 | + this.forceParse = true; | |
192 | + if ('forceParse' in options) { | |
193 | + this.forceParse = options.forceParse; | |
194 | + } else if ('dateForceParse' in this.element.data()) { | |
195 | + this.forceParse = this.element.data('date-force-parse'); | |
196 | + } | |
197 | + var template = this.bootcssVer === 3 ? DPGlobal.templateV3 : DPGlobal.template; | |
198 | + while (template.indexOf('{iconType}') !== -1) { | |
199 | + template = template.replace('{iconType}', this.icontype); | |
200 | + } | |
201 | + while (template.indexOf('{leftArrow}') !== -1) { | |
202 | + template = template.replace('{leftArrow}', this.icons.leftArrow); | |
203 | + } | |
204 | + while (template.indexOf('{rightArrow}') !== -1) { | |
205 | + template = template.replace('{rightArrow}', this.icons.rightArrow); | |
206 | + } | |
207 | + this.picker = $(template) | |
208 | + .appendTo(this.isInline ? this.element : this.container) // 'body') | |
209 | + .on({ | |
210 | + click: $.proxy(this.click, this), | |
211 | + mousedown: $.proxy(this.mousedown, this) | |
212 | + }); | |
213 | + | |
214 | + if (this.wheelViewModeNavigation) { | |
215 | + if ($.fn.mousewheel) { | |
216 | + this.picker.on({mousewheel: $.proxy(this.mousewheel, this)}); | |
217 | + } else { | |
218 | + console.log('Mouse Wheel event is not supported. Please include the jQuery Mouse Wheel plugin before enabling this option'); | |
219 | + } | |
220 | + } | |
221 | + | |
222 | + if (this.isInline) { | |
223 | + this.picker.addClass('datetimepicker-inline'); | |
224 | + } else { | |
225 | + this.picker.addClass('datetimepicker-dropdown-' + this.pickerPosition + ' dropdown-menu'); | |
226 | + } | |
227 | + if (this.isRTL) { | |
228 | + this.picker.addClass('datetimepicker-rtl'); | |
229 | + var selector = this.bootcssVer === 3 ? '.prev span, .next span' : '.prev i, .next i'; | |
230 | + this.picker.find(selector).toggleClass(this.icons.leftArrow + ' ' + this.icons.rightArrow); | |
231 | + } | |
232 | + | |
233 | + $(document).on('mousedown touchend', this.clickedOutside); | |
234 | + | |
235 | + this.autoclose = false; | |
236 | + if ('autoclose' in options) { | |
237 | + this.autoclose = options.autoclose; | |
238 | + } else if ('dateAutoclose' in this.element.data()) { | |
239 | + this.autoclose = this.element.data('date-autoclose'); | |
240 | + } | |
241 | + | |
242 | + this.keyboardNavigation = true; | |
243 | + if ('keyboardNavigation' in options) { | |
244 | + this.keyboardNavigation = options.keyboardNavigation; | |
245 | + } else if ('dateKeyboardNavigation' in this.element.data()) { | |
246 | + this.keyboardNavigation = this.element.data('date-keyboard-navigation'); | |
247 | + } | |
248 | + | |
249 | + this.todayBtn = (options.todayBtn || this.element.data('date-today-btn') || false); | |
250 | + this.clearBtn = (options.clearBtn || this.element.data('date-clear-btn') || false); | |
251 | + this.todayHighlight = (options.todayHighlight || this.element.data('date-today-highlight') || false); | |
252 | + | |
253 | + this.weekStart = 0; | |
254 | + if (typeof options.weekStart !== 'undefined') { | |
255 | + this.weekStart = options.weekStart; | |
256 | + } else if (typeof this.element.data('date-weekstart') !== 'undefined') { | |
257 | + this.weekStart = this.element.data('date-weekstart'); | |
258 | + } else if (typeof dates[this.language].weekStart !== 'undefined') { | |
259 | + this.weekStart = dates[this.language].weekStart; | |
260 | + } | |
261 | + this.weekStart = this.weekStart % 7; | |
262 | + this.weekEnd = ((this.weekStart + 6) % 7); | |
263 | + this.onRenderDay = function (date) { | |
264 | + var render = (options.onRenderDay || function () { return []; })(date); | |
265 | + if (typeof render === 'string') { | |
266 | + render = [render]; | |
267 | + } | |
268 | + var res = ['day']; | |
269 | + return res.concat((render ? render : [])); | |
270 | + }; | |
271 | + this.onRenderHour = function (date) { | |
272 | + var render = (options.onRenderHour || function () { return []; })(date); | |
273 | + var res = ['hour']; | |
274 | + if (typeof render === 'string') { | |
275 | + render = [render]; | |
276 | + } | |
277 | + return res.concat((render ? render : [])); | |
278 | + }; | |
279 | + this.onRenderMinute = function (date) { | |
280 | + var render = (options.onRenderMinute || function () { return []; })(date); | |
281 | + var res = ['minute']; | |
282 | + if (typeof render === 'string') { | |
283 | + render = [render]; | |
284 | + } | |
285 | + if (date < this.startDate || date > this.endDate) { | |
286 | + res.push('disabled'); | |
287 | + } else if (Math.floor(this.date.getUTCMinutes() / this.minuteStep) === Math.floor(date.getUTCMinutes() / this.minuteStep)) { | |
288 | + res.push('active'); | |
289 | + } | |
290 | + return res.concat((render ? render : [])); | |
291 | + }; | |
292 | + this.onRenderYear = function (date) { | |
293 | + var render = (options.onRenderYear || function () { return []; })(date); | |
294 | + var res = ['year']; | |
295 | + if (typeof render === 'string') { | |
296 | + render = [render]; | |
297 | + } | |
298 | + if (this.date.getUTCFullYear() === date.getUTCFullYear()) { | |
299 | + res.push('active'); | |
300 | + } | |
301 | + var currentYear = date.getUTCFullYear(); | |
302 | + var endYear = this.endDate.getUTCFullYear(); | |
303 | + if (date < this.startDate || currentYear > endYear) { | |
304 | + res.push('disabled'); | |
305 | + } | |
306 | + return res.concat((render ? render : [])); | |
307 | + } | |
308 | + this.onRenderMonth = function (date) { | |
309 | + var render = (options.onRenderMonth || function () { return []; })(date); | |
310 | + var res = ['month']; | |
311 | + if (typeof render === 'string') { | |
312 | + render = [render]; | |
313 | + } | |
314 | + return res.concat((render ? render : [])); | |
315 | + } | |
316 | + this.startDate = new Date(-8639968443048000); | |
317 | + this.endDate = new Date(8639968443048000); | |
318 | + this.datesDisabled = []; | |
319 | + this.daysOfWeekDisabled = []; | |
320 | + this.setStartDate(options.startDate || this.element.data('date-startdate')); | |
321 | + this.setEndDate(options.endDate || this.element.data('date-enddate')); | |
322 | + this.setDatesDisabled(options.datesDisabled || this.element.data('date-dates-disabled')); | |
323 | + this.setDaysOfWeekDisabled(options.daysOfWeekDisabled || this.element.data('date-days-of-week-disabled')); | |
324 | + this.setMinutesDisabled(options.minutesDisabled || this.element.data('date-minute-disabled')); | |
325 | + this.setHoursDisabled(options.hoursDisabled || this.element.data('date-hour-disabled')); | |
326 | + this.fillDow(); | |
327 | + this.fillMonths(); | |
328 | + this.update(); | |
329 | + this.showMode(); | |
330 | + | |
331 | + if (this.isInline) { | |
332 | + this.show(); | |
333 | + } | |
334 | + }; | |
335 | + | |
336 | + Datetimepicker.prototype = { | |
337 | + constructor: Datetimepicker, | |
338 | + | |
339 | + _events: [], | |
340 | + _attachEvents: function () { | |
341 | + this._detachEvents(); | |
342 | + if (this.isInput) { // single input | |
343 | + this._events = [ | |
344 | + [this.element, { | |
345 | + focus: $.proxy(this.show, this), | |
346 | + keyup: $.proxy(this.update, this), | |
347 | + keydown: $.proxy(this.keydown, this) | |
348 | + }] | |
349 | + ]; | |
350 | + } | |
351 | + else if (this.component && this.hasInput) { // component: input + button | |
352 | + this._events = [ | |
353 | + // For components that are not readonly, allow keyboard nav | |
354 | + [this.element.find('input'), { | |
355 | + focus: $.proxy(this.show, this), | |
356 | + keyup: $.proxy(this.update, this), | |
357 | + keydown: $.proxy(this.keydown, this) | |
358 | + }], | |
359 | + [this.component, { | |
360 | + click: $.proxy(this.show, this) | |
361 | + }] | |
362 | + ]; | |
363 | + if (this.componentReset) { | |
364 | + this._events.push([ | |
365 | + this.componentReset, | |
366 | + {click: $.proxy(this.reset, this)} | |
367 | + ]); | |
368 | + } | |
369 | + } | |
370 | + else if (this.element.is('div')) { // inline datetimepicker | |
371 | + this.isInline = true; | |
372 | + } | |
373 | + else { | |
374 | + this._events = [ | |
375 | + [this.element, { | |
376 | + click: $.proxy(this.show, this) | |
377 | + }] | |
378 | + ]; | |
379 | + } | |
380 | + for (var i = 0, el, ev; i < this._events.length; i++) { | |
381 | + el = this._events[i][0]; | |
382 | + ev = this._events[i][1]; | |
383 | + el.on(ev); | |
384 | + } | |
385 | + }, | |
386 | + | |
387 | + _detachEvents: function () { | |
388 | + for (var i = 0, el, ev; i < this._events.length; i++) { | |
389 | + el = this._events[i][0]; | |
390 | + ev = this._events[i][1]; | |
391 | + el.off(ev); | |
392 | + } | |
393 | + this._events = []; | |
394 | + }, | |
395 | + | |
396 | + show: function (e) { | |
397 | + this.picker.show(); | |
398 | + this.height = this.component ? this.component.outerHeight() : this.element.outerHeight(); | |
399 | + if (this.forceParse) { | |
400 | + this.update(); | |
401 | + } | |
402 | + this.place(); | |
403 | + $(window).on('resize', $.proxy(this.place, this)); | |
404 | + if (e) { | |
405 | + e.stopPropagation(); | |
406 | + e.preventDefault(); | |
407 | + } | |
408 | + this.isVisible = true; | |
409 | + this.element.trigger({ | |
410 | + type: 'show', | |
411 | + date: this.date | |
412 | + }); | |
413 | + }, | |
414 | + | |
415 | + hide: function () { | |
416 | + if (!this.isVisible) return; | |
417 | + if (this.isInline) return; | |
418 | + this.picker.hide(); | |
419 | + $(window).off('resize', this.place); | |
420 | + this.viewMode = this.startViewMode; | |
421 | + this.showMode(); | |
422 | + if (!this.isInput) { | |
423 | + $(document).off('mousedown', this.hide); | |
424 | + } | |
425 | + | |
426 | + if ( | |
427 | + this.forceParse && | |
428 | + ( | |
429 | + this.isInput && this.element.val() || | |
430 | + this.hasInput && this.element.find('input').val() | |
431 | + ) | |
432 | + ) | |
433 | + this.setValue(); | |
434 | + this.isVisible = false; | |
435 | + this.element.trigger({ | |
436 | + type: 'hide', | |
437 | + date: this.date | |
438 | + }); | |
439 | + }, | |
440 | + | |
441 | + remove: function () { | |
442 | + this._detachEvents(); | |
443 | + $(document).off('mousedown', this.clickedOutside); | |
444 | + this.picker.remove(); | |
445 | + delete this.picker; | |
446 | + delete this.element.data().datetimepicker; | |
447 | + }, | |
448 | + | |
449 | + getDate: function () { | |
450 | + var d = this.getUTCDate(); | |
451 | + if (d === null) { | |
452 | + return null; | |
453 | + } | |
454 | + return new Date(d.getTime() + (d.getTimezoneOffset() * 60000)); | |
455 | + }, | |
456 | + | |
457 | + getUTCDate: function () { | |
458 | + return this.date; | |
459 | + }, | |
460 | + | |
461 | + getInitialDate: function () { | |
462 | + return this.initialDate | |
463 | + }, | |
464 | + | |
465 | + setInitialDate: function (initialDate) { | |
466 | + this.initialDate = initialDate; | |
467 | + }, | |
468 | + | |
469 | + setDate: function (d) { | |
470 | + this.setUTCDate(new Date(d.getTime() - (d.getTimezoneOffset() * 60000))); | |
471 | + }, | |
472 | + | |
473 | + setUTCDate: function (d) { | |
474 | + if (d >= this.startDate && d <= this.endDate) { | |
475 | + this.date = d; | |
476 | + this.setValue(); | |
477 | + this.viewDate = this.date; | |
478 | + this.fill(); | |
479 | + } else { | |
480 | + this.element.trigger({ | |
481 | + type: 'outOfRange', | |
482 | + date: d, | |
483 | + startDate: this.startDate, | |
484 | + endDate: this.endDate | |
485 | + }); | |
486 | + } | |
487 | + }, | |
488 | + | |
489 | + setFormat: function (format) { | |
490 | + this.format = DPGlobal.parseFormat(format, this.formatType); | |
491 | + var element; | |
492 | + if (this.isInput) { | |
493 | + element = this.element; | |
494 | + } else if (this.component) { | |
495 | + element = this.element.find('input'); | |
496 | + } | |
497 | + if (element && element.val()) { | |
498 | + this.setValue(); | |
499 | + } | |
500 | + }, | |
501 | + | |
502 | + setValue: function () { | |
503 | + var formatted = this.getFormattedDate(); | |
504 | + if (!this.isInput) { | |
505 | + if (this.component) { | |
506 | + this.element.find('input').val(formatted); | |
507 | + } | |
508 | + this.element.data('date', formatted); | |
509 | + } else { | |
510 | + this.element.val(formatted); | |
511 | + } | |
512 | + if (this.linkField) { | |
513 | + $('#' + this.linkField).val(this.getFormattedDate(this.linkFormat)); | |
514 | + } | |
515 | + }, | |
516 | + | |
517 | + getFormattedDate: function (format) { | |
518 | + format = format || this.format; | |
519 | + return DPGlobal.formatDate(this.date, format, this.language, this.formatType, this.timezone); | |
520 | + }, | |
521 | + | |
522 | + setStartDate: function (startDate) { | |
523 | + this.startDate = startDate || this.startDate; | |
524 | + if (this.startDate.valueOf() !== 8639968443048000) { | |
525 | + this.startDate = DPGlobal.parseDate(this.startDate, this.format, this.language, this.formatType, this.timezone); | |
526 | + } | |
527 | + this.update(); | |
528 | + this.updateNavArrows(); | |
529 | + }, | |
530 | + | |
531 | + setEndDate: function (endDate) { | |
532 | + this.endDate = endDate || this.endDate; | |
533 | + if (this.endDate.valueOf() !== 8639968443048000) { | |
534 | + this.endDate = DPGlobal.parseDate(this.endDate, this.format, this.language, this.formatType, this.timezone); | |
535 | + } | |
536 | + this.update(); | |
537 | + this.updateNavArrows(); | |
538 | + }, | |
539 | + | |
540 | + setDatesDisabled: function (datesDisabled) { | |
541 | + this.datesDisabled = datesDisabled || []; | |
542 | + if (!$.isArray(this.datesDisabled)) { | |
543 | + this.datesDisabled = this.datesDisabled.split(/,\s*/); | |
544 | + } | |
545 | + var mThis = this; | |
546 | + this.datesDisabled = $.map(this.datesDisabled, function (d) { | |
547 | + return DPGlobal.parseDate(d, mThis.format, mThis.language, mThis.formatType, mThis.timezone).toDateString(); | |
548 | + }); | |
549 | + this.update(); | |
550 | + this.updateNavArrows(); | |
551 | + }, | |
552 | + | |
553 | + setTitle: function (selector, value) { | |
554 | + return this.picker.find(selector) | |
555 | + .find('th:eq(1)') | |
556 | + .text(this.title === false ? value : this.title); | |
557 | + }, | |
558 | + | |
559 | + setDaysOfWeekDisabled: function (daysOfWeekDisabled) { | |
560 | + this.daysOfWeekDisabled = daysOfWeekDisabled || []; | |
561 | + if (!$.isArray(this.daysOfWeekDisabled)) { | |
562 | + this.daysOfWeekDisabled = this.daysOfWeekDisabled.split(/,\s*/); | |
563 | + } | |
564 | + this.daysOfWeekDisabled = $.map(this.daysOfWeekDisabled, function (d) { | |
565 | + return parseInt(d, 10); | |
566 | + }); | |
567 | + this.update(); | |
568 | + this.updateNavArrows(); | |
569 | + }, | |
570 | + | |
571 | + setMinutesDisabled: function (minutesDisabled) { | |
572 | + this.minutesDisabled = minutesDisabled || []; | |
573 | + if (!$.isArray(this.minutesDisabled)) { | |
574 | + this.minutesDisabled = this.minutesDisabled.split(/,\s*/); | |
575 | + } | |
576 | + this.minutesDisabled = $.map(this.minutesDisabled, function (d) { | |
577 | + return parseInt(d, 10); | |
578 | + }); | |
579 | + this.update(); | |
580 | + this.updateNavArrows(); | |
581 | + }, | |
582 | + | |
583 | + setHoursDisabled: function (hoursDisabled) { | |
584 | + this.hoursDisabled = hoursDisabled || []; | |
585 | + if (!$.isArray(this.hoursDisabled)) { | |
586 | + this.hoursDisabled = this.hoursDisabled.split(/,\s*/); | |
587 | + } | |
588 | + this.hoursDisabled = $.map(this.hoursDisabled, function (d) { | |
589 | + return parseInt(d, 10); | |
590 | + }); | |
591 | + this.update(); | |
592 | + this.updateNavArrows(); | |
593 | + }, | |
594 | + | |
595 | + place: function () { | |
596 | + if (this.isInline) return; | |
597 | + | |
598 | + if (!this.zIndex) { | |
599 | + var index_highest = 0; | |
600 | + $('div').each(function () { | |
601 | + var index_current = parseInt($(this).css('zIndex'), 10); | |
602 | + if (index_current > index_highest) { | |
603 | + index_highest = index_current; | |
604 | + } | |
605 | + }); | |
606 | + this.zIndex = index_highest + 10; | |
607 | + } | |
608 | + | |
609 | + var offset, top, left, containerOffset; | |
610 | + if (this.container instanceof $) { | |
611 | + containerOffset = this.container.offset(); | |
612 | + } else { | |
613 | + containerOffset = $(this.container).offset(); | |
614 | + } | |
615 | + | |
616 | + if (this.component) { | |
617 | + offset = this.component.offset(); | |
618 | + left = offset.left; | |
619 | + if (this.pickerPosition === 'bottom-left' || this.pickerPosition === 'top-left') { | |
620 | + left += this.component.outerWidth() - this.picker.outerWidth(); | |
621 | + } | |
622 | + } else { | |
623 | + offset = this.element.offset(); | |
624 | + left = offset.left; | |
625 | + if (this.pickerPosition === 'bottom-left' || this.pickerPosition === 'top-left') { | |
626 | + left += this.element.outerWidth() - this.picker.outerWidth(); | |
627 | + } | |
628 | + } | |
629 | + | |
630 | + var bodyWidth = document.body.clientWidth || window.innerWidth; | |
631 | + if (left + 220 > bodyWidth) { | |
632 | + left = bodyWidth - 220; | |
633 | + } | |
634 | + | |
635 | + if (this.pickerPosition === 'top-left' || this.pickerPosition === 'top-right') { | |
636 | + top = offset.top - this.picker.outerHeight(); | |
637 | + } else { | |
638 | + top = offset.top + this.height; | |
639 | + } | |
640 | + | |
641 | + top = top - containerOffset.top; | |
642 | + left = left - containerOffset.left; | |
643 | + | |
644 | + this.picker.css({ | |
645 | + top: top, | |
646 | + left: left, | |
647 | + zIndex: this.zIndex | |
648 | + }); | |
649 | + }, | |
650 | + | |
651 | + hour_minute: "^([0-9]|0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]", | |
652 | + | |
653 | + update: function () { | |
654 | + var date, fromArgs = false; | |
655 | + if (arguments && arguments.length && (typeof arguments[0] === 'string' || arguments[0] instanceof Date)) { | |
656 | + date = arguments[0]; | |
657 | + fromArgs = true; | |
658 | + } else { | |
659 | + date = (this.isInput ? this.element.val() : this.element.find('input').val()) || this.element.data('date') || this.initialDate; | |
660 | + if (typeof date === 'string') { | |
661 | + date = date.replace(/^\s+|\s+$/g,''); | |
662 | + } | |
663 | + } | |
664 | + | |
665 | + if (!date) { | |
666 | + date = new Date(); | |
667 | + fromArgs = false; | |
668 | + } | |
669 | + | |
670 | + if (typeof date === "string") { | |
671 | + if (new RegExp(this.hour_minute).test(date) || new RegExp(this.hour_minute + ":[0-5][0-9]").test(date)) { | |
672 | + date = this.getDate() | |
673 | + } | |
674 | + } | |
675 | + | |
676 | + this.date = DPGlobal.parseDate(date, this.format, this.language, this.formatType, this.timezone); | |
677 | + | |
678 | + if (fromArgs) this.setValue(); | |
679 | + | |
680 | + if (this.date < this.startDate) { | |
681 | + this.viewDate = new Date(this.startDate); | |
682 | + } else if (this.date > this.endDate) { | |
683 | + this.viewDate = new Date(this.endDate); | |
684 | + } else { | |
685 | + this.viewDate = new Date(this.date); | |
686 | + } | |
687 | + this.fill(); | |
688 | + }, | |
689 | + | |
690 | + fillDow: function () { | |
691 | + var dowCnt = this.weekStart, | |
692 | + html = '<tr>'; | |
693 | + while (dowCnt < this.weekStart + 7) { | |
694 | + html += '<th class="dow">' + dates[this.language].daysMin[(dowCnt++) % 7] + '</th>'; | |
695 | + } | |
696 | + html += '</tr>'; | |
697 | + this.picker.find('.datetimepicker-days thead').append(html); | |
698 | + }, | |
699 | + | |
700 | + fillMonths: function () { | |
701 | + var html = ''; | |
702 | + var d = new Date(this.viewDate); | |
703 | + for (var i = 0; i < 12; i++) { | |
704 | + d.setUTCMonth(i); | |
705 | + var classes = this.onRenderMonth(d); | |
706 | + html += '<span class="' + classes.join(' ') + '">' + dates[this.language].monthsShort[i] + '</span>'; | |
707 | + } | |
708 | + this.picker.find('.datetimepicker-months td').html(html); | |
709 | + }, | |
710 | + | |
711 | + fill: function () { | |
712 | + if (!this.date || !this.viewDate) { | |
713 | + return; | |
714 | + } | |
715 | + var d = new Date(this.viewDate), | |
716 | + year = d.getUTCFullYear(), | |
717 | + month = d.getUTCMonth(), | |
718 | + dayMonth = d.getUTCDate(), | |
719 | + hours = d.getUTCHours(), | |
720 | + startYear = this.startDate.getUTCFullYear(), | |
721 | + startMonth = this.startDate.getUTCMonth(), | |
722 | + endYear = this.endDate.getUTCFullYear(), | |
723 | + endMonth = this.endDate.getUTCMonth() + 1, | |
724 | + currentDate = (new UTCDate(this.date.getUTCFullYear(), this.date.getUTCMonth(), this.date.getUTCDate())).valueOf(), | |
725 | + today = new Date(); | |
726 | + this.setTitle('.datetimepicker-days', dates[this.language].months[month] + ' ' + year) | |
727 | + if (this.formatViewType === 'time') { | |
728 | + var formatted = this.getFormattedDate(); | |
729 | + this.setTitle('.datetimepicker-hours', formatted); | |
730 | + this.setTitle('.datetimepicker-minutes', formatted); | |
731 | + } else { | |
732 | + this.setTitle('.datetimepicker-hours', dayMonth + ' ' + dates[this.language].months[month] + ' ' + year); | |
733 | + this.setTitle('.datetimepicker-minutes', dayMonth + ' ' + dates[this.language].months[month] + ' ' + year); | |
734 | + } | |
735 | + this.picker.find('tfoot th.today') | |
736 | + .text(dates[this.language].today || dates['en'].today) | |
737 | + .toggle(this.todayBtn !== false); | |
738 | + this.picker.find('tfoot th.clear') | |
739 | + .text(dates[this.language].clear || dates['en'].clear) | |
740 | + .toggle(this.clearBtn !== false); | |
741 | + this.updateNavArrows(); | |
742 | + this.fillMonths(); | |
743 | + var prevMonth = UTCDate(year, month - 1, 28, 0, 0, 0, 0), | |
744 | + day = DPGlobal.getDaysInMonth(prevMonth.getUTCFullYear(), prevMonth.getUTCMonth()); | |
745 | + prevMonth.setUTCDate(day); | |
746 | + prevMonth.setUTCDate(day - (prevMonth.getUTCDay() - this.weekStart + 7) % 7); | |
747 | + var nextMonth = new Date(prevMonth); | |
748 | + nextMonth.setUTCDate(nextMonth.getUTCDate() + 42); | |
749 | + nextMonth = nextMonth.valueOf(); | |
750 | + var html = []; | |
751 | + var classes; | |
752 | + while (prevMonth.valueOf() < nextMonth) { | |
753 | + if (prevMonth.getUTCDay() === this.weekStart) { | |
754 | + html.push('<tr>'); | |
755 | + } | |
756 | + classes = this.onRenderDay(prevMonth); | |
757 | + if (prevMonth.getUTCFullYear() < year || (prevMonth.getUTCFullYear() === year && prevMonth.getUTCMonth() < month)) { | |
758 | + classes.push('old'); | |
759 | + } else if (prevMonth.getUTCFullYear() > year || (prevMonth.getUTCFullYear() === year && prevMonth.getUTCMonth() > month)) { | |
760 | + classes.push('new'); | |
761 | + } | |
762 | + // Compare internal UTC date with local today, not UTC today | |
763 | + if (this.todayHighlight && | |
764 | + prevMonth.getUTCFullYear() === today.getFullYear() && | |
765 | + prevMonth.getUTCMonth() === today.getMonth() && | |
766 | + prevMonth.getUTCDate() === today.getDate()) { | |
767 | + classes.push('today'); | |
768 | + } | |
769 | + if (prevMonth.valueOf() === currentDate) { | |
770 | + classes.push('active'); | |
771 | + } | |
772 | + if ((prevMonth.valueOf() + 86400000) <= this.startDate || prevMonth.valueOf() > this.endDate || | |
773 | + $.inArray(prevMonth.getUTCDay(), this.daysOfWeekDisabled) !== -1 || | |
774 | + $.inArray(prevMonth.toDateString(), this.datesDisabled) !== -1) { | |
775 | + classes.push('disabled'); | |
776 | + } | |
777 | + html.push('<td class="' + classes.join(' ') + '">' + prevMonth.getUTCDate() + '</td>'); | |
778 | + if (prevMonth.getUTCDay() === this.weekEnd) { | |
779 | + html.push('</tr>'); | |
780 | + } | |
781 | + prevMonth.setUTCDate(prevMonth.getUTCDate() + 1); | |
782 | + } | |
783 | + this.picker.find('.datetimepicker-days tbody').empty().append(html.join('')); | |
784 | + | |
785 | + html = []; | |
786 | + var txt = '', meridian = '', meridianOld = ''; | |
787 | + var hoursDisabled = this.hoursDisabled || []; | |
788 | + d = new Date(this.viewDate) | |
789 | + for (var i = 0; i < 24; i++) { | |
790 | + d.setUTCHours(i); | |
791 | + classes = this.onRenderHour(d); | |
792 | + if (hoursDisabled.indexOf(i) !== -1) { | |
793 | + classes.push('disabled'); | |
794 | + } | |
795 | + var actual = UTCDate(year, month, dayMonth, i); | |
796 | + // We want the previous hour for the startDate | |
797 | + if ((actual.valueOf() + 3600000) <= this.startDate || actual.valueOf() > this.endDate) { | |
798 | + classes.push('disabled'); | |
799 | + } else if (hours === i) { | |
800 | + classes.push('active'); | |
801 | + } | |
802 | + if (this.showMeridian && dates[this.language].meridiem.length === 2) { | |
803 | + meridian = (i < 12 ? dates[this.language].meridiem[0] : dates[this.language].meridiem[1]); | |
804 | + if (meridian !== meridianOld) { | |
805 | + if (meridianOld !== '') { | |
806 | + html.push('</fieldset>'); | |
807 | + } | |
808 | + html.push('<fieldset class="hour"><legend>' + meridian.toUpperCase() + '</legend>'); | |
809 | + } | |
810 | + meridianOld = meridian; | |
811 | + txt = (i % 12 ? i % 12 : 12); | |
812 | + if (i < 12) { | |
813 | + classes.push('hour_am'); | |
814 | + } else { | |
815 | + classes.push('hour_pm'); | |
816 | + } | |
817 | + html.push('<span class="' + classes.join(' ') + '">' + txt + '</span>'); | |
818 | + if (i === 23) { | |
819 | + html.push('</fieldset>'); | |
820 | + } | |
821 | + } else { | |
822 | + txt = i + ':00'; | |
823 | + html.push('<span class="' + classes.join(' ') + '">' + txt + '</span>'); | |
824 | + } | |
825 | + } | |
826 | + this.picker.find('.datetimepicker-hours td').html(html.join('')); | |
827 | + | |
828 | + html = []; | |
829 | + txt = ''; | |
830 | + meridian = ''; | |
831 | + meridianOld = ''; | |
832 | + var minutesDisabled = this.minutesDisabled || []; | |
833 | + d = new Date(this.viewDate); | |
834 | + for (var i = 0; i < 60; i += this.minuteStep) { | |
835 | + if (minutesDisabled.indexOf(i) !== -1) continue; | |
836 | + d.setUTCMinutes(i); | |
837 | + d.setUTCSeconds(0); | |
838 | + classes = this.onRenderMinute(d); | |
839 | + if (this.showMeridian && dates[this.language].meridiem.length === 2) { | |
840 | + meridian = (hours < 12 ? dates[this.language].meridiem[0] : dates[this.language].meridiem[1]); | |
841 | + if (meridian !== meridianOld) { | |
842 | + if (meridianOld !== '') { | |
843 | + html.push('</fieldset>'); | |
844 | + } | |
845 | + html.push('<fieldset class="minute"><legend>' + meridian.toUpperCase() + '</legend>'); | |
846 | + } | |
847 | + meridianOld = meridian; | |
848 | + txt = (hours % 12 ? hours % 12 : 12); | |
849 | + html.push('<span class="' + classes.join(' ') + '">' + txt + ':' + (i < 10 ? '0' + i : i) + '</span>'); | |
850 | + if (i === 59) { | |
851 | + html.push('</fieldset>'); | |
852 | + } | |
853 | + } else { | |
854 | + txt = i + ':00'; | |
855 | + html.push('<span class="' + classes.join(' ') + '">' + hours + ':' + (i < 10 ? '0' + i : i) + '</span>'); | |
856 | + } | |
857 | + } | |
858 | + this.picker.find('.datetimepicker-minutes td').html(html.join('')); | |
859 | + | |
860 | + var currentYear = this.date.getUTCFullYear(); | |
861 | + var months = this.setTitle('.datetimepicker-months', year) | |
862 | + .end() | |
863 | + .find('.month').removeClass('active'); | |
864 | + if (currentYear === year) { | |
865 | + // getUTCMonths() returns 0 based, and we need to select the next one | |
866 | + // To cater bootstrap 2 we don't need to select the next one | |
867 | + months.eq(this.date.getUTCMonth()).addClass('active'); | |
868 | + } | |
869 | + if (year < startYear || year > endYear) { | |
870 | + months.addClass('disabled'); | |
871 | + } | |
872 | + if (year === startYear) { | |
873 | + months.slice(0, startMonth).addClass('disabled'); | |
874 | + } | |
875 | + if (year === endYear) { | |
876 | + months.slice(endMonth).addClass('disabled'); | |
877 | + } | |
878 | + | |
879 | + html = ''; | |
880 | + year = parseInt(year / 10, 10) * 10; | |
881 | + var yearCont = this.setTitle('.datetimepicker-years', year + '-' + (year + 9)) | |
882 | + .end() | |
883 | + .find('td'); | |
884 | + year -= 1; | |
885 | + d = new Date(this.viewDate); | |
886 | + for (var i = -1; i < 11; i++) { | |
887 | + d.setUTCFullYear(year); | |
888 | + classes = this.onRenderYear(d); | |
889 | + if (i === -1 || i === 10) { | |
890 | + classes.push(old); | |
891 | + } | |
892 | + html += '<span class="' + classes.join(' ') + '">' + year + '</span>'; | |
893 | + year += 1; | |
894 | + } | |
895 | + yearCont.html(html); | |
896 | + this.place(); | |
897 | + }, | |
898 | + | |
899 | + updateNavArrows: function () { | |
900 | + var d = new Date(this.viewDate), | |
901 | + year = d.getUTCFullYear(), | |
902 | + month = d.getUTCMonth(), | |
903 | + day = d.getUTCDate(), | |
904 | + hour = d.getUTCHours(); | |
905 | + switch (this.viewMode) { | |
906 | + case 0: | |
907 | + if (year <= this.startDate.getUTCFullYear() | |
908 | + && month <= this.startDate.getUTCMonth() | |
909 | + && day <= this.startDate.getUTCDate() | |
910 | + && hour <= this.startDate.getUTCHours()) { | |
911 | + this.picker.find('.prev').css({visibility: 'hidden'}); | |
912 | + } else { | |
913 | + this.picker.find('.prev').css({visibility: 'visible'}); | |
914 | + } | |
915 | + if (year >= this.endDate.getUTCFullYear() | |
916 | + && month >= this.endDate.getUTCMonth() | |
917 | + && day >= this.endDate.getUTCDate() | |
918 | + && hour >= this.endDate.getUTCHours()) { | |
919 | + this.picker.find('.next').css({visibility: 'hidden'}); | |
920 | + } else { | |
921 | + this.picker.find('.next').css({visibility: 'visible'}); | |
922 | + } | |
923 | + break; | |
924 | + case 1: | |
925 | + if (year <= this.startDate.getUTCFullYear() | |
926 | + && month <= this.startDate.getUTCMonth() | |
927 | + && day <= this.startDate.getUTCDate()) { | |
928 | + this.picker.find('.prev').css({visibility: 'hidden'}); | |
929 | + } else { | |
930 | + this.picker.find('.prev').css({visibility: 'visible'}); | |
931 | + } | |
932 | + if (year >= this.endDate.getUTCFullYear() | |
933 | + && month >= this.endDate.getUTCMonth() | |
934 | + && day >= this.endDate.getUTCDate()) { | |
935 | + this.picker.find('.next').css({visibility: 'hidden'}); | |
936 | + } else { | |
937 | + this.picker.find('.next').css({visibility: 'visible'}); | |
938 | + } | |
939 | + break; | |
940 | + case 2: | |
941 | + if (year <= this.startDate.getUTCFullYear() | |
942 | + && month <= this.startDate.getUTCMonth()) { | |
943 | + this.picker.find('.prev').css({visibility: 'hidden'}); | |
944 | + } else { | |
945 | + this.picker.find('.prev').css({visibility: 'visible'}); | |
946 | + } | |
947 | + if (year >= this.endDate.getUTCFullYear() | |
948 | + && month >= this.endDate.getUTCMonth()) { | |
949 | + this.picker.find('.next').css({visibility: 'hidden'}); | |
950 | + } else { | |
951 | + this.picker.find('.next').css({visibility: 'visible'}); | |
952 | + } | |
953 | + break; | |
954 | + case 3: | |
955 | + case 4: | |
956 | + if (year <= this.startDate.getUTCFullYear()) { | |
957 | + this.picker.find('.prev').css({visibility: 'hidden'}); | |
958 | + } else { | |
959 | + this.picker.find('.prev').css({visibility: 'visible'}); | |
960 | + } | |
961 | + if (year >= this.endDate.getUTCFullYear()) { | |
962 | + this.picker.find('.next').css({visibility: 'hidden'}); | |
963 | + } else { | |
964 | + this.picker.find('.next').css({visibility: 'visible'}); | |
965 | + } | |
966 | + break; | |
967 | + } | |
968 | + }, | |
969 | + | |
970 | + mousewheel: function (e) { | |
971 | + | |
972 | + e.preventDefault(); | |
973 | + e.stopPropagation(); | |
974 | + | |
975 | + if (this.wheelPause) { | |
976 | + return; | |
977 | + } | |
978 | + | |
979 | + this.wheelPause = true; | |
980 | + | |
981 | + var originalEvent = e.originalEvent; | |
982 | + | |
983 | + var delta = originalEvent.wheelDelta; | |
984 | + | |
985 | + var mode = delta > 0 ? 1 : (delta === 0) ? 0 : -1; | |
986 | + | |
987 | + if (this.wheelViewModeNavigationInverseDirection) { | |
988 | + mode = -mode; | |
989 | + } | |
990 | + | |
991 | + this.showMode(mode); | |
992 | + | |
993 | + setTimeout($.proxy(function () { | |
994 | + | |
995 | + this.wheelPause = false | |
996 | + | |
997 | + }, this), this.wheelViewModeNavigationDelay); | |
998 | + | |
999 | + }, | |
1000 | + | |
1001 | + click: function (e) { | |
1002 | + e.stopPropagation(); | |
1003 | + e.preventDefault(); | |
1004 | + var target = $(e.target).closest('span, td, th, legend'); | |
1005 | + if (target.is('.' + this.icontype)) { | |
1006 | + target = $(target).parent().closest('span, td, th, legend'); | |
1007 | + } | |
1008 | + if (target.length === 1) { | |
1009 | + if (target.is('.disabled')) { | |
1010 | + this.element.trigger({ | |
1011 | + type: 'outOfRange', | |
1012 | + date: this.viewDate, | |
1013 | + startDate: this.startDate, | |
1014 | + endDate: this.endDate | |
1015 | + }); | |
1016 | + return; | |
1017 | + } | |
1018 | + switch (target[0].nodeName.toLowerCase()) { | |
1019 | + case 'th': | |
1020 | + switch (target[0].className) { | |
1021 | + case 'switch': | |
1022 | + this.showMode(1); | |
1023 | + break; | |
1024 | + case 'prev': | |
1025 | + case 'next': | |
1026 | + var dir = DPGlobal.modes[this.viewMode].navStep * (target[0].className === 'prev' ? -1 : 1); | |
1027 | + switch (this.viewMode) { | |
1028 | + case 0: | |
1029 | + this.viewDate = this.moveHour(this.viewDate, dir); | |
1030 | + break; | |
1031 | + case 1: | |
1032 | + this.viewDate = this.moveDate(this.viewDate, dir); | |
1033 | + break; | |
1034 | + case 2: | |
1035 | + this.viewDate = this.moveMonth(this.viewDate, dir); | |
1036 | + break; | |
1037 | + case 3: | |
1038 | + case 4: | |
1039 | + this.viewDate = this.moveYear(this.viewDate, dir); | |
1040 | + break; | |
1041 | + } | |
1042 | + this.fill(); | |
1043 | + this.element.trigger({ | |
1044 | + type: target[0].className + ':' + this.convertViewModeText(this.viewMode), | |
1045 | + date: this.viewDate, | |
1046 | + startDate: this.startDate, | |
1047 | + endDate: this.endDate | |
1048 | + }); | |
1049 | + break; | |
1050 | + case 'clear': | |
1051 | + this.reset(); | |
1052 | + if (this.autoclose) { | |
1053 | + this.hide(); | |
1054 | + } | |
1055 | + break; | |
1056 | + case 'today': | |
1057 | + var date = new Date(); | |
1058 | + date = UTCDate(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), 0); | |
1059 | + | |
1060 | + // Respect startDate and endDate. | |
1061 | + if (date < this.startDate) date = this.startDate; | |
1062 | + else if (date > this.endDate) date = this.endDate; | |
1063 | + | |
1064 | + this.viewMode = this.startViewMode; | |
1065 | + this.showMode(0); | |
1066 | + this._setDate(date); | |
1067 | + this.fill(); | |
1068 | + if (this.autoclose) { | |
1069 | + this.hide(); | |
1070 | + } | |
1071 | + break; | |
1072 | + } | |
1073 | + break; | |
1074 | + case 'span': | |
1075 | + if (!target.is('.disabled')) { | |
1076 | + var year = this.viewDate.getUTCFullYear(), | |
1077 | + month = this.viewDate.getUTCMonth(), | |
1078 | + day = this.viewDate.getUTCDate(), | |
1079 | + hours = this.viewDate.getUTCHours(), | |
1080 | + minutes = this.viewDate.getUTCMinutes(), | |
1081 | + seconds = this.viewDate.getUTCSeconds(); | |
1082 | + | |
1083 | + if (target.is('.month')) { | |
1084 | + this.viewDate.setUTCDate(1); | |
1085 | + month = target.parent().find('span').index(target); | |
1086 | + day = this.viewDate.getUTCDate(); | |
1087 | + this.viewDate.setUTCMonth(month); | |
1088 | + this.element.trigger({ | |
1089 | + type: 'changeMonth', | |
1090 | + date: this.viewDate | |
1091 | + }); | |
1092 | + if (this.viewSelect >= 3) { | |
1093 | + this._setDate(UTCDate(year, month, day, hours, minutes, seconds, 0)); | |
1094 | + } | |
1095 | + } else if (target.is('.year')) { | |
1096 | + this.viewDate.setUTCDate(1); | |
1097 | + year = parseInt(target.text(), 10) || 0; | |
1098 | + this.viewDate.setUTCFullYear(year); | |
1099 | + this.element.trigger({ | |
1100 | + type: 'changeYear', | |
1101 | + date: this.viewDate | |
1102 | + }); | |
1103 | + if (this.viewSelect >= 4) { | |
1104 | + this._setDate(UTCDate(year, month, day, hours, minutes, seconds, 0)); | |
1105 | + } | |
1106 | + } else if (target.is('.hour')) { | |
1107 | + hours = parseInt(target.text(), 10) || 0; | |
1108 | + if (target.hasClass('hour_am') || target.hasClass('hour_pm')) { | |
1109 | + if (hours === 12 && target.hasClass('hour_am')) { | |
1110 | + hours = 0; | |
1111 | + } else if (hours !== 12 && target.hasClass('hour_pm')) { | |
1112 | + hours += 12; | |
1113 | + } | |
1114 | + } | |
1115 | + this.viewDate.setUTCHours(hours); | |
1116 | + this.element.trigger({ | |
1117 | + type: 'changeHour', | |
1118 | + date: this.viewDate | |
1119 | + }); | |
1120 | + if (this.viewSelect >= 1) { | |
1121 | + this._setDate(UTCDate(year, month, day, hours, minutes, seconds, 0)); | |
1122 | + } | |
1123 | + } else if (target.is('.minute')) { | |
1124 | + minutes = parseInt(target.text().substr(target.text().indexOf(':') + 1), 10) || 0; | |
1125 | + this.viewDate.setUTCMinutes(minutes); | |
1126 | + this.element.trigger({ | |
1127 | + type: 'changeMinute', | |
1128 | + date: this.viewDate | |
1129 | + }); | |
1130 | + if (this.viewSelect >= 0) { | |
1131 | + this._setDate(UTCDate(year, month, day, hours, minutes, seconds, 0)); | |
1132 | + } | |
1133 | + } | |
1134 | + if (this.viewMode !== 0) { | |
1135 | + var oldViewMode = this.viewMode; | |
1136 | + this.showMode(-1); | |
1137 | + this.fill(); | |
1138 | + if (oldViewMode === this.viewMode && this.autoclose) { | |
1139 | + this.hide(); | |
1140 | + } | |
1141 | + } else { | |
1142 | + this.fill(); | |
1143 | + if (this.autoclose) { | |
1144 | + this.hide(); | |
1145 | + } | |
1146 | + } | |
1147 | + } | |
1148 | + break; | |
1149 | + case 'td': | |
1150 | + if (target.is('.day') && !target.is('.disabled')) { | |
1151 | + var day = parseInt(target.text(), 10) || 1; | |
1152 | + var year = this.viewDate.getUTCFullYear(), | |
1153 | + month = this.viewDate.getUTCMonth(), | |
1154 | + hours = this.viewDate.getUTCHours(), | |
1155 | + minutes = this.viewDate.getUTCMinutes(), | |
1156 | + seconds = this.viewDate.getUTCSeconds(); | |
1157 | + if (target.is('.old')) { | |
1158 | + if (month === 0) { | |
1159 | + month = 11; | |
1160 | + year -= 1; | |
1161 | + } else { | |
1162 | + month -= 1; | |
1163 | + } | |
1164 | + } else if (target.is('.new')) { | |
1165 | + if (month === 11) { | |
1166 | + month = 0; | |
1167 | + year += 1; | |
1168 | + } else { | |
1169 | + month += 1; | |
1170 | + } | |
1171 | + } | |
1172 | + this.viewDate.setUTCFullYear(year); | |
1173 | + this.viewDate.setUTCMonth(month, day); | |
1174 | + this.element.trigger({ | |
1175 | + type: 'changeDay', | |
1176 | + date: this.viewDate | |
1177 | + }); | |
1178 | + if (this.viewSelect >= 2) { | |
1179 | + this._setDate(UTCDate(year, month, day, hours, minutes, seconds, 0)); | |
1180 | + } | |
1181 | + } | |
1182 | + var oldViewMode = this.viewMode; | |
1183 | + this.showMode(-1); | |
1184 | + this.fill(); | |
1185 | + if (oldViewMode === this.viewMode && this.autoclose) { | |
1186 | + this.hide(); | |
1187 | + } | |
1188 | + break; | |
1189 | + } | |
1190 | + } | |
1191 | + }, | |
1192 | + | |
1193 | + _setDate: function (date, which) { | |
1194 | + if (!which || which === 'date') | |
1195 | + this.date = date; | |
1196 | + if (!which || which === 'view') | |
1197 | + this.viewDate = date; | |
1198 | + this.fill(); | |
1199 | + this.setValue(); | |
1200 | + var element; | |
1201 | + if (this.isInput) { | |
1202 | + element = this.element; | |
1203 | + } else if (this.component) { | |
1204 | + element = this.element.find('input'); | |
1205 | + } | |
1206 | + if (element) { | |
1207 | + element.change(); | |
1208 | + } | |
1209 | + this.element.trigger({ | |
1210 | + type: 'changeDate', | |
1211 | + date: this.getDate() | |
1212 | + }); | |
1213 | + if(date === null) | |
1214 | + this.date = this.viewDate; | |
1215 | + }, | |
1216 | + | |
1217 | + moveMinute: function (date, dir) { | |
1218 | + if (!dir) return date; | |
1219 | + var new_date = new Date(date.valueOf()); | |
1220 | + //dir = dir > 0 ? 1 : -1; | |
1221 | + new_date.setUTCMinutes(new_date.getUTCMinutes() + (dir * this.minuteStep)); | |
1222 | + return new_date; | |
1223 | + }, | |
1224 | + | |
1225 | + moveHour: function (date, dir) { | |
1226 | + if (!dir) return date; | |
1227 | + var new_date = new Date(date.valueOf()); | |
1228 | + //dir = dir > 0 ? 1 : -1; | |
1229 | + new_date.setUTCHours(new_date.getUTCHours() + dir); | |
1230 | + return new_date; | |
1231 | + }, | |
1232 | + | |
1233 | + moveDate: function (date, dir) { | |
1234 | + if (!dir) return date; | |
1235 | + var new_date = new Date(date.valueOf()); | |
1236 | + //dir = dir > 0 ? 1 : -1; | |
1237 | + new_date.setUTCDate(new_date.getUTCDate() + dir); | |
1238 | + return new_date; | |
1239 | + }, | |
1240 | + | |
1241 | + moveMonth: function (date, dir) { | |
1242 | + if (!dir) return date; | |
1243 | + var new_date = new Date(date.valueOf()), | |
1244 | + day = new_date.getUTCDate(), | |
1245 | + month = new_date.getUTCMonth(), | |
1246 | + mag = Math.abs(dir), | |
1247 | + new_month, test; | |
1248 | + dir = dir > 0 ? 1 : -1; | |
1249 | + if (mag === 1) { | |
1250 | + test = dir === -1 | |
1251 | + // If going back one month, make sure month is not current month | |
1252 | + // (eg, Mar 31 -> Feb 31 === Feb 28, not Mar 02) | |
1253 | + ? function () { | |
1254 | + return new_date.getUTCMonth() === month; | |
1255 | + } | |
1256 | + // If going forward one month, make sure month is as expected | |
1257 | + // (eg, Jan 31 -> Feb 31 === Feb 28, not Mar 02) | |
1258 | + : function () { | |
1259 | + return new_date.getUTCMonth() !== new_month; | |
1260 | + }; | |
1261 | + new_month = month + dir; | |
1262 | + new_date.setUTCMonth(new_month); | |
1263 | + // Dec -> Jan (12) or Jan -> Dec (-1) -- limit expected date to 0-11 | |
1264 | + if (new_month < 0 || new_month > 11) | |
1265 | + new_month = (new_month + 12) % 12; | |
1266 | + } else { | |
1267 | + // For magnitudes >1, move one month at a time... | |
1268 | + for (var i = 0; i < mag; i++) | |
1269 | + // ...which might decrease the day (eg, Jan 31 to Feb 28, etc)... | |
1270 | + new_date = this.moveMonth(new_date, dir); | |
1271 | + // ...then reset the day, keeping it in the new month | |
1272 | + new_month = new_date.getUTCMonth(); | |
1273 | + new_date.setUTCDate(day); | |
1274 | + test = function () { | |
1275 | + return new_month !== new_date.getUTCMonth(); | |
1276 | + }; | |
1277 | + } | |
1278 | + // Common date-resetting loop -- if date is beyond end of month, make it | |
1279 | + // end of month | |
1280 | + while (test()) { | |
1281 | + new_date.setUTCDate(--day); | |
1282 | + new_date.setUTCMonth(new_month); | |
1283 | + } | |
1284 | + return new_date; | |
1285 | + }, | |
1286 | + | |
1287 | + moveYear: function (date, dir) { | |
1288 | + return this.moveMonth(date, dir * 12); | |
1289 | + }, | |
1290 | + | |
1291 | + dateWithinRange: function (date) { | |
1292 | + return date >= this.startDate && date <= this.endDate; | |
1293 | + }, | |
1294 | + | |
1295 | + keydown: function (e) { | |
1296 | + if (this.picker.is(':not(:visible)')) { | |
1297 | + if (e.keyCode === 27) // allow escape to hide and re-show picker | |
1298 | + this.show(); | |
1299 | + return; | |
1300 | + } | |
1301 | + var dateChanged = false, | |
1302 | + dir, newDate, newViewDate; | |
1303 | + switch (e.keyCode) { | |
1304 | + case 27: // escape | |
1305 | + this.hide(); | |
1306 | + e.preventDefault(); | |
1307 | + break; | |
1308 | + case 37: // left | |
1309 | + case 39: // right | |
1310 | + if (!this.keyboardNavigation) break; | |
1311 | + dir = e.keyCode === 37 ? -1 : 1; | |
1312 | + var viewMode = this.viewMode; | |
1313 | + if (e.ctrlKey) { | |
1314 | + viewMode += 2; | |
1315 | + } else if (e.shiftKey) { | |
1316 | + viewMode += 1; | |
1317 | + } | |
1318 | + if (viewMode === 4) { | |
1319 | + newDate = this.moveYear(this.date, dir); | |
1320 | + newViewDate = this.moveYear(this.viewDate, dir); | |
1321 | + } else if (viewMode === 3) { | |
1322 | + newDate = this.moveMonth(this.date, dir); | |
1323 | + newViewDate = this.moveMonth(this.viewDate, dir); | |
1324 | + } else if (viewMode === 2) { | |
1325 | + newDate = this.moveDate(this.date, dir); | |
1326 | + newViewDate = this.moveDate(this.viewDate, dir); | |
1327 | + } else if (viewMode === 1) { | |
1328 | + newDate = this.moveHour(this.date, dir); | |
1329 | + newViewDate = this.moveHour(this.viewDate, dir); | |
1330 | + } else if (viewMode === 0) { | |
1331 | + newDate = this.moveMinute(this.date, dir); | |
1332 | + newViewDate = this.moveMinute(this.viewDate, dir); | |
1333 | + } | |
1334 | + if (this.dateWithinRange(newDate)) { | |
1335 | + this.date = newDate; | |
1336 | + this.viewDate = newViewDate; | |
1337 | + this.setValue(); | |
1338 | + this.update(); | |
1339 | + e.preventDefault(); | |
1340 | + dateChanged = true; | |
1341 | + } | |
1342 | + break; | |
1343 | + case 38: // up | |
1344 | + case 40: // down | |
1345 | + if (!this.keyboardNavigation) break; | |
1346 | + dir = e.keyCode === 38 ? -1 : 1; | |
1347 | + viewMode = this.viewMode; | |
1348 | + if (e.ctrlKey) { | |
1349 | + viewMode += 2; | |
1350 | + } else if (e.shiftKey) { | |
1351 | + viewMode += 1; | |
1352 | + } | |
1353 | + if (viewMode === 4) { | |
1354 | + newDate = this.moveYear(this.date, dir); | |
1355 | + newViewDate = this.moveYear(this.viewDate, dir); | |
1356 | + } else if (viewMode === 3) { | |
1357 | + newDate = this.moveMonth(this.date, dir); | |
1358 | + newViewDate = this.moveMonth(this.viewDate, dir); | |
1359 | + } else if (viewMode === 2) { | |
1360 | + newDate = this.moveDate(this.date, dir * 7); | |
1361 | + newViewDate = this.moveDate(this.viewDate, dir * 7); | |
1362 | + } else if (viewMode === 1) { | |
1363 | + if (this.showMeridian) { | |
1364 | + newDate = this.moveHour(this.date, dir * 6); | |
1365 | + newViewDate = this.moveHour(this.viewDate, dir * 6); | |
1366 | + } else { | |
1367 | + newDate = this.moveHour(this.date, dir * 4); | |
1368 | + newViewDate = this.moveHour(this.viewDate, dir * 4); | |
1369 | + } | |
1370 | + } else if (viewMode === 0) { | |
1371 | + newDate = this.moveMinute(this.date, dir * 4); | |
1372 | + newViewDate = this.moveMinute(this.viewDate, dir * 4); | |
1373 | + } | |
1374 | + if (this.dateWithinRange(newDate)) { | |
1375 | + this.date = newDate; | |
1376 | + this.viewDate = newViewDate; | |
1377 | + this.setValue(); | |
1378 | + this.update(); | |
1379 | + e.preventDefault(); | |
1380 | + dateChanged = true; | |
1381 | + } | |
1382 | + break; | |
1383 | + case 13: // enter | |
1384 | + if (this.viewMode !== 0) { | |
1385 | + var oldViewMode = this.viewMode; | |
1386 | + this.showMode(-1); | |
1387 | + this.fill(); | |
1388 | + if (oldViewMode === this.viewMode && this.autoclose) { | |
1389 | + this.hide(); | |
1390 | + } | |
1391 | + } else { | |
1392 | + this.fill(); | |
1393 | + if (this.autoclose) { | |
1394 | + this.hide(); | |
1395 | + } | |
1396 | + } | |
1397 | + e.preventDefault(); | |
1398 | + break; | |
1399 | + case 9: // tab | |
1400 | + this.hide(); | |
1401 | + break; | |
1402 | + } | |
1403 | + if (dateChanged) { | |
1404 | + var element; | |
1405 | + if (this.isInput) { | |
1406 | + element = this.element; | |
1407 | + } else if (this.component) { | |
1408 | + element = this.element.find('input'); | |
1409 | + } | |
1410 | + if (element) { | |
1411 | + element.change(); | |
1412 | + } | |
1413 | + this.element.trigger({ | |
1414 | + type: 'changeDate', | |
1415 | + date: this.getDate() | |
1416 | + }); | |
1417 | + } | |
1418 | + }, | |
1419 | + | |
1420 | + showMode: function (dir) { | |
1421 | + if (dir) { | |
1422 | + var newViewMode = Math.max(0, Math.min(DPGlobal.modes.length - 1, this.viewMode + dir)); | |
1423 | + if (newViewMode >= this.minView && newViewMode <= this.maxView) { | |
1424 | + this.element.trigger({ | |
1425 | + type: 'changeMode', | |
1426 | + date: this.viewDate, | |
1427 | + oldViewMode: this.viewMode, | |
1428 | + newViewMode: newViewMode | |
1429 | + }); | |
1430 | + | |
1431 | + this.viewMode = newViewMode; | |
1432 | + } | |
1433 | + } | |
1434 | + /* | |
1435 | + vitalets: fixing bug of very special conditions: | |
1436 | + jquery 1.7.1 + webkit + show inline datetimepicker in bootstrap popover. | |
1437 | + Method show() does not set display css correctly and datetimepicker is not shown. | |
1438 | + Changed to .css('display', 'block') solve the problem. | |
1439 | + See https://github.com/vitalets/x-editable/issues/37 | |
1440 | + | |
1441 | + In jquery 1.7.2+ everything works fine. | |
1442 | + */ | |
1443 | + //this.picker.find('>div').hide().filter('.datetimepicker-'+DPGlobal.modes[this.viewMode].clsName).show(); | |
1444 | + this.picker.find('>div').hide().filter('.datetimepicker-' + DPGlobal.modes[this.viewMode].clsName).css('display', 'block'); | |
1445 | + this.updateNavArrows(); | |
1446 | + }, | |
1447 | + | |
1448 | + reset: function () { | |
1449 | + this._setDate(null, 'date'); | |
1450 | + }, | |
1451 | + | |
1452 | + convertViewModeText: function (viewMode) { | |
1453 | + switch (viewMode) { | |
1454 | + case 4: | |
1455 | + return 'decade'; | |
1456 | + case 3: | |
1457 | + return 'year'; | |
1458 | + case 2: | |
1459 | + return 'month'; | |
1460 | + case 1: | |
1461 | + return 'day'; | |
1462 | + case 0: | |
1463 | + return 'hour'; | |
1464 | + } | |
1465 | + } | |
1466 | + }; | |
1467 | + | |
1468 | + var old = $.fn.datetimepicker; | |
1469 | + $.fn.datetimepicker = function (option) { | |
1470 | + var args = Array.apply(null, arguments); | |
1471 | + args.shift(); | |
1472 | + var internal_return; | |
1473 | + this.each(function () { | |
1474 | + var $this = $(this), | |
1475 | + data = $this.data('datetimepicker'), | |
1476 | + options = typeof option === 'object' && option; | |
1477 | + if (!data) { | |
1478 | + $this.data('datetimepicker', (data = new Datetimepicker(this, $.extend({}, $.fn.datetimepicker.defaults, options)))); | |
1479 | + } | |
1480 | + if (typeof option === 'string' && typeof data[option] === 'function') { | |
1481 | + internal_return = data[option].apply(data, args); | |
1482 | + if (internal_return !== undefined) { | |
1483 | + return false; | |
1484 | + } | |
1485 | + } | |
1486 | + }); | |
1487 | + if (internal_return !== undefined) | |
1488 | + return internal_return; | |
1489 | + else | |
1490 | + return this; | |
1491 | + }; | |
1492 | + | |
1493 | + $.fn.datetimepicker.defaults = { | |
1494 | + }; | |
1495 | + $.fn.datetimepicker.Constructor = Datetimepicker; | |
1496 | + var dates = $.fn.datetimepicker.dates = { | |
1497 | + en: { | |
1498 | + days: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'], | |
1499 | + daysShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'], | |
1500 | + daysMin: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa', 'Su'], | |
1501 | + months: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'], | |
1502 | + monthsShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], | |
1503 | + meridiem: ['am', 'pm'], | |
1504 | + suffix: ['st', 'nd', 'rd', 'th'], | |
1505 | + today: 'Today', | |
1506 | + clear: 'Clear' | |
1507 | + } | |
1508 | + }; | |
1509 | + | |
1510 | + var DPGlobal = { | |
1511 | + modes: [ | |
1512 | + { | |
1513 | + clsName: 'minutes', | |
1514 | + navFnc: 'Hours', | |
1515 | + navStep: 1 | |
1516 | + }, | |
1517 | + { | |
1518 | + clsName: 'hours', | |
1519 | + navFnc: 'Date', | |
1520 | + navStep: 1 | |
1521 | + }, | |
1522 | + { | |
1523 | + clsName: 'days', | |
1524 | + navFnc: 'Month', | |
1525 | + navStep: 1 | |
1526 | + }, | |
1527 | + { | |
1528 | + clsName: 'months', | |
1529 | + navFnc: 'FullYear', | |
1530 | + navStep: 1 | |
1531 | + }, | |
1532 | + { | |
1533 | + clsName: 'years', | |
1534 | + navFnc: 'FullYear', | |
1535 | + navStep: 10 | |
1536 | + } | |
1537 | + ], | |
1538 | + isLeapYear: function (year) { | |
1539 | + return (((year % 4 === 0) && (year % 100 !== 0)) || (year % 400 === 0)) | |
1540 | + }, | |
1541 | + getDaysInMonth: function (year, month) { | |
1542 | + return [31, (DPGlobal.isLeapYear(year) ? 29 : 28), 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][month] | |
1543 | + }, | |
1544 | + getDefaultFormat: function (type, field) { | |
1545 | + if (type === 'standard') { | |
1546 | + if (field === 'input') | |
1547 | + return 'yyyy-mm-dd hh:ii'; | |
1548 | + else | |
1549 | + return 'yyyy-mm-dd hh:ii:ss'; | |
1550 | + } else if (type === 'php') { | |
1551 | + if (field === 'input') | |
1552 | + return 'Y-m-d H:i'; | |
1553 | + else | |
1554 | + return 'Y-m-d H:i:s'; | |
1555 | + } else { | |
1556 | + throw new Error('Invalid format type.'); | |
1557 | + } | |
1558 | + }, | |
1559 | + validParts: function (type) { | |
1560 | + if (type === 'standard') { | |
1561 | + return /t|hh?|HH?|p|P|z|Z|ii?|ss?|dd?|DD?|mm?|MM?|yy(?:yy)?/g; | |
1562 | + } else if (type === 'php') { | |
1563 | + return /[dDjlNwzFmMnStyYaABgGhHis]/g; | |
1564 | + } else { | |
1565 | + throw new Error('Invalid format type.'); | |
1566 | + } | |
1567 | + }, | |
1568 | + nonpunctuation: /[^ -\/:-@\[-`{-~\t\n\rTZ]+/g, | |
1569 | + parseFormat: function (format, type) { | |
1570 | + // IE treats \0 as a string end in inputs (truncating the value), | |
1571 | + // so it's a bad format delimiter, anyway | |
1572 | + var separators = format.replace(this.validParts(type), '\0').split('\0'), | |
1573 | + parts = format.match(this.validParts(type)); | |
1574 | + if (!separators || !separators.length || !parts || parts.length === 0) { | |
1575 | + throw new Error('Invalid date format.'); | |
1576 | + } | |
1577 | + return {separators: separators, parts: parts}; | |
1578 | + }, | |
1579 | + parseDate: function (date, format, language, type, timezone) { | |
1580 | + if (date instanceof Date) { | |
1581 | + var dateUTC = new Date(date.valueOf() - date.getTimezoneOffset() * 60000); | |
1582 | + dateUTC.setMilliseconds(0); | |
1583 | + return dateUTC; | |
1584 | + } | |
1585 | + if (/^\d{4}\-\d{1,2}\-\d{1,2}$/.test(date)) { | |
1586 | + format = this.parseFormat('yyyy-mm-dd', type); | |
1587 | + } | |
1588 | + if (/^\d{4}\-\d{1,2}\-\d{1,2}[T ]\d{1,2}\:\d{1,2}$/.test(date)) { | |
1589 | + format = this.parseFormat('yyyy-mm-dd hh:ii', type); | |
1590 | + } | |
1591 | + if (/^\d{4}\-\d{1,2}\-\d{1,2}[T ]\d{1,2}\:\d{1,2}\:\d{1,2}[Z]{0,1}$/.test(date)) { | |
1592 | + format = this.parseFormat('yyyy-mm-dd hh:ii:ss', type); | |
1593 | + } | |
1594 | + if (/^[-+]\d+[dmwy]([\s,]+[-+]\d+[dmwy])*$/.test(date)) { | |
1595 | + var part_re = /([-+]\d+)([dmwy])/, | |
1596 | + parts = date.match(/([-+]\d+)([dmwy])/g), | |
1597 | + part, dir; | |
1598 | + date = new Date(); | |
1599 | + for (var i = 0; i < parts.length; i++) { | |
1600 | + part = part_re.exec(parts[i]); | |
1601 | + dir = parseInt(part[1]); | |
1602 | + switch (part[2]) { | |
1603 | + case 'd': | |
1604 | + date.setUTCDate(date.getUTCDate() + dir); | |
1605 | + break; | |
1606 | + case 'm': | |
1607 | + date = Datetimepicker.prototype.moveMonth.call(Datetimepicker.prototype, date, dir); | |
1608 | + break; | |
1609 | + case 'w': | |
1610 | + date.setUTCDate(date.getUTCDate() + dir * 7); | |
1611 | + break; | |
1612 | + case 'y': | |
1613 | + date = Datetimepicker.prototype.moveYear.call(Datetimepicker.prototype, date, dir); | |
1614 | + break; | |
1615 | + } | |
1616 | + } | |
1617 | + return UTCDate(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds(), 0); | |
1618 | + } | |
1619 | + var parts = date && date.toString().match(this.nonpunctuation) || [], | |
1620 | + date = new Date(0, 0, 0, 0, 0, 0, 0), | |
1621 | + parsed = {}, | |
1622 | + setters_order = ['hh', 'h', 'ii', 'i', 'ss', 's', 'yyyy', 'yy', 'M', 'MM', 'm', 'mm', 'D', 'DD', 'd', 'dd', 'H', 'HH', 'p', 'P', 'z', 'Z'], | |
1623 | + setters_map = { | |
1624 | + hh: function (d, v) { | |
1625 | + return d.setUTCHours(v); | |
1626 | + }, | |
1627 | + h: function (d, v) { | |
1628 | + return d.setUTCHours(v); | |
1629 | + }, | |
1630 | + HH: function (d, v) { | |
1631 | + return d.setUTCHours(v === 12 ? 0 : v); | |
1632 | + }, | |
1633 | + H: function (d, v) { | |
1634 | + return d.setUTCHours(v === 12 ? 0 : v); | |
1635 | + }, | |
1636 | + ii: function (d, v) { | |
1637 | + return d.setUTCMinutes(v); | |
1638 | + }, | |
1639 | + i: function (d, v) { | |
1640 | + return d.setUTCMinutes(v); | |
1641 | + }, | |
1642 | + ss: function (d, v) { | |
1643 | + return d.setUTCSeconds(v); | |
1644 | + }, | |
1645 | + s: function (d, v) { | |
1646 | + return d.setUTCSeconds(v); | |
1647 | + }, | |
1648 | + yyyy: function (d, v) { | |
1649 | + return d.setUTCFullYear(v); | |
1650 | + }, | |
1651 | + yy: function (d, v) { | |
1652 | + return d.setUTCFullYear(2000 + v); | |
1653 | + }, | |
1654 | + m: function (d, v) { | |
1655 | + v -= 1; | |
1656 | + while (v < 0) v += 12; | |
1657 | + v %= 12; | |
1658 | + d.setUTCMonth(v); | |
1659 | + while (d.getUTCMonth() !== v) | |
1660 | + if (isNaN(d.getUTCMonth())) | |
1661 | + return d; | |
1662 | + else | |
1663 | + d.setUTCDate(d.getUTCDate() - 1); | |
1664 | + return d; | |
1665 | + }, | |
1666 | + d: function (d, v) { | |
1667 | + return d.setUTCDate(v); | |
1668 | + }, | |
1669 | + p: function (d, v) { | |
1670 | + return d.setUTCHours(v === 1 ? d.getUTCHours() + 12 : d.getUTCHours()); | |
1671 | + }, | |
1672 | + z: function () { | |
1673 | + return timezone | |
1674 | + } | |
1675 | + }, | |
1676 | + val, filtered, part; | |
1677 | + setters_map['M'] = setters_map['MM'] = setters_map['mm'] = setters_map['m']; | |
1678 | + setters_map['dd'] = setters_map['d']; | |
1679 | + setters_map['P'] = setters_map['p']; | |
1680 | + setters_map['Z'] = setters_map['z']; | |
1681 | + date = UTCDate(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds()); | |
1682 | + if (parts.length === format.parts.length) { | |
1683 | + for (var i = 0, cnt = format.parts.length; i < cnt; i++) { | |
1684 | + val = parseInt(parts[i], 10); | |
1685 | + part = format.parts[i]; | |
1686 | + if (isNaN(val)) { | |
1687 | + switch (part) { | |
1688 | + case 'MM': | |
1689 | + filtered = $(dates[language].months).filter(function () { | |
1690 | + var m = this.slice(0, parts[i].length), | |
1691 | + p = parts[i].slice(0, m.length); | |
1692 | + return m === p; | |
1693 | + }); | |
1694 | + val = $.inArray(filtered[0], dates[language].months) + 1; | |
1695 | + break; | |
1696 | + case 'M': | |
1697 | + filtered = $(dates[language].monthsShort).filter(function () { | |
1698 | + var m = this.slice(0, parts[i].length), | |
1699 | + p = parts[i].slice(0, m.length); | |
1700 | + return m.toLowerCase() === p.toLowerCase(); | |
1701 | + }); | |
1702 | + val = $.inArray(filtered[0], dates[language].monthsShort) + 1; | |
1703 | + break; | |
1704 | + case 'p': | |
1705 | + case 'P': | |
1706 | + val = $.inArray(parts[i].toLowerCase(), dates[language].meridiem); | |
1707 | + break; | |
1708 | + case 'z': | |
1709 | + case 'Z': | |
1710 | + timezone; | |
1711 | + break; | |
1712 | + | |
1713 | + } | |
1714 | + } | |
1715 | + parsed[part] = val; | |
1716 | + } | |
1717 | + for (var i = 0, s; i < setters_order.length; i++) { | |
1718 | + s = setters_order[i]; | |
1719 | + if (s in parsed && !isNaN(parsed[s])) | |
1720 | + setters_map[s](date, parsed[s]) | |
1721 | + } | |
1722 | + } | |
1723 | + return date; | |
1724 | + }, | |
1725 | + formatDate: function (date, format, language, type, timezone) { | |
1726 | + if (date === null) { | |
1727 | + return ''; | |
1728 | + } | |
1729 | + var val; | |
1730 | + if (type === 'standard') { | |
1731 | + val = { | |
1732 | + t: date.getTime(), | |
1733 | + // year | |
1734 | + yy: date.getUTCFullYear().toString().substring(2), | |
1735 | + yyyy: date.getUTCFullYear(), | |
1736 | + // month | |
1737 | + m: date.getUTCMonth() + 1, | |
1738 | + M: dates[language].monthsShort[date.getUTCMonth()], | |
1739 | + MM: dates[language].months[date.getUTCMonth()], | |
1740 | + // day | |
1741 | + d: date.getUTCDate(), | |
1742 | + D: dates[language].daysShort[date.getUTCDay()], | |
1743 | + DD: dates[language].days[date.getUTCDay()], | |
1744 | + p: (dates[language].meridiem.length === 2 ? dates[language].meridiem[date.getUTCHours() < 12 ? 0 : 1] : ''), | |
1745 | + // hour | |
1746 | + h: date.getUTCHours(), | |
1747 | + // minute | |
1748 | + i: date.getUTCMinutes(), | |
1749 | + // second | |
1750 | + s: date.getUTCSeconds(), | |
1751 | + // timezone | |
1752 | + z: timezone | |
1753 | + }; | |
1754 | + | |
1755 | + if (dates[language].meridiem.length === 2) { | |
1756 | + val.H = (val.h % 12 === 0 ? 12 : val.h % 12); | |
1757 | + } | |
1758 | + else { | |
1759 | + val.H = val.h; | |
1760 | + } | |
1761 | + val.HH = (val.H < 10 ? '0' : '') + val.H; | |
1762 | + val.P = val.p.toUpperCase(); | |
1763 | + val.Z = val.z; | |
1764 | + val.hh = (val.h < 10 ? '0' : '') + val.h; | |
1765 | + val.ii = (val.i < 10 ? '0' : '') + val.i; | |
1766 | + val.ss = (val.s < 10 ? '0' : '') + val.s; | |
1767 | + val.dd = (val.d < 10 ? '0' : '') + val.d; | |
1768 | + val.mm = (val.m < 10 ? '0' : '') + val.m; | |
1769 | + } else if (type === 'php') { | |
1770 | + // php format | |
1771 | + val = { | |
1772 | + // year | |
1773 | + y: date.getUTCFullYear().toString().substring(2), | |
1774 | + Y: date.getUTCFullYear(), | |
1775 | + // month | |
1776 | + F: dates[language].months[date.getUTCMonth()], | |
1777 | + M: dates[language].monthsShort[date.getUTCMonth()], | |
1778 | + n: date.getUTCMonth() + 1, | |
1779 | + t: DPGlobal.getDaysInMonth(date.getUTCFullYear(), date.getUTCMonth()), | |
1780 | + // day | |
1781 | + j: date.getUTCDate(), | |
1782 | + l: dates[language].days[date.getUTCDay()], | |
1783 | + D: dates[language].daysShort[date.getUTCDay()], | |
1784 | + w: date.getUTCDay(), // 0 -> 6 | |
1785 | + N: (date.getUTCDay() === 0 ? 7 : date.getUTCDay()), // 1 -> 7 | |
1786 | + S: (date.getUTCDate() % 10 <= dates[language].suffix.length ? dates[language].suffix[date.getUTCDate() % 10 - 1] : ''), | |
1787 | + // hour | |
1788 | + a: (dates[language].meridiem.length === 2 ? dates[language].meridiem[date.getUTCHours() < 12 ? 0 : 1] : ''), | |
1789 | + g: (date.getUTCHours() % 12 === 0 ? 12 : date.getUTCHours() % 12), | |
1790 | + G: date.getUTCHours(), | |
1791 | + // minute | |
1792 | + i: date.getUTCMinutes(), | |
1793 | + // second | |
1794 | + s: date.getUTCSeconds() | |
1795 | + }; | |
1796 | + val.m = (val.n < 10 ? '0' : '') + val.n; | |
1797 | + val.d = (val.j < 10 ? '0' : '') + val.j; | |
1798 | + val.A = val.a.toString().toUpperCase(); | |
1799 | + val.h = (val.g < 10 ? '0' : '') + val.g; | |
1800 | + val.H = (val.G < 10 ? '0' : '') + val.G; | |
1801 | + val.i = (val.i < 10 ? '0' : '') + val.i; | |
1802 | + val.s = (val.s < 10 ? '0' : '') + val.s; | |
1803 | + } else { | |
1804 | + throw new Error('Invalid format type.'); | |
1805 | + } | |
1806 | + var date = [], | |
1807 | + seps = $.extend([], format.separators); | |
1808 | + for (var i = 0, cnt = format.parts.length; i < cnt; i++) { | |
1809 | + if (seps.length) { | |
1810 | + date.push(seps.shift()); | |
1811 | + } | |
1812 | + date.push(val[format.parts[i]]); | |
1813 | + } | |
1814 | + if (seps.length) { | |
1815 | + date.push(seps.shift()); | |
1816 | + } | |
1817 | + return date.join(''); | |
1818 | + }, | |
1819 | + convertViewMode: function (viewMode) { | |
1820 | + switch (viewMode) { | |
1821 | + case 4: | |
1822 | + case 'decade': | |
1823 | + viewMode = 4; | |
1824 | + break; | |
1825 | + case 3: | |
1826 | + case 'year': | |
1827 | + viewMode = 3; | |
1828 | + break; | |
1829 | + case 2: | |
1830 | + case 'month': | |
1831 | + viewMode = 2; | |
1832 | + break; | |
1833 | + case 1: | |
1834 | + case 'day': | |
1835 | + viewMode = 1; | |
1836 | + break; | |
1837 | + case 0: | |
1838 | + case 'hour': | |
1839 | + viewMode = 0; | |
1840 | + break; | |
1841 | + } | |
1842 | + | |
1843 | + return viewMode; | |
1844 | + }, | |
1845 | + headTemplate: '<thead>' + | |
1846 | + '<tr>' + | |
1847 | + '<th class="prev"><i class="{iconType} {leftArrow}"/></th>' + | |
1848 | + '<th colspan="5" class="switch"></th>' + | |
1849 | + '<th class="next"><i class="{iconType} {rightArrow}"/></th>' + | |
1850 | + '</tr>' + | |
1851 | + '</thead>', | |
1852 | + headTemplateV3: '<thead>' + | |
1853 | + '<tr>' + | |
1854 | + '<th class="prev"><span class="{iconType} {leftArrow}"></span> </th>' + | |
1855 | + '<th colspan="5" class="switch"></th>' + | |
1856 | + '<th class="next"><span class="{iconType} {rightArrow}"></span> </th>' + | |
1857 | + '</tr>' + | |
1858 | + '</thead>', | |
1859 | + contTemplate: '<tbody><tr><td colspan="7"></td></tr></tbody>', | |
1860 | + footTemplate: '<tfoot>' + | |
1861 | + '<tr><th colspan="7" class="today"></th></tr>' + | |
1862 | + '<tr><th colspan="7" class="clear"></th></tr>' + | |
1863 | + '</tfoot>' | |
1864 | + }; | |
1865 | + DPGlobal.template = '<div class="datetimepicker">' + | |
1866 | + '<div class="datetimepicker-minutes">' + | |
1867 | + '<table class=" table-condensed">' + | |
1868 | + DPGlobal.headTemplate + | |
1869 | + DPGlobal.contTemplate + | |
1870 | + DPGlobal.footTemplate + | |
1871 | + '</table>' + | |
1872 | + '</div>' + | |
1873 | + '<div class="datetimepicker-hours">' + | |
1874 | + '<table class=" table-condensed">' + | |
1875 | + DPGlobal.headTemplate + | |
1876 | + DPGlobal.contTemplate + | |
1877 | + DPGlobal.footTemplate + | |
1878 | + '</table>' + | |
1879 | + '</div>' + | |
1880 | + '<div class="datetimepicker-days">' + | |
1881 | + '<table class=" table-condensed">' + | |
1882 | + DPGlobal.headTemplate + | |
1883 | + '<tbody></tbody>' + | |
1884 | + DPGlobal.footTemplate + | |
1885 | + '</table>' + | |
1886 | + '</div>' + | |
1887 | + '<div class="datetimepicker-months">' + | |
1888 | + '<table class="table-condensed">' + | |
1889 | + DPGlobal.headTemplate + | |
1890 | + DPGlobal.contTemplate + | |
1891 | + DPGlobal.footTemplate + | |
1892 | + '</table>' + | |
1893 | + '</div>' + | |
1894 | + '<div class="datetimepicker-years">' + | |
1895 | + '<table class="table-condensed">' + | |
1896 | + DPGlobal.headTemplate + | |
1897 | + DPGlobal.contTemplate + | |
1898 | + DPGlobal.footTemplate + | |
1899 | + '</table>' + | |
1900 | + '</div>' + | |
1901 | + '</div>'; | |
1902 | + DPGlobal.templateV3 = '<div class="datetimepicker">' + | |
1903 | + '<div class="datetimepicker-minutes">' + | |
1904 | + '<table class=" table-condensed">' + | |
1905 | + DPGlobal.headTemplateV3 + | |
1906 | + DPGlobal.contTemplate + | |
1907 | + DPGlobal.footTemplate + | |
1908 | + '</table>' + | |
1909 | + '</div>' + | |
1910 | + '<div class="datetimepicker-hours">' + | |
1911 | + '<table class=" table-condensed">' + | |
1912 | + DPGlobal.headTemplateV3 + | |
1913 | + DPGlobal.contTemplate + | |
1914 | + DPGlobal.footTemplate + | |
1915 | + '</table>' + | |
1916 | + '</div>' + | |
1917 | + '<div class="datetimepicker-days">' + | |
1918 | + '<table class=" table-condensed">' + | |
1919 | + DPGlobal.headTemplateV3 + | |
1920 | + '<tbody></tbody>' + | |
1921 | + DPGlobal.footTemplate + | |
1922 | + '</table>' + | |
1923 | + '</div>' + | |
1924 | + '<div class="datetimepicker-months">' + | |
1925 | + '<table class="table-condensed">' + | |
1926 | + DPGlobal.headTemplateV3 + | |
1927 | + DPGlobal.contTemplate + | |
1928 | + DPGlobal.footTemplate + | |
1929 | + '</table>' + | |
1930 | + '</div>' + | |
1931 | + '<div class="datetimepicker-years">' + | |
1932 | + '<table class="table-condensed">' + | |
1933 | + DPGlobal.headTemplateV3 + | |
1934 | + DPGlobal.contTemplate + | |
1935 | + DPGlobal.footTemplate + | |
1936 | + '</table>' + | |
1937 | + '</div>' + | |
1938 | + '</div>'; | |
1939 | + $.fn.datetimepicker.DPGlobal = DPGlobal; | |
1940 | + | |
1941 | + /* DATETIMEPICKER NO CONFLICT | |
1942 | + * =================== */ | |
1943 | + | |
1944 | + $.fn.datetimepicker.noConflict = function () { | |
1945 | + $.fn.datetimepicker = old; | |
1946 | + return this; | |
1947 | + }; | |
1948 | + | |
1949 | + /* DATETIMEPICKER DATA-API | |
1950 | + * ================== */ | |
1951 | + | |
1952 | + $(document).on( | |
1953 | + 'focus.datetimepicker.data-api click.datetimepicker.data-api', | |
1954 | + '[data-provide="datetimepicker"]', | |
1955 | + function (e) { | |
1956 | + var $this = $(this); | |
1957 | + if ($this.data('datetimepicker')) return; | |
1958 | + e.preventDefault(); | |
1959 | + // component click requires us to explicitly show it | |
1960 | + $this.datetimepicker('show'); | |
1961 | + } | |
1962 | + ); | |
1963 | + $(function () { | |
1964 | + $('[data-provide="datetimepicker-inline"]').datetimepicker(); | |
1965 | + }); | |
1966 | + | |
1967 | +})); | ... | ... |
resource/lib/bootstrap-datetimepicker/bootstrap-datetimepicker.zh-CN.js
0 → 100755
1 | +/** | |
2 | + * Simplified Chinese translation for bootstrap-datetimepicker | |
3 | + * Yuan Cheung <advanimal@gmail.com> | |
4 | + */ | |
5 | +;(function($){ | |
6 | + $.fn.datetimepicker.dates['zh-CN'] = { | |
7 | + days: ["星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期日"], | |
8 | + daysShort: ["周日", "周一", "周二", "周三", "周四", "周五", "周六", "周日"], | |
9 | + daysMin: ["日", "一", "二", "三", "四", "五", "六", "日"], | |
10 | + months: ["一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"], | |
11 | + monthsShort: ["一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"], | |
12 | + today: "今天", | |
13 | + suffix: [], | |
14 | + clear:"清空", | |
15 | + meridiem: ["上午", "下午"] | |
16 | + }; | |
17 | +}(jQuery)); | ... | ... |
resource/lib/bootstrap-select/LICENSE
0 → 100644
1 | +The MIT License (MIT) | |
2 | + | |
3 | +Copyright (c) 2013-2015 bootstrap-select | |
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. | ... | ... |
resource/lib/bootstrap-select/README.md
0 → 100644
1 | +bootstrap-select | |
2 | +================ | |
3 | + | |
4 | +[](https://github.com/silviomoreto/bootstrap-select/releases/latest) | |
5 | +[]() | |
6 | +[]() | |
7 | +[](LICENSE) | |
8 | +[](https://david-dm.org/silviomoreto/bootstrap-select) | |
9 | +[](https://david-dm.org/silviomoreto/bootstrap-select#info=devDependencies) | |
10 | + | |
11 | +A custom select / multiselect for Bootstrap using button dropdown, designed to behave like regular Bootstrap selects. | |
12 | + | |
13 | +## Demo and Documentation | |
14 | + | |
15 | +See a Bootstrap 3 example [here](http://silviomoreto.github.io/bootstrap-select). | |
16 | + | |
17 | +## Authors | |
18 | + | |
19 | +[Silvio Moreto](https://github.com/silviomoreto), | |
20 | +[Ana Carolina](https://github.com/anacarolinats), | |
21 | +[caseyjhol](https://github.com/caseyjhol), | |
22 | +[Matt Bryson](https://github.com/mattbryson), and | |
23 | +[t0xicCode](https://github.com/t0xicCode). | |
24 | + | |
25 | +## Usage | |
26 | + | |
27 | +Create your `<select>` with the `.selectpicker` class. | |
28 | +```html | |
29 | +<select class="selectpicker"> | |
30 | + <option>Mustard</option> | |
31 | + <option>Ketchup</option> | |
32 | + <option>Barbecue</option> | |
33 | +</select> | |
34 | +``` | |
35 | + | |
36 | +If you use a 1.6.3 or newer, you don't need to do anything else, as the data-api automatically picks up the `<select>`s with the `selectpicker` class. | |
37 | + | |
38 | +If you use an older version, you need to add the following either at the bottom of the page (after the last selectpicker), or in a [`$(document).ready()`](http://api.jquery.com/ready/) block. | |
39 | +```js | |
40 | +// To style only <select>s with the selectpicker class | |
41 | +$('.selectpicker').selectpicker(); | |
42 | +``` | |
43 | +Or | |
44 | +```js | |
45 | +// To style all <select>s | |
46 | +$('select').selectpicker(); | |
47 | +``` | |
48 | + | |
49 | +Checkout the [documentation](http://silviomoreto.github.io/bootstrap-select) for further information. | |
50 | + | |
51 | +## CDN | |
52 | + | |
53 | +**N.B.**: The CDN is updated after the release is made public, which means that there is a delay between the publishing of a release and its availability on the CDN. Check [the GitHub page](https://github.com/silviomoreto/bootstrap-select/releases) for the latest release. | |
54 | + | |
55 | +* [//cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.6.5/css/bootstrap-select.min.css](//cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.6.5/css/bootstrap-select.min.css) | |
56 | +* [//cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.6.5/js/bootstrap-select.min.js](//cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.6.5/js/bootstrap-select.min.js) | |
57 | +* //cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.6.5/js/i18n/defaults-*.min.js (The translation files) | |
58 | + | |
59 | +## Bugs and feature requests | |
60 | + | |
61 | +Anyone and everyone is welcome to contribute. **Please take a moment to | |
62 | +review the [guidelines for contributing](CONTRIBUTING.md)**. Make sure you're using the latest version of bootstrap-select before submitting an issue. | |
63 | + | |
64 | +* [Bug reports](CONTRIBUTING.md#bug-reports) | |
65 | +* [Feature requests](CONTRIBUTING.md#feature-requests) | |
66 | + | |
67 | +## Copyright and license | |
68 | + | |
69 | +Copyright (C) 2013-2015 bootstrap-select | |
70 | + | |
71 | +Licensed under [the MIT license](LICENSE). | ... | ... |
resource/lib/bootstrap-select/css/bootstrap-select.css
0 → 100644
1 | +/*! | |
2 | + * Bootstrap-select v1.7.2 (http://silviomoreto.github.io/bootstrap-select) | |
3 | + * | |
4 | + * Copyright 2013-2015 bootstrap-select | |
5 | + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) | |
6 | + */ | |
7 | + | |
8 | +.bootstrap-select { | |
9 | + width: 220px \0; | |
10 | + /*IE9 and below*/ | |
11 | +} | |
12 | +.bootstrap-select > .dropdown-toggle { | |
13 | + width: 100%; | |
14 | + padding-left: 25px; | |
15 | +} | |
16 | +.has-error .bootstrap-select .dropdown-toggle, | |
17 | +.error .bootstrap-select .dropdown-toggle { | |
18 | + border-color: #b94a48; | |
19 | +} | |
20 | +.bootstrap-select.fit-width { | |
21 | + width: auto !important; | |
22 | +} | |
23 | +.bootstrap-select:not([class*="col-"]):not([class*="form-control"]):not(.input-group-btn) { | |
24 | + width: 220px; | |
25 | +} | |
26 | +.bootstrap-select .dropdown-toggle:focus { | |
27 | + outline: thin dotted #333333 !important; | |
28 | + outline: 5px auto -webkit-focus-ring-color !important; | |
29 | + outline-offset: -2px; | |
30 | +} | |
31 | +.bootstrap-select.form-control { | |
32 | + margin-bottom: 0; | |
33 | + padding: 0; | |
34 | + border: none; | |
35 | +} | |
36 | +.bootstrap-select.form-control:not([class*="col-"]) { | |
37 | + width: 100%; | |
38 | +} | |
39 | +.bootstrap-select.form-control.input-group-btn { | |
40 | + z-index: auto; | |
41 | +} | |
42 | +.bootstrap-select.btn-group:not(.input-group-btn), | |
43 | +.bootstrap-select.btn-group[class*="col-"] { | |
44 | + float: none; | |
45 | + display: inline-block; | |
46 | + margin-right: 0; | |
47 | +} | |
48 | +.bootstrap-select.btn-group.dropdown-menu-left, | |
49 | +.bootstrap-select.btn-group[class*="col-"].dropdown-menu-left, | |
50 | +.row .bootstrap-select.btn-group[class*="col-"].dropdown-menu-right { | |
51 | + float: left; | |
52 | +} | |
53 | +.form-inline .bootstrap-select.btn-group, | |
54 | +.form-horizontal .bootstrap-select.btn-group, | |
55 | +.form-group .bootstrap-select.btn-group { | |
56 | + margin-bottom: 0; | |
57 | +} | |
58 | +.form-group-lg .bootstrap-select.btn-group.form-control, | |
59 | +.form-group-sm .bootstrap-select.btn-group.form-control { | |
60 | + padding: 0; | |
61 | +} | |
62 | +.form-inline .bootstrap-select.btn-group .form-control { | |
63 | + width: 100%; | |
64 | +} | |
65 | +.bootstrap-select.btn-group.disabled, | |
66 | +.bootstrap-select.btn-group > .disabled { | |
67 | + cursor: not-allowed; | |
68 | +} | |
69 | +.bootstrap-select.btn-group.disabled:focus, | |
70 | +.bootstrap-select.btn-group > .disabled:focus { | |
71 | + outline: none !important; | |
72 | +} | |
73 | +.bootstrap-select.btn-group .dropdown-toggle .filter-option { | |
74 | + display: inline-block; | |
75 | + overflow: hidden; | |
76 | + width: 100%; | |
77 | + text-align: right; | |
78 | +} | |
79 | +.bootstrap-select.btn-group .dropdown-toggle .caret { | |
80 | + position: absolute; | |
81 | + top: 50%; | |
82 | + left: 12px; | |
83 | + margin-top: -2px; | |
84 | + vertical-align: middle; | |
85 | +} | |
86 | +.bootstrap-select.btn-group[class*="col-"] .dropdown-toggle { | |
87 | + width: 100%; | |
88 | +} | |
89 | +.bootstrap-select.btn-group .dropdown-menu { | |
90 | + min-width: 100%; | |
91 | + z-index: 1035; | |
92 | + -webkit-box-sizing: border-box; | |
93 | + -moz-box-sizing: border-box; | |
94 | + box-sizing: border-box; | |
95 | +} | |
96 | +.bootstrap-select.btn-group .dropdown-menu.inner { | |
97 | + position: static; | |
98 | + float: none; | |
99 | + border: 0; | |
100 | + padding: 0; | |
101 | + margin: 0; | |
102 | + border-radius: 0; | |
103 | + -webkit-box-shadow: none; | |
104 | + box-shadow: none; | |
105 | +} | |
106 | +.bootstrap-select.btn-group .dropdown-menu li { | |
107 | + position: relative; | |
108 | +} | |
109 | +.bootstrap-select.btn-group .dropdown-menu li.active small { | |
110 | + color: #fff; | |
111 | +} | |
112 | +.bootstrap-select.btn-group .dropdown-menu li.disabled a { | |
113 | + cursor: not-allowed; | |
114 | +} | |
115 | +.bootstrap-select.btn-group .dropdown-menu li a { | |
116 | + cursor: pointer; | |
117 | +} | |
118 | +.bootstrap-select.btn-group .dropdown-menu li a.opt { | |
119 | + position: relative; | |
120 | + padding-right: 2.25em; | |
121 | +} | |
122 | +.bootstrap-select.btn-group .dropdown-menu li a span.check-mark { | |
123 | + display: none; | |
124 | +} | |
125 | +.bootstrap-select.btn-group .dropdown-menu li a span.text { | |
126 | + display: inline-block; | |
127 | +} | |
128 | +.bootstrap-select.btn-group .dropdown-menu li small { | |
129 | + padding-right: 0.5em; | |
130 | +} | |
131 | +.bootstrap-select.btn-group .dropdown-menu .notify { | |
132 | + position: absolute; | |
133 | + bottom: 5px; | |
134 | + width: 96%; | |
135 | + margin: 0 2%; | |
136 | + min-height: 26px; | |
137 | + padding: 3px 5px; | |
138 | + background: #f5f5f5; | |
139 | + border: 1px solid #e3e3e3; | |
140 | + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); | |
141 | + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); | |
142 | + pointer-events: none; | |
143 | + opacity: 0.9; | |
144 | + -webkit-box-sizing: border-box; | |
145 | + -moz-box-sizing: border-box; | |
146 | + box-sizing: border-box; | |
147 | +} | |
148 | +.bootstrap-select.btn-group .no-results { | |
149 | + padding: 3px; | |
150 | + background: #f5f5f5; | |
151 | + margin: 0 5px; | |
152 | + white-space: nowrap; | |
153 | +} | |
154 | +.bootstrap-select.btn-group.fit-width .dropdown-toggle .filter-option { | |
155 | + position: static; | |
156 | +} | |
157 | +.bootstrap-select.btn-group.fit-width .dropdown-toggle .caret { | |
158 | + position: static; | |
159 | + top: auto; | |
160 | + margin-top: -1px; | |
161 | +} | |
162 | +.bootstrap-select.btn-group.show-tick .dropdown-menu li.selected a span.check-mark { | |
163 | + position: absolute; | |
164 | + display: inline-block; | |
165 | + left: 15px; | |
166 | + margin-top: 5px; | |
167 | +} | |
168 | +.bootstrap-select.btn-group.show-tick .dropdown-menu li a span.text { | |
169 | + margin-left: 34px; | |
170 | +} | |
171 | +.bootstrap-select.show-menu-arrow.open > .dropdown-toggle { | |
172 | + z-index: 1036; | |
173 | +} | |
174 | +.bootstrap-select.show-menu-arrow .dropdown-toggle:before { | |
175 | + content: ''; | |
176 | + border-right: 7px solid transparent; | |
177 | + border-left: 7px solid transparent; | |
178 | + border-bottom: 7px solid rgba(204, 204, 204, 0.2); | |
179 | + position: absolute; | |
180 | + bottom: -4px; | |
181 | + right: 9px; | |
182 | + display: none; | |
183 | +} | |
184 | +.bootstrap-select.show-menu-arrow .dropdown-toggle:after { | |
185 | + content: ''; | |
186 | + border-right: 6px solid transparent; | |
187 | + border-left: 6px solid transparent; | |
188 | + border-bottom: 6px solid white; | |
189 | + position: absolute; | |
190 | + bottom: -4px; | |
191 | + right: 10px; | |
192 | + display: none; | |
193 | +} | |
194 | +.bootstrap-select.show-menu-arrow.dropup .dropdown-toggle:before { | |
195 | + bottom: auto; | |
196 | + top: -3px; | |
197 | + border-top: 7px solid rgba(204, 204, 204, 0.2); | |
198 | + border-bottom: 0; | |
199 | +} | |
200 | +.bootstrap-select.show-menu-arrow.dropup .dropdown-toggle:after { | |
201 | + bottom: auto; | |
202 | + top: -3px; | |
203 | + border-top: 6px solid white; | |
204 | + border-bottom: 0; | |
205 | +} | |
206 | +.bootstrap-select.show-menu-arrow.pull-right .dropdown-toggle:before { | |
207 | + left: 12px; | |
208 | + right: auto; | |
209 | +} | |
210 | +.bootstrap-select.show-menu-arrow.pull-right .dropdown-toggle:after { | |
211 | + left: 13px; | |
212 | + right: auto; | |
213 | +} | |
214 | +.bootstrap-select.show-menu-arrow.open > .dropdown-toggle:before, | |
215 | +.bootstrap-select.show-menu-arrow.open > .dropdown-toggle:after { | |
216 | + display: block; | |
217 | +} | |
218 | +.bs-searchbox, | |
219 | +.bs-actionsbox, | |
220 | +.bs-donebutton { | |
221 | + padding: 4px 8px; | |
222 | +} | |
223 | +.bs-actionsbox { | |
224 | + float: right; | |
225 | + width: 100%; | |
226 | + -webkit-box-sizing: border-box; | |
227 | + -moz-box-sizing: border-box; | |
228 | + box-sizing: border-box; | |
229 | +} | |
230 | +.bs-actionsbox .btn-group button { | |
231 | + width: 50%; | |
232 | +} | |
233 | +.bs-donebutton { | |
234 | + float: right; | |
235 | + width: 100%; | |
236 | + -webkit-box-sizing: border-box; | |
237 | + -moz-box-sizing: border-box; | |
238 | + box-sizing: border-box; | |
239 | +} | |
240 | +.bs-donebutton .btn-group button { | |
241 | + width: 100%; | |
242 | +} | |
243 | +.bs-searchbox + .bs-actionsbox { | |
244 | + padding: 0 8px 4px; | |
245 | +} | |
246 | +.bs-searchbox .form-control { | |
247 | + margin-bottom: 0; | |
248 | + width: 100%; | |
249 | +} | |
250 | +select.bs-select-hidden, | |
251 | +select.selectpicker { | |
252 | + display: none !important; | |
253 | +} | |
254 | +select.mobile-device { | |
255 | + position: absolute !important; | |
256 | + top: 0; | |
257 | + right: 0; | |
258 | + display: block !important; | |
259 | + width: 100%; | |
260 | + height: 100% !important; | |
261 | + opacity: 0; | |
262 | +} | |
263 | +/*# sourceMappingURL=bootstrap-select.css.map */ | |
0 | 264 | \ No newline at end of file | ... | ... |
resource/lib/bootstrap-select/css/bootstrap-select.css.map
0 → 100644
1 | +{"version":3,"sources":["less/bootstrap-select.less","bootstrap-select.css"],"names":[],"mappings":"AAQA;EACE,iBAAA;ECPA,kBAAiB;EAClB;ADKD;EAKI,aAAA;EACA,qBAAA;ECPH;ADWC;;EAEE,uBAAA;ECTH;ADYC;EACE,wBAAA;ECVH;ADaC;EACE,cAAA;ECXH;ADTD;EAwBI,yCAAA;EACA,uDAAA;EACA,sBAAA;ECZH;ADgBD;EACE,kBAAA;EACA,YAAA;EACA,cAAA;ECdD;ADgBC;EACE,aAAA;ECdH;ADiBC;EACE,eAAA;ECfH;ADqBC;;EAEE,aAAA;EACA,uBAAA;EACA,gBAAA;ECnBH;AD0BG;;;EACE,cAAA;ECtBL;AD0BC;;;EAGE,kBAAA;ECxBH;AD2BC;;EAEE,YAAA;ECzBH;AD8BC;EACE,aAAA;EC5BH;AD+BC;;EAnFA,qBAAA;ECwDD;AD+BG;;EACE,0BAAA;EC5BL;ADXD;EA8CM,uBAAA;EACA,kBAAA;EACA,aAAA;EACA,kBAAA;EChCL;ADjBD;EAqDM,oBAAA;EACA,UAAA;EACA,aAAA;EACA,kBAAA;EACA,wBAAA;ECjCL;ADqCC;EACE,aAAA;ECnCH;AD3BD;EAmEI,iBAAA;EACA,eAAA;EACA,gCAAA;KAAA,6BAAA;UAAA,wBAAA;ECrCH;ADuCG;EACE,kBAAA;EACA,aAAA;EACA,WAAA;EACA,YAAA;EACA,WAAA;EACA,kBAAA;EACA,0BAAA;UAAA,kBAAA;ECrCL;ADzCD;EAkFM,oBAAA;ECtCL;ADwCK;EACE,aAAA;ECtCP;ADyCK;EAzIJ,qBAAA;ECmGD;ADlDD;EA6FQ,iBAAA;ECxCP;AD0CO;EACE,oBAAA;EACA,sBAAA;ECxCT;ADzDD;EAqGU,eAAA;ECzCT;AD5DD;EAyGU,uBAAA;EC1CT;AD/DD;EA8GQ,qBAAA;EC5CP;ADlED;EAmHM,oBAAA;EACA,aAAA;EACA,YAAA;EACA,cAAA;EACA,kBAAA;EACA,kBAAA;EACA,qBAAA;EACA,2BAAA;EACA,yDAAA;UAAA,iDAAA;EACA,sBAAA;EACA,cAAA;EACA,gCAAA;KAAA,6BAAA;UAAA,wBAAA;EC9CL;ADhFD;EAmII,cAAA;EACA,qBAAA;EACA,eAAA;EACA,qBAAA;EChDH;ADmDC;EAEI,kBAAA;EClDL;ADgDC;EAMI,kBAAA;EACA,WAAA;EACA,kBAAA;ECnDL;ADwDG;EACE,oBAAA;EACA,uBAAA;EACA,aAAA;EACA,iBAAA;ECtDL;ADiDC;EASI,oBAAA;ECvDL;AD6DC;EACE,eAAA;EC3DH;AD+DG;EACE,aAAA;EACA,oCAAA;EACA,qCAAA;EACA,mDAAA;EACA,oBAAA;EACA,cAAA;EACA,WAAA;EACA,eAAA;EC7DL;ADgEG;EACE,aAAA;EACA,oCAAA;EACA,qCAAA;EACA,gCAAA;EACA,oBAAA;EACA,cAAA;EACA,YAAA;EACA,eAAA;EC9DL;ADmEG;EACE,cAAA;EACA,WAAA;EACA,gDAAA;EACA,kBAAA;ECjEL;ADoEG;EACE,cAAA;EACA,WAAA;EACA,6BAAA;EACA,kBAAA;EClEL;ADuEG;EACE,aAAA;EACA,YAAA;ECrEL;ADwEG;EACE,aAAA;EACA,YAAA;ECtEL;AD2EG;;EAEE,gBAAA;ECzEL;AD8ED;;;EAGE,kBAAA;EC5ED;AD+ED;EACE,aAAA;EACA,aAAA;EACA,gCAAA;KAAA,6BAAA;UAAA,wBAAA;EC7ED;AD+EC;EACE,YAAA;EC7EH;ADiFD;EACE,aAAA;EACA,aAAA;EACA,gCAAA;KAAA,6BAAA;UAAA,wBAAA;EC/ED;ADiFC;EACE,aAAA;EC/EH;ADoFC;EACE,oBAAA;EClFH;ADqFC;EACE,kBAAA;EACA,aAAA;ECnFH;ADuFD;;EAEE,0BAAA;ECrFD;ADwFD;EACE,+BAAA;EACA,QAAA;EACA,SAAA;EACA,2BAAA;EACA,aAAA;EACA,yBAAA;EACA,YAAA;ECtFD","file":"bootstrap-select.css","sourcesContent":["@import \"variables\";\n\n// Mixins\n.cursor-disabled() {\n cursor: not-allowed;\n}\n\n// Rules\n.bootstrap-select {\n width: 220px \\0; /*IE9 and below*/\n\n // The selectpicker button\n > .dropdown-toggle {\n width: 100%;\n padding-right: 25px;\n }\n\n // Error display\n .has-error & .dropdown-toggle,\n .error & .dropdown-toggle {\n border-color: @color-red-error;\n }\n\n &.fit-width {\n width: auto !important;\n }\n\n &:not([class*=\"col-\"]):not([class*=\"form-control\"]):not(.input-group-btn) {\n width: @width-default;\n }\n\n .dropdown-toggle:focus {\n outline: thin dotted #333333 !important;\n outline: 5px auto -webkit-focus-ring-color !important;\n outline-offset: -2px;\n }\n}\n\n.bootstrap-select.form-control {\n margin-bottom: 0;\n padding: 0;\n border: none;\n\n &:not([class*=\"col-\"]) {\n width: 100%;\n }\n\n &.input-group-btn {\n z-index: auto;\n }\n}\n\n// The selectpicker components\n.bootstrap-select.btn-group {\n &:not(.input-group-btn),\n &[class*=\"col-\"] {\n float: none;\n display: inline-block;\n margin-left: 0;\n }\n\n // Forces the pull to the right, if necessary\n &,\n &[class*=\"col-\"],\n .row &[class*=\"col-\"] {\n &.dropdown-menu-right {\n float: right;\n }\n }\n\n .form-inline &,\n .form-horizontal &,\n .form-group & {\n margin-bottom: 0;\n }\n\n .form-group-lg &.form-control,\n .form-group-sm &.form-control {\n padding: 0;\n }\n\n // Set the width of the live search (and any other form control within an inline form)\n // see https://github.com/silviomoreto/bootstrap-select/issues/685\n .form-inline & .form-control {\n width: 100%;\n }\n\n &.disabled,\n > .disabled {\n .cursor-disabled();\n\n &:focus {\n outline: none !important;\n }\n }\n\n // The selectpicker button\n .dropdown-toggle {\n .filter-option {\n display: inline-block;\n overflow: hidden;\n width: 100%;\n text-align: left;\n }\n\n .caret {\n position: absolute;\n top: 50%;\n right: 12px;\n margin-top: -2px;\n vertical-align: middle;\n }\n }\n\n &[class*=\"col-\"] .dropdown-toggle {\n width: 100%;\n }\n\n // The selectpicker dropdown\n .dropdown-menu {\n min-width: 100%;\n z-index: @zindex-select-dropdown;\n box-sizing: border-box;\n\n &.inner {\n position: static;\n float: none;\n border: 0;\n padding: 0;\n margin: 0;\n border-radius: 0;\n box-shadow: none;\n }\n\n li {\n position: relative;\n\n &.active small {\n color: #fff;\n }\n\n &.disabled a {\n .cursor-disabled();\n }\n\n a {\n cursor: pointer;\n\n &.opt {\n position: relative;\n padding-left: 2.25em;\n }\n\n span.check-mark {\n display: none;\n }\n\n span.text {\n display: inline-block;\n }\n }\n\n small {\n padding-left: 0.5em;\n }\n }\n\n .notify {\n position: absolute;\n bottom: 5px;\n width: 96%;\n margin: 0 2%;\n min-height: 26px;\n padding: 3px 5px;\n background: rgb(245, 245, 245);\n border: 1px solid rgb(227, 227, 227);\n box-shadow: inset 0 1px 1px fade(rgb(0, 0, 0), 5%);\n pointer-events: none;\n opacity: 0.9;\n box-sizing: border-box;\n }\n }\n\n .no-results {\n padding: 3px;\n background: #f5f5f5;\n margin: 0 5px;\n white-space: nowrap;\n }\n\n &.fit-width .dropdown-toggle {\n .filter-option {\n position: static;\n }\n\n .caret {\n position: static;\n top: auto;\n margin-top: -1px;\n }\n }\n\n &.show-tick .dropdown-menu li {\n &.selected a span.check-mark {\n position: absolute;\n display: inline-block;\n right: 15px;\n margin-top: 5px;\n }\n\n a span.text {\n margin-right: 34px;\n }\n }\n}\n\n.bootstrap-select.show-menu-arrow {\n &.open > .dropdown-toggle {\n z-index: (@zindex-select-dropdown + 1);\n }\n\n .dropdown-toggle {\n &:before {\n content: '';\n border-left: 7px solid transparent;\n border-right: 7px solid transparent;\n border-bottom: 7px solid @color-grey-arrow;\n position: absolute;\n bottom: -4px;\n left: 9px;\n display: none;\n }\n\n &:after {\n content: '';\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-bottom: 6px solid white;\n position: absolute;\n bottom: -4px;\n left: 10px;\n display: none;\n }\n }\n\n &.dropup .dropdown-toggle {\n &:before {\n bottom: auto;\n top: -3px;\n border-top: 7px solid @color-grey-arrow;\n border-bottom: 0;\n }\n\n &:after {\n bottom: auto;\n top: -3px;\n border-top: 6px solid white;\n border-bottom: 0;\n }\n }\n\n &.pull-right .dropdown-toggle {\n &:before {\n right: 12px;\n left: auto;\n }\n\n &:after {\n right: 13px;\n left: auto;\n }\n }\n\n &.open > .dropdown-toggle {\n &:before,\n &:after {\n display: block;\n }\n }\n}\n\n.bs-searchbox,\n.bs-actionsbox,\n.bs-donebutton {\n padding: 4px 8px;\n}\n\n.bs-actionsbox {\n float: left;\n width: 100%;\n box-sizing: border-box;\n\n & .btn-group button {\n width: 50%;\n }\n}\n\n.bs-donebutton {\n float: left;\n width: 100%;\n box-sizing: border-box;\n\n & .btn-group button {\n width: 100%;\n }\n}\n\n.bs-searchbox {\n & + .bs-actionsbox {\n padding: 0 8px 4px;\n }\n\n & .form-control {\n margin-bottom: 0;\n width: 100%;\n }\n}\n\nselect.bs-select-hidden,\nselect.selectpicker {\n display: none !important;\n}\n\nselect.mobile-device {\n position: absolute !important;\n top: 0;\n left: 0;\n display: block !important;\n width: 100%;\n height: 100% !important;\n opacity: 0;\n}\n",".bootstrap-select {\n width: 220px \\0;\n /*IE9 and below*/\n}\n.bootstrap-select > .dropdown-toggle {\n width: 100%;\n padding-right: 25px;\n}\n.has-error .bootstrap-select .dropdown-toggle,\n.error .bootstrap-select .dropdown-toggle {\n border-color: #b94a48;\n}\n.bootstrap-select.fit-width {\n width: auto !important;\n}\n.bootstrap-select:not([class*=\"col-\"]):not([class*=\"form-control\"]):not(.input-group-btn) {\n width: 220px;\n}\n.bootstrap-select .dropdown-toggle:focus {\n outline: thin dotted #333333 !important;\n outline: 5px auto -webkit-focus-ring-color !important;\n outline-offset: -2px;\n}\n.bootstrap-select.form-control {\n margin-bottom: 0;\n padding: 0;\n border: none;\n}\n.bootstrap-select.form-control:not([class*=\"col-\"]) {\n width: 100%;\n}\n.bootstrap-select.form-control.input-group-btn {\n z-index: auto;\n}\n.bootstrap-select.btn-group:not(.input-group-btn),\n.bootstrap-select.btn-group[class*=\"col-\"] {\n float: none;\n display: inline-block;\n margin-left: 0;\n}\n.bootstrap-select.btn-group.dropdown-menu-right,\n.bootstrap-select.btn-group[class*=\"col-\"].dropdown-menu-right,\n.row .bootstrap-select.btn-group[class*=\"col-\"].dropdown-menu-right {\n float: right;\n}\n.form-inline .bootstrap-select.btn-group,\n.form-horizontal .bootstrap-select.btn-group,\n.form-group .bootstrap-select.btn-group {\n margin-bottom: 0;\n}\n.form-group-lg .bootstrap-select.btn-group.form-control,\n.form-group-sm .bootstrap-select.btn-group.form-control {\n padding: 0;\n}\n.form-inline .bootstrap-select.btn-group .form-control {\n width: 100%;\n}\n.bootstrap-select.btn-group.disabled,\n.bootstrap-select.btn-group > .disabled {\n cursor: not-allowed;\n}\n.bootstrap-select.btn-group.disabled:focus,\n.bootstrap-select.btn-group > .disabled:focus {\n outline: none !important;\n}\n.bootstrap-select.btn-group .dropdown-toggle .filter-option {\n display: inline-block;\n overflow: hidden;\n width: 100%;\n text-align: left;\n}\n.bootstrap-select.btn-group .dropdown-toggle .caret {\n position: absolute;\n top: 50%;\n right: 12px;\n margin-top: -2px;\n vertical-align: middle;\n}\n.bootstrap-select.btn-group[class*=\"col-\"] .dropdown-toggle {\n width: 100%;\n}\n.bootstrap-select.btn-group .dropdown-menu {\n min-width: 100%;\n z-index: 1035;\n box-sizing: border-box;\n}\n.bootstrap-select.btn-group .dropdown-menu.inner {\n position: static;\n float: none;\n border: 0;\n padding: 0;\n margin: 0;\n border-radius: 0;\n box-shadow: none;\n}\n.bootstrap-select.btn-group .dropdown-menu li {\n position: relative;\n}\n.bootstrap-select.btn-group .dropdown-menu li.active small {\n color: #fff;\n}\n.bootstrap-select.btn-group .dropdown-menu li.disabled a {\n cursor: not-allowed;\n}\n.bootstrap-select.btn-group .dropdown-menu li a {\n cursor: pointer;\n}\n.bootstrap-select.btn-group .dropdown-menu li a.opt {\n position: relative;\n padding-left: 2.25em;\n}\n.bootstrap-select.btn-group .dropdown-menu li a span.check-mark {\n display: none;\n}\n.bootstrap-select.btn-group .dropdown-menu li a span.text {\n display: inline-block;\n}\n.bootstrap-select.btn-group .dropdown-menu li small {\n padding-left: 0.5em;\n}\n.bootstrap-select.btn-group .dropdown-menu .notify {\n position: absolute;\n bottom: 5px;\n width: 96%;\n margin: 0 2%;\n min-height: 26px;\n padding: 3px 5px;\n background: #f5f5f5;\n border: 1px solid #e3e3e3;\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);\n pointer-events: none;\n opacity: 0.9;\n box-sizing: border-box;\n}\n.bootstrap-select.btn-group .no-results {\n padding: 3px;\n background: #f5f5f5;\n margin: 0 5px;\n white-space: nowrap;\n}\n.bootstrap-select.btn-group.fit-width .dropdown-toggle .filter-option {\n position: static;\n}\n.bootstrap-select.btn-group.fit-width .dropdown-toggle .caret {\n position: static;\n top: auto;\n margin-top: -1px;\n}\n.bootstrap-select.btn-group.show-tick .dropdown-menu li.selected a span.check-mark {\n position: absolute;\n display: inline-block;\n right: 15px;\n margin-top: 5px;\n}\n.bootstrap-select.btn-group.show-tick .dropdown-menu li a span.text {\n margin-right: 34px;\n}\n.bootstrap-select.show-menu-arrow.open > .dropdown-toggle {\n z-index: 1036;\n}\n.bootstrap-select.show-menu-arrow .dropdown-toggle:before {\n content: '';\n border-left: 7px solid transparent;\n border-right: 7px solid transparent;\n border-bottom: 7px solid rgba(204, 204, 204, 0.2);\n position: absolute;\n bottom: -4px;\n left: 9px;\n display: none;\n}\n.bootstrap-select.show-menu-arrow .dropdown-toggle:after {\n content: '';\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-bottom: 6px solid white;\n position: absolute;\n bottom: -4px;\n left: 10px;\n display: none;\n}\n.bootstrap-select.show-menu-arrow.dropup .dropdown-toggle:before {\n bottom: auto;\n top: -3px;\n border-top: 7px solid rgba(204, 204, 204, 0.2);\n border-bottom: 0;\n}\n.bootstrap-select.show-menu-arrow.dropup .dropdown-toggle:after {\n bottom: auto;\n top: -3px;\n border-top: 6px solid white;\n border-bottom: 0;\n}\n.bootstrap-select.show-menu-arrow.pull-right .dropdown-toggle:before {\n right: 12px;\n left: auto;\n}\n.bootstrap-select.show-menu-arrow.pull-right .dropdown-toggle:after {\n right: 13px;\n left: auto;\n}\n.bootstrap-select.show-menu-arrow.open > .dropdown-toggle:before,\n.bootstrap-select.show-menu-arrow.open > .dropdown-toggle:after {\n display: block;\n}\n.bs-searchbox,\n.bs-actionsbox,\n.bs-donebutton {\n padding: 4px 8px;\n}\n.bs-actionsbox {\n float: left;\n width: 100%;\n box-sizing: border-box;\n}\n.bs-actionsbox .btn-group button {\n width: 50%;\n}\n.bs-donebutton {\n float: left;\n width: 100%;\n box-sizing: border-box;\n}\n.bs-donebutton .btn-group button {\n width: 100%;\n}\n.bs-searchbox + .bs-actionsbox {\n padding: 0 8px 4px;\n}\n.bs-searchbox .form-control {\n margin-bottom: 0;\n width: 100%;\n}\nselect.bs-select-hidden,\nselect.selectpicker {\n display: none !important;\n}\nselect.mobile-device {\n position: absolute !important;\n top: 0;\n left: 0;\n display: block !important;\n width: 100%;\n height: 100% !important;\n opacity: 0;\n}\n/*# sourceMappingURL=bootstrap-select.css.map */"]} | |
0 | 2 | \ No newline at end of file | ... | ... |
resource/lib/bootstrap-select/css/bootstrap-select.min.css
0 → 100644
1 | +/*! | |
2 | + * Bootstrap-select v1.7.2 (http://silviomoreto.github.io/bootstrap-select) | |
3 | + * | |
4 | + * Copyright 2013-2015 bootstrap-select | |
5 | + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) | |
6 | + */.bootstrap-select{width:220px \0}.bootstrap-select>.dropdown-toggle{width:100%;padding-right:25px;border-radius: 4px!important;}.error .bootstrap-select .dropdown-toggle,.has-error .bootstrap-select .dropdown-toggle{border-color:#b94a48}.bootstrap-select.fit-width{width:auto!important}.bootstrap-select:not([class*=col-]):not([class*=form-control]):not(.input-group-btn){width:220px}.bootstrap-select .dropdown-toggle:focus{outline:thin dotted #333!important;outline:5px auto -webkit-focus-ring-color!important;outline-offset:-2px}.bootstrap-select.form-control{margin-bottom:0;padding:0;border:none}.bootstrap-select.form-control:not([class*=col-]){width:100%}.bootstrap-select.form-control.input-group-btn{z-index:auto}.bootstrap-select.btn-group:not(.input-group-btn),.bootstrap-select.btn-group[class*=col-]{float:none;display:inline-block;margin-left:0}.bootstrap-select.btn-group.dropdown-menu-right,.bootstrap-select.btn-group[class*=col-].dropdown-menu-right,.row .bootstrap-select.btn-group[class*=col-].dropdown-menu-right{float:right}.form-group .bootstrap-select.btn-group,.form-horizontal .bootstrap-select.btn-group,.form-inline .bootstrap-select.btn-group{margin-bottom:0}.form-group-lg .bootstrap-select.btn-group.form-control,.form-group-sm .bootstrap-select.btn-group.form-control{padding:0}.form-inline .bootstrap-select.btn-group .form-control{width:100%}.bootstrap-select.btn-group.disabled,.bootstrap-select.btn-group>.disabled{cursor:not-allowed}.bootstrap-select.btn-group.disabled:focus,.bootstrap-select.btn-group>.disabled:focus{outline:0!important}.bootstrap-select.btn-group .dropdown-toggle .filter-option{display:inline-block;overflow:hidden;width:100%;text-align:left}.bootstrap-select.btn-group .dropdown-toggle .caret{position:absolute;top:50%;right:12px;margin-top:-2px;vertical-align:middle}.bootstrap-select.btn-group[class*=col-] .dropdown-toggle{width:100%}.bootstrap-select.btn-group .dropdown-menu{min-width:100%;z-index:1035;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.bootstrap-select.btn-group .dropdown-menu.inner{position:static;float:none;border:0;padding:0;margin:0;border-radius:0;-webkit-box-shadow:none;box-shadow:none}.bootstrap-select.btn-group .dropdown-menu li{position:relative}.bootstrap-select.btn-group .dropdown-menu li.active small{color:#fff}.bootstrap-select.btn-group .dropdown-menu li.disabled a{cursor:not-allowed}.bootstrap-select.btn-group .dropdown-menu li a{cursor:pointer}.bootstrap-select.btn-group .dropdown-menu li a.opt{position:relative;padding-left:2.25em}.bootstrap-select.btn-group .dropdown-menu li a span.check-mark{display:none}.bootstrap-select.btn-group .dropdown-menu li a span.text{display:inline-block}.bootstrap-select.btn-group .dropdown-menu li small{padding-left:.5em}.bootstrap-select.btn-group .dropdown-menu .notify{position:absolute;bottom:5px;width:96%;margin:0 2%;min-height:26px;padding:3px 5px;background:#f5f5f5;border:1px solid #e3e3e3;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05);pointer-events:none;opacity:.9;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.bootstrap-select.btn-group .no-results{padding:3px;background:#f5f5f5;margin:0 5px;white-space:nowrap}.bootstrap-select.btn-group.fit-width .dropdown-toggle .filter-option{position:static}.bootstrap-select.btn-group.fit-width .dropdown-toggle .caret{position:static;top:auto;margin-top:-1px}.bootstrap-select.btn-group.show-tick .dropdown-menu li.selected a span.check-mark{position:absolute;display:inline-block;right:15px;margin-top:5px}.bootstrap-select.btn-group.show-tick .dropdown-menu li a span.text{margin-right:34px}.bootstrap-select.show-menu-arrow.open>.dropdown-toggle{z-index:1036}.bootstrap-select.show-menu-arrow .dropdown-toggle:before{content:'';border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid rgba(204,204,204,.2);position:absolute;bottom:-4px;left:9px;display:none}.bootstrap-select.show-menu-arrow .dropdown-toggle:after{content:'';border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #fff;position:absolute;bottom:-4px;left:10px;display:none}.bootstrap-select.show-menu-arrow.dropup .dropdown-toggle:before{bottom:auto;top:-3px;border-top:7px solid rgba(204,204,204,.2);border-bottom:0}.bootstrap-select.show-menu-arrow.dropup .dropdown-toggle:after{bottom:auto;top:-3px;border-top:6px solid #fff;border-bottom:0}.bootstrap-select.show-menu-arrow.pull-right .dropdown-toggle:before{right:12px;left:auto}.bootstrap-select.show-menu-arrow.pull-right .dropdown-toggle:after{right:13px;left:auto}.bootstrap-select.show-menu-arrow.open>.dropdown-toggle:after,.bootstrap-select.show-menu-arrow.open>.dropdown-toggle:before{display:block}.bs-actionsbox,.bs-donebutton,.bs-searchbox{padding:4px 8px}.bs-actionsbox{float:left;width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.bs-actionsbox .btn-group button{width:50%}.bs-donebutton{float:left;width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.bs-donebutton .btn-group button{width:100%}.bs-searchbox+.bs-actionsbox{padding:0 8px 4px}.bs-searchbox .form-control{margin-bottom:0;width:100%}select.bs-select-hidden,select.selectpicker{display:none!important}select.mobile-device{position:absolute!important;top:0;left:0;display:block!important;width:100%;height:100%!important;opacity:0} | |
0 | 7 | \ No newline at end of file | ... | ... |
resource/lib/bootstrap-select/js/bootstrap-select.js
0 → 100644
1 | +/*! | |
2 | + * Bootstrap-select v1.7.2 (http://silviomoreto.github.io/bootstrap-select) | |
3 | + * | |
4 | + * Copyright 2013-2015 bootstrap-select | |
5 | + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) | |
6 | + */ | |
7 | + | |
8 | +(function (root, factory) { | |
9 | + if (typeof define === 'function' && define.amd) { | |
10 | + // AMD. Register as an anonymous module unless amdModuleId is set | |
11 | + define(["jquery"], function (a0) { | |
12 | + return (factory(a0)); | |
13 | + }); | |
14 | + } else if (typeof exports === 'object') { | |
15 | + // Node. Does not work with strict CommonJS, but | |
16 | + // only CommonJS-like environments that support module.exports, | |
17 | + // like Node. | |
18 | + module.exports = factory(require("jquery")); | |
19 | + } else { | |
20 | + factory(jQuery); | |
21 | + } | |
22 | +}(this, function () { | |
23 | + | |
24 | +(function ($) { | |
25 | + 'use strict'; | |
26 | + | |
27 | + //<editor-fold desc="Shims"> | |
28 | + if (!String.prototype.includes) { | |
29 | + (function () { | |
30 | + 'use strict'; // needed to support `apply`/`call` with `undefined`/`null` | |
31 | + var toString = {}.toString; | |
32 | + var defineProperty = (function () { | |
33 | + // IE 8 only supports `Object.defineProperty` on DOM elements | |
34 | + try { | |
35 | + var object = {}; | |
36 | + var $defineProperty = Object.defineProperty; | |
37 | + var result = $defineProperty(object, object, object) && $defineProperty; | |
38 | + } catch (error) { | |
39 | + } | |
40 | + return result; | |
41 | + }()); | |
42 | + var indexOf = ''.indexOf; | |
43 | + var includes = function (search) { | |
44 | + if (this == null) { | |
45 | + throw TypeError(); | |
46 | + } | |
47 | + var string = String(this); | |
48 | + if (search && toString.call(search) == '[object RegExp]') { | |
49 | + throw TypeError(); | |
50 | + } | |
51 | + var stringLength = string.length; | |
52 | + var searchString = String(search); | |
53 | + var searchLength = searchString.length; | |
54 | + var position = arguments.length > 1 ? arguments[1] : undefined; | |
55 | + // `ToInteger` | |
56 | + var pos = position ? Number(position) : 0; | |
57 | + if (pos != pos) { // better `isNaN` | |
58 | + pos = 0; | |
59 | + } | |
60 | + var start = Math.min(Math.max(pos, 0), stringLength); | |
61 | + // Avoid the `indexOf` call if no match is possible | |
62 | + if (searchLength + start > stringLength) { | |
63 | + return false; | |
64 | + } | |
65 | + return indexOf.call(string, searchString, pos) != -1; | |
66 | + }; | |
67 | + if (defineProperty) { | |
68 | + defineProperty(String.prototype, 'includes', { | |
69 | + 'value': includes, | |
70 | + 'configurable': true, | |
71 | + 'writable': true | |
72 | + }); | |
73 | + } else { | |
74 | + String.prototype.includes = includes; | |
75 | + } | |
76 | + }()); | |
77 | + } | |
78 | + | |
79 | + if (!String.prototype.startsWith) { | |
80 | + (function () { | |
81 | + 'use strict'; // needed to support `apply`/`call` with `undefined`/`null` | |
82 | + var defineProperty = (function () { | |
83 | + // IE 8 only supports `Object.defineProperty` on DOM elements | |
84 | + try { | |
85 | + var object = {}; | |
86 | + var $defineProperty = Object.defineProperty; | |
87 | + var result = $defineProperty(object, object, object) && $defineProperty; | |
88 | + } catch (error) { | |
89 | + } | |
90 | + return result; | |
91 | + }()); | |
92 | + var toString = {}.toString; | |
93 | + var startsWith = function (search) { | |
94 | + if (this == null) { | |
95 | + throw TypeError(); | |
96 | + } | |
97 | + var string = String(this); | |
98 | + if (search && toString.call(search) == '[object RegExp]') { | |
99 | + throw TypeError(); | |
100 | + } | |
101 | + var stringLength = string.length; | |
102 | + var searchString = String(search); | |
103 | + var searchLength = searchString.length; | |
104 | + var position = arguments.length > 1 ? arguments[1] : undefined; | |
105 | + // `ToInteger` | |
106 | + var pos = position ? Number(position) : 0; | |
107 | + if (pos != pos) { // better `isNaN` | |
108 | + pos = 0; | |
109 | + } | |
110 | + var start = Math.min(Math.max(pos, 0), stringLength); | |
111 | + // Avoid the `indexOf` call if no match is possible | |
112 | + if (searchLength + start > stringLength) { | |
113 | + return false; | |
114 | + } | |
115 | + var index = -1; | |
116 | + while (++index < searchLength) { | |
117 | + if (string.charCodeAt(start + index) != searchString.charCodeAt(index)) { | |
118 | + return false; | |
119 | + } | |
120 | + } | |
121 | + return true; | |
122 | + }; | |
123 | + if (defineProperty) { | |
124 | + defineProperty(String.prototype, 'startsWith', { | |
125 | + 'value': startsWith, | |
126 | + 'configurable': true, | |
127 | + 'writable': true | |
128 | + }); | |
129 | + } else { | |
130 | + String.prototype.startsWith = startsWith; | |
131 | + } | |
132 | + }()); | |
133 | + } | |
134 | + | |
135 | + if (!Object.keys) { | |
136 | + Object.keys = function ( | |
137 | + o, // object | |
138 | + k, // key | |
139 | + r // result array | |
140 | + ){ | |
141 | + // initialize object and result | |
142 | + r=[]; | |
143 | + // iterate over object keys | |
144 | + for (k in o) | |
145 | + // fill result array with non-prototypical keys | |
146 | + r.hasOwnProperty.call(o, k) && r.push(k); | |
147 | + // return result | |
148 | + return r | |
149 | + }; | |
150 | + } | |
151 | + //</editor-fold> | |
152 | + | |
153 | + // Case insensitive contains search | |
154 | + $.expr[':'].icontains = function (obj, index, meta) { | |
155 | + var $obj = $(obj); | |
156 | + var haystack = ($obj.data('tokens') || $obj.text()).toUpperCase(); | |
157 | + return haystack.includes(meta[3].toUpperCase()); | |
158 | + }; | |
159 | + | |
160 | + // Case insensitive begins search | |
161 | + $.expr[':'].ibegins = function (obj, index, meta) { | |
162 | + var $obj = $(obj); | |
163 | + var haystack = ($obj.data('tokens') || $obj.text()).toUpperCase(); | |
164 | + return haystack.startsWith(meta[3].toUpperCase()); | |
165 | + }; | |
166 | + | |
167 | + // Case and accent insensitive contains search | |
168 | + $.expr[':'].aicontains = function (obj, index, meta) { | |
169 | + var $obj = $(obj); | |
170 | + var haystack = ($obj.data('tokens') || $obj.data('normalizedText') || $obj.text()).toUpperCase(); | |
171 | + return haystack.includes(meta[3].toUpperCase()); | |
172 | + }; | |
173 | + | |
174 | + // Case and accent insensitive begins search | |
175 | + $.expr[':'].aibegins = function (obj, index, meta) { | |
176 | + var $obj = $(obj); | |
177 | + var haystack = ($obj.data('tokens') || $obj.data('normalizedText') || $obj.text()).toUpperCase(); | |
178 | + return haystack.startsWith(meta[3].toUpperCase()); | |
179 | + }; | |
180 | + | |
181 | + /** | |
182 | + * Remove all diatrics from the given text. | |
183 | + * @access private | |
184 | + * @param {String} text | |
185 | + * @returns {String} | |
186 | + */ | |
187 | + function normalizeToBase(text) { | |
188 | + var rExps = [ | |
189 | + {re: /[\xC0-\xC6]/g, ch: "A"}, | |
190 | + {re: /[\xE0-\xE6]/g, ch: "a"}, | |
191 | + {re: /[\xC8-\xCB]/g, ch: "E"}, | |
192 | + {re: /[\xE8-\xEB]/g, ch: "e"}, | |
193 | + {re: /[\xCC-\xCF]/g, ch: "I"}, | |
194 | + {re: /[\xEC-\xEF]/g, ch: "i"}, | |
195 | + {re: /[\xD2-\xD6]/g, ch: "O"}, | |
196 | + {re: /[\xF2-\xF6]/g, ch: "o"}, | |
197 | + {re: /[\xD9-\xDC]/g, ch: "U"}, | |
198 | + {re: /[\xF9-\xFC]/g, ch: "u"}, | |
199 | + {re: /[\xC7-\xE7]/g, ch: "c"}, | |
200 | + {re: /[\xD1]/g, ch: "N"}, | |
201 | + {re: /[\xF1]/g, ch: "n"} | |
202 | + ]; | |
203 | + $.each(rExps, function () { | |
204 | + text = text.replace(this.re, this.ch); | |
205 | + }); | |
206 | + return text; | |
207 | + } | |
208 | + | |
209 | + | |
210 | + function htmlEscape(html) { | |
211 | + var escapeMap = { | |
212 | + '&': '&', | |
213 | + '<': '<', | |
214 | + '>': '>', | |
215 | + '"': '"', | |
216 | + "'": ''', | |
217 | + '`': '`' | |
218 | + }; | |
219 | + var source = '(?:' + Object.keys(escapeMap).join('|') + ')', | |
220 | + testRegexp = new RegExp(source), | |
221 | + replaceRegexp = new RegExp(source, 'g'), | |
222 | + string = html == null ? '' : '' + html; | |
223 | + return testRegexp.test(string) ? string.replace(replaceRegexp, function (match) { | |
224 | + return escapeMap[match]; | |
225 | + }) : string; | |
226 | + } | |
227 | + | |
228 | + var Selectpicker = function (element, options, e) { | |
229 | + if (e) { | |
230 | + e.stopPropagation(); | |
231 | + e.preventDefault(); | |
232 | + } | |
233 | + | |
234 | + this.$element = $(element); | |
235 | + this.$newElement = null; | |
236 | + this.$button = null; | |
237 | + this.$menu = null; | |
238 | + this.$lis = null; | |
239 | + this.options = options; | |
240 | + | |
241 | + // If we have no title yet, try to pull it from the html title attribute (jQuery doesnt' pick it up as it's not a | |
242 | + // data-attribute) | |
243 | + if (this.options.title === null) { | |
244 | + this.options.title = this.$element.attr('title'); | |
245 | + } | |
246 | + | |
247 | + //Expose public methods | |
248 | + this.val = Selectpicker.prototype.val; | |
249 | + this.render = Selectpicker.prototype.render; | |
250 | + this.refresh = Selectpicker.prototype.refresh; | |
251 | + this.setStyle = Selectpicker.prototype.setStyle; | |
252 | + this.selectAll = Selectpicker.prototype.selectAll; | |
253 | + this.deselectAll = Selectpicker.prototype.deselectAll; | |
254 | + this.destroy = Selectpicker.prototype.remove; | |
255 | + this.remove = Selectpicker.prototype.remove; | |
256 | + this.show = Selectpicker.prototype.show; | |
257 | + this.hide = Selectpicker.prototype.hide; | |
258 | + | |
259 | + this.init(); | |
260 | + }; | |
261 | + | |
262 | + Selectpicker.VERSION = '1.7.2'; | |
263 | + | |
264 | + // part of this is duplicated in i18n/defaults-en_US.js. Make sure to update both. | |
265 | + Selectpicker.DEFAULTS = { | |
266 | + noneSelectedText: 'Nothing selected', | |
267 | + noneResultsText: '没有搜索到{0}', | |
268 | + countSelectedText: function (numSelected, numTotal) { | |
269 | + return (numSelected == 1) ? "{0} item selected" : "{0} items selected"; | |
270 | + }, | |
271 | + maxOptionsText: function (numAll, numGroup) { | |
272 | + return [ | |
273 | + (numAll == 1) ? 'Limit reached ({n} item max)' : 'Limit reached ({n} items max)', | |
274 | + (numGroup == 1) ? 'Group limit reached ({n} item max)' : 'Group limit reached ({n} items max)' | |
275 | + ]; | |
276 | + }, | |
277 | + selectAllText: 'Select All', | |
278 | + deselectAllText: 'Deselect All', | |
279 | + doneButton: false, | |
280 | + doneButtonText: 'Close', | |
281 | + multipleSeparator: ', ', | |
282 | + styleBase: 'btn', | |
283 | + style: 'btn-default', | |
284 | + size: 'auto', | |
285 | + title: null, | |
286 | + selectedTextFormat: 'values', | |
287 | + width: false, | |
288 | + container: false, | |
289 | + hideDisabled: false, | |
290 | + showSubtext: false, | |
291 | + showIcon: true, | |
292 | + showContent: true, | |
293 | + dropupAuto: true, | |
294 | + header: false, | |
295 | + liveSearch: false, | |
296 | + liveSearchPlaceholder: null, | |
297 | + liveSearchNormalize: false, | |
298 | + liveSearchStyle: 'contains', | |
299 | + actionsBox: false, | |
300 | + iconBase: 'glyphicon', | |
301 | + tickIcon: 'glyphicon-ok', | |
302 | + maxOptions: false, | |
303 | + mobile: false, | |
304 | + selectOnTab: false, | |
305 | + dropdownAlignRight: false | |
306 | + }; | |
307 | + | |
308 | + Selectpicker.prototype = { | |
309 | + | |
310 | + constructor: Selectpicker, | |
311 | + | |
312 | + init: function () { | |
313 | + var that = this, | |
314 | + id = this.$element.attr('id'); | |
315 | + | |
316 | + this.$element.addClass('bs-select-hidden'); | |
317 | + // store originalIndex (key) and newIndex (value) in this.liObj for fast accessibility | |
318 | + // allows us to do this.$lis.eq(that.liObj[index]) instead of this.$lis.filter('[data-original-index="' + index + '"]') | |
319 | + this.liObj = {}; | |
320 | + this.multiple = this.$element.prop('multiple'); | |
321 | + this.autofocus = this.$element.prop('autofocus'); | |
322 | + this.$newElement = this.createView(); | |
323 | + this.$element.after(this.$newElement); | |
324 | + this.$button = this.$newElement.children('button'); | |
325 | + this.$menu = this.$newElement.children('.dropdown-menu'); | |
326 | + this.$menuInner = this.$menu.children('.inner'); | |
327 | + this.$searchbox = this.$menu.find('input'); | |
328 | + | |
329 | + if (this.options.dropdownAlignRight) | |
330 | + this.$menu.addClass('dropdown-menu-right'); | |
331 | + | |
332 | + if (typeof id !== 'undefined') { | |
333 | + this.$button.attr('data-id', id); | |
334 | + $('label[for="' + id + '"]').click(function (e) { | |
335 | + e.preventDefault(); | |
336 | + that.$button.focus(); | |
337 | + }); | |
338 | + } | |
339 | + | |
340 | + this.checkDisabled(); | |
341 | + this.clickListener(); | |
342 | + if (this.options.liveSearch) this.liveSearchListener(); | |
343 | + this.render(); | |
344 | + this.setStyle(); | |
345 | + this.setWidth(); | |
346 | + if (this.options.container) this.selectPosition(); | |
347 | + this.$menu.data('this', this); | |
348 | + this.$newElement.data('this', this); | |
349 | + if (this.options.mobile) this.mobile(); | |
350 | + | |
351 | + this.$newElement.on('hide.bs.dropdown', function (e) { | |
352 | + that.$element.trigger('hide.bs.select', e); | |
353 | + }); | |
354 | + | |
355 | + this.$newElement.on('hidden.bs.dropdown', function (e) { | |
356 | + that.$element.trigger('hidden.bs.select', e); | |
357 | + }); | |
358 | + | |
359 | + this.$newElement.on('show.bs.dropdown', function (e) { | |
360 | + that.$element.trigger('show.bs.select', e); | |
361 | + }); | |
362 | + | |
363 | + this.$newElement.on('shown.bs.dropdown', function (e) { | |
364 | + that.$element.trigger('shown.bs.select', e); | |
365 | + }); | |
366 | + | |
367 | + setTimeout(function () { | |
368 | + that.$element.trigger('loaded.bs.select'); | |
369 | + }); | |
370 | + }, | |
371 | + | |
372 | + createDropdown: function () { | |
373 | + // Options | |
374 | + // If we are multiple, then add the show-tick class by default | |
375 | + var multiple = this.multiple ? ' show-tick' : '', | |
376 | + inputGroup = this.$element.parent().hasClass('input-group') ? ' input-group-btn' : '', | |
377 | + autofocus = this.autofocus ? ' autofocus' : ''; | |
378 | + // Elements | |
379 | + var header = this.options.header ? '<div class="popover-title"><button type="button" class="close" aria-hidden="true">×</button>' + this.options.header + '</div>' : ''; | |
380 | + var searchbox = this.options.liveSearch ? | |
381 | + '<div class="bs-searchbox">' + | |
382 | + '<input type="text" class="form-control" autocomplete="off"' + | |
383 | + (null === this.options.liveSearchPlaceholder ? '' : ' placeholder="' + htmlEscape(this.options.liveSearchPlaceholder) + '"') + '>' + | |
384 | + '</div>' | |
385 | + : ''; | |
386 | + var actionsbox = this.multiple && this.options.actionsBox ? | |
387 | + '<div class="bs-actionsbox">' + | |
388 | + '<div class="btn-group btn-group-sm btn-block">' + | |
389 | + '<button type="button" class="actions-btn bs-select-all btn btn-default">' + | |
390 | + this.options.selectAllText + | |
391 | + '</button>' + | |
392 | + '<button type="button" class="actions-btn bs-deselect-all btn btn-default">' + | |
393 | + this.options.deselectAllText + | |
394 | + '</button>' + | |
395 | + '</div>' + | |
396 | + '</div>' | |
397 | + : ''; | |
398 | + var donebutton = this.multiple && this.options.doneButton ? | |
399 | + '<div class="bs-donebutton">' + | |
400 | + '<div class="btn-group btn-block">' + | |
401 | + '<button type="button" class="btn btn-sm btn-default">' + | |
402 | + this.options.doneButtonText + | |
403 | + '</button>' + | |
404 | + '</div>' + | |
405 | + '</div>' | |
406 | + : ''; | |
407 | + var drop = | |
408 | + '<div class="btn-group bootstrap-select' + multiple + inputGroup + '">' + | |
409 | + '<button type="button" class="' + this.options.styleBase + ' dropdown-toggle" data-toggle="dropdown"' + autofocus + '>' + | |
410 | + '<span class="filter-option pull-left"></span> ' + | |
411 | + '<span class="caret"></span>' + | |
412 | + '</button>' + | |
413 | + '<div class="dropdown-menu open">' + | |
414 | + header + | |
415 | + searchbox + | |
416 | + actionsbox + | |
417 | + '<ul class="dropdown-menu inner" role="menu">' + | |
418 | + '</ul>' + | |
419 | + donebutton + | |
420 | + '</div>' + | |
421 | + '</div>'; | |
422 | + | |
423 | + return $(drop); | |
424 | + }, | |
425 | + | |
426 | + createView: function () { | |
427 | + var $drop = this.createDropdown(), | |
428 | + li = this.createLi(); | |
429 | + | |
430 | + $drop.find('ul')[0].innerHTML = li; | |
431 | + return $drop; | |
432 | + }, | |
433 | + | |
434 | + reloadLi: function () { | |
435 | + //Remove all children. | |
436 | + this.destroyLi(); | |
437 | + //Re build | |
438 | + var li = this.createLi(); | |
439 | + this.$menuInner[0].innerHTML = li; | |
440 | + }, | |
441 | + | |
442 | + destroyLi: function () { | |
443 | + this.$menu.find('li').remove(); | |
444 | + }, | |
445 | + | |
446 | + createLi: function () { | |
447 | + var that = this, | |
448 | + _li = [], | |
449 | + optID = 0, | |
450 | + titleOption = document.createElement('option'), | |
451 | + liIndex = -1; // increment liIndex whenever a new <li> element is created to ensure liObj is correct | |
452 | + | |
453 | + // Helper functions | |
454 | + /** | |
455 | + * @param content | |
456 | + * @param [index] | |
457 | + * @param [classes] | |
458 | + * @param [optgroup] | |
459 | + * @returns {string} | |
460 | + */ | |
461 | + var generateLI = function (content, index, classes, optgroup) { | |
462 | + return '<li' + | |
463 | + ((typeof classes !== 'undefined' & '' !== classes) ? ' class="' + classes + '"' : '') + | |
464 | + ((typeof index !== 'undefined' & null !== index) ? ' data-original-index="' + index + '"' : '') + | |
465 | + ((typeof optgroup !== 'undefined' & null !== optgroup) ? 'data-optgroup="' + optgroup + '"' : '') + | |
466 | + '>' + content + '</li>'; | |
467 | + }; | |
468 | + | |
469 | + /** | |
470 | + * @param text | |
471 | + * @param [classes] | |
472 | + * @param [inline] | |
473 | + * @param [tokens] | |
474 | + * @returns {string} | |
475 | + */ | |
476 | + var generateA = function (text, classes, inline, tokens) { | |
477 | + return '<a tabindex="0"' + | |
478 | + (typeof classes !== 'undefined' ? ' class="' + classes + '"' : '') + | |
479 | + (typeof inline !== 'undefined' ? ' style="' + inline + '"' : '') + | |
480 | + (that.options.liveSearchNormalize ? ' data-normalized-text="' + normalizeToBase(htmlEscape(text)) + '"' : '') + | |
481 | + (typeof tokens !== 'undefined' || tokens !== null ? ' data-tokens="' + tokens + '"' : '') + | |
482 | + '>' + text + | |
483 | + '<span class="' + that.options.iconBase + ' ' + that.options.tickIcon + ' check-mark"></span>' + | |
484 | + '</a>'; | |
485 | + }; | |
486 | + | |
487 | + if (this.options.title && !this.multiple) { | |
488 | + // this option doesn't create a new <li> element, but does add a new option, so liIndex is decreased | |
489 | + // since liObj is recalculated on every refresh, liIndex needs to be decreased even if the titleOption is already appended | |
490 | + liIndex--; | |
491 | + | |
492 | + if (!this.$element.find('.bs-title-option').length) { | |
493 | + // Use native JS to prepend option (faster) | |
494 | + var element = this.$element[0]; | |
495 | + titleOption.className = 'bs-title-option'; | |
496 | + titleOption.appendChild(document.createTextNode(this.options.title)); | |
497 | + titleOption.value = ''; | |
498 | + element.insertBefore(titleOption, element.firstChild); | |
499 | + // Check if selected attribute is already set on an option. If not, select the titleOption option. | |
500 | + if (element.options[element.selectedIndex].getAttribute('selected') === null) titleOption.selected = true; | |
501 | + } | |
502 | + } | |
503 | + | |
504 | + this.$element.find('option').each(function (index) { | |
505 | + var $this = $(this); | |
506 | + | |
507 | + liIndex++; | |
508 | + | |
509 | + if ($this.hasClass('bs-title-option')) return; | |
510 | + | |
511 | + // Get the class and text for the option | |
512 | + var optionClass = this.className || '', | |
513 | + inline = this.style.cssText, | |
514 | + text = $this.data('content') ? $this.data('content') : $this.html(), | |
515 | + tokens = $this.data('tokens') ? $this.data('tokens') : null, | |
516 | + subtext = typeof $this.data('subtext') !== 'undefined' ? '<small class="text-muted">' + $this.data('subtext') + '</small>' : '', | |
517 | + icon = typeof $this.data('icon') !== 'undefined' ? '<span class="' + that.options.iconBase + ' ' + $this.data('icon') + '"></span> ' : '', | |
518 | + isDisabled = this.disabled || this.parentElement.tagName === 'OPTGROUP' && this.parentElement.disabled; | |
519 | + | |
520 | + if (icon !== '' && isDisabled) { | |
521 | + icon = '<span>' + icon + '</span>'; | |
522 | + } | |
523 | + | |
524 | + if (that.options.hideDisabled && isDisabled) { | |
525 | + liIndex--; | |
526 | + return; | |
527 | + } | |
528 | + | |
529 | + if (!$this.data('content')) { | |
530 | + // Prepend any icon and append any subtext to the main text. | |
531 | + text = icon + '<span class="text">' + text + subtext + '</span>'; | |
532 | + } | |
533 | + | |
534 | + if (this.parentElement.tagName === 'OPTGROUP' && $this.data('divider') !== true) { | |
535 | + if ($this.index() === 0) { // Is it the first option of the optgroup? | |
536 | + optID += 1; | |
537 | + | |
538 | + // Get the opt group label | |
539 | + var label = this.parentElement.label, | |
540 | + labelSubtext = typeof $this.parent().data('subtext') !== 'undefined' ? '<small class="text-muted">' + $this.parent().data('subtext') + '</small>' : '', | |
541 | + labelIcon = $this.parent().data('icon') ? '<span class="' + that.options.iconBase + ' ' + $this.parent().data('icon') + '"></span> ' : '', | |
542 | + optGroupClass = ' ' + this.parentElement.className || ''; | |
543 | + | |
544 | + label = labelIcon + '<span class="text">' + label + labelSubtext + '</span>'; | |
545 | + | |
546 | + if (index !== 0 && _li.length > 0) { // Is it NOT the first option of the select && are there elements in the dropdown? | |
547 | + liIndex++; | |
548 | + _li.push(generateLI('', null, 'divider', optID + 'div')); | |
549 | + } | |
550 | + liIndex++; | |
551 | + _li.push(generateLI(label, null, 'dropdown-header' + optGroupClass, optID)); | |
552 | + } | |
553 | + _li.push(generateLI(generateA(text, 'opt ' + optionClass + optGroupClass, inline, tokens), index, '', optID)); | |
554 | + } else if ($this.data('divider') === true) { | |
555 | + _li.push(generateLI('', index, 'divider')); | |
556 | + } else if ($this.data('hidden') === true) { | |
557 | + _li.push(generateLI(generateA(text, optionClass, inline, tokens), index, 'hidden is-hidden')); | |
558 | + } else { | |
559 | + if (this.previousElementSibling && this.previousElementSibling.tagName === 'OPTGROUP') { | |
560 | + liIndex++; | |
561 | + _li.push(generateLI('', null, 'divider', optID + 'div')); | |
562 | + } | |
563 | + _li.push(generateLI(generateA(text, optionClass, inline, tokens), index)); | |
564 | + } | |
565 | + | |
566 | + that.liObj[index] = liIndex; | |
567 | + }); | |
568 | + | |
569 | + //If we are not multiple, we don't have a selected item, and we don't have a title, select the first element so something is set in the button | |
570 | + if (!this.multiple && this.$element.find('option:selected').length === 0 && !this.options.title) { | |
571 | + this.$element.find('option').eq(0).prop('selected', true).attr('selected', 'selected'); | |
572 | + } | |
573 | + | |
574 | + return _li.join(''); | |
575 | + }, | |
576 | + | |
577 | + findLis: function () { | |
578 | + if (this.$lis == null) this.$lis = this.$menu.find('li'); | |
579 | + return this.$lis; | |
580 | + }, | |
581 | + | |
582 | + /** | |
583 | + * @param [updateLi] defaults to true | |
584 | + */ | |
585 | + render: function (updateLi) { | |
586 | + var that = this, | |
587 | + notDisabled; | |
588 | + | |
589 | + //Update the LI to match the SELECT | |
590 | + if (updateLi !== false) { | |
591 | + this.$element.find('option').each(function (index) { | |
592 | + var $lis = that.findLis().eq(that.liObj[index]); | |
593 | + | |
594 | + that.setDisabled(index, this.disabled || this.parentElement.tagName === 'OPTGROUP' && this.parentElement.disabled, $lis); | |
595 | + that.setSelected(index, this.selected, $lis); | |
596 | + }); | |
597 | + } | |
598 | + | |
599 | + this.tabIndex(); | |
600 | + | |
601 | + var selectedItems = this.$element.find('option').map(function () { | |
602 | + if (this.selected) { | |
603 | + if (that.options.hideDisabled && (this.disabled || this.parentElement.tagName === 'OPTGROUP' && this.parentElement.disabled)) return false; | |
604 | + | |
605 | + var $this = $(this), | |
606 | + icon = $this.data('icon') && that.options.showIcon ? '<i class="' + that.options.iconBase + ' ' + $this.data('icon') + '"></i> ' : '', | |
607 | + subtext; | |
608 | + | |
609 | + if (that.options.showSubtext && $this.data('subtext') && !that.multiple) { | |
610 | + subtext = ' <small class="text-muted">' + $this.data('subtext') + '</small>'; | |
611 | + } else { | |
612 | + subtext = ''; | |
613 | + } | |
614 | + if (typeof $this.attr('title') !== 'undefined') { | |
615 | + return $this.attr('title'); | |
616 | + } else if ($this.data('content') && that.options.showContent) { | |
617 | + return $this.data('content'); | |
618 | + } else { | |
619 | + return icon + $this.html() + subtext; | |
620 | + } | |
621 | + } | |
622 | + }).toArray(); | |
623 | + | |
624 | + //Fixes issue in IE10 occurring when no default option is selected and at least one option is disabled | |
625 | + //Convert all the values into a comma delimited string | |
626 | + var title = !this.multiple ? selectedItems[0] : selectedItems.join(this.options.multipleSeparator); | |
627 | + | |
628 | + //If this is multi select, and the selectText type is count, the show 1 of 2 selected etc.. | |
629 | + if (this.multiple && this.options.selectedTextFormat.indexOf('count') > -1) { | |
630 | + var max = this.options.selectedTextFormat.split('>'); | |
631 | + if ((max.length > 1 && selectedItems.length > max[1]) || (max.length == 1 && selectedItems.length >= 2)) { | |
632 | + notDisabled = this.options.hideDisabled ? ', [disabled]' : ''; | |
633 | + var totalCount = this.$element.find('option').not('[data-divider="true"], [data-hidden="true"]' + notDisabled).length, | |
634 | + tr8nText = (typeof this.options.countSelectedText === 'function') ? this.options.countSelectedText(selectedItems.length, totalCount) : this.options.countSelectedText; | |
635 | + title = tr8nText.replace('{0}', selectedItems.length.toString()).replace('{1}', totalCount.toString()); | |
636 | + } | |
637 | + } | |
638 | + | |
639 | + if (this.options.title == undefined) { | |
640 | + this.options.title = this.$element.attr('title'); | |
641 | + } | |
642 | + | |
643 | + if (this.options.selectedTextFormat == 'static') { | |
644 | + title = this.options.title; | |
645 | + } | |
646 | + | |
647 | + //If we dont have a title, then use the default, or if nothing is set at all, use the not selected text | |
648 | + if (!title) { | |
649 | + title = typeof this.options.title !== 'undefined' ? this.options.title : this.options.noneSelectedText; | |
650 | + } | |
651 | + | |
652 | + //strip all html-tags and trim the result | |
653 | + this.$button.attr('title', $.trim(title.replace(/<[^>]*>?/g, ''))); | |
654 | + this.$button.children('.filter-option').html(title); | |
655 | + | |
656 | + this.$element.trigger('rendered.bs.select'); | |
657 | + }, | |
658 | + | |
659 | + /** | |
660 | + * @param [style] | |
661 | + * @param [status] | |
662 | + */ | |
663 | + setStyle: function (style, status) { | |
664 | + if (this.$element.attr('class')) { | |
665 | + this.$newElement.addClass(this.$element.attr('class').replace(/selectpicker|mobile-device|bs-select-hidden|validate\[.*\]/gi, '')); | |
666 | + } | |
667 | + | |
668 | + var buttonClass = style ? style : this.options.style; | |
669 | + | |
670 | + if (status == 'add') { | |
671 | + this.$button.addClass(buttonClass); | |
672 | + } else if (status == 'remove') { | |
673 | + this.$button.removeClass(buttonClass); | |
674 | + } else { | |
675 | + this.$button.removeClass(this.options.style); | |
676 | + this.$button.addClass(buttonClass); | |
677 | + } | |
678 | + }, | |
679 | + | |
680 | + liHeight: function (refresh) { | |
681 | + if (!refresh && (this.options.size === false || this.sizeInfo)) return; | |
682 | + | |
683 | + var newElement = document.createElement('div'), | |
684 | + menu = document.createElement('div'), | |
685 | + menuInner = document.createElement('ul'), | |
686 | + divider = document.createElement('li'), | |
687 | + li = document.createElement('li'), | |
688 | + a = document.createElement('a'), | |
689 | + text = document.createElement('span'), | |
690 | + header = this.options.header ? this.$menu.find('.popover-title')[0].cloneNode(true) : null, | |
691 | + search = this.options.liveSearch ? document.createElement('div') : null, | |
692 | + actions = this.options.actionsBox && this.multiple ? this.$menu.find('.bs-actionsbox')[0].cloneNode(true) : null, | |
693 | + doneButton = this.options.doneButton && this.multiple ? this.$menu.find('.bs-donebutton')[0].cloneNode(true) : null; | |
694 | + | |
695 | + text.className = 'text'; | |
696 | + newElement.className = this.$menu[0].parentNode.className + ' open'; | |
697 | + menu.className = 'dropdown-menu open'; | |
698 | + menuInner.className = 'dropdown-menu inner'; | |
699 | + divider.className = 'divider'; | |
700 | + | |
701 | + text.appendChild(document.createTextNode('Inner text')); | |
702 | + a.appendChild(text); | |
703 | + li.appendChild(a); | |
704 | + menuInner.appendChild(li); | |
705 | + menuInner.appendChild(divider); | |
706 | + if (header) menu.appendChild(header); | |
707 | + if (search) { | |
708 | + // create a span instead of input as creating an input element is slower | |
709 | + var input = document.createElement('span'); | |
710 | + search.className = 'bs-searchbox'; | |
711 | + input.className = 'form-control'; | |
712 | + search.appendChild(input); | |
713 | + menu.appendChild(search); | |
714 | + } | |
715 | + if (actions) menu.appendChild(actions); | |
716 | + menu.appendChild(menuInner); | |
717 | + if (doneButton) menu.appendChild(doneButton); | |
718 | + newElement.appendChild(menu); | |
719 | + | |
720 | + document.body.appendChild(newElement); | |
721 | + | |
722 | + var liHeight = a.offsetHeight, | |
723 | + headerHeight = header ? header.offsetHeight : 0, | |
724 | + searchHeight = search ? search.offsetHeight : 0, | |
725 | + actionsHeight = actions ? actions.offsetHeight : 0, | |
726 | + doneButtonHeight = doneButton ? doneButton.offsetHeight : 0, | |
727 | + dividerHeight = $(divider).outerHeight(true), | |
728 | + // fall back to jQuery if getComputedStyle is not supported | |
729 | + menuStyle = getComputedStyle ? getComputedStyle(menu) : false, | |
730 | + $menu = menuStyle ? $(menu) : null, | |
731 | + menuPadding = parseInt(menuStyle ? menuStyle.paddingTop : $menu.css('paddingTop')) + | |
732 | + parseInt(menuStyle ? menuStyle.paddingBottom : $menu.css('paddingBottom')) + | |
733 | + parseInt(menuStyle ? menuStyle.borderTopWidth : $menu.css('borderTopWidth')) + | |
734 | + parseInt(menuStyle ? menuStyle.borderBottomWidth : $menu.css('borderBottomWidth')), | |
735 | + menuExtras = menuPadding + | |
736 | + parseInt(menuStyle ? menuStyle.marginTop : $menu.css('marginTop')) + | |
737 | + parseInt(menuStyle ? menuStyle.marginBottom : $menu.css('marginBottom')) + 2; | |
738 | + | |
739 | + document.body.removeChild(newElement); | |
740 | + | |
741 | + this.sizeInfo = { | |
742 | + liHeight: liHeight, | |
743 | + headerHeight: headerHeight, | |
744 | + searchHeight: searchHeight, | |
745 | + actionsHeight: actionsHeight, | |
746 | + doneButtonHeight: doneButtonHeight, | |
747 | + dividerHeight: dividerHeight, | |
748 | + menuPadding: menuPadding, | |
749 | + menuExtras: menuExtras | |
750 | + }; | |
751 | + }, | |
752 | + | |
753 | + setSize: function () { | |
754 | + this.findLis(); | |
755 | + this.liHeight(); | |
756 | + var that = this, | |
757 | + $menu = this.$menu, | |
758 | + $menuInner = this.$menuInner, | |
759 | + $window = $(window), | |
760 | + selectHeight = this.$newElement[0].offsetHeight, | |
761 | + liHeight = this.sizeInfo['liHeight'], | |
762 | + headerHeight = this.sizeInfo['headerHeight'], | |
763 | + searchHeight = this.sizeInfo['searchHeight'], | |
764 | + actionsHeight = this.sizeInfo['actionsHeight'], | |
765 | + doneButtonHeight = this.sizeInfo['doneButtonHeight'], | |
766 | + divHeight = this.sizeInfo['dividerHeight'], | |
767 | + menuPadding = this.sizeInfo['menuPadding'], | |
768 | + menuExtras = this.sizeInfo['menuExtras'], | |
769 | + notDisabled = this.options.hideDisabled ? '.disabled' : '', | |
770 | + menuHeight, | |
771 | + getHeight, | |
772 | + selectOffsetTop, | |
773 | + selectOffsetBot, | |
774 | + posVert = function () { | |
775 | + selectOffsetTop = that.$newElement.offset().top - $window.scrollTop(); | |
776 | + selectOffsetBot = $window.height() - selectOffsetTop - selectHeight; | |
777 | + }; | |
778 | + | |
779 | + posVert(); | |
780 | + | |
781 | + if (this.options.header) $menu.css('padding-top', 0); | |
782 | + | |
783 | + if (this.options.size === 'auto') { | |
784 | + var getSize = function () { | |
785 | + var minHeight, | |
786 | + hasClass = function (className, include) { | |
787 | + return function (element) { | |
788 | + if (include) { | |
789 | + return (element.classList ? element.classList.contains(className) : $(element).hasClass(className)); | |
790 | + } else { | |
791 | + return !(element.classList ? element.classList.contains(className) : $(element).hasClass(className)); | |
792 | + } | |
793 | + }; | |
794 | + }, | |
795 | + lis = that.$menuInner[0].getElementsByTagName('li'), | |
796 | + lisVisible = Array.prototype.filter ? Array.prototype.filter.call(lis, hasClass('hidden', false)) : that.$lis.not('.hidden'), | |
797 | + optGroup = Array.prototype.filter ? Array.prototype.filter.call(lisVisible, hasClass('dropdown-header', true)) : lisVisible.filter('.dropdown-header'); | |
798 | + | |
799 | + posVert(); | |
800 | + menuHeight = selectOffsetBot - menuExtras; | |
801 | + | |
802 | + if (that.options.container) { | |
803 | + if (!$menu.data('height')) $menu.data('height', $menu.height()); | |
804 | + getHeight = $menu.data('height'); | |
805 | + } else { | |
806 | + getHeight = $menu.height(); | |
807 | + } | |
808 | + | |
809 | + if (that.options.dropupAuto) { | |
810 | + that.$newElement.toggleClass('dropup', selectOffsetTop > selectOffsetBot && (menuHeight - menuExtras) < getHeight); | |
811 | + } | |
812 | + if (that.$newElement.hasClass('dropup')) { | |
813 | + menuHeight = selectOffsetTop - menuExtras; | |
814 | + } | |
815 | + | |
816 | + if ((lisVisible.length + optGroup.length) > 3) { | |
817 | + minHeight = liHeight * 3 + menuExtras - 2; | |
818 | + } else { | |
819 | + minHeight = 0; | |
820 | + } | |
821 | + | |
822 | + $menu.css({ | |
823 | + 'max-height': menuHeight + 'px', | |
824 | + 'overflow': 'hidden', | |
825 | + 'min-height': minHeight + headerHeight + searchHeight + actionsHeight + doneButtonHeight + 'px' | |
826 | + }); | |
827 | + $menuInner.css({ | |
828 | + 'max-height': menuHeight - headerHeight - searchHeight - actionsHeight - doneButtonHeight - menuPadding + 'px', | |
829 | + 'overflow-y': 'auto', | |
830 | + 'min-height': Math.max(minHeight - menuPadding, 0) + 'px' | |
831 | + }); | |
832 | + }; | |
833 | + getSize(); | |
834 | + this.$searchbox.off('input.getSize propertychange.getSize').on('input.getSize propertychange.getSize', getSize); | |
835 | + $window.off('resize.getSize scroll.getSize').on('resize.getSize scroll.getSize', getSize); | |
836 | + } else if (this.options.size && this.options.size != 'auto' && this.$lis.not(notDisabled).length > this.options.size) { | |
837 | + var optIndex = this.$lis.not('.divider').not(notDisabled).children().slice(0, this.options.size).last().parent().index(), | |
838 | + divLength = this.$lis.slice(0, optIndex + 1).filter('.divider').length; | |
839 | + menuHeight = liHeight * this.options.size + divLength * divHeight + menuPadding; | |
840 | + | |
841 | + if (that.options.container) { | |
842 | + if (!$menu.data('height')) $menu.data('height', $menu.height()); | |
843 | + getHeight = $menu.data('height'); | |
844 | + } else { | |
845 | + getHeight = $menu.height(); | |
846 | + } | |
847 | + | |
848 | + if (that.options.dropupAuto) { | |
849 | + //noinspection JSUnusedAssignment | |
850 | + this.$newElement.toggleClass('dropup', selectOffsetTop > selectOffsetBot && (menuHeight - menuExtras) < getHeight); | |
851 | + } | |
852 | + $menu.css({ | |
853 | + 'max-height': menuHeight + headerHeight + searchHeight + actionsHeight + doneButtonHeight + 'px', | |
854 | + 'overflow': 'hidden', | |
855 | + 'min-height': '' | |
856 | + }); | |
857 | + $menuInner.css({ | |
858 | + 'max-height': menuHeight - menuPadding + 'px', | |
859 | + 'overflow-y': 'auto', | |
860 | + 'min-height': '' | |
861 | + }); | |
862 | + } | |
863 | + }, | |
864 | + | |
865 | + setWidth: function () { | |
866 | + if (this.options.width === 'auto') { | |
867 | + this.$menu.css('min-width', '0'); | |
868 | + | |
869 | + // Get correct width if element is hidden | |
870 | + var $selectClone = this.$menu.parent().clone().appendTo('body'), | |
871 | + $selectClone2 = this.options.container ? this.$newElement.clone().appendTo('body') : $selectClone, | |
872 | + ulWidth = $selectClone.children('.dropdown-menu').outerWidth(), | |
873 | + btnWidth = $selectClone2.css('width', 'auto').children('button').outerWidth(); | |
874 | + | |
875 | + $selectClone.remove(); | |
876 | + $selectClone2.remove(); | |
877 | + | |
878 | + // Set width to whatever's larger, button title or longest option | |
879 | + this.$newElement.css('width', Math.max(ulWidth, btnWidth) + 'px'); | |
880 | + } else if (this.options.width === 'fit') { | |
881 | + // Remove inline min-width so width can be changed from 'auto' | |
882 | + this.$menu.css('min-width', ''); | |
883 | + this.$newElement.css('width', '').addClass('fit-width'); | |
884 | + } else if (this.options.width) { | |
885 | + // Remove inline min-width so width can be changed from 'auto' | |
886 | + this.$menu.css('min-width', ''); | |
887 | + this.$newElement.css('width', this.options.width); | |
888 | + } else { | |
889 | + // Remove inline min-width/width so width can be changed | |
890 | + this.$menu.css('min-width', ''); | |
891 | + this.$newElement.css('width', ''); | |
892 | + } | |
893 | + // Remove fit-width class if width is changed programmatically | |
894 | + if (this.$newElement.hasClass('fit-width') && this.options.width !== 'fit') { | |
895 | + this.$newElement.removeClass('fit-width'); | |
896 | + } | |
897 | + }, | |
898 | + | |
899 | + selectPosition: function () { | |
900 | + var that = this, | |
901 | + drop = '<div />', | |
902 | + $drop = $(drop), | |
903 | + pos, | |
904 | + actualHeight, | |
905 | + getPlacement = function ($element) { | |
906 | + $drop.addClass($element.attr('class').replace(/form-control|fit-width/gi, '')).toggleClass('dropup', $element.hasClass('dropup')); | |
907 | + pos = $element.offset(); | |
908 | + actualHeight = $element.hasClass('dropup') ? 0 : $element[0].offsetHeight; | |
909 | + $drop.css({ | |
910 | + 'top': pos.top + actualHeight, | |
911 | + 'left': pos.left, | |
912 | + 'width': $element[0].offsetWidth, | |
913 | + 'position': 'absolute' | |
914 | + }); | |
915 | + }; | |
916 | + | |
917 | + this.$newElement.on('click', function () { | |
918 | + if (that.isDisabled()) { | |
919 | + return; | |
920 | + } | |
921 | + getPlacement($(this)); | |
922 | + $drop.appendTo(that.options.container); | |
923 | + $drop.toggleClass('open', !$(this).hasClass('open')); | |
924 | + $drop.append(that.$menu); | |
925 | + }); | |
926 | + | |
927 | + $(window).on('resize scroll', function () { | |
928 | + getPlacement(that.$newElement); | |
929 | + }); | |
930 | + | |
931 | + this.$element.on('hide.bs.select', function () { | |
932 | + that.$menu.data('height', that.$menu.height()); | |
933 | + $drop.detach(); | |
934 | + }); | |
935 | + }, | |
936 | + | |
937 | + setSelected: function (index, selected, $lis) { | |
938 | + if (!$lis) { | |
939 | + var $lis = this.findLis().eq(this.liObj[index]); | |
940 | + } | |
941 | + | |
942 | + $lis.toggleClass('selected', selected); | |
943 | + }, | |
944 | + | |
945 | + setDisabled: function (index, disabled, $lis) { | |
946 | + if (!$lis) { | |
947 | + var $lis = this.findLis().eq(this.liObj[index]); | |
948 | + } | |
949 | + | |
950 | + if (disabled) { | |
951 | + $lis.addClass('disabled').children('a').attr('href', '#').attr('tabindex', -1); | |
952 | + } else { | |
953 | + $lis.removeClass('disabled').children('a').removeAttr('href').attr('tabindex', 0); | |
954 | + } | |
955 | + }, | |
956 | + | |
957 | + isDisabled: function () { | |
958 | + return this.$element[0].disabled; | |
959 | + }, | |
960 | + | |
961 | + checkDisabled: function () { | |
962 | + var that = this; | |
963 | + | |
964 | + if (this.isDisabled()) { | |
965 | + this.$newElement.addClass('disabled'); | |
966 | + this.$button.addClass('disabled').attr('tabindex', -1); | |
967 | + } else { | |
968 | + if (this.$button.hasClass('disabled')) { | |
969 | + this.$newElement.removeClass('disabled'); | |
970 | + this.$button.removeClass('disabled'); | |
971 | + } | |
972 | + | |
973 | + if (this.$button.attr('tabindex') == -1 && !this.$element.data('tabindex')) { | |
974 | + this.$button.removeAttr('tabindex'); | |
975 | + } | |
976 | + } | |
977 | + | |
978 | + this.$button.click(function () { | |
979 | + return !that.isDisabled(); | |
980 | + }); | |
981 | + }, | |
982 | + | |
983 | + tabIndex: function () { | |
984 | + if (this.$element.is('[tabindex]')) { | |
985 | + this.$element.data('tabindex', this.$element.attr('tabindex')); | |
986 | + this.$button.attr('tabindex', this.$element.data('tabindex')); | |
987 | + } | |
988 | + }, | |
989 | + | |
990 | + clickListener: function () { | |
991 | + var that = this, | |
992 | + $document = $(document); | |
993 | + | |
994 | + this.$newElement.on('touchstart.dropdown', '.dropdown-menu', function (e) { | |
995 | + e.stopPropagation(); | |
996 | + }); | |
997 | + | |
998 | + $document.data('spaceSelect', false); | |
999 | + | |
1000 | + this.$button.on('keyup', function (e) { | |
1001 | + if (/(32)/.test(e.keyCode.toString(10)) && $document.data('spaceSelect')) { | |
1002 | + e.preventDefault(); | |
1003 | + $document.data('spaceSelect', false); | |
1004 | + } | |
1005 | + }); | |
1006 | + | |
1007 | + this.$newElement.on('click', function () { | |
1008 | + that.setSize(); | |
1009 | + that.$element.on('shown.bs.select', function () { | |
1010 | + if (!that.options.liveSearch && !that.multiple) { | |
1011 | + that.$menu.find('.selected a').focus(); | |
1012 | + } else if (!that.multiple) { | |
1013 | + var selectedIndex = that.liObj[that.$element[0].selectedIndex]; | |
1014 | + | |
1015 | + if (typeof selectedIndex !== 'number') return; | |
1016 | + | |
1017 | + // scroll to selected option | |
1018 | + var offset = that.$lis.eq(selectedIndex)[0].offsetTop - that.$menuInner[0].offsetTop; | |
1019 | + offset = offset - that.$menuInner[0].offsetHeight/2 + that.sizeInfo.liHeight/2; | |
1020 | + that.$menuInner[0].scrollTop = offset; | |
1021 | + } | |
1022 | + }); | |
1023 | + }); | |
1024 | + | |
1025 | + this.$menu.on('click', 'li a', function (e) { | |
1026 | + var $this = $(this), | |
1027 | + clickedIndex = $this.parent().data('originalIndex'), | |
1028 | + prevValue = that.$element.val(), | |
1029 | + prevIndex = that.$element.prop('selectedIndex'); | |
1030 | + | |
1031 | + // Don't close on multi choice menu | |
1032 | + if (that.multiple) { | |
1033 | + e.stopPropagation(); | |
1034 | + } | |
1035 | + | |
1036 | + e.preventDefault(); | |
1037 | + | |
1038 | + //Don't run if we have been disabled | |
1039 | + if (!that.isDisabled() && !$this.parent().hasClass('disabled')) { | |
1040 | + var $options = that.$element.find('option'), | |
1041 | + $option = $options.eq(clickedIndex), | |
1042 | + state = $option.prop('selected'), | |
1043 | + $optgroup = $option.parent('optgroup'), | |
1044 | + maxOptions = that.options.maxOptions, | |
1045 | + maxOptionsGrp = $optgroup.data('maxOptions') || false; | |
1046 | + | |
1047 | + if (!that.multiple) { // Deselect all others if not multi select box | |
1048 | + $options.prop('selected', false); | |
1049 | + $option.prop('selected', true); | |
1050 | + that.$menu.find('.selected').removeClass('selected'); | |
1051 | + that.setSelected(clickedIndex, true); | |
1052 | + } else { // Toggle the one we have chosen if we are multi select. | |
1053 | + $option.prop('selected', !state); | |
1054 | + that.setSelected(clickedIndex, !state); | |
1055 | + $this.blur(); | |
1056 | + | |
1057 | + if (maxOptions !== false || maxOptionsGrp !== false) { | |
1058 | + var maxReached = maxOptions < $options.filter(':selected').length, | |
1059 | + maxReachedGrp = maxOptionsGrp < $optgroup.find('option:selected').length; | |
1060 | + | |
1061 | + if ((maxOptions && maxReached) || (maxOptionsGrp && maxReachedGrp)) { | |
1062 | + if (maxOptions && maxOptions == 1) { | |
1063 | + $options.prop('selected', false); | |
1064 | + $option.prop('selected', true); | |
1065 | + that.$menu.find('.selected').removeClass('selected'); | |
1066 | + that.setSelected(clickedIndex, true); | |
1067 | + } else if (maxOptionsGrp && maxOptionsGrp == 1) { | |
1068 | + $optgroup.find('option:selected').prop('selected', false); | |
1069 | + $option.prop('selected', true); | |
1070 | + var optgroupID = $this.parent().data('optgroup'); | |
1071 | + that.$menu.find('[data-optgroup="' + optgroupID + '"]').removeClass('selected'); | |
1072 | + that.setSelected(clickedIndex, true); | |
1073 | + } else { | |
1074 | + var maxOptionsArr = (typeof that.options.maxOptionsText === 'function') ? | |
1075 | + that.options.maxOptionsText(maxOptions, maxOptionsGrp) : that.options.maxOptionsText, | |
1076 | + maxTxt = maxOptionsArr[0].replace('{n}', maxOptions), | |
1077 | + maxTxtGrp = maxOptionsArr[1].replace('{n}', maxOptionsGrp), | |
1078 | + $notify = $('<div class="notify"></div>'); | |
1079 | + // If {var} is set in array, replace it | |
1080 | + /** @deprecated */ | |
1081 | + if (maxOptionsArr[2]) { | |
1082 | + maxTxt = maxTxt.replace('{var}', maxOptionsArr[2][maxOptions > 1 ? 0 : 1]); | |
1083 | + maxTxtGrp = maxTxtGrp.replace('{var}', maxOptionsArr[2][maxOptionsGrp > 1 ? 0 : 1]); | |
1084 | + } | |
1085 | + | |
1086 | + $option.prop('selected', false); | |
1087 | + | |
1088 | + that.$menu.append($notify); | |
1089 | + | |
1090 | + if (maxOptions && maxReached) { | |
1091 | + $notify.append($('<div>' + maxTxt + '</div>')); | |
1092 | + that.$element.trigger('maxReached.bs.select'); | |
1093 | + } | |
1094 | + | |
1095 | + if (maxOptionsGrp && maxReachedGrp) { | |
1096 | + $notify.append($('<div>' + maxTxtGrp + '</div>')); | |
1097 | + that.$element.trigger('maxReachedGrp.bs.select'); | |
1098 | + } | |
1099 | + | |
1100 | + setTimeout(function () { | |
1101 | + that.setSelected(clickedIndex, false); | |
1102 | + }, 10); | |
1103 | + | |
1104 | + $notify.delay(750).fadeOut(300, function () { | |
1105 | + $(this).remove(); | |
1106 | + }); | |
1107 | + } | |
1108 | + } | |
1109 | + } | |
1110 | + } | |
1111 | + | |
1112 | + if (!that.multiple) { | |
1113 | + that.$button.focus(); | |
1114 | + } else if (that.options.liveSearch) { | |
1115 | + that.$searchbox.focus(); | |
1116 | + } | |
1117 | + | |
1118 | + // Trigger select 'change' | |
1119 | + if ((prevValue != that.$element.val() && that.multiple) || (prevIndex != that.$element.prop('selectedIndex') && !that.multiple)) { | |
1120 | + that.$element.change(); | |
1121 | + // $option.prop('selected') is current option state (selected/unselected). state is previous option state. | |
1122 | + that.$element.trigger('changed.bs.select', [clickedIndex, $option.prop('selected'), state]); | |
1123 | + } | |
1124 | + } | |
1125 | + }); | |
1126 | + | |
1127 | + this.$menu.on('click', 'li.disabled a, .popover-title, .popover-title :not(.close)', function (e) { | |
1128 | + if (e.currentTarget == this) { | |
1129 | + e.preventDefault(); | |
1130 | + e.stopPropagation(); | |
1131 | + if (that.options.liveSearch && !$(e.target).hasClass('close')) { | |
1132 | + that.$searchbox.focus(); | |
1133 | + } else { | |
1134 | + that.$button.focus(); | |
1135 | + } | |
1136 | + } | |
1137 | + }); | |
1138 | + | |
1139 | + this.$menu.on('click', 'li.divider, li.dropdown-header', function (e) { | |
1140 | + e.preventDefault(); | |
1141 | + e.stopPropagation(); | |
1142 | + if (that.options.liveSearch) { | |
1143 | + that.$searchbox.focus(); | |
1144 | + } else { | |
1145 | + that.$button.focus(); | |
1146 | + } | |
1147 | + }); | |
1148 | + | |
1149 | + this.$menu.on('click', '.popover-title .close', function () { | |
1150 | + that.$button.click(); | |
1151 | + }); | |
1152 | + | |
1153 | + this.$searchbox.on('click', function (e) { | |
1154 | + e.stopPropagation(); | |
1155 | + }); | |
1156 | + | |
1157 | + this.$menu.on('click', '.actions-btn', function (e) { | |
1158 | + if (that.options.liveSearch) { | |
1159 | + that.$searchbox.focus(); | |
1160 | + } else { | |
1161 | + that.$button.focus(); | |
1162 | + } | |
1163 | + | |
1164 | + e.preventDefault(); | |
1165 | + e.stopPropagation(); | |
1166 | + | |
1167 | + if ($(this).hasClass('bs-select-all')) { | |
1168 | + that.selectAll(); | |
1169 | + } else { | |
1170 | + that.deselectAll(); | |
1171 | + } | |
1172 | + that.$element.change(); | |
1173 | + }); | |
1174 | + | |
1175 | + this.$element.change(function () { | |
1176 | + that.render(false); | |
1177 | + }); | |
1178 | + }, | |
1179 | + | |
1180 | + liveSearchListener: function () { | |
1181 | + var that = this, | |
1182 | + $no_results = $('<li class="no-results"></li>'); | |
1183 | + | |
1184 | + this.$newElement.on('click.dropdown.data-api touchstart.dropdown.data-api', function () { | |
1185 | + that.$menuInner.find('.active').removeClass('active'); | |
1186 | + if (!!that.$searchbox.val()) { | |
1187 | + that.$searchbox.val(''); | |
1188 | + that.$lis.not('.is-hidden').removeClass('hidden'); | |
1189 | + if (!!$no_results.parent().length) $no_results.remove(); | |
1190 | + } | |
1191 | + if (!that.multiple) that.$menuInner.find('.selected').addClass('active'); | |
1192 | + setTimeout(function () { | |
1193 | + that.$searchbox.focus(); | |
1194 | + }, 10); | |
1195 | + }); | |
1196 | + | |
1197 | + this.$searchbox.on('click.dropdown.data-api focus.dropdown.data-api touchend.dropdown.data-api', function (e) { | |
1198 | + e.stopPropagation(); | |
1199 | + }); | |
1200 | + | |
1201 | + this.$searchbox.on('input propertychange', function () { | |
1202 | + if (that.$searchbox.val()) { | |
1203 | + var $searchBase = that.$lis.not('.is-hidden').removeClass('hidden').children('a'); | |
1204 | + if (that.options.liveSearchNormalize) { | |
1205 | + $searchBase = $searchBase.not(':a' + that._searchStyle() + '(' + normalizeToBase(that.$searchbox.val()) + ')'); | |
1206 | + } else { | |
1207 | + $searchBase = $searchBase.not(':' + that._searchStyle() + '(' + that.$searchbox.val() + ')'); | |
1208 | + } | |
1209 | + $searchBase.parent().addClass('hidden'); | |
1210 | + | |
1211 | + that.$lis.filter('.dropdown-header').each(function () { | |
1212 | + var $this = $(this), | |
1213 | + optgroup = $this.data('optgroup'); | |
1214 | + | |
1215 | + if (that.$lis.filter('[data-optgroup=' + optgroup + ']').not($this).not('.hidden').length === 0) { | |
1216 | + $this.addClass('hidden'); | |
1217 | + that.$lis.filter('[data-optgroup=' + optgroup + 'div]').addClass('hidden'); | |
1218 | + } | |
1219 | + }); | |
1220 | + | |
1221 | + var $lisVisible = that.$lis.not('.hidden'); | |
1222 | + | |
1223 | + // hide divider if first or last visible, or if followed by another divider | |
1224 | + $lisVisible.each(function (index) { | |
1225 | + var $this = $(this); | |
1226 | + | |
1227 | + if ($this.hasClass('divider') && ( | |
1228 | + $this.index() === $lisVisible.eq(0).index() || | |
1229 | + $this.index() === $lisVisible.last().index() || | |
1230 | + $lisVisible.eq(index + 1).hasClass('divider'))) { | |
1231 | + $this.addClass('hidden'); | |
1232 | + } | |
1233 | + }); | |
1234 | + | |
1235 | + if (!that.$lis.not('.hidden, .no-results').length) { | |
1236 | + if (!!$no_results.parent().length) { | |
1237 | + $no_results.remove(); | |
1238 | + } | |
1239 | + $no_results.html(that.options.noneResultsText.replace('{0}', '"' + htmlEscape(that.$searchbox.val()) + '"')).show(); | |
1240 | + that.$menuInner.append($no_results); | |
1241 | + } else if (!!$no_results.parent().length) { | |
1242 | + $no_results.remove(); | |
1243 | + } | |
1244 | + | |
1245 | + } else { | |
1246 | + that.$lis.not('.is-hidden').removeClass('hidden'); | |
1247 | + if (!!$no_results.parent().length) { | |
1248 | + $no_results.remove(); | |
1249 | + } | |
1250 | + } | |
1251 | + | |
1252 | + that.$lis.filter('.active').removeClass('active'); | |
1253 | + that.$lis.not('.hidden, .divider, .dropdown-header').eq(0).addClass('active').children('a').focus(); | |
1254 | + $(this).focus(); | |
1255 | + }); | |
1256 | + }, | |
1257 | + | |
1258 | + _searchStyle: function () { | |
1259 | + var style = 'icontains'; | |
1260 | + switch (this.options.liveSearchStyle) { | |
1261 | + case 'begins': | |
1262 | + case 'startsWith': | |
1263 | + style = 'ibegins'; | |
1264 | + break; | |
1265 | + case 'contains': | |
1266 | + default: | |
1267 | + break; //no need to change the default | |
1268 | + } | |
1269 | + | |
1270 | + return style; | |
1271 | + }, | |
1272 | + | |
1273 | + val: function (value) { | |
1274 | + if (typeof value !== 'undefined') { | |
1275 | + this.$element.val(value); | |
1276 | + this.render(); | |
1277 | + | |
1278 | + return this.$element; | |
1279 | + } else { | |
1280 | + return this.$element.val(); | |
1281 | + } | |
1282 | + }, | |
1283 | + | |
1284 | + selectAll: function () { | |
1285 | + this.findLis(); | |
1286 | + this.$element.find('option:enabled').not('[data-divider], [data-hidden]').prop('selected', true); | |
1287 | + this.$lis.not('.divider, .dropdown-header, .disabled, .hidden').addClass('selected'); | |
1288 | + this.render(false); | |
1289 | + }, | |
1290 | + | |
1291 | + deselectAll: function () { | |
1292 | + this.findLis(); | |
1293 | + this.$element.find('option:enabled').not('[data-divider], [data-hidden]').prop('selected', false); | |
1294 | + this.$lis.not('.divider, .dropdown-header, .disabled, .hidden').removeClass('selected'); | |
1295 | + this.render(false); | |
1296 | + }, | |
1297 | + | |
1298 | + keydown: function (e) { | |
1299 | + var $this = $(this), | |
1300 | + $parent = $this.is('input') ? $this.parent().parent() : $this.parent(), | |
1301 | + $items, | |
1302 | + that = $parent.data('this'), | |
1303 | + index, | |
1304 | + next, | |
1305 | + first, | |
1306 | + last, | |
1307 | + prev, | |
1308 | + nextPrev, | |
1309 | + prevIndex, | |
1310 | + isActive, | |
1311 | + selector = ':not(.disabled, .hidden, .dropdown-header, .divider)', | |
1312 | + keyCodeMap = { | |
1313 | + 32: ' ', | |
1314 | + 48: '0', | |
1315 | + 49: '1', | |
1316 | + 50: '2', | |
1317 | + 51: '3', | |
1318 | + 52: '4', | |
1319 | + 53: '5', | |
1320 | + 54: '6', | |
1321 | + 55: '7', | |
1322 | + 56: '8', | |
1323 | + 57: '9', | |
1324 | + 59: ';', | |
1325 | + 65: 'a', | |
1326 | + 66: 'b', | |
1327 | + 67: 'c', | |
1328 | + 68: 'd', | |
1329 | + 69: 'e', | |
1330 | + 70: 'f', | |
1331 | + 71: 'g', | |
1332 | + 72: 'h', | |
1333 | + 73: 'i', | |
1334 | + 74: 'j', | |
1335 | + 75: 'k', | |
1336 | + 76: 'l', | |
1337 | + 77: 'm', | |
1338 | + 78: 'n', | |
1339 | + 79: 'o', | |
1340 | + 80: 'p', | |
1341 | + 81: 'q', | |
1342 | + 82: 'r', | |
1343 | + 83: 's', | |
1344 | + 84: 't', | |
1345 | + 85: 'u', | |
1346 | + 86: 'v', | |
1347 | + 87: 'w', | |
1348 | + 88: 'x', | |
1349 | + 89: 'y', | |
1350 | + 90: 'z', | |
1351 | + 96: '0', | |
1352 | + 97: '1', | |
1353 | + 98: '2', | |
1354 | + 99: '3', | |
1355 | + 100: '4', | |
1356 | + 101: '5', | |
1357 | + 102: '6', | |
1358 | + 103: '7', | |
1359 | + 104: '8', | |
1360 | + 105: '9' | |
1361 | + }; | |
1362 | + | |
1363 | + if (that.options.liveSearch) $parent = $this.parent().parent(); | |
1364 | + | |
1365 | + if (that.options.container) $parent = that.$menu; | |
1366 | + | |
1367 | + $items = $('[role=menu] li a', $parent); | |
1368 | + | |
1369 | + isActive = that.$menu.parent().hasClass('open'); | |
1370 | + | |
1371 | + if (!isActive && (e.keyCode >= 48 && e.keyCode <= 57 || event.keyCode >= 65 && event.keyCode <= 90)) { | |
1372 | + if (!that.options.container) { | |
1373 | + that.setSize(); | |
1374 | + that.$menu.parent().addClass('open'); | |
1375 | + isActive = true; | |
1376 | + } else { | |
1377 | + that.$newElement.trigger('click'); | |
1378 | + } | |
1379 | + that.$searchbox.focus(); | |
1380 | + } | |
1381 | + | |
1382 | + if (that.options.liveSearch) { | |
1383 | + if (/(^9$|27)/.test(e.keyCode.toString(10)) && isActive && that.$menu.find('.active').length === 0) { | |
1384 | + e.preventDefault(); | |
1385 | + that.$menu.parent().removeClass('open'); | |
1386 | + if (that.options.container) that.$newElement.removeClass('open'); | |
1387 | + that.$button.focus(); | |
1388 | + } | |
1389 | + // $items contains li elements when liveSearch is enabled | |
1390 | + $items = $('[role=menu] li:not(.disabled, .hidden, .dropdown-header, .divider)', $parent); | |
1391 | + if (!$this.val() && !/(38|40)/.test(e.keyCode.toString(10))) { | |
1392 | + if ($items.filter('.active').length === 0) { | |
1393 | + $items = that.$newElement.find('li'); | |
1394 | + if (that.options.liveSearchNormalize) { | |
1395 | + $items = $items.filter(':a' + that._searchStyle() + '(' + normalizeToBase(keyCodeMap[e.keyCode]) + ')'); | |
1396 | + } else { | |
1397 | + $items = $items.filter(':' + that._searchStyle() + '(' + keyCodeMap[e.keyCode] + ')'); | |
1398 | + } | |
1399 | + } | |
1400 | + } | |
1401 | + } | |
1402 | + | |
1403 | + if (!$items.length) return; | |
1404 | + | |
1405 | + if (/(38|40)/.test(e.keyCode.toString(10))) { | |
1406 | + index = $items.index($items.filter(':focus')); | |
1407 | + first = $items.parent(selector).first().data('originalIndex'); | |
1408 | + last = $items.parent(selector).last().data('originalIndex'); | |
1409 | + next = $items.eq(index).parent().nextAll(selector).eq(0).data('originalIndex'); | |
1410 | + prev = $items.eq(index).parent().prevAll(selector).eq(0).data('originalIndex'); | |
1411 | + nextPrev = $items.eq(next).parent().prevAll(selector).eq(0).data('originalIndex'); | |
1412 | + | |
1413 | + if (that.options.liveSearch) { | |
1414 | + $items.each(function (i) { | |
1415 | + if (!$(this).hasClass('disabled')) { | |
1416 | + $(this).data('index', i); | |
1417 | + } | |
1418 | + }); | |
1419 | + index = $items.index($items.filter('.active')); | |
1420 | + first = $items.first().data('index'); | |
1421 | + last = $items.last().data('index'); | |
1422 | + next = $items.eq(index).nextAll().eq(0).data('index'); | |
1423 | + prev = $items.eq(index).prevAll().eq(0).data('index'); | |
1424 | + nextPrev = $items.eq(next).prevAll().eq(0).data('index'); | |
1425 | + } | |
1426 | + | |
1427 | + prevIndex = $this.data('prevIndex'); | |
1428 | + | |
1429 | + if (e.keyCode == 38) { | |
1430 | + if (that.options.liveSearch) index -= 1; | |
1431 | + if (index != nextPrev && index > prev) index = prev; | |
1432 | + if (index < first) index = first; | |
1433 | + if (index == prevIndex) index = last; | |
1434 | + } else if (e.keyCode == 40) { | |
1435 | + if (that.options.liveSearch) index += 1; | |
1436 | + if (index == -1) index = 0; | |
1437 | + if (index != nextPrev && index < next) index = next; | |
1438 | + if (index > last) index = last; | |
1439 | + if (index == prevIndex) index = first; | |
1440 | + } | |
1441 | + | |
1442 | + $this.data('prevIndex', index); | |
1443 | + | |
1444 | + if (!that.options.liveSearch) { | |
1445 | + $items.eq(index).focus(); | |
1446 | + } else { | |
1447 | + e.preventDefault(); | |
1448 | + if (!$this.hasClass('dropdown-toggle')) { | |
1449 | + $items.removeClass('active').eq(index).addClass('active').children('a').focus(); | |
1450 | + $this.focus(); | |
1451 | + } | |
1452 | + } | |
1453 | + | |
1454 | + } else if (!$this.is('input')) { | |
1455 | + var keyIndex = [], | |
1456 | + count, | |
1457 | + prevKey; | |
1458 | + | |
1459 | + $items.each(function () { | |
1460 | + if (!$(this).parent().hasClass('disabled')) { | |
1461 | + if ($.trim($(this).text().toLowerCase()).substring(0, 1) == keyCodeMap[e.keyCode]) { | |
1462 | + keyIndex.push($(this).parent().index()); | |
1463 | + } | |
1464 | + } | |
1465 | + }); | |
1466 | + | |
1467 | + count = $(document).data('keycount'); | |
1468 | + count++; | |
1469 | + $(document).data('keycount', count); | |
1470 | + | |
1471 | + prevKey = $.trim($(':focus').text().toLowerCase()).substring(0, 1); | |
1472 | + | |
1473 | + if (prevKey != keyCodeMap[e.keyCode]) { | |
1474 | + count = 1; | |
1475 | + $(document).data('keycount', count); | |
1476 | + } else if (count >= keyIndex.length) { | |
1477 | + $(document).data('keycount', 0); | |
1478 | + if (count > keyIndex.length) count = 1; | |
1479 | + } | |
1480 | + | |
1481 | + $items.eq(keyIndex[count - 1]).focus(); | |
1482 | + } | |
1483 | + | |
1484 | + // Select focused option if "Enter", "Spacebar" or "Tab" (when selectOnTab is true) are pressed inside the menu. | |
1485 | + if ((/(13|32)/.test(e.keyCode.toString(10)) || (/(^9$)/.test(e.keyCode.toString(10)) && that.options.selectOnTab)) && isActive) { | |
1486 | + if (!/(32)/.test(e.keyCode.toString(10))) e.preventDefault(); | |
1487 | + if (!that.options.liveSearch) { | |
1488 | + var elem = $(':focus'); | |
1489 | + elem.click(); | |
1490 | + // Bring back focus for multiselects | |
1491 | + elem.focus(); | |
1492 | + // Prevent screen from scrolling if the user hit the spacebar | |
1493 | + e.preventDefault(); | |
1494 | + // Fixes spacebar selection of dropdown items in FF & IE | |
1495 | + $(document).data('spaceSelect', true); | |
1496 | + } else if (!/(32)/.test(e.keyCode.toString(10))) { | |
1497 | + that.$menu.find('.active a').click(); | |
1498 | + $this.focus(); | |
1499 | + } | |
1500 | + $(document).data('keycount', 0); | |
1501 | + } | |
1502 | + | |
1503 | + if ((/(^9$|27)/.test(e.keyCode.toString(10)) && isActive && (that.multiple || that.options.liveSearch)) || (/(27)/.test(e.keyCode.toString(10)) && !isActive)) { | |
1504 | + that.$menu.parent().removeClass('open'); | |
1505 | + if (that.options.container) that.$newElement.removeClass('open'); | |
1506 | + that.$button.focus(); | |
1507 | + } | |
1508 | + }, | |
1509 | + | |
1510 | + mobile: function () { | |
1511 | + this.$element.addClass('mobile-device').appendTo(this.$newElement); | |
1512 | + if (this.options.container) this.$menu.hide(); | |
1513 | + }, | |
1514 | + | |
1515 | + refresh: function () { | |
1516 | + this.$lis = null; | |
1517 | + this.reloadLi(); | |
1518 | + this.render(); | |
1519 | + this.checkDisabled(); | |
1520 | + this.liHeight(true); | |
1521 | + this.setStyle(); | |
1522 | + this.setWidth(); | |
1523 | + if (this.$lis) this.$searchbox.trigger('propertychange'); | |
1524 | + | |
1525 | + this.$element.trigger('refreshed.bs.select'); | |
1526 | + }, | |
1527 | + | |
1528 | + hide: function () { | |
1529 | + this.$newElement.hide(); | |
1530 | + }, | |
1531 | + | |
1532 | + show: function () { | |
1533 | + this.$newElement.show(); | |
1534 | + }, | |
1535 | + | |
1536 | + remove: function () { | |
1537 | + this.$newElement.remove(); | |
1538 | + this.$element.remove(); | |
1539 | + } | |
1540 | + }; | |
1541 | + | |
1542 | + // SELECTPICKER PLUGIN DEFINITION | |
1543 | + // ============================== | |
1544 | + function Plugin(option, event) { | |
1545 | + // get the args of the outer function.. | |
1546 | + var args = arguments; | |
1547 | + // The arguments of the function are explicitly re-defined from the argument list, because the shift causes them | |
1548 | + // to get lost/corrupted in android 2.3 and IE9 #715 #775 | |
1549 | + var _option = option, | |
1550 | + _event = event; | |
1551 | + [].shift.apply(args); | |
1552 | + | |
1553 | + var value; | |
1554 | + var chain = this.each(function () { | |
1555 | + var $this = $(this); | |
1556 | + if ($this.is('select')) { | |
1557 | + var data = $this.data('selectpicker'), | |
1558 | + options = typeof _option == 'object' && _option; | |
1559 | + | |
1560 | + if (!data) { | |
1561 | + var config = $.extend({}, Selectpicker.DEFAULTS, $.fn.selectpicker.defaults || {}, $this.data(), options); | |
1562 | + $this.data('selectpicker', (data = new Selectpicker(this, config, _event))); | |
1563 | + } else if (options) { | |
1564 | + for (var i in options) { | |
1565 | + if (options.hasOwnProperty(i)) { | |
1566 | + data.options[i] = options[i]; | |
1567 | + } | |
1568 | + } | |
1569 | + } | |
1570 | + | |
1571 | + if (typeof _option == 'string') { | |
1572 | + if (data[_option] instanceof Function) { | |
1573 | + value = data[_option].apply(data, args); | |
1574 | + } else { | |
1575 | + value = data.options[_option]; | |
1576 | + } | |
1577 | + } | |
1578 | + } | |
1579 | + }); | |
1580 | + | |
1581 | + if (typeof value !== 'undefined') { | |
1582 | + //noinspection JSUnusedAssignment | |
1583 | + return value; | |
1584 | + } else { | |
1585 | + return chain; | |
1586 | + } | |
1587 | + } | |
1588 | + | |
1589 | + var old = $.fn.selectpicker; | |
1590 | + $.fn.selectpicker = Plugin; | |
1591 | + $.fn.selectpicker.Constructor = Selectpicker; | |
1592 | + | |
1593 | + // SELECTPICKER NO CONFLICT | |
1594 | + // ======================== | |
1595 | + $.fn.selectpicker.noConflict = function () { | |
1596 | + $.fn.selectpicker = old; | |
1597 | + return this; | |
1598 | + }; | |
1599 | + | |
1600 | + $(document) | |
1601 | + .data('keycount', 0) | |
1602 | + .on('keydown', '.bootstrap-select [data-toggle=dropdown], .bootstrap-select [role="menu"], .bs-searchbox input', Selectpicker.prototype.keydown) | |
1603 | + .on('focusin.modal', '.bootstrap-select [data-toggle=dropdown], .bootstrap-select [role="menu"], .bs-searchbox input', function (e) { | |
1604 | + e.stopPropagation(); | |
1605 | + }); | |
1606 | + | |
1607 | + // SELECTPICKER DATA-API | |
1608 | + // ===================== | |
1609 | + $(window).on('load.bs.select.data-api', function () { | |
1610 | + $('.selectpicker').each(function () { | |
1611 | + var $selectpicker = $(this); | |
1612 | + Plugin.call($selectpicker, $selectpicker.data()); | |
1613 | + }) | |
1614 | + }); | |
1615 | +})(jQuery); | |
1616 | + | |
1617 | + | |
1618 | +})); | ... | ... |
resource/lib/bootstrap-select/js/bootstrap-select.js.map
0 → 100644
1 | +{"version":3,"file":"bootstrap-select.min.js","sources":["bootstrap-select.js"],"names":["root","factory","define","amd","a0","exports","module","require","jQuery","this","$","normalizeToBase","text","rExps","re","ch","each","replace","htmlEscape","html","escapeMap","&","<",">","\"","'","`","source","Object","keys","join","testRegexp","RegExp","replaceRegexp","string","test","match","Plugin","option","event","args","arguments","_option","_event","shift","apply","value","chain","$this","is","data","options","i","hasOwnProperty","config","extend","Selectpicker","DEFAULTS","fn","selectpicker","defaults","Function","String","prototype","includes","toString","defineProperty","object","$defineProperty","result","error","indexOf","search","TypeError","call","stringLength","length","searchString","searchLength","position","undefined","pos","Number","start","Math","min","max","configurable","writable","startsWith","index","charCodeAt","o","k","r","push","expr","icontains","obj","meta","$obj","haystack","toUpperCase","ibegins","aicontains","aibegins","element","e","stopPropagation","preventDefault","$element","$newElement","$button","$menu","$lis","title","attr","val","render","refresh","setStyle","selectAll","deselectAll","destroy","remove","show","hide","init","VERSION","noneSelectedText","noneResultsText","countSelectedText","numSelected","numTotal","maxOptionsText","numAll","numGroup","selectAllText","deselectAllText","doneButton","doneButtonText","multipleSeparator","styleBase","style","size","selectedTextFormat","width","container","hideDisabled","showSubtext","showIcon","showContent","dropupAuto","header","liveSearch","liveSearchPlaceholder","liveSearchNormalize","liveSearchStyle","actionsBox","iconBase","tickIcon","maxOptions","mobile","selectOnTab","dropdownAlignRight","constructor","that","id","addClass","liObj","multiple","prop","autofocus","createView","after","children","$menuInner","$searchbox","find","click","focus","checkDisabled","clickListener","liveSearchListener","setWidth","selectPosition","on","trigger","setTimeout","createDropdown","inputGroup","parent","hasClass","searchbox","actionsbox","donebutton","drop","$drop","li","createLi","innerHTML","reloadLi","destroyLi","_li","optID","titleOption","document","createElement","liIndex","generateLI","content","classes","optgroup","generateA","inline","tokens","className","appendChild","createTextNode","insertBefore","firstChild","selectedIndex","getAttribute","selected","optionClass","cssText","subtext","icon","isDisabled","disabled","parentElement","tagName","label","labelSubtext","labelIcon","optGroupClass","previousElementSibling","eq","findLis","updateLi","notDisabled","setDisabled","setSelected","tabIndex","selectedItems","map","toArray","split","totalCount","not","tr8nText","trim","status","buttonClass","removeClass","liHeight","sizeInfo","newElement","menu","menuInner","divider","a","cloneNode","actions","parentNode","input","body","offsetHeight","headerHeight","searchHeight","actionsHeight","doneButtonHeight","dividerHeight","outerHeight","menuStyle","getComputedStyle","menuPadding","parseInt","paddingTop","css","paddingBottom","borderTopWidth","borderBottomWidth","menuExtras","marginTop","marginBottom","removeChild","setSize","menuHeight","getHeight","selectOffsetTop","selectOffsetBot","$window","window","selectHeight","divHeight","posVert","offset","top","scrollTop","height","getSize","minHeight","include","classList","contains","lis","getElementsByTagName","lisVisible","Array","filter","optGroup","toggleClass","max-height","overflow","min-height","overflow-y","off","optIndex","slice","last","divLength","$selectClone","clone","appendTo","$selectClone2","ulWidth","outerWidth","btnWidth","actualHeight","getPlacement","left","offsetWidth","append","detach","removeAttr","$document","keyCode","offsetTop","clickedIndex","prevValue","prevIndex","$options","$option","state","$optgroup","maxOptionsGrp","blur","maxReached","maxReachedGrp","optgroupID","maxOptionsArr","maxTxt","maxTxtGrp","$notify","delay","fadeOut","change","currentTarget","target","$no_results","$searchBase","_searchStyle","$lisVisible","keydown","$items","next","first","prev","nextPrev","isActive","$parent","selector","keyCodeMap",32,48,49,50,51,52,53,54,55,56,57,59,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,96,97,98,99,100,101,102,103,104,105,"nextAll","prevAll","count","prevKey","keyIndex","toLowerCase","substring","elem","old","Constructor","noConflict","$selectpicker"],"mappings":";;;;;;CAOC,SAAUA,EAAMC,GACO,kBAAXC,SAAyBA,OAAOC,IAEzCD,QAAQ,UAAW,SAAUE,GAC3B,MAAQH,GAAQG,KAEU,gBAAZC,SAIhBC,OAAOD,QAAUJ,EAAQM,QAAQ,WAEjCN,EAAQO,SAEVC,KAAM,YAER,SAAWC,GACT,YAkKA,SAASC,GAAgBC,GACvB,GAAIC,KACDC,GAAI,eAAgBC,GAAI,MACxBD,GAAI,eAAgBC,GAAI,MACxBD,GAAI,eAAgBC,GAAI,MACxBD,GAAI,eAAgBC,GAAI,MACxBD,GAAI,eAAgBC,GAAI,MACxBD,GAAI,eAAgBC,GAAI,MACxBD,GAAI,eAAgBC,GAAI,MACxBD,GAAI,eAAgBC,GAAI,MACxBD,GAAI,eAAgBC,GAAI,MACxBD,GAAI,eAAgBC,GAAI,MACxBD,GAAI,eAAgBC,GAAI,MACxBD,GAAI,UAAWC,GAAI,MACnBD,GAAI,UAAWC,GAAI,KAKtB,OAHAL,GAAEM,KAAKH,EAAO,WACZD,EAAOA,EAAKK,QAAQR,KAAKK,GAAIL,KAAKM,MAE7BH,EAIT,QAASM,GAAWC,GAClB,GAAIC,IACFC,IAAK,QACLC,IAAK,OACLC,IAAK,OACLC,IAAK,SACLC,IAAK,SACLC,IAAK,UAEHC,EAAS,MAAQC,OAAOC,KAAKT,GAAWU,KAAK,KAAO,IACpDC,EAAa,GAAIC,QAAOL,GACxBM,EAAgB,GAAID,QAAOL,EAAQ,KACnCO,EAAiB,MAARf,EAAe,GAAK,GAAKA,CACtC,OAAOY,GAAWI,KAAKD,GAAUA,EAAOjB,QAAQgB,EAAe,SAAUG,GACvE,MAAOhB,GAAUgB,KACdF,EAuyCP,QAASG,GAAOC,EAAQC,GAEtB,GAAIC,GAAOC,UAGPC,EAAUJ,EACVK,EAASJ,KACVK,MAAMC,MAAML,EAEf,IAAIM,GACAC,EAAQtC,KAAKO,KAAK,WACpB,GAAIgC,GAAQtC,EAAED,KACd,IAAIuC,EAAMC,GAAG,UAAW,CACtB,GAAIC,GAAOF,EAAME,KAAK,gBAClBC,EAA4B,gBAAXT,IAAuBA,CAE5C,IAAKQ,GAGE,GAAIC,EACT,IAAK,GAAIC,KAAKD,GACRA,EAAQE,eAAeD,KACzBF,EAAKC,QAAQC,GAAKD,EAAQC,QANrB,CACT,GAAIE,GAAS5C,EAAE6C,UAAWC,EAAaC,SAAU/C,EAAEgD,GAAGC,aAAaC,aAAgBZ,EAAME,OAAQC,EACjGH,GAAME,KAAK,eAAiBA,EAAO,GAAIM,GAAa/C,KAAM6C,EAAQX,IAS9C,gBAAXD,KAEPI,EADEI,EAAKR,YAAoBmB,UACnBX,EAAKR,GAASG,MAAMK,EAAMV,GAE1BU,EAAKC,QAAQT,MAM7B,OAAqB,mBAAVI,GAEFA,EAEAC,EArhDNe,OAAOC,UAAUC,WACnB,WAEC,GAAIC,MAAcA,SACdC,EAAkB,WAEpB,IACE,GAAIC,MACAC,EAAkBxC,OAAOsC,eACzBG,EAASD,EAAgBD,EAAQA,EAAQA,IAAWC,EACxD,MAAOE,IAET,MAAOD,MAELE,EAAU,GAAGA,QACbP,EAAW,SAAUQ,GACvB,GAAY,MAAR/D,KACF,KAAMgE,YAER,IAAIvC,GAAS4B,OAAOrD,KACpB,IAAI+D,GAAmC,mBAAzBP,EAASS,KAAKF,GAC1B,KAAMC,YAER,IAAIE,GAAezC,EAAO0C,OACtBC,EAAef,OAAOU,GACtBM,EAAeD,EAAaD,OAC5BG,EAAWtC,UAAUmC,OAAS,EAAInC,UAAU,GAAKuC,OAEjDC,EAAMF,EAAWG,OAAOH,GAAY,CACpCE,IAAOA,IACTA,EAAM,EAER,IAAIE,GAAQC,KAAKC,IAAID,KAAKE,IAAIL,EAAK,GAAIN,EAEvC,OAAIG,GAAeK,EAAQR,GAClB,EAEyC,IAA3CJ,EAAQG,KAAKxC,EAAQ2C,EAAcI,GAExCf,GACFA,EAAeJ,OAAOC,UAAW,YAC/BjB,MAASkB,EACTuB,cAAgB,EAChBC,UAAY,IAGd1B,OAAOC,UAAUC,SAAWA,KAK7BF,OAAOC,UAAU0B,aACnB,WAEC,GAAIvB,GAAkB,WAEpB,IACE,GAAIC,MACAC,EAAkBxC,OAAOsC,eACzBG,EAASD,EAAgBD,EAAQA,EAAQA,IAAWC,EACxD,MAAOE,IAET,MAAOD,MAELJ,KAAcA,SACdwB,EAAa,SAAUjB,GACzB,GAAY,MAAR/D,KACF,KAAMgE,YAER,IAAIvC,GAAS4B,OAAOrD,KACpB,IAAI+D,GAAmC,mBAAzBP,EAASS,KAAKF,GAC1B,KAAMC,YAER,IAAIE,GAAezC,EAAO0C,OACtBC,EAAef,OAAOU,GACtBM,EAAeD,EAAaD,OAC5BG,EAAWtC,UAAUmC,OAAS,EAAInC,UAAU,GAAKuC,OAEjDC,EAAMF,EAAWG,OAAOH,GAAY,CACpCE,IAAOA,IACTA,EAAM,EAER,IAAIE,GAAQC,KAAKC,IAAID,KAAKE,IAAIL,EAAK,GAAIN,EAEvC,IAAIG,EAAeK,EAAQR,EACzB,OAAO,CAGT,KADA,GAAIe,GAAQ,KACHA,EAAQZ,GACf,GAAI5C,EAAOyD,WAAWR,EAAQO,IAAUb,EAAac,WAAWD,GAC9D,OAAO,CAGX,QAAO,EAELxB,GACFA,EAAeJ,OAAOC,UAAW,cAC/BjB,MAAS2C,EACTF,cAAgB,EAChBC,UAAY,IAGd1B,OAAOC,UAAU0B,WAAaA,KAK/B7D,OAAOC,OACVD,OAAOC,KAAO,SACZ+D,EACAC,EACAC,GAGAA,IAEA,KAAKD,IAAKD,GAERE,EAAEzC,eAAeqB,KAAKkB,EAAGC,IAAMC,EAAEC,KAAKF,EAExC,OAAOC,KAMXpF,EAAEsF,KAAK,KAAKC,UAAY,SAAUC,EAAKR,EAAOS,GAC5C,GAAIC,GAAO1F,EAAEwF,GACTG,GAAYD,EAAKlD,KAAK,WAAakD,EAAKxF,QAAQ0F,aACpD,OAAOD,GAASrC,SAASmC,EAAK,GAAGG,gBAInC5F,EAAEsF,KAAK,KAAKO,QAAU,SAAUL,EAAKR,EAAOS,GAC1C,GAAIC,GAAO1F,EAAEwF,GACTG,GAAYD,EAAKlD,KAAK,WAAakD,EAAKxF,QAAQ0F,aACpD,OAAOD,GAASZ,WAAWU,EAAK,GAAGG,gBAIrC5F,EAAEsF,KAAK,KAAKQ,WAAa,SAAUN,EAAKR,EAAOS,GAC7C,GAAIC,GAAO1F,EAAEwF,GACTG,GAAYD,EAAKlD,KAAK,WAAakD,EAAKlD,KAAK,mBAAqBkD,EAAKxF,QAAQ0F,aACnF,OAAOD,GAASrC,SAASmC,EAAK,GAAGG,gBAInC5F,EAAEsF,KAAK,KAAKS,SAAW,SAAUP,EAAKR,EAAOS,GAC3C,GAAIC,GAAO1F,EAAEwF,GACTG,GAAYD,EAAKlD,KAAK,WAAakD,EAAKlD,KAAK,mBAAqBkD,EAAKxF,QAAQ0F,aACnF,OAAOD,GAASZ,WAAWU,EAAK,GAAGG,eAkDrC,IAAI9C,GAAe,SAAUkD,EAASvD,EAASwD,GACzCA,IACFA,EAAEC,kBACFD,EAAEE,kBAGJpG,KAAKqG,SAAWpG,EAAEgG,GAClBjG,KAAKsG,YAAc,KACnBtG,KAAKuG,QAAU,KACfvG,KAAKwG,MAAQ,KACbxG,KAAKyG,KAAO,KACZzG,KAAK0C,QAAUA,EAIY,OAAvB1C,KAAK0C,QAAQgE,QACf1G,KAAK0C,QAAQgE,MAAQ1G,KAAKqG,SAASM,KAAK,UAI1C3G,KAAK4G,IAAM7D,EAAaO,UAAUsD,IAClC5G,KAAK6G,OAAS9D,EAAaO,UAAUuD,OACrC7G,KAAK8G,QAAU/D,EAAaO,UAAUwD,QACtC9G,KAAK+G,SAAWhE,EAAaO,UAAUyD,SACvC/G,KAAKgH,UAAYjE,EAAaO,UAAU0D,UACxChH,KAAKiH,YAAclE,EAAaO,UAAU2D,YAC1CjH,KAAKkH,QAAUnE,EAAaO,UAAU6D,OACtCnH,KAAKmH,OAASpE,EAAaO,UAAU6D,OACrCnH,KAAKoH,KAAOrE,EAAaO,UAAU8D,KACnCpH,KAAKqH,KAAOtE,EAAaO,UAAU+D,KAEnCrH,KAAKsH,OAGPvE,GAAawE,QAAU,QAGvBxE,EAAaC,UACXwE,iBAAkB,mBAClBC,gBAAiB,yBACjBC,kBAAmB,SAAUC,EAAaC,GACxC,MAAuB,IAAfD,EAAoB,oBAAsB,sBAEpDE,eAAgB,SAAUC,EAAQC,GAChC,OACa,GAAVD,EAAe,+BAAiC,gCACpC,GAAZC,EAAiB,qCAAuC,wCAG7DC,cAAe,aACfC,gBAAiB,eACjBC,YAAY,EACZC,eAAgB,QAChBC,kBAAmB,KACnBC,UAAW,MACXC,MAAO,cACPC,KAAM,OACN7B,MAAO,KACP8B,mBAAoB,SACpBC,OAAO,EACPC,WAAW,EACXC,cAAc,EACdC,aAAa,EACbC,UAAU,EACVC,aAAa,EACbC,YAAY,EACZC,QAAQ,EACRC,YAAY,EACZC,sBAAuB,KACvBC,qBAAqB,EACrBC,gBAAiB,WACjBC,YAAY,EACZC,SAAU,YACVC,SAAU,eACVC,YAAY,EACZC,QAAQ,EACRC,aAAa,EACbC,oBAAoB,GAGtB5G,EAAaO,WAEXsG,YAAa7G,EAEbuE,KAAM,WACJ,GAAIuC,GAAO7J,KACP8J,EAAK9J,KAAKqG,SAASM,KAAK,KAE5B3G,MAAKqG,SAAS0D,SAAS,oBAGvB/J,KAAKgK,SACLhK,KAAKiK,SAAWjK,KAAKqG,SAAS6D,KAAK,YACnClK,KAAKmK,UAAYnK,KAAKqG,SAAS6D,KAAK,aACpClK,KAAKsG,YAActG,KAAKoK,aACxBpK,KAAKqG,SAASgE,MAAMrK,KAAKsG,aACzBtG,KAAKuG,QAAUvG,KAAKsG,YAAYgE,SAAS,UACzCtK,KAAKwG,MAAQxG,KAAKsG,YAAYgE,SAAS,kBACvCtK,KAAKuK,WAAavK,KAAKwG,MAAM8D,SAAS,UACtCtK,KAAKwK,WAAaxK,KAAKwG,MAAMiE,KAAK,SAE9BzK,KAAK0C,QAAQiH,oBACf3J,KAAKwG,MAAMuD,SAAS,uBAEJ,mBAAPD,KACT9J,KAAKuG,QAAQI,KAAK,UAAWmD,GAC7B7J,EAAE,cAAgB6J,EAAK,MAAMY,MAAM,SAAUxE,GAC3CA,EAAEE,iBACFyD,EAAKtD,QAAQoE,WAIjB3K,KAAK4K,gBACL5K,KAAK6K,gBACD7K,KAAK0C,QAAQuG,YAAYjJ,KAAK8K,qBAClC9K,KAAK6G,SACL7G,KAAK+G,WACL/G,KAAK+K,WACD/K,KAAK0C,QAAQgG,WAAW1I,KAAKgL,iBACjChL,KAAKwG,MAAM/D,KAAK,OAAQzC,MACxBA,KAAKsG,YAAY7D,KAAK,OAAQzC,MAC1BA,KAAK0C,QAAQ+G,QAAQzJ,KAAKyJ,SAE9BzJ,KAAKsG,YAAY2E,GAAG,mBAAoB,SAAU/E,GAChD2D,EAAKxD,SAAS6E,QAAQ,iBAAkBhF,KAG1ClG,KAAKsG,YAAY2E,GAAG,qBAAsB,SAAU/E,GAClD2D,EAAKxD,SAAS6E,QAAQ,mBAAoBhF,KAG5ClG,KAAKsG,YAAY2E,GAAG,mBAAoB,SAAU/E,GAChD2D,EAAKxD,SAAS6E,QAAQ,iBAAkBhF,KAG1ClG,KAAKsG,YAAY2E,GAAG,oBAAqB,SAAU/E,GACjD2D,EAAKxD,SAAS6E,QAAQ,kBAAmBhF,KAG3CiF,WAAW,WACTtB,EAAKxD,SAAS6E,QAAQ,uBAI1BE,eAAgB,WAGd,GAAInB,GAAWjK,KAAKiK,SAAW,aAAe,GAC1CoB,EAAarL,KAAKqG,SAASiF,SAASC,SAAS,eAAiB,mBAAqB,GACnFpB,EAAYnK,KAAKmK,UAAY,aAAe,GAE5CnB,EAAShJ,KAAK0C,QAAQsG,OAAS,qGAAuGhJ,KAAK0C,QAAQsG,OAAS,SAAW,GACvKwC,EAAYxL,KAAK0C,QAAQuG,WAC7B,wFAEC,OAASjJ,KAAK0C,QAAQwG,sBAAwB,GAAK,iBAAmBzI,EAAWT,KAAK0C,QAAQwG,uBAAyB,KAAO,UAEzH,GACFuC,EAAazL,KAAKiK,UAAYjK,KAAK0C,QAAQ2G,WAC/C,oJAGArJ,KAAK0C,QAAQsF,cACb,sFAEAhI,KAAK0C,QAAQuF,gBACb,wBAGM,GACFyD,EAAa1L,KAAKiK,UAAYjK,KAAK0C,QAAQwF,WAC/C,oHAGAlI,KAAK0C,QAAQyF,eACb,wBAGM,GACFwD,EACA,yCAA2C1B,EAAWoB,EAAa,kCACjCrL,KAAK0C,QAAQ2F,UAAY,2CAA6C8B,EAAY,2HAKpHnB,EACAwC,EACAC,EACA,oDAEAC,EACA,cAGJ,OAAOzL,GAAE0L,IAGXvB,WAAY,WACV,GAAIwB,GAAQ5L,KAAKoL,iBACbS,EAAK7L,KAAK8L,UAGd,OADAF,GAAMnB,KAAK,MAAM,GAAGsB,UAAYF,EACzBD,GAGTI,SAAU,WAERhM,KAAKiM,WAEL,IAAIJ,GAAK7L,KAAK8L,UACd9L,MAAKuK,WAAW,GAAGwB,UAAYF,GAGjCI,UAAW,WACTjM,KAAKwG,MAAMiE,KAAK,MAAMtD,UAGxB2E,SAAU,WACR,GAAIjC,GAAO7J,KACPkM,KACAC,EAAQ,EACRC,EAAcC,SAASC,cAAc,UACrCC,EAAU,GAUVC,EAAa,SAAUC,EAASxH,EAAOyH,EAASC,GAClD,MAAO,OACkB,mBAAZD,GAA0B,KAAOA,EAAW,WAAaA,EAAU,IAAM,KAC/D,mBAAVzH,GAAwB,OAASA,EAAS,yBAA2BA,EAAQ,IAAM,KACtE,mBAAb0H,GAA2B,OAASA,EAAY,kBAAoBA,EAAW,IAAM,IAC9F,IAAMF,EAAU,SAUlBG,EAAY,SAAUzM,EAAMuM,EAASG,EAAQC,GAC/C,MAAO,mBACiB,mBAAZJ,GAA0B,WAAaA,EAAU,IAAM,KAC5C,mBAAXG,GAAyB,WAAaA,EAAS,IAAM,KAC5DhD,EAAKnH,QAAQyG,oBAAsB,0BAA4BjJ,EAAgBO,EAAWN,IAAS,IAAM,KACvF,mBAAX2M,IAAqC,OAAXA,EAAkB,iBAAmBA,EAAS,IAAM,IACtF,IAAM3M,EACN,gBAAkB0J,EAAKnH,QAAQ4G,SAAW,IAAMO,EAAKnH,QAAQ6G,SAAW,2BAI9E,IAAIvJ,KAAK0C,QAAQgE,QAAU1G,KAAKiK,WAG9BsC,KAEKvM,KAAKqG,SAASoE,KAAK,oBAAoBtG,QAAQ,CAElD,GAAI8B,GAAUjG,KAAKqG,SAAS,EAC5B+F,GAAYW,UAAY,kBACxBX,EAAYY,YAAYX,SAASY,eAAejN,KAAK0C,QAAQgE,QAC7D0F,EAAY/J,MAAQ,GACpB4D,EAAQiH,aAAad,EAAanG,EAAQkH,YAE8B,OAApElH,EAAQvD,QAAQuD,EAAQmH,eAAeC,aAAa,cAAsBjB,EAAYkB,UAAW,GA0EzG,MAtEAtN,MAAKqG,SAASoE,KAAK,UAAUlK,KAAK,SAAU0E,GAC1C,GAAI1C,GAAQtC,EAAED,KAId,IAFAuM,KAEIhK,EAAMgJ,SAAS,mBAAnB,CAGA,GAAIgC,GAAcvN,KAAK+M,WAAa,GAChCF,EAAS7M,KAAKsI,MAAMkF,QACpBrN,EAAOoC,EAAME,KAAK,WAAaF,EAAME,KAAK,WAAaF,EAAM7B,OAC7DoM,EAASvK,EAAME,KAAK,UAAYF,EAAME,KAAK,UAAY,KACvDgL,EAA2C,mBAA1BlL,GAAME,KAAK,WAA6B,6BAA+BF,EAAME,KAAK,WAAa,WAAa,GAC7HiL,EAAqC,mBAAvBnL,GAAME,KAAK,QAA0B,gBAAkBoH,EAAKnH,QAAQ4G,SAAW,IAAM/G,EAAME,KAAK,QAAU,aAAe,GACvIkL,EAAa3N,KAAK4N,UAA2C,aAA/B5N,KAAK6N,cAAcC,SAA0B9N,KAAK6N,cAAcD,QAMlG,IAJa,KAATF,GAAeC,IACjBD,EAAO,SAAWA,EAAO,WAGvB7D,EAAKnH,QAAQiG,cAAgBgF,EAE/B,WADApB,IASF,IALKhK,EAAME,KAAK,aAEdtC,EAAOuN,EAAO,sBAAwBvN,EAAOsN,EAAU,WAGtB,aAA/BzN,KAAK6N,cAAcC,SAA0BvL,EAAME,KAAK,cAAe,EAAM,CAC/E,GAAsB,IAAlBF,EAAM0C,QAAe,CACvBkH,GAAS,CAGT,IAAI4B,GAAQ/N,KAAK6N,cAAcE,MAC3BC,EAAyD,mBAAnCzL,GAAM+I,SAAS7I,KAAK,WAA6B,6BAA+BF,EAAM+I,SAAS7I,KAAK,WAAa,WAAa,GACpJwL,EAAY1L,EAAM+I,SAAS7I,KAAK,QAAU,gBAAkBoH,EAAKnH,QAAQ4G,SAAW,IAAM/G,EAAM+I,SAAS7I,KAAK,QAAU,aAAe,GACvIyL,EAAgB,IAAMlO,KAAK6N,cAAcd,WAAa,EAE1DgB,GAAQE,EAAY,sBAAwBF,EAAQC,EAAe,UAErD,IAAV/I,GAAeiH,EAAI/H,OAAS,IAC9BoI,IACAL,EAAI5G,KAAKkH,EAAW,GAAI,KAAM,UAAWL,EAAQ,SAEnDI,IACAL,EAAI5G,KAAKkH,EAAWuB,EAAO,KAAM,kBAAoBG,EAAe/B,IAEtED,EAAI5G,KAAKkH,EAAWI,EAAUzM,EAAM,OAASoN,EAAcW,EAAerB,EAAQC,GAAS7H,EAAO,GAAIkH,QAC7F5J,GAAME,KAAK,cAAe,EACnCyJ,EAAI5G,KAAKkH,EAAW,GAAIvH,EAAO,YACtB1C,EAAME,KAAK,aAAc,EAClCyJ,EAAI5G,KAAKkH,EAAWI,EAAUzM,EAAMoN,EAAaV,EAAQC,GAAS7H,EAAO,sBAErEjF,KAAKmO,wBAAkE,aAAxCnO,KAAKmO,uBAAuBL,UAC7DvB,IACAL,EAAI5G,KAAKkH,EAAW,GAAI,KAAM,UAAWL,EAAQ,SAEnDD,EAAI5G,KAAKkH,EAAWI,EAAUzM,EAAMoN,EAAaV,EAAQC,GAAS7H,IAGpE4E,GAAKG,MAAM/E,GAASsH,KAIjBvM,KAAKiK,UAA6D,IAAjDjK,KAAKqG,SAASoE,KAAK,mBAAmBtG,QAAiBnE,KAAK0C,QAAQgE,OACxF1G,KAAKqG,SAASoE,KAAK,UAAU2D,GAAG,GAAGlE,KAAK,YAAY,GAAMvD,KAAK,WAAY,YAGtEuF,EAAI7K,KAAK,KAGlBgN,QAAS,WAEP,MADiB,OAAbrO,KAAKyG,OAAczG,KAAKyG,KAAOzG,KAAKwG,MAAMiE,KAAK,OAC5CzK,KAAKyG,MAMdI,OAAQ,SAAUyH,GAChB,GACIC,GADA1E,EAAO7J,IAIPsO,MAAa,GACftO,KAAKqG,SAASoE,KAAK,UAAUlK,KAAK,SAAU0E,GAC1C,GAAIwB,GAAOoD,EAAKwE,UAAUD,GAAGvE,EAAKG,MAAM/E,GAExC4E,GAAK2E,YAAYvJ,EAAOjF,KAAK4N,UAA2C,aAA/B5N,KAAK6N,cAAcC,SAA0B9N,KAAK6N,cAAcD,SAAUnH,GACnHoD,EAAK4E,YAAYxJ,EAAOjF,KAAKsN,SAAU7G,KAI3CzG,KAAK0O,UAEL,IAAIC,GAAgB3O,KAAKqG,SAASoE,KAAK,UAAUmE,IAAI,WACnD,GAAI5O,KAAKsN,SAAU,CACjB,GAAIzD,EAAKnH,QAAQiG,eAAiB3I,KAAK4N,UAA2C,aAA/B5N,KAAK6N,cAAcC,SAA0B9N,KAAK6N,cAAcD,UAAW,OAAO,CAErI,IAEIH,GAFAlL,EAAQtC,EAAED,MACV0N,EAAOnL,EAAME,KAAK,SAAWoH,EAAKnH,QAAQmG,SAAW,aAAegB,EAAKnH,QAAQ4G,SAAW,IAAM/G,EAAME,KAAK,QAAU,UAAY,EAQvI,OAJEgL,GADE5D,EAAKnH,QAAQkG,aAAerG,EAAME,KAAK,aAAeoH,EAAKI,SACnD,8BAAgC1H,EAAME,KAAK,WAAa,WAExD,GAEuB,mBAAxBF,GAAMoE,KAAK,SACbpE,EAAMoE,KAAK,SACTpE,EAAME,KAAK,YAAcoH,EAAKnH,QAAQoG,YACxCvG,EAAME,KAAK,WAEXiL,EAAOnL,EAAM7B,OAAS+M,KAGhCoB,UAICnI,EAAS1G,KAAKiK,SAA8B0E,EAActN,KAAKrB,KAAK0C,QAAQ0F,mBAAnDuG,EAAc,EAG3C,IAAI3O,KAAKiK,UAAYjK,KAAK0C,QAAQ8F,mBAAmB1E,QAAQ,SAAW,GAAI,CAC1E,GAAIe,GAAM7E,KAAK0C,QAAQ8F,mBAAmBsG,MAAM,IAChD,IAAKjK,EAAIV,OAAS,GAAKwK,EAAcxK,OAASU,EAAI,IAAsB,GAAdA,EAAIV,QAAewK,EAAcxK,QAAU,EAAI,CACvGoK,EAAcvO,KAAK0C,QAAQiG,aAAe,eAAiB,EAC3D,IAAIoG,GAAa/O,KAAKqG,SAASoE,KAAK,UAAUuE,IAAI,8CAAgDT,GAAapK,OAC3G8K,EAAsD,kBAAnCjP,MAAK0C,QAAQgF,kBAAoC1H,KAAK0C,QAAQgF,kBAAkBiH,EAAcxK,OAAQ4K,GAAc/O,KAAK0C,QAAQgF,iBACxJhB,GAAQuI,EAASzO,QAAQ,MAAOmO,EAAcxK,OAAOX,YAAYhD,QAAQ,MAAOuO,EAAWvL,aAIrEe,QAAtBvE,KAAK0C,QAAQgE,QACf1G,KAAK0C,QAAQgE,MAAQ1G,KAAKqG,SAASM,KAAK,UAGH,UAAnC3G,KAAK0C,QAAQ8F,qBACf9B,EAAQ1G,KAAK0C,QAAQgE,OAIlBA,IACHA,EAAsC,mBAAvB1G,MAAK0C,QAAQgE,MAAwB1G,KAAK0C,QAAQgE,MAAQ1G,KAAK0C,QAAQ8E,kBAIxFxH,KAAKuG,QAAQI,KAAK,QAAS1G,EAAEiP,KAAKxI,EAAMlG,QAAQ,YAAa,MAC7DR,KAAKuG,QAAQ+D,SAAS,kBAAkB5J,KAAKgG,GAE7C1G,KAAKqG,SAAS6E,QAAQ,uBAOxBnE,SAAU,SAAUuB,EAAO6G,GACrBnP,KAAKqG,SAASM,KAAK,UACrB3G,KAAKsG,YAAYyD,SAAS/J,KAAKqG,SAASM,KAAK,SAASnG,QAAQ,+DAAgE,IAGhI,IAAI4O,GAAc9G,EAAQA,EAAQtI,KAAK0C,QAAQ4F,KAEjC,QAAV6G,EACFnP,KAAKuG,QAAQwD,SAASqF,GACH,UAAVD,EACTnP,KAAKuG,QAAQ8I,YAAYD,IAEzBpP,KAAKuG,QAAQ8I,YAAYrP,KAAK0C,QAAQ4F,OACtCtI,KAAKuG,QAAQwD,SAASqF,KAI1BE,SAAU,SAAUxI,GAClB,GAAKA,GAAY9G,KAAK0C,QAAQ6F,QAAS,IAASvI,KAAKuP,SAArD,CAEA,GAAIC,GAAanD,SAASC,cAAc,OACpCmD,EAAOpD,SAASC,cAAc,OAC9BoD,EAAYrD,SAASC,cAAc,MACnCqD,EAAUtD,SAASC,cAAc,MACjCT,EAAKQ,SAASC,cAAc,MAC5BsD,EAAIvD,SAASC,cAAc,KAC3BnM,EAAOkM,SAASC,cAAc,QAC9BtD,EAAShJ,KAAK0C,QAAQsG,OAAShJ,KAAKwG,MAAMiE,KAAK,kBAAkB,GAAGoF,WAAU,GAAQ,KACtF9L,EAAS/D,KAAK0C,QAAQuG,WAAaoD,SAASC,cAAc,OAAS,KACnEwD,EAAU9P,KAAK0C,QAAQ2G,YAAcrJ,KAAKiK,SAAWjK,KAAKwG,MAAMiE,KAAK,kBAAkB,GAAGoF,WAAU,GAAQ,KAC5G3H,EAAalI,KAAK0C,QAAQwF,YAAclI,KAAKiK,SAAWjK,KAAKwG,MAAMiE,KAAK,kBAAkB,GAAGoF,WAAU,GAAQ,IAcnH,IAZA1P,EAAK4M,UAAY,OACjByC,EAAWzC,UAAY/M,KAAKwG,MAAM,GAAGuJ,WAAWhD,UAAY,QAC5D0C,EAAK1C,UAAY,qBACjB2C,EAAU3C,UAAY,sBACtB4C,EAAQ5C,UAAY,UAEpB5M,EAAK6M,YAAYX,SAASY,eAAe,eACzC2C,EAAE5C,YAAY7M,GACd0L,EAAGmB,YAAY4C,GACfF,EAAU1C,YAAYnB,GACtB6D,EAAU1C,YAAY2C,GAClB3G,GAAQyG,EAAKzC,YAAYhE,GACzBjF,EAAQ,CAEV,GAAIiM,GAAQ3D,SAASC,cAAc,OACnCvI,GAAOgJ,UAAY,eACnBiD,EAAMjD,UAAY,eAClBhJ,EAAOiJ,YAAYgD,GACnBP,EAAKzC,YAAYjJ,GAEf+L,GAASL,EAAKzC,YAAY8C,GAC9BL,EAAKzC,YAAY0C,GACbxH,GAAYuH,EAAKzC,YAAY9E,GACjCsH,EAAWxC,YAAYyC,GAEvBpD,SAAS4D,KAAKjD,YAAYwC,EAE1B,IAAIF,GAAWM,EAAEM,aACbC,EAAenH,EAASA,EAAOkH,aAAe,EAC9CE,EAAerM,EAASA,EAAOmM,aAAe,EAC9CG,EAAgBP,EAAUA,EAAQI,aAAe,EACjDI,EAAmBpI,EAAaA,EAAWgI,aAAe,EAC1DK,EAAgBtQ,EAAE0P,GAASa,aAAY,GAEvCC,EAAYC,iBAAmBA,iBAAiBjB,IAAQ,EACxDjJ,EAAQiK,EAAYxQ,EAAEwP,GAAQ,KAC9BkB,EAAcC,SAASH,EAAYA,EAAUI,WAAarK,EAAMsK,IAAI,eACtDF,SAASH,EAAYA,EAAUM,cAAgBvK,EAAMsK,IAAI,kBACzDF,SAASH,EAAYA,EAAUO,eAAiBxK,EAAMsK,IAAI,mBAC1DF,SAASH,EAAYA,EAAUQ,kBAAoBzK,EAAMsK,IAAI,sBAC3EI,EAAcP,EACAC,SAASH,EAAYA,EAAUU,UAAY3K,EAAMsK,IAAI,cACrDF,SAASH,EAAYA,EAAUW,aAAe5K,EAAMsK,IAAI,iBAAmB,CAE7FzE,UAAS4D,KAAKoB,YAAY7B,GAE1BxP,KAAKuP,UACHD,SAAUA,EACVa,aAAcA,EACdC,aAAcA,EACdC,cAAeA,EACfC,iBAAkBA,EAClBC,cAAeA,EACfI,YAAaA,EACbO,WAAYA,KAIhBI,QAAS,WACPtR,KAAKqO,UACLrO,KAAKsP,UACL,IAcIiC,GACAC,EACAC,EACAC,EAjBA7H,EAAO7J,KACPwG,EAAQxG,KAAKwG,MACb+D,EAAavK,KAAKuK,WAClBoH,EAAU1R,EAAE2R,QACZC,EAAe7R,KAAKsG,YAAY,GAAG4J,aACnCZ,EAAWtP,KAAKuP,SAAmB,SACnCY,EAAenQ,KAAKuP,SAAuB,aAC3Ca,EAAepQ,KAAKuP,SAAuB,aAC3Cc,EAAgBrQ,KAAKuP,SAAwB,cAC7Ce,EAAmBtQ,KAAKuP,SAA2B,iBACnDuC,EAAY9R,KAAKuP,SAAwB,cACzCoB,EAAc3Q,KAAKuP,SAAsB,YACzC2B,EAAalR,KAAKuP,SAAqB,WACvChB,EAAcvO,KAAK0C,QAAQiG,aAAe,YAAc,GAKxDoJ,EAAU,WACRN,EAAkB5H,EAAKvD,YAAY0L,SAASC,IAAMN,EAAQO,YAC1DR,EAAkBC,EAAQQ,SAAWV,EAAkBI,EAO7D,IAJAE,IAEI/R,KAAK0C,QAAQsG,QAAQxC,EAAMsK,IAAI,cAAe,GAExB,SAAtB9Q,KAAK0C,QAAQ6F,KAAiB,CAChC,GAAI6J,GAAU,WACZ,GAAIC,GACA9G,EAAW,SAAUwB,EAAWuF,GAC9B,MAAO,UAAUrM,GACb,MAAIqM,GACQrM,EAAQsM,UAAYtM,EAAQsM,UAAUC,SAASzF,GAAa9M,EAAEgG,GAASsF,SAASwB,KAE/E9G,EAAQsM,UAAYtM,EAAQsM,UAAUC,SAASzF,GAAa9M,EAAEgG,GAASsF,SAASwB,MAInG0F,EAAM5I,EAAKU,WAAW,GAAGmI,qBAAqB,MAC9CC,EAAaC,MAAMtP,UAAUuP,OAASD,MAAMtP,UAAUuP,OAAO5O,KAAKwO,EAAKlH,EAAS,UAAU,IAAU1B,EAAKpD,KAAKuI,IAAI,WAClH8D,EAAWF,MAAMtP,UAAUuP,OAASD,MAAMtP,UAAUuP,OAAO5O,KAAK0O,EAAYpH,EAAS,mBAAmB,IAASoH,EAAWE,OAAO,mBAEvId,KACAR,EAAaG,EAAkBR,EAE3BrH,EAAKnH,QAAQgG,WACVlC,EAAM/D,KAAK,WAAW+D,EAAM/D,KAAK,SAAU+D,EAAM2L,UACtDX,EAAYhL,EAAM/D,KAAK,WAEvB+O,EAAYhL,EAAM2L,SAGhBtI,EAAKnH,QAAQqG,YACfc,EAAKvD,YAAYyM,YAAY,SAAUtB,EAAkBC,GAA+CF,EAA3BD,EAAaL,GAExFrH,EAAKvD,YAAYiF,SAAS,YAC5BgG,EAAaE,EAAkBP,GAI/BmB,EADGM,EAAWxO,OAAS2O,EAAS3O,OAAU,EACnB,EAAXmL,EAAe4B,EAAa,EAE5B,EAGd1K,EAAMsK,KACJkC,aAAczB,EAAa,KAC3B0B,SAAY,SACZC,aAAcb,EAAYlC,EAAeC,EAAeC,EAAgBC,EAAmB,OAE7F/F,EAAWuG,KACTkC,aAAczB,EAAapB,EAAeC,EAAeC,EAAgBC,EAAmBK,EAAc,KAC1GwC,aAAc,OACdD,aAAcvO,KAAKE,IAAIwN,EAAY1B,EAAa,GAAK,OAGzDyB,KACApS,KAAKwK,WAAW4I,IAAI,wCAAwCnI,GAAG,uCAAwCmH,GACvGT,EAAQyB,IAAI,iCAAiCnI,GAAG,gCAAiCmH,OAC5E,IAAIpS,KAAK0C,QAAQ6F,MAA6B,QAArBvI,KAAK0C,QAAQ6F,MAAkBvI,KAAKyG,KAAKuI,IAAIT,GAAapK,OAASnE,KAAK0C,QAAQ6F,KAAM,CACpH,GAAI8K,GAAWrT,KAAKyG,KAAKuI,IAAI,YAAYA,IAAIT,GAAajE,WAAWgJ,MAAM,EAAGtT,KAAK0C,QAAQ6F,MAAMgL,OAAOjI,SAASrG,QAC7GuO,EAAYxT,KAAKyG,KAAK6M,MAAM,EAAGD,EAAW,GAAGR,OAAO,YAAY1O,MACpEoN,GAAajC,EAAWtP,KAAK0C,QAAQ6F,KAAOiL,EAAY1B,EAAYnB,EAEhE9G,EAAKnH,QAAQgG,WACVlC,EAAM/D,KAAK,WAAW+D,EAAM/D,KAAK,SAAU+D,EAAM2L,UACtDX,EAAYhL,EAAM/D,KAAK,WAEvB+O,EAAYhL,EAAM2L,SAGhBtI,EAAKnH,QAAQqG,YAEf/I,KAAKsG,YAAYyM,YAAY,SAAUtB,EAAkBC,GAA+CF,EAA3BD,EAAaL,GAE5F1K,EAAMsK,KACJkC,aAAczB,EAAapB,EAAeC,EAAeC,EAAgBC,EAAmB,KAC5F2C,SAAY,SACZC,aAAc,KAEhB3I,EAAWuG,KACTkC,aAAczB,EAAaZ,EAAc,KACzCwC,aAAc,OACdD,aAAc,OAKpBnI,SAAU,WACR,GAA2B,SAAvB/K,KAAK0C,QAAQ+F,MAAkB,CACjCzI,KAAKwG,MAAMsK,IAAI,YAAa,IAG5B,IAAI2C,GAAezT,KAAKwG,MAAM8E,SAASoI,QAAQC,SAAS,QACpDC,EAAgB5T,KAAK0C,QAAQgG,UAAY1I,KAAKsG,YAAYoN,QAAQC,SAAS,QAAUF,EACrFI,EAAUJ,EAAanJ,SAAS,kBAAkBwJ,aAClDC,EAAWH,EAAc9C,IAAI,QAAS,QAAQxG,SAAS,UAAUwJ,YAErEL,GAAatM,SACbyM,EAAczM,SAGdnH,KAAKsG,YAAYwK,IAAI,QAASnM,KAAKE,IAAIgP,EAASE,GAAY,UAC5B,QAAvB/T,KAAK0C,QAAQ+F,OAEtBzI,KAAKwG,MAAMsK,IAAI,YAAa,IAC5B9Q,KAAKsG,YAAYwK,IAAI,QAAS,IAAI/G,SAAS,cAClC/J,KAAK0C,QAAQ+F,OAEtBzI,KAAKwG,MAAMsK,IAAI,YAAa,IAC5B9Q,KAAKsG,YAAYwK,IAAI,QAAS9Q,KAAK0C,QAAQ+F,SAG3CzI,KAAKwG,MAAMsK,IAAI,YAAa,IAC5B9Q,KAAKsG,YAAYwK,IAAI,QAAS,IAG5B9Q,MAAKsG,YAAYiF,SAAS,cAAuC,QAAvBvL,KAAK0C,QAAQ+F,OACzDzI,KAAKsG,YAAY+I,YAAY,cAIjCrE,eAAgB,WACd,GAGIxG,GACAwP,EAJAnK,EAAO7J,KACP2L,EAAO,UACPC,EAAQ3L,EAAE0L,GAGVsI,EAAe,SAAU5N,GACvBuF,EAAM7B,SAAS1D,EAASM,KAAK,SAASnG,QAAQ,2BAA4B,KAAKuS,YAAY,SAAU1M,EAASkF,SAAS,WACvH/G,EAAM6B,EAAS2L,SACfgC,EAAe3N,EAASkF,SAAS,UAAY,EAAIlF,EAAS,GAAG6J,aAC7DtE,EAAMkF,KACJmB,IAAOzN,EAAIyN,IAAM+B,EACjBE,KAAQ1P,EAAI0P,KACZzL,MAASpC,EAAS,GAAG8N,YACrB7P,SAAY,aAIpBtE,MAAKsG,YAAY2E,GAAG,QAAS,WACvBpB,EAAK8D,eAGTsG,EAAahU,EAAED,OACf4L,EAAM+H,SAAS9J,EAAKnH,QAAQgG,WAC5BkD,EAAMmH,YAAY,QAAS9S,EAAED,MAAMuL,SAAS,SAC5CK,EAAMwI,OAAOvK,EAAKrD,UAGpBvG,EAAE2R,QAAQ3G,GAAG,gBAAiB,WAC5BgJ,EAAapK,EAAKvD,eAGpBtG,KAAKqG,SAAS4E,GAAG,iBAAkB,WACjCpB,EAAKrD,MAAM/D,KAAK,SAAUoH,EAAKrD,MAAM2L,UACrCvG,EAAMyI,YAIV5F,YAAa,SAAUxJ,EAAOqI,EAAU7G,GACtC,IAAKA,EACH,GAAIA,GAAOzG,KAAKqO,UAAUD,GAAGpO,KAAKgK,MAAM/E,GAG1CwB,GAAKsM,YAAY,WAAYzF,IAG/BkB,YAAa,SAAUvJ,EAAO2I,EAAUnH,GACtC,IAAKA,EACH,GAAIA,GAAOzG,KAAKqO,UAAUD,GAAGpO,KAAKgK,MAAM/E,GAGtC2I,GACFnH,EAAKsD,SAAS,YAAYO,SAAS,KAAK3D,KAAK,OAAQ,KAAKA,KAAK,WAAY,IAE3EF,EAAK4I,YAAY,YAAY/E,SAAS,KAAKgK,WAAW,QAAQ3N,KAAK,WAAY,IAInFgH,WAAY,WACV,MAAO3N,MAAKqG,SAAS,GAAGuH,UAG1BhD,cAAe,WACb,GAAIf,GAAO7J,IAEPA,MAAK2N,cACP3N,KAAKsG,YAAYyD,SAAS,YAC1B/J,KAAKuG,QAAQwD,SAAS,YAAYpD,KAAK,WAAY,MAE/C3G,KAAKuG,QAAQgF,SAAS,cACxBvL,KAAKsG,YAAY+I,YAAY,YAC7BrP,KAAKuG,QAAQ8I,YAAY,aAGU,IAAjCrP,KAAKuG,QAAQI,KAAK,aAAsB3G,KAAKqG,SAAS5D,KAAK,aAC7DzC,KAAKuG,QAAQ+N,WAAW,aAI5BtU,KAAKuG,QAAQmE,MAAM,WACjB,OAAQb,EAAK8D,gBAIjBe,SAAU,WACJ1O,KAAKqG,SAAS7D,GAAG,gBACnBxC,KAAKqG,SAAS5D,KAAK,WAAYzC,KAAKqG,SAASM,KAAK,aAClD3G,KAAKuG,QAAQI,KAAK,WAAY3G,KAAKqG,SAAS5D,KAAK,eAIrDoI,cAAe,WACb,GAAIhB,GAAO7J,KACPuU,EAAYtU,EAAEoM,SAElBrM,MAAKsG,YAAY2E,GAAG,sBAAuB,iBAAkB,SAAU/E,GACrEA,EAAEC,oBAGJoO,EAAU9R,KAAK,eAAe,GAE9BzC,KAAKuG,QAAQ0E,GAAG,QAAS,SAAU/E,GAC7B,OAAOxE,KAAKwE,EAAEsO,QAAQhR,SAAS,MAAQ+Q,EAAU9R,KAAK,iBACtDyD,EAAEE,iBACFmO,EAAU9R,KAAK,eAAe,MAIpCzC,KAAKsG,YAAY2E,GAAG,QAAS,WAC3BpB,EAAKyH,UACLzH,EAAKxD,SAAS4E,GAAG,kBAAmB,WAClC,GAAKpB,EAAKnH,QAAQuG,YAAeY,EAAKI,UAE/B,IAAKJ,EAAKI,SAAU,CACzB,GAAImD,GAAgBvD,EAAKG,MAAMH,EAAKxD,SAAS,GAAG+G,cAEhD,IAA6B,gBAAlBA,GAA4B,MAGvC,IAAI4E,GAASnI,EAAKpD,KAAK2H,GAAGhB,GAAe,GAAGqH,UAAY5K,EAAKU,WAAW,GAAGkK,SAC3EzC,GAASA,EAASnI,EAAKU,WAAW,GAAG2F,aAAa,EAAIrG,EAAK0F,SAASD,SAAS,EAC7EzF,EAAKU,WAAW,GAAG2H,UAAYF,OAT/BnI,GAAKrD,MAAMiE,KAAK,eAAeE,YAcrC3K,KAAKwG,MAAMyE,GAAG,QAAS,OAAQ,SAAU/E,GACvC,GAAI3D,GAAQtC,EAAED,MACV0U,EAAenS,EAAM+I,SAAS7I,KAAK,iBACnCkS,EAAY9K,EAAKxD,SAASO,MAC1BgO,EAAY/K,EAAKxD,SAAS6D,KAAK,gBAUnC,IAPIL,EAAKI,UACP/D,EAAEC,kBAGJD,EAAEE,kBAGGyD,EAAK8D,eAAiBpL,EAAM+I,SAASC,SAAS,YAAa,CAC9D,GAAIsJ,GAAWhL,EAAKxD,SAASoE,KAAK,UAC9BqK,EAAUD,EAASzG,GAAGsG,GACtBK,EAAQD,EAAQ5K,KAAK,YACrB8K,EAAYF,EAAQxJ,OAAO,YAC3B9B,EAAaK,EAAKnH,QAAQ8G,WAC1ByL,EAAgBD,EAAUvS,KAAK,gBAAiB,CAEpD,IAAKoH,EAAKI,UAUR,GAJA6K,EAAQ5K,KAAK,YAAa6K,GAC1BlL,EAAK4E,YAAYiG,GAAeK,GAChCxS,EAAM2S,OAEF1L,KAAe,GAASyL,KAAkB,EAAO,CACnD,GAAIE,GAAa3L,EAAaqL,EAAShC,OAAO,aAAa1O,OACvDiR,EAAgBH,EAAgBD,EAAUvK,KAAK,mBAAmBtG,MAEtE,IAAKqF,GAAc2L,GAAgBF,GAAiBG,EAClD,GAAI5L,GAA4B,GAAdA,EAChBqL,EAAS3K,KAAK,YAAY,GAC1B4K,EAAQ5K,KAAK,YAAY,GACzBL,EAAKrD,MAAMiE,KAAK,aAAa4E,YAAY,YACzCxF,EAAK4E,YAAYiG,GAAc,OAC1B,IAAIO,GAAkC,GAAjBA,EAAoB,CAC9CD,EAAUvK,KAAK,mBAAmBP,KAAK,YAAY,GACnD4K,EAAQ5K,KAAK,YAAY,EACzB,IAAImL,GAAa9S,EAAM+I,SAAS7I,KAAK,WACrCoH,GAAKrD,MAAMiE,KAAK,mBAAqB4K,EAAa,MAAMhG,YAAY,YACpExF,EAAK4E,YAAYiG,GAAc,OAC1B,CACL,GAAIY,GAAwD,kBAAhCzL,GAAKnH,QAAQmF,eACjCgC,EAAKnH,QAAQmF,eAAe2B,EAAYyL,GAAiBpL,EAAKnH,QAAQmF,eAC1E0N,EAASD,EAAc,GAAG9U,QAAQ,MAAOgJ,GACzCgM,EAAYF,EAAc,GAAG9U,QAAQ,MAAOyU,GAC5CQ,EAAUxV,EAAE,6BAGZqV,GAAc,KAChBC,EAASA,EAAO/U,QAAQ,QAAS8U,EAAc,GAAG9L,EAAa,EAAI,EAAI,IACvEgM,EAAYA,EAAUhV,QAAQ,QAAS8U,EAAc,GAAGL,EAAgB,EAAI,EAAI,KAGlFH,EAAQ5K,KAAK,YAAY,GAEzBL,EAAKrD,MAAM4N,OAAOqB,GAEdjM,GAAc2L,IAChBM,EAAQrB,OAAOnU,EAAE,QAAUsV,EAAS,WACpC1L,EAAKxD,SAAS6E,QAAQ,yBAGpB+J,GAAiBG,IACnBK,EAAQrB,OAAOnU,EAAE,QAAUuV,EAAY,WACvC3L,EAAKxD,SAAS6E,QAAQ,4BAGxBC,WAAW,WACTtB,EAAK4E,YAAYiG,GAAc,IAC9B,IAEHe,EAAQC,MAAM,KAAKC,QAAQ,IAAK,WAC9B1V,EAAED,MAAMmH,iBAzDhB0N,GAAS3K,KAAK,YAAY,GAC1B4K,EAAQ5K,KAAK,YAAY,GACzBL,EAAKrD,MAAMiE,KAAK,aAAa4E,YAAY,YACzCxF,EAAK4E,YAAYiG,GAAc,EA6D5B7K,GAAKI,SAECJ,EAAKnH,QAAQuG,YACtBY,EAAKW,WAAWG,QAFhBd,EAAKtD,QAAQoE,SAMVgK,GAAa9K,EAAKxD,SAASO,OAASiD,EAAKI,UAAc2K,GAAa/K,EAAKxD,SAAS6D,KAAK,mBAAqBL,EAAKI,YACpHJ,EAAKxD,SAASuP,SAEd/L,EAAKxD,SAAS6E,QAAQ,qBAAsBwJ,EAAcI,EAAQ5K,KAAK,YAAa6K,QAK1F/U,KAAKwG,MAAMyE,GAAG,QAAS,6DAA8D,SAAU/E,GACzFA,EAAE2P,eAAiB7V,OACrBkG,EAAEE,iBACFF,EAAEC,kBACE0D,EAAKnH,QAAQuG,aAAehJ,EAAEiG,EAAE4P,QAAQvK,SAAS,SACnD1B,EAAKW,WAAWG,QAEhBd,EAAKtD,QAAQoE,WAKnB3K,KAAKwG,MAAMyE,GAAG,QAAS,iCAAkC,SAAU/E,GACjEA,EAAEE,iBACFF,EAAEC,kBACE0D,EAAKnH,QAAQuG,WACfY,EAAKW,WAAWG,QAEhBd,EAAKtD,QAAQoE,UAIjB3K,KAAKwG,MAAMyE,GAAG,QAAS,wBAAyB,WAC9CpB,EAAKtD,QAAQmE,UAGf1K,KAAKwK,WAAWS,GAAG,QAAS,SAAU/E,GACpCA,EAAEC,oBAGJnG,KAAKwG,MAAMyE,GAAG,QAAS,eAAgB,SAAU/E,GAC3C2D,EAAKnH,QAAQuG,WACfY,EAAKW,WAAWG,QAEhBd,EAAKtD,QAAQoE,QAGfzE,EAAEE,iBACFF,EAAEC,kBAEElG,EAAED,MAAMuL,SAAS,iBACnB1B,EAAK7C,YAEL6C,EAAK5C,cAEP4C,EAAKxD,SAASuP,WAGhB5V,KAAKqG,SAASuP,OAAO,WACnB/L,EAAKhD,QAAO,MAIhBiE,mBAAoB,WAClB,GAAIjB,GAAO7J,KACP+V,EAAc9V,EAAE,+BAEpBD,MAAKsG,YAAY2E,GAAG,uDAAwD,WAC1EpB,EAAKU,WAAWE,KAAK,WAAW4E,YAAY,UACtCxF,EAAKW,WAAW5D,QACpBiD,EAAKW,WAAW5D,IAAI,IACpBiD,EAAKpD,KAAKuI,IAAI,cAAcK,YAAY,UAClC0G,EAAYzK,SAASnH,QAAQ4R,EAAY5O,UAE5C0C,EAAKI,UAAUJ,EAAKU,WAAWE,KAAK,aAAaV,SAAS,UAC/DoB,WAAW,WACTtB,EAAKW,WAAWG,SACf,MAGL3K,KAAKwK,WAAWS,GAAG,6EAA8E,SAAU/E,GACzGA,EAAEC,oBAGJnG,KAAKwK,WAAWS,GAAG,uBAAwB,WACzC,GAAIpB,EAAKW,WAAW5D,MAAO,CACzB,GAAIoP,GAAcnM,EAAKpD,KAAKuI,IAAI,cAAcK,YAAY,UAAU/E,SAAS,IAE3E0L,GADEnM,EAAKnH,QAAQyG,oBACD6M,EAAYhH,IAAI,KAAOnF,EAAKoM,eAAiB,IAAM/V,EAAgB2J,EAAKW,WAAW5D,OAAS,KAE5FoP,EAAYhH,IAAI,IAAMnF,EAAKoM,eAAiB,IAAMpM,EAAKW,WAAW5D,MAAQ,KAE1FoP,EAAY1K,SAASvB,SAAS,UAE9BF,EAAKpD,KAAKoM,OAAO,oBAAoBtS,KAAK,WACxC,GAAIgC,GAAQtC,EAAED,MACV2M,EAAWpK,EAAME,KAAK,WAEoE,KAA1FoH,EAAKpD,KAAKoM,OAAO,kBAAoBlG,EAAW,KAAKqC,IAAIzM,GAAOyM,IAAI,WAAW7K,SACjF5B,EAAMwH,SAAS,UACfF,EAAKpD,KAAKoM,OAAO,kBAAoBlG,EAAW,QAAQ5C,SAAS,YAIrE,IAAImM,GAAcrM,EAAKpD,KAAKuI,IAAI,UAGhCkH,GAAY3V,KAAK,SAAU0E,GACzB,GAAI1C,GAAQtC,EAAED,KAEVuC,GAAMgJ,SAAS,aACjBhJ,EAAM0C,UAAYiR,EAAY9H,GAAG,GAAGnJ,SACpC1C,EAAM0C,UAAYiR,EAAY3C,OAAOtO,SACrCiR,EAAY9H,GAAGnJ,EAAQ,GAAGsG,SAAS,aACnChJ,EAAMwH,SAAS,YAIdF,EAAKpD,KAAKuI,IAAI,wBAAwB7K,OAM9B4R,EAAYzK,SAASnH,QAChC4R,EAAY5O,UANN4O,EAAYzK,SAASnH,QACzB4R,EAAY5O,SAEd4O,EAAYrV,KAAKmJ,EAAKnH,QAAQ+E,gBAAgBjH,QAAQ,MAAO,IAAMC,EAAWoJ,EAAKW,WAAW5D,OAAS,MAAMQ,OAC7GyC,EAAKU,WAAW6J,OAAO2B,QAMzBlM,GAAKpD,KAAKuI,IAAI,cAAcK,YAAY,UAClC0G,EAAYzK,SAASnH,QACzB4R,EAAY5O,QAIhB0C,GAAKpD,KAAKoM,OAAO,WAAWxD,YAAY,UACxCxF,EAAKpD,KAAKuI,IAAI,uCAAuCZ,GAAG,GAAGrE,SAAS,UAAUO,SAAS,KAAKK,QAC5F1K,EAAED,MAAM2K,WAIZsL,aAAc,WACZ,GAAI3N,GAAQ,WACZ,QAAQtI,KAAK0C,QAAQ0G,iBACnB,IAAK,SACL,IAAK,aACHd,EAAQ,SACR,MACF,KAAK,YAKP,MAAOA,IAGT1B,IAAK,SAAUvE,GACb,MAAqB,mBAAVA,IACTrC,KAAKqG,SAASO,IAAIvE,GAClBrC,KAAK6G,SAEE7G,KAAKqG,UAELrG,KAAKqG,SAASO,OAIzBI,UAAW,WACThH,KAAKqO,UACLrO,KAAKqG,SAASoE,KAAK,kBAAkBuE,IAAI,iCAAiC9E,KAAK,YAAY,GAC3FlK,KAAKyG,KAAKuI,IAAI,kDAAkDjF,SAAS,YACzE/J,KAAK6G,QAAO,IAGdI,YAAa,WACXjH,KAAKqO,UACLrO,KAAKqG,SAASoE,KAAK,kBAAkBuE,IAAI,iCAAiC9E,KAAK,YAAY,GAC3FlK,KAAKyG,KAAKuI,IAAI,kDAAkDK,YAAY,YAC5ErP,KAAK6G,QAAO,IAGdsP,QAAS,SAAUjQ,GACjB,GAEIkQ,GAEAnR,EACAoR,EACAC,EACA/C,EACAgD,EACAC,EACA5B,EACA6B,EAXAlU,EAAQtC,EAAED,MACV0W,EAAUnU,EAAMC,GAAG,SAAWD,EAAM+I,SAASA,SAAW/I,EAAM+I,SAE9DzB,EAAO6M,EAAQjU,KAAK,QASpBkU,EAAW,uDACXC,GACEC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,IAAK,IA2CX,IAxCI/P,EAAKnH,QAAQuG,aAAYyN,EAAUnU,EAAM+I,SAASA,UAElDzB,EAAKnH,QAAQgG,YAAWgO,EAAU7M,EAAKrD,OAE3C4P,EAASnW,EAAE,mBAAoByW,GAE/BD,EAAW5M,EAAKrD,MAAM8E,SAASC,SAAS,SAEnCkL,IAAavQ,EAAEsO,SAAW,IAAMtO,EAAEsO,SAAW,IAAM1S,MAAM0S,SAAW,IAAM1S,MAAM0S,SAAW,MACzF3K,EAAKnH,QAAQgG,UAKhBmB,EAAKvD,YAAY4E,QAAQ,UAJzBrB,EAAKyH,UACLzH,EAAKrD,MAAM8E,SAASvB,SAAS,QAC7B0M,GAAW,GAIb5M,EAAKW,WAAWG,SAGdd,EAAKnH,QAAQuG,aACX,WAAWvH,KAAKwE,EAAEsO,QAAQhR,SAAS,MAAQiT,GAAkD,IAAtC5M,EAAKrD,MAAMiE,KAAK,WAAWtG,SACpF+B,EAAEE,iBACFyD,EAAKrD,MAAM8E,SAAS+D,YAAY,QAC5BxF,EAAKnH,QAAQgG,WAAWmB,EAAKvD,YAAY+I,YAAY,QACzDxF,EAAKtD,QAAQoE,SAGfyL,EAASnW,EAAE,qEAAsEyW,GAC5EnU,EAAMqE,OAAU,UAAUlF,KAAKwE,EAAEsO,QAAQhR,SAAS,MACb,IAApC4S,EAAOvD,OAAO,WAAW1O,SAC3BiS,EAASvM,EAAKvD,YAAYmE,KAAK,MAE7B2L,EADEvM,EAAKnH,QAAQyG,oBACNiN,EAAOvD,OAAO,KAAOhJ,EAAKoM,eAAiB,IAAM/V,EAAgB0W,EAAW1Q,EAAEsO,UAAY,KAE1F4B,EAAOvD,OAAO,IAAMhJ,EAAKoM,eAAiB,IAAMW,EAAW1Q,EAAEsO,SAAW,OAMpF4B,EAAOjS,OAAZ,CAEA,GAAI,UAAUzC,KAAKwE,EAAEsO,QAAQhR,SAAS,KACpCyB,EAAQmR,EAAOnR,MAAMmR,EAAOvD,OAAO,WACnCyD,EAAQF,EAAO9K,OAAOqL,GAAUL,QAAQ7T,KAAK,iBAC7C8Q,EAAO6C,EAAO9K,OAAOqL,GAAUpD,OAAO9Q,KAAK,iBAC3C4T,EAAOD,EAAOhI,GAAGnJ,GAAOqG,SAASuO,QAAQlD,GAAUvI,GAAG,GAAG3L,KAAK,iBAC9D8T,EAAOH,EAAOhI,GAAGnJ,GAAOqG,SAASwO,QAAQnD,GAAUvI,GAAG,GAAG3L,KAAK,iBAC9D+T,EAAWJ,EAAOhI,GAAGiI,GAAM/K,SAASwO,QAAQnD,GAAUvI,GAAG,GAAG3L,KAAK,iBAE7DoH,EAAKnH,QAAQuG,aACfmN,EAAO7V,KAAK,SAAUoC,GACf1C,EAAED,MAAMuL,SAAS,aACpBtL,EAAED,MAAMyC,KAAK,QAASE,KAG1BsC,EAAQmR,EAAOnR,MAAMmR,EAAOvD,OAAO,YACnCyD,EAAQF,EAAOE,QAAQ7T,KAAK,SAC5B8Q,EAAO6C,EAAO7C,OAAO9Q,KAAK,SAC1B4T,EAAOD,EAAOhI,GAAGnJ,GAAO4U,UAAUzL,GAAG,GAAG3L,KAAK,SAC7C8T,EAAOH,EAAOhI,GAAGnJ,GAAO6U,UAAU1L,GAAG,GAAG3L,KAAK,SAC7C+T,EAAWJ,EAAOhI,GAAGiI,GAAMyD,UAAU1L,GAAG,GAAG3L,KAAK,UAGlDmS,EAAYrS,EAAME,KAAK,aAEN,IAAbyD,EAAEsO,SACA3K,EAAKnH,QAAQuG,aAAYhE,GAAS,GAClCA,GAASuR,GAAYvR,EAAQsR,IAAMtR,EAAQsR,GACnCD,EAARrR,IAAeA,EAAQqR,GACvBrR,GAAS2P,IAAW3P,EAAQsO,IACV,IAAbrN,EAAEsO,UACP3K,EAAKnH,QAAQuG,aAAYhE,GAAS,GACzB,IAATA,IAAaA,EAAQ,GACrBA,GAASuR,GAAoBH,EAARpR,IAAcA,EAAQoR,GAC3CpR,EAAQsO,IAAMtO,EAAQsO,GACtBtO,GAAS2P,IAAW3P,EAAQqR,IAGlC/T,EAAME,KAAK,YAAawC,GAEnB4E,EAAKnH,QAAQuG,YAGhB/C,EAAEE,iBACG7D,EAAMgJ,SAAS,qBAClB6K,EAAO/G,YAAY,UAAUjB,GAAGnJ,GAAO8E,SAAS,UAAUO,SAAS,KAAKK,QACxEpI,EAAMoI,UALRyL,EAAOhI,GAAGnJ,GAAO0F,YASd,KAAKpI,EAAMC,GAAG,SAAU,CAC7B,GACIuX,GACAC,EAFAC,IAIJ7D,GAAO7V,KAAK,WACLN,EAAED,MAAMsL,SAASC,SAAS,aACzBtL,EAAEiP,KAAKjP,EAAED,MAAMG,OAAO+Z,eAAeC,UAAU,EAAG,IAAMvD,EAAW1Q,EAAEsO,UACvEyF,EAAS3U,KAAKrF,EAAED,MAAMsL,SAASrG,WAKrC8U,EAAQ9Z,EAAEoM,UAAU5J,KAAK,YACzBsX,IACA9Z,EAAEoM,UAAU5J,KAAK,WAAYsX,GAE7BC,EAAU/Z,EAAEiP,KAAKjP,EAAE,UAAUE,OAAO+Z,eAAeC,UAAU,EAAG,GAE5DH,GAAWpD,EAAW1Q,EAAEsO,UAC1BuF,EAAQ,EACR9Z,EAAEoM,UAAU5J,KAAK,WAAYsX,IACpBA,GAASE,EAAS9V,SAC3BlE,EAAEoM,UAAU5J,KAAK,WAAY,GACzBsX,EAAQE,EAAS9V,SAAQ4V,EAAQ,IAGvC3D,EAAOhI,GAAG6L,EAASF,EAAQ,IAAIpP,QAIjC,IAAK,UAAUjJ,KAAKwE,EAAEsO,QAAQhR,SAAS,MAAS,QAAQ9B,KAAKwE,EAAEsO,QAAQhR,SAAS,MAAQqG,EAAKnH,QAAQgH,cAAiB+M,EAAU,CAE9H,GADK,OAAO/U,KAAKwE,EAAEsO,QAAQhR,SAAS,MAAM0C,EAAEE,iBACvCyD,EAAKnH,QAAQuG,WASN,OAAOvH,KAAKwE,EAAEsO,QAAQhR,SAAS,OACzCqG,EAAKrD,MAAMiE,KAAK,aAAaC,QAC7BnI,EAAMoI,aAXsB,CAC5B,GAAIyP,GAAOna,EAAE,SACbma,GAAK1P,QAEL0P,EAAKzP,QAELzE,EAAEE,iBAEFnG,EAAEoM,UAAU5J,KAAK,eAAe,GAKlCxC,EAAEoM,UAAU5J,KAAK,WAAY,IAG1B,WAAWf,KAAKwE,EAAEsO,QAAQhR,SAAS,MAAQiT,IAAa5M,EAAKI,UAAYJ,EAAKnH,QAAQuG,aAAiB,OAAOvH,KAAKwE,EAAEsO,QAAQhR,SAAS,OAASiT,KAClJ5M,EAAKrD,MAAM8E,SAAS+D,YAAY,QAC5BxF,EAAKnH,QAAQgG,WAAWmB,EAAKvD,YAAY+I,YAAY,QACzDxF,EAAKtD,QAAQoE,WAIjBlB,OAAQ,WACNzJ,KAAKqG,SAAS0D,SAAS,iBAAiB4J,SAAS3T,KAAKsG,aAClDtG,KAAK0C,QAAQgG,WAAW1I,KAAKwG,MAAMa,QAGzCP,QAAS,WACP9G,KAAKyG,KAAO,KACZzG,KAAKgM,WACLhM,KAAK6G,SACL7G,KAAK4K,gBACL5K,KAAKsP,UAAS,GACdtP,KAAK+G,WACL/G,KAAK+K,WACD/K,KAAKyG,MAAMzG,KAAKwK,WAAWU,QAAQ,kBAEvClL,KAAKqG,SAAS6E,QAAQ,wBAGxB7D,KAAM,WACJrH,KAAKsG,YAAYe,QAGnBD,KAAM,WACJpH,KAAKsG,YAAYc,QAGnBD,OAAQ,WACNnH,KAAKsG,YAAYa,SACjBnH,KAAKqG,SAASc,UAmDlB,IAAIkT,GAAMpa,EAAEgD,GAAGC,YACfjD,GAAEgD,GAAGC,aAAetB,EACpB3B,EAAEgD,GAAGC,aAAaoX,YAAcvX,EAIhC9C,EAAEgD,GAAGC,aAAaqX,WAAa,WAE7B,MADAta,GAAEgD,GAAGC,aAAemX,EACbra,MAGTC,EAAEoM,UACG5J,KAAK,WAAY,GACjBwI,GAAG,UAAW,iGAAkGlI,EAAaO,UAAU6S,SACvIlL,GAAG,gBAAiB,iGAAkG,SAAU/E,GAC/HA,EAAEC,oBAKRlG,EAAE2R,QAAQ3G,GAAG,0BAA2B,WACtChL,EAAE,iBAAiBM,KAAK,WACtB,GAAIia,GAAgBva,EAAED,KACtB4B,GAAOqC,KAAKuW,EAAeA,EAAc/X,aAG5C1C"} | |
0 | 2 | \ No newline at end of file | ... | ... |
resource/lib/bootstrap-select/js/bootstrap-select.min.js
0 → 100644
1 | +/*! | |
2 | + * Bootstrap-select v1.7.2 (http://silviomoreto.github.io/bootstrap-select) | |
3 | + * | |
4 | + * Copyright 2013-2015 bootstrap-select | |
5 | + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) | |
6 | + */ | |
7 | + | |
8 | +(function (root, factory) { | |
9 | + if (typeof define === 'function' && define.amd) { | |
10 | + // AMD. Register as an anonymous module unless amdModuleId is set | |
11 | + define(["jquery"], function (a0) { | |
12 | + return (factory(a0)); | |
13 | + }); | |
14 | + } else if (typeof exports === 'object') { | |
15 | + // Node. Does not work with strict CommonJS, but | |
16 | + // only CommonJS-like environments that support module.exports, | |
17 | + // like Node. | |
18 | + module.exports = factory(require("jquery")); | |
19 | + } else { | |
20 | + factory(jQuery); | |
21 | + } | |
22 | +}(this, function () { | |
23 | + | |
24 | + (function ($) { | |
25 | + 'use strict'; | |
26 | + | |
27 | + //<editor-fold desc="Shims"> | |
28 | + if (!String.prototype.includes) { | |
29 | + (function () { | |
30 | + 'use strict'; // needed to support `apply`/`call` with `undefined`/`null` | |
31 | + var toString = {}.toString; | |
32 | + var defineProperty = (function () { | |
33 | + // IE 8 only supports `Object.defineProperty` on DOM elements | |
34 | + try { | |
35 | + var object = {}; | |
36 | + var $defineProperty = Object.defineProperty; | |
37 | + var result = $defineProperty(object, object, object) && $defineProperty; | |
38 | + } catch (error) { | |
39 | + } | |
40 | + return result; | |
41 | + }()); | |
42 | + var indexOf = ''.indexOf; | |
43 | + var includes = function (search) { | |
44 | + if (this == null) { | |
45 | + throw TypeError(); | |
46 | + } | |
47 | + var string = String(this); | |
48 | + if (search && toString.call(search) == '[object RegExp]') { | |
49 | + throw TypeError(); | |
50 | + } | |
51 | + var stringLength = string.length; | |
52 | + var searchString = String(search); | |
53 | + var searchLength = searchString.length; | |
54 | + var position = arguments.length > 1 ? arguments[1] : undefined; | |
55 | + // `ToInteger` | |
56 | + var pos = position ? Number(position) : 0; | |
57 | + if (pos != pos) { // better `isNaN` | |
58 | + pos = 0; | |
59 | + } | |
60 | + var start = Math.min(Math.max(pos, 0), stringLength); | |
61 | + // Avoid the `indexOf` call if no match is possible | |
62 | + if (searchLength + start > stringLength) { | |
63 | + return false; | |
64 | + } | |
65 | + return indexOf.call(string, searchString, pos) != -1; | |
66 | + }; | |
67 | + if (defineProperty) { | |
68 | + defineProperty(String.prototype, 'includes', { | |
69 | + 'value': includes, | |
70 | + 'configurable': true, | |
71 | + 'writable': true | |
72 | + }); | |
73 | + } else { | |
74 | + String.prototype.includes = includes; | |
75 | + } | |
76 | + }()); | |
77 | + } | |
78 | + | |
79 | + if (!String.prototype.startsWith) { | |
80 | + (function () { | |
81 | + 'use strict'; // needed to support `apply`/`call` with `undefined`/`null` | |
82 | + var defineProperty = (function () { | |
83 | + // IE 8 only supports `Object.defineProperty` on DOM elements | |
84 | + try { | |
85 | + var object = {}; | |
86 | + var $defineProperty = Object.defineProperty; | |
87 | + var result = $defineProperty(object, object, object) && $defineProperty; | |
88 | + } catch (error) { | |
89 | + } | |
90 | + return result; | |
91 | + }()); | |
92 | + var toString = {}.toString; | |
93 | + var startsWith = function (search) { | |
94 | + if (this == null) { | |
95 | + throw TypeError(); | |
96 | + } | |
97 | + var string = String(this); | |
98 | + if (search && toString.call(search) == '[object RegExp]') { | |
99 | + throw TypeError(); | |
100 | + } | |
101 | + var stringLength = string.length; | |
102 | + var searchString = String(search); | |
103 | + var searchLength = searchString.length; | |
104 | + var position = arguments.length > 1 ? arguments[1] : undefined; | |
105 | + // `ToInteger` | |
106 | + var pos = position ? Number(position) : 0; | |
107 | + if (pos != pos) { // better `isNaN` | |
108 | + pos = 0; | |
109 | + } | |
110 | + var start = Math.min(Math.max(pos, 0), stringLength); | |
111 | + // Avoid the `indexOf` call if no match is possible | |
112 | + if (searchLength + start > stringLength) { | |
113 | + return false; | |
114 | + } | |
115 | + var index = -1; | |
116 | + while (++index < searchLength) { | |
117 | + if (string.charCodeAt(start + index) != searchString.charCodeAt(index)) { | |
118 | + return false; | |
119 | + } | |
120 | + } | |
121 | + return true; | |
122 | + }; | |
123 | + if (defineProperty) { | |
124 | + defineProperty(String.prototype, 'startsWith', { | |
125 | + 'value': startsWith, | |
126 | + 'configurable': true, | |
127 | + 'writable': true | |
128 | + }); | |
129 | + } else { | |
130 | + String.prototype.startsWith = startsWith; | |
131 | + } | |
132 | + }()); | |
133 | + } | |
134 | + | |
135 | + if (!Object.keys) { | |
136 | + Object.keys = function ( | |
137 | + o, // object | |
138 | + k, // key | |
139 | + r // result array | |
140 | + ){ | |
141 | + // initialize object and result | |
142 | + r=[]; | |
143 | + // iterate over object keys | |
144 | + for (k in o) | |
145 | + // fill result array with non-prototypical keys | |
146 | + r.hasOwnProperty.call(o, k) && r.push(k); | |
147 | + // return result | |
148 | + return r | |
149 | + }; | |
150 | + } | |
151 | + //</editor-fold> | |
152 | + | |
153 | + // Case insensitive contains search | |
154 | + $.expr[':'].icontains = function (obj, index, meta) { | |
155 | + var $obj = $(obj); | |
156 | + var haystack = ($obj.data('tokens') || $obj.text()).toUpperCase(); | |
157 | + return haystack.includes(meta[3].toUpperCase()); | |
158 | + }; | |
159 | + | |
160 | + // Case insensitive begins search | |
161 | + $.expr[':'].ibegins = function (obj, index, meta) { | |
162 | + var $obj = $(obj); | |
163 | + var haystack = ($obj.data('tokens') || $obj.text()).toUpperCase(); | |
164 | + return haystack.startsWith(meta[3].toUpperCase()); | |
165 | + }; | |
166 | + | |
167 | + // Case and accent insensitive contains search | |
168 | + $.expr[':'].aicontains = function (obj, index, meta) { | |
169 | + var $obj = $(obj); | |
170 | + var haystack = ($obj.data('tokens') || $obj.data('normalizedText') || $obj.text()).toUpperCase(); | |
171 | + return haystack.includes(meta[3].toUpperCase()); | |
172 | + }; | |
173 | + | |
174 | + // Case and accent insensitive begins search | |
175 | + $.expr[':'].aibegins = function (obj, index, meta) { | |
176 | + var $obj = $(obj); | |
177 | + var haystack = ($obj.data('tokens') || $obj.data('normalizedText') || $obj.text()).toUpperCase(); | |
178 | + return haystack.startsWith(meta[3].toUpperCase()); | |
179 | + }; | |
180 | + | |
181 | + /** | |
182 | + * Remove all diatrics from the given text. | |
183 | + * @access private | |
184 | + * @param {String} text | |
185 | + * @returns {String} | |
186 | + */ | |
187 | + function normalizeToBase(text) { | |
188 | + var rExps = [ | |
189 | + {re: /[\xC0-\xC6]/g, ch: "A"}, | |
190 | + {re: /[\xE0-\xE6]/g, ch: "a"}, | |
191 | + {re: /[\xC8-\xCB]/g, ch: "E"}, | |
192 | + {re: /[\xE8-\xEB]/g, ch: "e"}, | |
193 | + {re: /[\xCC-\xCF]/g, ch: "I"}, | |
194 | + {re: /[\xEC-\xEF]/g, ch: "i"}, | |
195 | + {re: /[\xD2-\xD6]/g, ch: "O"}, | |
196 | + {re: /[\xF2-\xF6]/g, ch: "o"}, | |
197 | + {re: /[\xD9-\xDC]/g, ch: "U"}, | |
198 | + {re: /[\xF9-\xFC]/g, ch: "u"}, | |
199 | + {re: /[\xC7-\xE7]/g, ch: "c"}, | |
200 | + {re: /[\xD1]/g, ch: "N"}, | |
201 | + {re: /[\xF1]/g, ch: "n"} | |
202 | + ]; | |
203 | + $.each(rExps, function () { | |
204 | + text = text.replace(this.re, this.ch); | |
205 | + }); | |
206 | + return text; | |
207 | + } | |
208 | + | |
209 | + | |
210 | + function htmlEscape(html) { | |
211 | + var escapeMap = { | |
212 | + '&': '&', | |
213 | + '<': '<', | |
214 | + '>': '>', | |
215 | + '"': '"', | |
216 | + "'": ''', | |
217 | + '`': '`' | |
218 | + }; | |
219 | + var source = '(?:' + Object.keys(escapeMap).join('|') + ')', | |
220 | + testRegexp = new RegExp(source), | |
221 | + replaceRegexp = new RegExp(source, 'g'), | |
222 | + string = html == null ? '' : '' + html; | |
223 | + return testRegexp.test(string) ? string.replace(replaceRegexp, function (match) { | |
224 | + return escapeMap[match]; | |
225 | + }) : string; | |
226 | + } | |
227 | + | |
228 | + var Selectpicker = function (element, options, e) { | |
229 | + if (e) { | |
230 | + e.stopPropagation(); | |
231 | + e.preventDefault(); | |
232 | + } | |
233 | + | |
234 | + this.$element = $(element); | |
235 | + this.$newElement = null; | |
236 | + this.$button = null; | |
237 | + this.$menu = null; | |
238 | + this.$lis = null; | |
239 | + this.options = options; | |
240 | + | |
241 | + // If we have no title yet, try to pull it from the html title attribute (jQuery doesnt' pick it up as it's not a | |
242 | + // data-attribute) | |
243 | + if (this.options.title === null) { | |
244 | + this.options.title = this.$element.attr('title'); | |
245 | + } | |
246 | + | |
247 | + //Expose public methods | |
248 | + this.val = Selectpicker.prototype.val; | |
249 | + this.render = Selectpicker.prototype.render; | |
250 | + this.refresh = Selectpicker.prototype.refresh; | |
251 | + this.setStyle = Selectpicker.prototype.setStyle; | |
252 | + this.selectAll = Selectpicker.prototype.selectAll; | |
253 | + this.deselectAll = Selectpicker.prototype.deselectAll; | |
254 | + this.destroy = Selectpicker.prototype.remove; | |
255 | + this.remove = Selectpicker.prototype.remove; | |
256 | + this.show = Selectpicker.prototype.show; | |
257 | + this.hide = Selectpicker.prototype.hide; | |
258 | + | |
259 | + this.init(); | |
260 | + }; | |
261 | + | |
262 | + Selectpicker.VERSION = '1.7.2'; | |
263 | + | |
264 | + // part of this is duplicated in i18n/defaults-en_US.js. Make sure to update both. | |
265 | + Selectpicker.DEFAULTS = { | |
266 | + noneSelectedText: ' ', | |
267 | + noneResultsText: '没有搜索到{0}', | |
268 | + countSelectedText: function (numSelected, numTotal) { | |
269 | + return (numSelected == 1) ? "{0} item selected" : "{0} items selected"; | |
270 | + }, | |
271 | + maxOptionsText: function (numAll, numGroup) { | |
272 | + return [ | |
273 | + (numAll == 1) ? '最多可以选择{n}项' : '最多可以选择{n}项', | |
274 | + (numGroup == 1) ? '最多可以选择{n}项' : '最多可以选择{n}项' | |
275 | + ]; | |
276 | + }, | |
277 | + selectAllText: 'Select All', | |
278 | + deselectAllText: 'Deselect All', | |
279 | + doneButton: false, | |
280 | + doneButtonText: 'Close', | |
281 | + multipleSeparator: ', ', | |
282 | + styleBase: 'btn', | |
283 | + style: 'btn-default', | |
284 | + size: 'auto', | |
285 | + title: null, | |
286 | + selectedTextFormat: 'values', | |
287 | + width: false, | |
288 | + container: false, | |
289 | + hideDisabled: false, | |
290 | + showSubtext: false, | |
291 | + showIcon: true, | |
292 | + showContent: true, | |
293 | + dropupAuto: true, | |
294 | + header: false, | |
295 | + liveSearch: false, | |
296 | + liveSearchPlaceholder: null, | |
297 | + liveSearchNormalize: false, | |
298 | + liveSearchStyle: 'contains', | |
299 | + actionsBox: false, | |
300 | + iconBase: 'glyphicon', | |
301 | + tickIcon: 'glyphicon-ok', | |
302 | + maxOptions: false, | |
303 | + mobile: false, | |
304 | + selectOnTab: false, | |
305 | + dropdownAlignRight: false | |
306 | + }; | |
307 | + | |
308 | + Selectpicker.prototype = { | |
309 | + | |
310 | + constructor: Selectpicker, | |
311 | + | |
312 | + init: function () { | |
313 | + var that = this, | |
314 | + id = this.$element.attr('id'); | |
315 | + | |
316 | + this.$element.addClass('bs-select-hidden'); | |
317 | + // store originalIndex (key) and newIndex (value) in this.liObj for fast accessibility | |
318 | + // allows us to do this.$lis.eq(that.liObj[index]) instead of this.$lis.filter('[data-original-index="' + index + '"]') | |
319 | + this.liObj = {}; | |
320 | + this.multiple = this.$element.prop('multiple'); | |
321 | + this.autofocus = this.$element.prop('autofocus'); | |
322 | + this.$newElement = this.createView(); | |
323 | + this.$element.after(this.$newElement); | |
324 | + this.$button = this.$newElement.children('button'); | |
325 | + this.$menu = this.$newElement.children('.dropdown-menu'); | |
326 | + this.$menuInner = this.$menu.children('.inner'); | |
327 | + this.$searchbox = this.$menu.find('input'); | |
328 | + | |
329 | + if (this.options.dropdownAlignRight) | |
330 | + this.$menu.addClass('dropdown-menu-right'); | |
331 | + | |
332 | + if (typeof id !== 'undefined') { | |
333 | + this.$button.attr('data-id', id); | |
334 | + $('label[for="' + id + '"]').click(function (e) { | |
335 | + e.preventDefault(); | |
336 | + that.$button.focus(); | |
337 | + }); | |
338 | + } | |
339 | + | |
340 | + this.checkDisabled(); | |
341 | + this.clickListener(); | |
342 | + if (this.options.liveSearch) this.liveSearchListener(); | |
343 | + this.render(); | |
344 | + this.setStyle(); | |
345 | + this.setWidth(); | |
346 | + if (this.options.container) this.selectPosition(); | |
347 | + this.$menu.data('this', this); | |
348 | + this.$newElement.data('this', this); | |
349 | + if (this.options.mobile) this.mobile(); | |
350 | + | |
351 | + this.$newElement.on('hide.bs.dropdown', function (e) { | |
352 | + that.$element.trigger('hide.bs.select', e); | |
353 | + }); | |
354 | + | |
355 | + this.$newElement.on('hidden.bs.dropdown', function (e) { | |
356 | + that.$element.trigger('hidden.bs.select', e); | |
357 | + }); | |
358 | + | |
359 | + this.$newElement.on('show.bs.dropdown', function (e) { | |
360 | + that.$element.trigger('show.bs.select', e); | |
361 | + }); | |
362 | + | |
363 | + this.$newElement.on('shown.bs.dropdown', function (e) { | |
364 | + that.$element.trigger('shown.bs.select', e); | |
365 | + }); | |
366 | + | |
367 | + setTimeout(function () { | |
368 | + that.$element.trigger('loaded.bs.select'); | |
369 | + }); | |
370 | + }, | |
371 | + | |
372 | + createDropdown: function () { | |
373 | + // Options | |
374 | + // If we are multiple, then add the show-tick class by default | |
375 | + var multiple = this.multiple ? ' show-tick' : '', | |
376 | + inputGroup = this.$element.parent().hasClass('input-group') ? ' input-group-btn' : '', | |
377 | + autofocus = this.autofocus ? ' autofocus' : ''; | |
378 | + // Elements | |
379 | + var header = this.options.header ? '<div class="popover-title"><button type="button" class="close" aria-hidden="true">×</button>' + this.options.header + '</div>' : ''; | |
380 | + var searchbox = this.options.liveSearch ? | |
381 | + '<div class="bs-searchbox">' + | |
382 | + '<input type="text" class="form-control" autocomplete="off"' + | |
383 | + (null === this.options.liveSearchPlaceholder ? '' : ' placeholder="' + htmlEscape(this.options.liveSearchPlaceholder) + '"') + '>' + | |
384 | + '</div>' | |
385 | + : ''; | |
386 | + var actionsbox = this.multiple && this.options.actionsBox ? | |
387 | + '<div class="bs-actionsbox">' + | |
388 | + '<div class="btn-group btn-group-sm btn-block">' + | |
389 | + '<button type="button" class="actions-btn bs-select-all btn btn-default">' + | |
390 | + this.options.selectAllText + | |
391 | + '</button>' + | |
392 | + '<button type="button" class="actions-btn bs-deselect-all btn btn-default">' + | |
393 | + this.options.deselectAllText + | |
394 | + '</button>' + | |
395 | + '</div>' + | |
396 | + '</div>' | |
397 | + : ''; | |
398 | + var donebutton = this.multiple && this.options.doneButton ? | |
399 | + '<div class="bs-donebutton">' + | |
400 | + '<div class="btn-group btn-block">' + | |
401 | + '<button type="button" class="btn btn-sm btn-default">' + | |
402 | + this.options.doneButtonText + | |
403 | + '</button>' + | |
404 | + '</div>' + | |
405 | + '</div>' | |
406 | + : ''; | |
407 | + var drop = | |
408 | + '<div class="btn-group bootstrap-select' + multiple + inputGroup + '">' + | |
409 | + '<button type="button" class="' + this.options.styleBase + ' dropdown-toggle" data-toggle="dropdown"' + autofocus + '>' + | |
410 | + '<span class="filter-option pull-left"></span> ' + | |
411 | + '<span class="caret"></span>' + | |
412 | + '</button>' + | |
413 | + '<div class="dropdown-menu open">' + | |
414 | + header + | |
415 | + searchbox + | |
416 | + actionsbox + | |
417 | + '<ul class="dropdown-menu inner" role="menu">' + | |
418 | + '</ul>' + | |
419 | + donebutton + | |
420 | + '</div>' + | |
421 | + '</div>'; | |
422 | + | |
423 | + return $(drop); | |
424 | + }, | |
425 | + | |
426 | + createView: function () { | |
427 | + var $drop = this.createDropdown(), | |
428 | + li = this.createLi(); | |
429 | + | |
430 | + $drop.find('ul')[0].innerHTML = li; | |
431 | + return $drop; | |
432 | + }, | |
433 | + | |
434 | + reloadLi: function () { | |
435 | + //Remove all children. | |
436 | + this.destroyLi(); | |
437 | + //Re build | |
438 | + var li = this.createLi(); | |
439 | + this.$menuInner[0].innerHTML = li; | |
440 | + }, | |
441 | + | |
442 | + destroyLi: function () { | |
443 | + this.$menu.find('li').remove(); | |
444 | + }, | |
445 | + | |
446 | + createLi: function () { | |
447 | + var that = this, | |
448 | + _li = [], | |
449 | + optID = 0, | |
450 | + titleOption = document.createElement('option'), | |
451 | + liIndex = -1; // increment liIndex whenever a new <li> element is created to ensure liObj is correct | |
452 | + | |
453 | + // Helper functions | |
454 | + /** | |
455 | + * @param content | |
456 | + * @param [index] | |
457 | + * @param [classes] | |
458 | + * @param [optgroup] | |
459 | + * @returns {string} | |
460 | + */ | |
461 | + var generateLI = function (content, index, classes, optgroup) { | |
462 | + return '<li' + | |
463 | + ((typeof classes !== 'undefined' & '' !== classes) ? ' class="' + classes + '"' : '') + | |
464 | + ((typeof index !== 'undefined' & null !== index) ? ' data-original-index="' + index + '"' : '') + | |
465 | + ((typeof optgroup !== 'undefined' & null !== optgroup) ? 'data-optgroup="' + optgroup + '"' : '') + | |
466 | + '>' + content + '</li>'; | |
467 | + }; | |
468 | + | |
469 | + /** | |
470 | + * @param text | |
471 | + * @param [classes] | |
472 | + * @param [inline] | |
473 | + * @param [tokens] | |
474 | + * @returns {string} | |
475 | + */ | |
476 | + var generateA = function (text, classes, inline, tokens) { | |
477 | + return '<a tabindex="0"' + | |
478 | + (typeof classes !== 'undefined' ? ' class="' + classes + '"' : '') + | |
479 | + (typeof inline !== 'undefined' ? ' style="' + inline + '"' : '') + | |
480 | + (that.options.liveSearchNormalize ? ' data-normalized-text="' + normalizeToBase(htmlEscape(text)) + '"' : '') + | |
481 | + (typeof tokens !== 'undefined' || tokens !== null ? ' data-tokens="' + tokens + '"' : '') + | |
482 | + '>' + text + | |
483 | + '<span class="' + that.options.iconBase + ' ' + that.options.tickIcon + ' check-mark"></span>' + | |
484 | + '</a>'; | |
485 | + }; | |
486 | + | |
487 | + if (this.options.title && !this.multiple) { | |
488 | + // this option doesn't create a new <li> element, but does add a new option, so liIndex is decreased | |
489 | + // since liObj is recalculated on every refresh, liIndex needs to be decreased even if the titleOption is already appended | |
490 | + liIndex--; | |
491 | + | |
492 | + if (!this.$element.find('.bs-title-option').length) { | |
493 | + // Use native JS to prepend option (faster) | |
494 | + var element = this.$element[0]; | |
495 | + titleOption.className = 'bs-title-option'; | |
496 | + titleOption.appendChild(document.createTextNode(this.options.title)); | |
497 | + titleOption.value = ''; | |
498 | + element.insertBefore(titleOption, element.firstChild); | |
499 | + // Check if selected attribute is already set on an option. If not, select the titleOption option. | |
500 | + if (element.options[element.selectedIndex].getAttribute('selected') === null) titleOption.selected = true; | |
501 | + } | |
502 | + } | |
503 | + | |
504 | + this.$element.find('option').each(function (index) { | |
505 | + var $this = $(this); | |
506 | + | |
507 | + liIndex++; | |
508 | + | |
509 | + if ($this.hasClass('bs-title-option')) return; | |
510 | + | |
511 | + // Get the class and text for the option | |
512 | + var optionClass = this.className || '', | |
513 | + inline = this.style.cssText, | |
514 | + text = $this.data('content') ? $this.data('content') : $this.html(), | |
515 | + tokens = $this.data('tokens') ? $this.data('tokens') : null, | |
516 | + subtext = typeof $this.data('subtext') !== 'undefined' ? '<small class="text-muted">' + $this.data('subtext') + '</small>' : '', | |
517 | + icon = typeof $this.data('icon') !== 'undefined' ? '<span class="' + that.options.iconBase + ' ' + $this.data('icon') + '"></span> ' : '', | |
518 | + isDisabled = this.disabled || this.parentElement.tagName === 'OPTGROUP' && this.parentElement.disabled; | |
519 | + | |
520 | + if (icon !== '' && isDisabled) { | |
521 | + icon = '<span>' + icon + '</span>'; | |
522 | + } | |
523 | + | |
524 | + if (that.options.hideDisabled && isDisabled) { | |
525 | + liIndex--; | |
526 | + return; | |
527 | + } | |
528 | + | |
529 | + if (!$this.data('content')) { | |
530 | + // Prepend any icon and append any subtext to the main text. | |
531 | + text = icon + '<span class="text">' + text + subtext + '</span>'; | |
532 | + } | |
533 | + | |
534 | + if (this.parentElement.tagName === 'OPTGROUP' && $this.data('divider') !== true) { | |
535 | + if ($this.index() === 0) { // Is it the first option of the optgroup? | |
536 | + optID += 1; | |
537 | + | |
538 | + // Get the opt group label | |
539 | + var label = this.parentElement.label, | |
540 | + labelSubtext = typeof $this.parent().data('subtext') !== 'undefined' ? '<small class="text-muted">' + $this.parent().data('subtext') + '</small>' : '', | |
541 | + labelIcon = $this.parent().data('icon') ? '<span class="' + that.options.iconBase + ' ' + $this.parent().data('icon') + '"></span> ' : '', | |
542 | + optGroupClass = ' ' + this.parentElement.className || ''; | |
543 | + | |
544 | + label = labelIcon + '<span class="text">' + label + labelSubtext + '</span>'; | |
545 | + | |
546 | + if (index !== 0 && _li.length > 0) { // Is it NOT the first option of the select && are there elements in the dropdown? | |
547 | + liIndex++; | |
548 | + _li.push(generateLI('', null, 'divider', optID + 'div')); | |
549 | + } | |
550 | + liIndex++; | |
551 | + _li.push(generateLI(label, null, 'dropdown-header' + optGroupClass, optID)); | |
552 | + } | |
553 | + _li.push(generateLI(generateA(text, 'opt ' + optionClass + optGroupClass, inline, tokens), index, '', optID)); | |
554 | + } else if ($this.data('divider') === true) { | |
555 | + _li.push(generateLI('', index, 'divider')); | |
556 | + } else if ($this.data('hidden') === true) { | |
557 | + _li.push(generateLI(generateA(text, optionClass, inline, tokens), index, 'hidden is-hidden')); | |
558 | + } else { | |
559 | + if (this.previousElementSibling && this.previousElementSibling.tagName === 'OPTGROUP') { | |
560 | + liIndex++; | |
561 | + _li.push(generateLI('', null, 'divider', optID + 'div')); | |
562 | + } | |
563 | + _li.push(generateLI(generateA(text, optionClass, inline, tokens), index)); | |
564 | + } | |
565 | + | |
566 | + that.liObj[index] = liIndex; | |
567 | + }); | |
568 | + | |
569 | + //If we are not multiple, we don't have a selected item, and we don't have a title, select the first element so something is set in the button | |
570 | + if (!this.multiple && this.$element.find('option:selected').length === 0 && !this.options.title) { | |
571 | + this.$element.find('option').eq(0).prop('selected', true).attr('selected', 'selected'); | |
572 | + } | |
573 | + | |
574 | + return _li.join(''); | |
575 | + }, | |
576 | + | |
577 | + findLis: function () { | |
578 | + if (this.$lis == null) this.$lis = this.$menu.find('li'); | |
579 | + return this.$lis; | |
580 | + }, | |
581 | + | |
582 | + /** | |
583 | + * @param [updateLi] defaults to true | |
584 | + */ | |
585 | + render: function (updateLi) { | |
586 | + var that = this, | |
587 | + notDisabled; | |
588 | + | |
589 | + //Update the LI to match the SELECT | |
590 | + if (updateLi !== false) { | |
591 | + this.$element.find('option').each(function (index) { | |
592 | + var $lis = that.findLis().eq(that.liObj[index]); | |
593 | + | |
594 | + that.setDisabled(index, this.disabled || this.parentElement.tagName === 'OPTGROUP' && this.parentElement.disabled, $lis); | |
595 | + that.setSelected(index, this.selected, $lis); | |
596 | + }); | |
597 | + } | |
598 | + | |
599 | + this.tabIndex(); | |
600 | + | |
601 | + var selectedItems = this.$element.find('option').map(function () { | |
602 | + if (this.selected) { | |
603 | + if (that.options.hideDisabled && (this.disabled || this.parentElement.tagName === 'OPTGROUP' && this.parentElement.disabled)) return false; | |
604 | + | |
605 | + var $this = $(this), | |
606 | + icon = $this.data('icon') && that.options.showIcon ? '<i class="' + that.options.iconBase + ' ' + $this.data('icon') + '"></i> ' : '', | |
607 | + subtext; | |
608 | + | |
609 | + if (that.options.showSubtext && $this.data('subtext') && !that.multiple) { | |
610 | + subtext = ' <small class="text-muted">' + $this.data('subtext') + '</small>'; | |
611 | + } else { | |
612 | + subtext = ''; | |
613 | + } | |
614 | + if (typeof $this.attr('title') !== 'undefined') { | |
615 | + return $this.attr('title'); | |
616 | + } else if ($this.data('content') && that.options.showContent) { | |
617 | + return $this.data('content'); | |
618 | + } else { | |
619 | + return icon + $this.html() + subtext; | |
620 | + } | |
621 | + } | |
622 | + }).toArray(); | |
623 | + | |
624 | + //Fixes issue in IE10 occurring when no default option is selected and at least one option is disabled | |
625 | + //Convert all the values into a comma delimited string | |
626 | + var title = !this.multiple ? selectedItems[0] : selectedItems.join(this.options.multipleSeparator); | |
627 | + | |
628 | + //If this is multi select, and the selectText type is count, the show 1 of 2 selected etc.. | |
629 | + if (this.multiple && this.options.selectedTextFormat.indexOf('count') > -1) { | |
630 | + var max = this.options.selectedTextFormat.split('>'); | |
631 | + if ((max.length > 1 && selectedItems.length > max[1]) || (max.length == 1 && selectedItems.length >= 2)) { | |
632 | + notDisabled = this.options.hideDisabled ? ', [disabled]' : ''; | |
633 | + var totalCount = this.$element.find('option').not('[data-divider="true"], [data-hidden="true"]' + notDisabled).length, | |
634 | + tr8nText = (typeof this.options.countSelectedText === 'function') ? this.options.countSelectedText(selectedItems.length, totalCount) : this.options.countSelectedText; | |
635 | + title = tr8nText.replace('{0}', selectedItems.length.toString()).replace('{1}', totalCount.toString()); | |
636 | + } | |
637 | + } | |
638 | + | |
639 | + if (this.options.title == undefined) { | |
640 | + this.options.title = this.$element.attr('title'); | |
641 | + } | |
642 | + | |
643 | + if (this.options.selectedTextFormat == 'static') { | |
644 | + title = this.options.title; | |
645 | + } | |
646 | + | |
647 | + //If we dont have a title, then use the default, or if nothing is set at all, use the not selected text | |
648 | + if (!title) { | |
649 | + title = typeof this.options.title !== 'undefined' ? this.options.title : this.options.noneSelectedText; | |
650 | + } | |
651 | + | |
652 | + //strip all html-tags and trim the result | |
653 | + this.$button.attr('title', $.trim(title.replace(/<[^>]*>?/g, ''))); | |
654 | + this.$button.children('.filter-option').html(title); | |
655 | + | |
656 | + this.$element.trigger('rendered.bs.select'); | |
657 | + }, | |
658 | + | |
659 | + /** | |
660 | + * @param [style] | |
661 | + * @param [status] | |
662 | + */ | |
663 | + setStyle: function (style, status) { | |
664 | + if (this.$element.attr('class')) { | |
665 | + this.$newElement.addClass(this.$element.attr('class').replace(/selectpicker|mobile-device|bs-select-hidden|validate\[.*\]/gi, '')); | |
666 | + } | |
667 | + | |
668 | + var buttonClass = style ? style : this.options.style; | |
669 | + | |
670 | + if (status == 'add') { | |
671 | + this.$button.addClass(buttonClass); | |
672 | + } else if (status == 'remove') { | |
673 | + this.$button.removeClass(buttonClass); | |
674 | + } else { | |
675 | + this.$button.removeClass(this.options.style); | |
676 | + this.$button.addClass(buttonClass); | |
677 | + } | |
678 | + }, | |
679 | + | |
680 | + liHeight: function (refresh) { | |
681 | + if (!refresh && (this.options.size === false || this.sizeInfo)) return; | |
682 | + | |
683 | + var newElement = document.createElement('div'), | |
684 | + menu = document.createElement('div'), | |
685 | + menuInner = document.createElement('ul'), | |
686 | + divider = document.createElement('li'), | |
687 | + li = document.createElement('li'), | |
688 | + a = document.createElement('a'), | |
689 | + text = document.createElement('span'), | |
690 | + header = this.options.header ? this.$menu.find('.popover-title')[0].cloneNode(true) : null, | |
691 | + search = this.options.liveSearch ? document.createElement('div') : null, | |
692 | + actions = this.options.actionsBox && this.multiple ? this.$menu.find('.bs-actionsbox')[0].cloneNode(true) : null, | |
693 | + doneButton = this.options.doneButton && this.multiple ? this.$menu.find('.bs-donebutton')[0].cloneNode(true) : null; | |
694 | + | |
695 | + text.className = 'text'; | |
696 | + newElement.className = this.$menu[0].parentNode.className + ' open'; | |
697 | + menu.className = 'dropdown-menu open'; | |
698 | + menuInner.className = 'dropdown-menu inner'; | |
699 | + divider.className = 'divider'; | |
700 | + | |
701 | + text.appendChild(document.createTextNode('Inner text')); | |
702 | + a.appendChild(text); | |
703 | + li.appendChild(a); | |
704 | + menuInner.appendChild(li); | |
705 | + menuInner.appendChild(divider); | |
706 | + if (header) menu.appendChild(header); | |
707 | + if (search) { | |
708 | + // create a span instead of input as creating an input element is slower | |
709 | + var input = document.createElement('span'); | |
710 | + search.className = 'bs-searchbox'; | |
711 | + input.className = 'form-control'; | |
712 | + search.appendChild(input); | |
713 | + menu.appendChild(search); | |
714 | + } | |
715 | + if (actions) menu.appendChild(actions); | |
716 | + menu.appendChild(menuInner); | |
717 | + if (doneButton) menu.appendChild(doneButton); | |
718 | + newElement.appendChild(menu); | |
719 | + | |
720 | + document.body.appendChild(newElement); | |
721 | + | |
722 | + var liHeight = a.offsetHeight, | |
723 | + headerHeight = header ? header.offsetHeight : 0, | |
724 | + searchHeight = search ? search.offsetHeight : 0, | |
725 | + actionsHeight = actions ? actions.offsetHeight : 0, | |
726 | + doneButtonHeight = doneButton ? doneButton.offsetHeight : 0, | |
727 | + dividerHeight = $(divider).outerHeight(true), | |
728 | + // fall back to jQuery if getComputedStyle is not supported | |
729 | + menuStyle = getComputedStyle ? getComputedStyle(menu) : false, | |
730 | + $menu = menuStyle ? $(menu) : null, | |
731 | + menuPadding = parseInt(menuStyle ? menuStyle.paddingTop : $menu.css('paddingTop')) + | |
732 | + parseInt(menuStyle ? menuStyle.paddingBottom : $menu.css('paddingBottom')) + | |
733 | + parseInt(menuStyle ? menuStyle.borderTopWidth : $menu.css('borderTopWidth')) + | |
734 | + parseInt(menuStyle ? menuStyle.borderBottomWidth : $menu.css('borderBottomWidth')), | |
735 | + menuExtras = menuPadding + | |
736 | + parseInt(menuStyle ? menuStyle.marginTop : $menu.css('marginTop')) + | |
737 | + parseInt(menuStyle ? menuStyle.marginBottom : $menu.css('marginBottom')) + 2; | |
738 | + | |
739 | + document.body.removeChild(newElement); | |
740 | + | |
741 | + this.sizeInfo = { | |
742 | + liHeight: liHeight, | |
743 | + headerHeight: headerHeight, | |
744 | + searchHeight: searchHeight, | |
745 | + actionsHeight: actionsHeight, | |
746 | + doneButtonHeight: doneButtonHeight, | |
747 | + dividerHeight: dividerHeight, | |
748 | + menuPadding: menuPadding, | |
749 | + menuExtras: menuExtras | |
750 | + }; | |
751 | + }, | |
752 | + | |
753 | + setSize: function () { | |
754 | + this.findLis(); | |
755 | + this.liHeight(); | |
756 | + var that = this, | |
757 | + $menu = this.$menu, | |
758 | + $menuInner = this.$menuInner, | |
759 | + $window = $(window), | |
760 | + selectHeight = this.$newElement[0].offsetHeight, | |
761 | + liHeight = this.sizeInfo['liHeight'], | |
762 | + headerHeight = this.sizeInfo['headerHeight'], | |
763 | + searchHeight = this.sizeInfo['searchHeight'], | |
764 | + actionsHeight = this.sizeInfo['actionsHeight'], | |
765 | + doneButtonHeight = this.sizeInfo['doneButtonHeight'], | |
766 | + divHeight = this.sizeInfo['dividerHeight'], | |
767 | + menuPadding = this.sizeInfo['menuPadding'], | |
768 | + menuExtras = this.sizeInfo['menuExtras'], | |
769 | + notDisabled = this.options.hideDisabled ? '.disabled' : '', | |
770 | + menuHeight, | |
771 | + getHeight, | |
772 | + selectOffsetTop, | |
773 | + selectOffsetBot, | |
774 | + posVert = function () { | |
775 | + selectOffsetTop = that.$newElement.offset().top - $window.scrollTop(); | |
776 | + selectOffsetBot = $window.height() - selectOffsetTop - selectHeight; | |
777 | + }; | |
778 | + | |
779 | + posVert(); | |
780 | + | |
781 | + if (this.options.header) $menu.css('padding-top', 0); | |
782 | + | |
783 | + if (this.options.size === 'auto') { | |
784 | + var getSize = function () { | |
785 | + var minHeight, | |
786 | + hasClass = function (className, include) { | |
787 | + return function (element) { | |
788 | + if (include) { | |
789 | + return (element.classList ? element.classList.contains(className) : $(element).hasClass(className)); | |
790 | + } else { | |
791 | + return !(element.classList ? element.classList.contains(className) : $(element).hasClass(className)); | |
792 | + } | |
793 | + }; | |
794 | + }, | |
795 | + lis = that.$menuInner[0].getElementsByTagName('li'), | |
796 | + lisVisible = Array.prototype.filter ? Array.prototype.filter.call(lis, hasClass('hidden', false)) : that.$lis.not('.hidden'), | |
797 | + optGroup = Array.prototype.filter ? Array.prototype.filter.call(lisVisible, hasClass('dropdown-header', true)) : lisVisible.filter('.dropdown-header'); | |
798 | + | |
799 | + posVert(); | |
800 | + menuHeight = selectOffsetBot - menuExtras; | |
801 | + | |
802 | + if (that.options.container) { | |
803 | + if (!$menu.data('height')) $menu.data('height', $menu.height()); | |
804 | + getHeight = $menu.data('height'); | |
805 | + } else { | |
806 | + getHeight = $menu.height(); | |
807 | + } | |
808 | + | |
809 | + if (that.options.dropupAuto) { | |
810 | + that.$newElement.toggleClass('dropup', selectOffsetTop > selectOffsetBot && (menuHeight - menuExtras) < getHeight); | |
811 | + } | |
812 | + if (that.$newElement.hasClass('dropup')) { | |
813 | + menuHeight = selectOffsetTop - menuExtras; | |
814 | + } | |
815 | + | |
816 | + if ((lisVisible.length + optGroup.length) > 3) { | |
817 | + minHeight = liHeight * 3 + menuExtras - 2; | |
818 | + } else { | |
819 | + minHeight = 0; | |
820 | + } | |
821 | + | |
822 | + $menu.css({ | |
823 | + 'max-height': menuHeight + 'px', | |
824 | + 'overflow': 'hidden', | |
825 | + 'min-height': minHeight + headerHeight + searchHeight + actionsHeight + doneButtonHeight + 'px' | |
826 | + }); | |
827 | + $menuInner.css({ | |
828 | + 'max-height': menuHeight - headerHeight - searchHeight - actionsHeight - doneButtonHeight - menuPadding + 'px', | |
829 | + 'overflow-y': 'auto', | |
830 | + 'min-height': Math.max(minHeight - menuPadding, 0) + 'px' | |
831 | + }); | |
832 | + }; | |
833 | + getSize(); | |
834 | + this.$searchbox.off('input.getSize propertychange.getSize').on('input.getSize propertychange.getSize', getSize); | |
835 | + $window.off('resize.getSize scroll.getSize').on('resize.getSize scroll.getSize', getSize); | |
836 | + } else if (this.options.size && this.options.size != 'auto' && this.$lis.not(notDisabled).length > this.options.size) { | |
837 | + var optIndex = this.$lis.not('.divider').not(notDisabled).children().slice(0, this.options.size).last().parent().index(), | |
838 | + divLength = this.$lis.slice(0, optIndex + 1).filter('.divider').length; | |
839 | + menuHeight = liHeight * this.options.size + divLength * divHeight + menuPadding; | |
840 | + | |
841 | + if (that.options.container) { | |
842 | + if (!$menu.data('height')) $menu.data('height', $menu.height()); | |
843 | + getHeight = $menu.data('height'); | |
844 | + } else { | |
845 | + getHeight = $menu.height(); | |
846 | + } | |
847 | + | |
848 | + if (that.options.dropupAuto) { | |
849 | + //noinspection JSUnusedAssignment | |
850 | + this.$newElement.toggleClass('dropup', selectOffsetTop > selectOffsetBot && (menuHeight - menuExtras) < getHeight); | |
851 | + } | |
852 | + $menu.css({ | |
853 | + 'max-height': menuHeight + headerHeight + searchHeight + actionsHeight + doneButtonHeight + 'px', | |
854 | + 'overflow': 'hidden', | |
855 | + 'min-height': '' | |
856 | + }); | |
857 | + $menuInner.css({ | |
858 | + 'max-height': menuHeight - menuPadding + 'px', | |
859 | + 'overflow-y': 'auto', | |
860 | + 'min-height': '' | |
861 | + }); | |
862 | + } | |
863 | + }, | |
864 | + | |
865 | + setWidth: function () { | |
866 | + if (this.options.width === 'auto') { | |
867 | + this.$menu.css('min-width', '0'); | |
868 | + | |
869 | + // Get correct width if element is hidden | |
870 | + var $selectClone = this.$menu.parent().clone().appendTo('body'), | |
871 | + $selectClone2 = this.options.container ? this.$newElement.clone().appendTo('body') : $selectClone, | |
872 | + ulWidth = $selectClone.children('.dropdown-menu').outerWidth(), | |
873 | + btnWidth = $selectClone2.css('width', 'auto').children('button').outerWidth(); | |
874 | + | |
875 | + $selectClone.remove(); | |
876 | + $selectClone2.remove(); | |
877 | + | |
878 | + // Set width to whatever's larger, button title or longest option | |
879 | + this.$newElement.css('width', Math.max(ulWidth, btnWidth) + 'px'); | |
880 | + } else if (this.options.width === 'fit') { | |
881 | + // Remove inline min-width so width can be changed from 'auto' | |
882 | + this.$menu.css('min-width', ''); | |
883 | + this.$newElement.css('width', '').addClass('fit-width'); | |
884 | + } else if (this.options.width) { | |
885 | + // Remove inline min-width so width can be changed from 'auto' | |
886 | + this.$menu.css('min-width', ''); | |
887 | + this.$newElement.css('width', this.options.width); | |
888 | + } else { | |
889 | + // Remove inline min-width/width so width can be changed | |
890 | + this.$menu.css('min-width', ''); | |
891 | + this.$newElement.css('width', ''); | |
892 | + } | |
893 | + // Remove fit-width class if width is changed programmatically | |
894 | + if (this.$newElement.hasClass('fit-width') && this.options.width !== 'fit') { | |
895 | + this.$newElement.removeClass('fit-width'); | |
896 | + } | |
897 | + }, | |
898 | + | |
899 | + selectPosition: function () { | |
900 | + var that = this, | |
901 | + drop = '<div />', | |
902 | + $drop = $(drop), | |
903 | + pos, | |
904 | + actualHeight, | |
905 | + getPlacement = function ($element) { | |
906 | + $drop.addClass($element.attr('class').replace(/form-control|fit-width/gi, '')).toggleClass('dropup', $element.hasClass('dropup')); | |
907 | + pos = $element.offset(); | |
908 | + actualHeight = $element.hasClass('dropup') ? 0 : $element[0].offsetHeight; | |
909 | + $drop.css({ | |
910 | + 'top': pos.top + actualHeight, | |
911 | + 'left': pos.left, | |
912 | + 'width': $element[0].offsetWidth, | |
913 | + 'position': 'absolute' | |
914 | + }); | |
915 | + }; | |
916 | + | |
917 | + this.$newElement.on('click', function () { | |
918 | + if (that.isDisabled()) { | |
919 | + return; | |
920 | + } | |
921 | + getPlacement($(this)); | |
922 | + $drop.appendTo(that.options.container); | |
923 | + $drop.toggleClass('open', !$(this).hasClass('open')); | |
924 | + $drop.append(that.$menu); | |
925 | + }); | |
926 | + | |
927 | + $(window).on('resize scroll', function () { | |
928 | + getPlacement(that.$newElement); | |
929 | + }); | |
930 | + | |
931 | + this.$element.on('hide.bs.select', function () { | |
932 | + that.$menu.data('height', that.$menu.height()); | |
933 | + $drop.detach(); | |
934 | + }); | |
935 | + }, | |
936 | + | |
937 | + setSelected: function (index, selected, $lis) { | |
938 | + if (!$lis) { | |
939 | + var $lis = this.findLis().eq(this.liObj[index]); | |
940 | + } | |
941 | + | |
942 | + $lis.toggleClass('selected', selected); | |
943 | + }, | |
944 | + | |
945 | + setDisabled: function (index, disabled, $lis) { | |
946 | + if (!$lis) { | |
947 | + var $lis = this.findLis().eq(this.liObj[index]); | |
948 | + } | |
949 | + | |
950 | + if (disabled) { | |
951 | + $lis.addClass('disabled').children('a').attr('href', '#').attr('tabindex', -1); | |
952 | + } else { | |
953 | + $lis.removeClass('disabled').children('a').removeAttr('href').attr('tabindex', 0); | |
954 | + } | |
955 | + }, | |
956 | + | |
957 | + isDisabled: function () { | |
958 | + return this.$element[0].disabled; | |
959 | + }, | |
960 | + | |
961 | + checkDisabled: function () { | |
962 | + var that = this; | |
963 | + | |
964 | + if (this.isDisabled()) { | |
965 | + this.$newElement.addClass('disabled'); | |
966 | + this.$button.addClass('disabled').attr('tabindex', -1); | |
967 | + } else { | |
968 | + if (this.$button.hasClass('disabled')) { | |
969 | + this.$newElement.removeClass('disabled'); | |
970 | + this.$button.removeClass('disabled'); | |
971 | + } | |
972 | + | |
973 | + if (this.$button.attr('tabindex') == -1 && !this.$element.data('tabindex')) { | |
974 | + this.$button.removeAttr('tabindex'); | |
975 | + } | |
976 | + } | |
977 | + | |
978 | + this.$button.click(function () { | |
979 | + return !that.isDisabled(); | |
980 | + }); | |
981 | + }, | |
982 | + | |
983 | + tabIndex: function () { | |
984 | + if (this.$element.is('[tabindex]')) { | |
985 | + this.$element.data('tabindex', this.$element.attr('tabindex')); | |
986 | + this.$button.attr('tabindex', this.$element.data('tabindex')); | |
987 | + } | |
988 | + }, | |
989 | + | |
990 | + clickListener: function () { | |
991 | + var that = this, | |
992 | + $document = $(document); | |
993 | + | |
994 | + this.$newElement.on('touchstart.dropdown', '.dropdown-menu', function (e) { | |
995 | + e.stopPropagation(); | |
996 | + }); | |
997 | + | |
998 | + $document.data('spaceSelect', false); | |
999 | + | |
1000 | + this.$button.on('keyup', function (e) { | |
1001 | + if (/(32)/.test(e.keyCode.toString(10)) && $document.data('spaceSelect')) { | |
1002 | + e.preventDefault(); | |
1003 | + $document.data('spaceSelect', false); | |
1004 | + } | |
1005 | + }); | |
1006 | + | |
1007 | + this.$newElement.on('click', function () { | |
1008 | + that.setSize(); | |
1009 | + that.$element.on('shown.bs.select', function () { | |
1010 | + if (!that.options.liveSearch && !that.multiple) { | |
1011 | + that.$menu.find('.selected a').focus(); | |
1012 | + } else if (!that.multiple) { | |
1013 | + var selectedIndex = that.liObj[that.$element[0].selectedIndex]; | |
1014 | + | |
1015 | + if (typeof selectedIndex !== 'number') return; | |
1016 | + | |
1017 | + // scroll to selected option | |
1018 | + var offset = that.$lis.eq(selectedIndex)[0].offsetTop - that.$menuInner[0].offsetTop; | |
1019 | + offset = offset - that.$menuInner[0].offsetHeight/2 + that.sizeInfo.liHeight/2; | |
1020 | + that.$menuInner[0].scrollTop = offset; | |
1021 | + } | |
1022 | + }); | |
1023 | + }); | |
1024 | + | |
1025 | + this.$menu.on('click', 'li a', function (e) { | |
1026 | + var $this = $(this), | |
1027 | + clickedIndex = $this.parent().data('originalIndex'), | |
1028 | + prevValue = that.$element.val(), | |
1029 | + prevIndex = that.$element.prop('selectedIndex'); | |
1030 | + | |
1031 | + // Don't close on multi choice menu | |
1032 | + if (that.multiple) { | |
1033 | + e.stopPropagation(); | |
1034 | + } | |
1035 | + | |
1036 | + e.preventDefault(); | |
1037 | + | |
1038 | + //Don't run if we have been disabled | |
1039 | + if (!that.isDisabled() && !$this.parent().hasClass('disabled')) { | |
1040 | + var $options = that.$element.find('option'), | |
1041 | + $option = $options.eq(clickedIndex), | |
1042 | + state = $option.prop('selected'), | |
1043 | + $optgroup = $option.parent('optgroup'), | |
1044 | + maxOptions = that.options.maxOptions, | |
1045 | + maxOptionsGrp = $optgroup.data('maxOptions') || false; | |
1046 | + | |
1047 | + if (!that.multiple) { // Deselect all others if not multi select box | |
1048 | + $options.prop('selected', false); | |
1049 | + $option.prop('selected', true); | |
1050 | + that.$menu.find('.selected').removeClass('selected'); | |
1051 | + that.setSelected(clickedIndex, true); | |
1052 | + } else { // Toggle the one we have chosen if we are multi select. | |
1053 | + $option.prop('selected', !state); | |
1054 | + that.setSelected(clickedIndex, !state); | |
1055 | + $this.blur(); | |
1056 | + | |
1057 | + if (maxOptions !== false || maxOptionsGrp !== false) { | |
1058 | + var maxReached = maxOptions < $options.filter(':selected').length, | |
1059 | + maxReachedGrp = maxOptionsGrp < $optgroup.find('option:selected').length; | |
1060 | + | |
1061 | + if ((maxOptions && maxReached) || (maxOptionsGrp && maxReachedGrp)) { | |
1062 | + if (maxOptions && maxOptions == 1) { | |
1063 | + $options.prop('selected', false); | |
1064 | + $option.prop('selected', true); | |
1065 | + that.$menu.find('.selected').removeClass('selected'); | |
1066 | + that.setSelected(clickedIndex, true); | |
1067 | + } else if (maxOptionsGrp && maxOptionsGrp == 1) { | |
1068 | + $optgroup.find('option:selected').prop('selected', false); | |
1069 | + $option.prop('selected', true); | |
1070 | + var optgroupID = $this.parent().data('optgroup'); | |
1071 | + that.$menu.find('[data-optgroup="' + optgroupID + '"]').removeClass('selected'); | |
1072 | + that.setSelected(clickedIndex, true); | |
1073 | + } else { | |
1074 | + var maxOptionsArr = (typeof that.options.maxOptionsText === 'function') ? | |
1075 | + that.options.maxOptionsText(maxOptions, maxOptionsGrp) : that.options.maxOptionsText, | |
1076 | + maxTxt = maxOptionsArr[0].replace('{n}', maxOptions), | |
1077 | + maxTxtGrp = maxOptionsArr[1].replace('{n}', maxOptionsGrp), | |
1078 | + $notify = $('<div class="notify"></div>'); | |
1079 | + // If {var} is set in array, replace it | |
1080 | + /** @deprecated */ | |
1081 | + if (maxOptionsArr[2]) { | |
1082 | + maxTxt = maxTxt.replace('{var}', maxOptionsArr[2][maxOptions > 1 ? 0 : 1]); | |
1083 | + maxTxtGrp = maxTxtGrp.replace('{var}', maxOptionsArr[2][maxOptionsGrp > 1 ? 0 : 1]); | |
1084 | + } | |
1085 | + | |
1086 | + $option.prop('selected', false); | |
1087 | + | |
1088 | + that.$menu.append($notify); | |
1089 | + | |
1090 | + if (maxOptions && maxReached) { | |
1091 | + $notify.append($('<div>' + maxTxt + '</div>')); | |
1092 | + that.$element.trigger('maxReached.bs.select'); | |
1093 | + } | |
1094 | + | |
1095 | + if (maxOptionsGrp && maxReachedGrp) { | |
1096 | + $notify.append($('<div>' + maxTxtGrp + '</div>')); | |
1097 | + that.$element.trigger('maxReachedGrp.bs.select'); | |
1098 | + } | |
1099 | + | |
1100 | + setTimeout(function () { | |
1101 | + that.setSelected(clickedIndex, false); | |
1102 | + }, 10); | |
1103 | + | |
1104 | + $notify.delay(750).fadeOut(300, function () { | |
1105 | + $(this).remove(); | |
1106 | + }); | |
1107 | + } | |
1108 | + } | |
1109 | + } | |
1110 | + } | |
1111 | + | |
1112 | + if (!that.multiple) { | |
1113 | + that.$button.focus(); | |
1114 | + } else if (that.options.liveSearch) { | |
1115 | + that.$searchbox.focus(); | |
1116 | + } | |
1117 | + | |
1118 | + // Trigger select 'change' | |
1119 | + if ((prevValue != that.$element.val() && that.multiple) || (prevIndex != that.$element.prop('selectedIndex') && !that.multiple)) { | |
1120 | + that.$element.change(); | |
1121 | + // $option.prop('selected') is current option state (selected/unselected). state is previous option state. | |
1122 | + that.$element.trigger('changed.bs.select', [clickedIndex, $option.prop('selected'), state]); | |
1123 | + } | |
1124 | + } | |
1125 | + }); | |
1126 | + | |
1127 | + this.$menu.on('click', 'li.disabled a, .popover-title, .popover-title :not(.close)', function (e) { | |
1128 | + if (e.currentTarget == this) { | |
1129 | + e.preventDefault(); | |
1130 | + e.stopPropagation(); | |
1131 | + if (that.options.liveSearch && !$(e.target).hasClass('close')) { | |
1132 | + that.$searchbox.focus(); | |
1133 | + } else { | |
1134 | + that.$button.focus(); | |
1135 | + } | |
1136 | + } | |
1137 | + }); | |
1138 | + | |
1139 | + this.$menu.on('click', 'li.divider, li.dropdown-header', function (e) { | |
1140 | + e.preventDefault(); | |
1141 | + e.stopPropagation(); | |
1142 | + if (that.options.liveSearch) { | |
1143 | + that.$searchbox.focus(); | |
1144 | + } else { | |
1145 | + that.$button.focus(); | |
1146 | + } | |
1147 | + }); | |
1148 | + | |
1149 | + this.$menu.on('click', '.popover-title .close', function () { | |
1150 | + that.$button.click(); | |
1151 | + }); | |
1152 | + | |
1153 | + this.$searchbox.on('click', function (e) { | |
1154 | + e.stopPropagation(); | |
1155 | + }); | |
1156 | + | |
1157 | + this.$menu.on('click', '.actions-btn', function (e) { | |
1158 | + if (that.options.liveSearch) { | |
1159 | + that.$searchbox.focus(); | |
1160 | + } else { | |
1161 | + that.$button.focus(); | |
1162 | + } | |
1163 | + | |
1164 | + e.preventDefault(); | |
1165 | + e.stopPropagation(); | |
1166 | + | |
1167 | + if ($(this).hasClass('bs-select-all')) { | |
1168 | + that.selectAll(); | |
1169 | + } else { | |
1170 | + that.deselectAll(); | |
1171 | + } | |
1172 | + that.$element.change(); | |
1173 | + }); | |
1174 | + | |
1175 | + this.$element.change(function () { | |
1176 | + that.render(false); | |
1177 | + }); | |
1178 | + }, | |
1179 | + | |
1180 | + liveSearchListener: function () { | |
1181 | + var that = this, | |
1182 | + $no_results = $('<li class="no-results"></li>'); | |
1183 | + | |
1184 | + this.$newElement.on('click.dropdown.data-api touchstart.dropdown.data-api', function () { | |
1185 | + that.$menuInner.find('.active').removeClass('active'); | |
1186 | + if (!!that.$searchbox.val()) { | |
1187 | + that.$searchbox.val(''); | |
1188 | + that.$lis.not('.is-hidden').removeClass('hidden'); | |
1189 | + if (!!$no_results.parent().length) $no_results.remove(); | |
1190 | + } | |
1191 | + if (!that.multiple) that.$menuInner.find('.selected').addClass('active'); | |
1192 | + setTimeout(function () { | |
1193 | + that.$searchbox.focus(); | |
1194 | + }, 10); | |
1195 | + }); | |
1196 | + | |
1197 | + this.$searchbox.on('click.dropdown.data-api focus.dropdown.data-api touchend.dropdown.data-api', function (e) { | |
1198 | + e.stopPropagation(); | |
1199 | + }); | |
1200 | + | |
1201 | + this.$searchbox.on('input propertychange', function () { | |
1202 | + if (that.$searchbox.val()) { | |
1203 | + var $searchBase = that.$lis.not('.is-hidden').removeClass('hidden').children('a'); | |
1204 | + if (that.options.liveSearchNormalize) { | |
1205 | + $searchBase = $searchBase.not(':a' + that._searchStyle() + '(' + normalizeToBase(that.$searchbox.val()) + ')'); | |
1206 | + } else { | |
1207 | + $searchBase = $searchBase.not(':' + that._searchStyle() + '(' + that.$searchbox.val() + ')'); | |
1208 | + } | |
1209 | + $searchBase.parent().addClass('hidden'); | |
1210 | + | |
1211 | + that.$lis.filter('.dropdown-header').each(function () { | |
1212 | + var $this = $(this), | |
1213 | + optgroup = $this.data('optgroup'); | |
1214 | + | |
1215 | + if (that.$lis.filter('[data-optgroup=' + optgroup + ']').not($this).not('.hidden').length === 0) { | |
1216 | + $this.addClass('hidden'); | |
1217 | + that.$lis.filter('[data-optgroup=' + optgroup + 'div]').addClass('hidden'); | |
1218 | + } | |
1219 | + }); | |
1220 | + | |
1221 | + var $lisVisible = that.$lis.not('.hidden'); | |
1222 | + | |
1223 | + // hide divider if first or last visible, or if followed by another divider | |
1224 | + $lisVisible.each(function (index) { | |
1225 | + var $this = $(this); | |
1226 | + | |
1227 | + if ($this.hasClass('divider') && ( | |
1228 | + $this.index() === $lisVisible.eq(0).index() || | |
1229 | + $this.index() === $lisVisible.last().index() || | |
1230 | + $lisVisible.eq(index + 1).hasClass('divider'))) { | |
1231 | + $this.addClass('hidden'); | |
1232 | + } | |
1233 | + }); | |
1234 | + | |
1235 | + if (!that.$lis.not('.hidden, .no-results').length) { | |
1236 | + if (!!$no_results.parent().length) { | |
1237 | + $no_results.remove(); | |
1238 | + } | |
1239 | + $no_results.html(that.options.noneResultsText.replace('{0}', '"' + htmlEscape(that.$searchbox.val()) + '"')).show(); | |
1240 | + that.$menuInner.append($no_results); | |
1241 | + } else if (!!$no_results.parent().length) { | |
1242 | + $no_results.remove(); | |
1243 | + } | |
1244 | + | |
1245 | + } else { | |
1246 | + that.$lis.not('.is-hidden').removeClass('hidden'); | |
1247 | + if (!!$no_results.parent().length) { | |
1248 | + $no_results.remove(); | |
1249 | + } | |
1250 | + } | |
1251 | + | |
1252 | + that.$lis.filter('.active').removeClass('active'); | |
1253 | + that.$lis.not('.hidden, .divider, .dropdown-header').eq(0).addClass('active').children('a').focus(); | |
1254 | + $(this).focus(); | |
1255 | + }); | |
1256 | + }, | |
1257 | + | |
1258 | + _searchStyle: function () { | |
1259 | + var style = 'icontains'; | |
1260 | + switch (this.options.liveSearchStyle) { | |
1261 | + case 'begins': | |
1262 | + case 'startsWith': | |
1263 | + style = 'ibegins'; | |
1264 | + break; | |
1265 | + case 'contains': | |
1266 | + default: | |
1267 | + break; //no need to change the default | |
1268 | + } | |
1269 | + | |
1270 | + return style; | |
1271 | + }, | |
1272 | + | |
1273 | + val: function (value) { | |
1274 | + if (typeof value !== 'undefined') { | |
1275 | + this.$element.val(value); | |
1276 | + this.render(); | |
1277 | + | |
1278 | + return this.$element; | |
1279 | + } else { | |
1280 | + return this.$element.val(); | |
1281 | + } | |
1282 | + }, | |
1283 | + | |
1284 | + selectAll: function () { | |
1285 | + this.findLis(); | |
1286 | + this.$element.find('option:enabled').not('[data-divider], [data-hidden]').prop('selected', true); | |
1287 | + this.$lis.not('.divider, .dropdown-header, .disabled, .hidden').addClass('selected'); | |
1288 | + this.render(false); | |
1289 | + }, | |
1290 | + | |
1291 | + deselectAll: function () { | |
1292 | + this.findLis(); | |
1293 | + this.$element.find('option:enabled').not('[data-divider], [data-hidden]').prop('selected', false); | |
1294 | + this.$lis.not('.divider, .dropdown-header, .disabled, .hidden').removeClass('selected'); | |
1295 | + this.render(false); | |
1296 | + }, | |
1297 | + | |
1298 | + keydown: function (e) { | |
1299 | + var $this = $(this), | |
1300 | + $parent = $this.is('input') ? $this.parent().parent() : $this.parent(), | |
1301 | + $items, | |
1302 | + that = $parent.data('this'), | |
1303 | + index, | |
1304 | + next, | |
1305 | + first, | |
1306 | + last, | |
1307 | + prev, | |
1308 | + nextPrev, | |
1309 | + prevIndex, | |
1310 | + isActive, | |
1311 | + selector = ':not(.disabled, .hidden, .dropdown-header, .divider)', | |
1312 | + keyCodeMap = { | |
1313 | + 32: ' ', | |
1314 | + 48: '0', | |
1315 | + 49: '1', | |
1316 | + 50: '2', | |
1317 | + 51: '3', | |
1318 | + 52: '4', | |
1319 | + 53: '5', | |
1320 | + 54: '6', | |
1321 | + 55: '7', | |
1322 | + 56: '8', | |
1323 | + 57: '9', | |
1324 | + 59: ';', | |
1325 | + 65: 'a', | |
1326 | + 66: 'b', | |
1327 | + 67: 'c', | |
1328 | + 68: 'd', | |
1329 | + 69: 'e', | |
1330 | + 70: 'f', | |
1331 | + 71: 'g', | |
1332 | + 72: 'h', | |
1333 | + 73: 'i', | |
1334 | + 74: 'j', | |
1335 | + 75: 'k', | |
1336 | + 76: 'l', | |
1337 | + 77: 'm', | |
1338 | + 78: 'n', | |
1339 | + 79: 'o', | |
1340 | + 80: 'p', | |
1341 | + 81: 'q', | |
1342 | + 82: 'r', | |
1343 | + 83: 's', | |
1344 | + 84: 't', | |
1345 | + 85: 'u', | |
1346 | + 86: 'v', | |
1347 | + 87: 'w', | |
1348 | + 88: 'x', | |
1349 | + 89: 'y', | |
1350 | + 90: 'z', | |
1351 | + 96: '0', | |
1352 | + 97: '1', | |
1353 | + 98: '2', | |
1354 | + 99: '3', | |
1355 | + 100: '4', | |
1356 | + 101: '5', | |
1357 | + 102: '6', | |
1358 | + 103: '7', | |
1359 | + 104: '8', | |
1360 | + 105: '9' | |
1361 | + }; | |
1362 | + | |
1363 | + if (that.options.liveSearch) $parent = $this.parent().parent(); | |
1364 | + | |
1365 | + if (that.options.container) $parent = that.$menu; | |
1366 | + | |
1367 | + $items = $('[role=menu] li a', $parent); | |
1368 | + | |
1369 | + isActive = that.$menu.parent().hasClass('open'); | |
1370 | + | |
1371 | + if (!isActive && (e.keyCode >= 48 && e.keyCode <= 57 || event.keyCode >= 65 && event.keyCode <= 90)) { | |
1372 | + if (!that.options.container) { | |
1373 | + that.setSize(); | |
1374 | + that.$menu.parent().addClass('open'); | |
1375 | + isActive = true; | |
1376 | + } else { | |
1377 | + that.$newElement.trigger('click'); | |
1378 | + } | |
1379 | + that.$searchbox.focus(); | |
1380 | + } | |
1381 | + | |
1382 | + if (that.options.liveSearch) { | |
1383 | + if (/(^9$|27)/.test(e.keyCode.toString(10)) && isActive && that.$menu.find('.active').length === 0) { | |
1384 | + e.preventDefault(); | |
1385 | + that.$menu.parent().removeClass('open'); | |
1386 | + if (that.options.container) that.$newElement.removeClass('open'); | |
1387 | + that.$button.focus(); | |
1388 | + } | |
1389 | + // $items contains li elements when liveSearch is enabled | |
1390 | + $items = $('[role=menu] li:not(.disabled, .hidden, .dropdown-header, .divider)', $parent); | |
1391 | + if (!$this.val() && !/(38|40)/.test(e.keyCode.toString(10))) { | |
1392 | + if ($items.filter('.active').length === 0) { | |
1393 | + $items = that.$newElement.find('li'); | |
1394 | + if (that.options.liveSearchNormalize) { | |
1395 | + $items = $items.filter(':a' + that._searchStyle() + '(' + normalizeToBase(keyCodeMap[e.keyCode]) + ')'); | |
1396 | + } else { | |
1397 | + $items = $items.filter(':' + that._searchStyle() + '(' + keyCodeMap[e.keyCode] + ')'); | |
1398 | + } | |
1399 | + } | |
1400 | + } | |
1401 | + } | |
1402 | + | |
1403 | + if (!$items.length) return; | |
1404 | + | |
1405 | + if (/(38|40)/.test(e.keyCode.toString(10))) { | |
1406 | + index = $items.index($items.filter(':focus')); | |
1407 | + first = $items.parent(selector).first().data('originalIndex'); | |
1408 | + last = $items.parent(selector).last().data('originalIndex'); | |
1409 | + next = $items.eq(index).parent().nextAll(selector).eq(0).data('originalIndex'); | |
1410 | + prev = $items.eq(index).parent().prevAll(selector).eq(0).data('originalIndex'); | |
1411 | + nextPrev = $items.eq(next).parent().prevAll(selector).eq(0).data('originalIndex'); | |
1412 | + | |
1413 | + if (that.options.liveSearch) { | |
1414 | + $items.each(function (i) { | |
1415 | + if (!$(this).hasClass('disabled')) { | |
1416 | + $(this).data('index', i); | |
1417 | + } | |
1418 | + }); | |
1419 | + index = $items.index($items.filter('.active')); | |
1420 | + first = $items.first().data('index'); | |
1421 | + last = $items.last().data('index'); | |
1422 | + next = $items.eq(index).nextAll().eq(0).data('index'); | |
1423 | + prev = $items.eq(index).prevAll().eq(0).data('index'); | |
1424 | + nextPrev = $items.eq(next).prevAll().eq(0).data('index'); | |
1425 | + } | |
1426 | + | |
1427 | + prevIndex = $this.data('prevIndex'); | |
1428 | + | |
1429 | + if (e.keyCode == 38) { | |
1430 | + if (that.options.liveSearch) index -= 1; | |
1431 | + if (index != nextPrev && index > prev) index = prev; | |
1432 | + if (index < first) index = first; | |
1433 | + if (index == prevIndex) index = last; | |
1434 | + } else if (e.keyCode == 40) { | |
1435 | + if (that.options.liveSearch) index += 1; | |
1436 | + if (index == -1) index = 0; | |
1437 | + if (index != nextPrev && index < next) index = next; | |
1438 | + if (index > last) index = last; | |
1439 | + if (index == prevIndex) index = first; | |
1440 | + } | |
1441 | + | |
1442 | + $this.data('prevIndex', index); | |
1443 | + | |
1444 | + if (!that.options.liveSearch) { | |
1445 | + $items.eq(index).focus(); | |
1446 | + } else { | |
1447 | + e.preventDefault(); | |
1448 | + if (!$this.hasClass('dropdown-toggle')) { | |
1449 | + $items.removeClass('active').eq(index).addClass('active').children('a').focus(); | |
1450 | + $this.focus(); | |
1451 | + } | |
1452 | + } | |
1453 | + | |
1454 | + } else if (!$this.is('input')) { | |
1455 | + var keyIndex = [], | |
1456 | + count, | |
1457 | + prevKey; | |
1458 | + | |
1459 | + $items.each(function () { | |
1460 | + if (!$(this).parent().hasClass('disabled')) { | |
1461 | + if ($.trim($(this).text().toLowerCase()).substring(0, 1) == keyCodeMap[e.keyCode]) { | |
1462 | + keyIndex.push($(this).parent().index()); | |
1463 | + } | |
1464 | + } | |
1465 | + }); | |
1466 | + | |
1467 | + count = $(document).data('keycount'); | |
1468 | + count++; | |
1469 | + $(document).data('keycount', count); | |
1470 | + | |
1471 | + prevKey = $.trim($(':focus').text().toLowerCase()).substring(0, 1); | |
1472 | + | |
1473 | + if (prevKey != keyCodeMap[e.keyCode]) { | |
1474 | + count = 1; | |
1475 | + $(document).data('keycount', count); | |
1476 | + } else if (count >= keyIndex.length) { | |
1477 | + $(document).data('keycount', 0); | |
1478 | + if (count > keyIndex.length) count = 1; | |
1479 | + } | |
1480 | + | |
1481 | + $items.eq(keyIndex[count - 1]).focus(); | |
1482 | + } | |
1483 | + | |
1484 | + // Select focused option if "Enter", "Spacebar" or "Tab" (when selectOnTab is true) are pressed inside the menu. | |
1485 | + if ((/(13|32)/.test(e.keyCode.toString(10)) || (/(^9$)/.test(e.keyCode.toString(10)) && that.options.selectOnTab)) && isActive) { | |
1486 | + if (!/(32)/.test(e.keyCode.toString(10))) e.preventDefault(); | |
1487 | + if (!that.options.liveSearch) { | |
1488 | + var elem = $(':focus'); | |
1489 | + elem.click(); | |
1490 | + // Bring back focus for multiselects | |
1491 | + elem.focus(); | |
1492 | + // Prevent screen from scrolling if the user hit the spacebar | |
1493 | + e.preventDefault(); | |
1494 | + // Fixes spacebar selection of dropdown items in FF & IE | |
1495 | + $(document).data('spaceSelect', true); | |
1496 | + } else if (!/(32)/.test(e.keyCode.toString(10))) { | |
1497 | + that.$menu.find('.active a').click(); | |
1498 | + $this.focus(); | |
1499 | + } | |
1500 | + $(document).data('keycount', 0); | |
1501 | + } | |
1502 | + | |
1503 | + if ((/(^9$|27)/.test(e.keyCode.toString(10)) && isActive && (that.multiple || that.options.liveSearch)) || (/(27)/.test(e.keyCode.toString(10)) && !isActive)) { | |
1504 | + that.$menu.parent().removeClass('open'); | |
1505 | + if (that.options.container) that.$newElement.removeClass('open'); | |
1506 | + that.$button.focus(); | |
1507 | + } | |
1508 | + }, | |
1509 | + | |
1510 | + mobile: function () { | |
1511 | + this.$element.addClass('mobile-device').appendTo(this.$newElement); | |
1512 | + if (this.options.container) this.$menu.hide(); | |
1513 | + }, | |
1514 | + | |
1515 | + refresh: function () { | |
1516 | + this.$lis = null; | |
1517 | + this.reloadLi(); | |
1518 | + this.render(); | |
1519 | + this.checkDisabled(); | |
1520 | + this.liHeight(true); | |
1521 | + this.setStyle(); | |
1522 | + this.setWidth(); | |
1523 | + if (this.$lis) this.$searchbox.trigger('propertychange'); | |
1524 | + | |
1525 | + this.$element.trigger('refreshed.bs.select'); | |
1526 | + }, | |
1527 | + | |
1528 | + hide: function () { | |
1529 | + this.$newElement.hide(); | |
1530 | + }, | |
1531 | + | |
1532 | + show: function () { | |
1533 | + this.$newElement.show(); | |
1534 | + }, | |
1535 | + | |
1536 | + remove: function () { | |
1537 | + this.$newElement.remove(); | |
1538 | + this.$element.remove(); | |
1539 | + } | |
1540 | + }; | |
1541 | + | |
1542 | + // SELECTPICKER PLUGIN DEFINITION | |
1543 | + // ============================== | |
1544 | + function Plugin(option, event) { | |
1545 | + // get the args of the outer function.. | |
1546 | + var args = arguments; | |
1547 | + // The arguments of the function are explicitly re-defined from the argument list, because the shift causes them | |
1548 | + // to get lost/corrupted in android 2.3 and IE9 #715 #775 | |
1549 | + var _option = option, | |
1550 | + _event = event; | |
1551 | + [].shift.apply(args); | |
1552 | + | |
1553 | + var value; | |
1554 | + var chain = this.each(function () { | |
1555 | + var $this = $(this); | |
1556 | + if ($this.is('select')) { | |
1557 | + var data = $this.data('selectpicker'), | |
1558 | + options = typeof _option == 'object' && _option; | |
1559 | + | |
1560 | + if (!data) { | |
1561 | + var config = $.extend({}, Selectpicker.DEFAULTS, $.fn.selectpicker.defaults || {}, $this.data(), options); | |
1562 | + $this.data('selectpicker', (data = new Selectpicker(this, config, _event))); | |
1563 | + } else if (options) { | |
1564 | + for (var i in options) { | |
1565 | + if (options.hasOwnProperty(i)) { | |
1566 | + data.options[i] = options[i]; | |
1567 | + } | |
1568 | + } | |
1569 | + } | |
1570 | + | |
1571 | + if (typeof _option == 'string') { | |
1572 | + if (data[_option] instanceof Function) { | |
1573 | + value = data[_option].apply(data, args); | |
1574 | + } else { | |
1575 | + value = data.options[_option]; | |
1576 | + } | |
1577 | + } | |
1578 | + } | |
1579 | + }); | |
1580 | + | |
1581 | + if (typeof value !== 'undefined') { | |
1582 | + //noinspection JSUnusedAssignment | |
1583 | + return value; | |
1584 | + } else { | |
1585 | + return chain; | |
1586 | + } | |
1587 | + } | |
1588 | + | |
1589 | + var old = $.fn.selectpicker; | |
1590 | + $.fn.selectpicker = Plugin; | |
1591 | + $.fn.selectpicker.Constructor = Selectpicker; | |
1592 | + | |
1593 | + // SELECTPICKER NO CONFLICT | |
1594 | + // ======================== | |
1595 | + $.fn.selectpicker.noConflict = function () { | |
1596 | + $.fn.selectpicker = old; | |
1597 | + return this; | |
1598 | + }; | |
1599 | + | |
1600 | + $(document) | |
1601 | + .data('keycount', 0) | |
1602 | + .on('keydown', '.bootstrap-select [data-toggle=dropdown], .bootstrap-select [role="menu"], .bs-searchbox input', Selectpicker.prototype.keydown) | |
1603 | + .on('focusin.modal', '.bootstrap-select [data-toggle=dropdown], .bootstrap-select [role="menu"], .bs-searchbox input', function (e) { | |
1604 | + e.stopPropagation(); | |
1605 | + }); | |
1606 | + | |
1607 | + // SELECTPICKER DATA-API | |
1608 | + // ===================== | |
1609 | + $(window).on('load.bs.select.data-api', function () { | |
1610 | + $('.selectpicker').each(function () { | |
1611 | + var $selectpicker = $(this); | |
1612 | + Plugin.call($selectpicker, $selectpicker.data()); | |
1613 | + }) | |
1614 | + }); | |
1615 | + })(jQuery); | |
1616 | + | |
1617 | + | |
1618 | +})); | ... | ... |
resource/lib/bootstrap-select/js/i18n/defaults-bg_BG.js
0 → 100644
1 | +/*! | |
2 | + * Bootstrap-select v1.7.2 (http://silviomoreto.github.io/bootstrap-select) | |
3 | + * | |
4 | + * Copyright 2013-2015 bootstrap-select | |
5 | + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) | |
6 | + */ | |
7 | + | |
8 | +(function (root, factory) { | |
9 | + if (typeof define === 'function' && define.amd) { | |
10 | + // AMD. Register as an anonymous module unless amdModuleId is set | |
11 | + define(["jquery"], function (a0) { | |
12 | + return (factory(a0)); | |
13 | + }); | |
14 | + } else if (typeof exports === 'object') { | |
15 | + // Node. Does not work with strict CommonJS, but | |
16 | + // only CommonJS-like environments that support module.exports, | |
17 | + // like Node. | |
18 | + module.exports = factory(require("jquery")); | |
19 | + } else { | |
20 | + factory(jQuery); | |
21 | + } | |
22 | +}(this, function () { | |
23 | + | |
24 | +(function ($) { | |
25 | + $.fn.selectpicker.defaults = { | |
26 | + noneSelectedText: 'Нищо избрано', | |
27 | + noneResultsText: 'Няма резултат за {0}', | |
28 | + countSelectedText: function (numSelected, numTotal) { | |
29 | + return (numSelected == 1) ? "{0} избран елемент" : "{0} избрани елемента"; | |
30 | + }, | |
31 | + maxOptionsText: function (numAll, numGroup) { | |
32 | + return [ | |
33 | + (numAll == 1) ? 'Лимита е достигнат ({n} елемент максимум)' : 'Лимита е достигнат ({n} елемента максимум)', | |
34 | + (numGroup == 1) ? 'Груповия лимит е достигнат ({n} елемент максимум)' : 'Груповия лимит е достигнат ({n} елемента максимум)' | |
35 | + ]; | |
36 | + }, | |
37 | + selectAllText: 'Избери всички', | |
38 | + deselectAllText: 'Размаркирай всички', | |
39 | + multipleSeparator: ', ' | |
40 | + }; | |
41 | +})(jQuery); | |
42 | + | |
43 | + | |
44 | +})); | ... | ... |
resource/lib/bootstrap-select/js/i18n/defaults-bg_BG.min.js
0 → 100644
1 | +/*! | |
2 | + * Bootstrap-select v1.7.2 (http://silviomoreto.github.io/bootstrap-select) | |
3 | + * | |
4 | + * Copyright 2013-2015 bootstrap-select | |
5 | + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) | |
6 | + */ | |
7 | +!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"Нищо избрано",noneResultsText:"Няма резултат за {0}",countSelectedText:function(a,b){return 1==a?"{0} избран елемент":"{0} избрани елемента"},maxOptionsText:function(a,b){return[1==a?"Лимита е достигнат ({n} елемент максимум)":"Лимита е достигнат ({n} елемента максимум)",1==b?"Груповия лимит е достигнат ({n} елемент максимум)":"Груповия лимит е достигнат ({n} елемента максимум)"]},selectAllText:"Избери всички",deselectAllText:"Размаркирай всички",multipleSeparator:", "}}(jQuery)}); | |
0 | 8 | \ No newline at end of file | ... | ... |
resource/lib/bootstrap-select/js/i18n/defaults-cs_CZ.js
0 → 100644
1 | +/*! | |
2 | + * Bootstrap-select v1.7.2 (http://silviomoreto.github.io/bootstrap-select) | |
3 | + * | |
4 | + * Copyright 2013-2015 bootstrap-select | |
5 | + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) | |
6 | + */ | |
7 | + | |
8 | +(function (root, factory) { | |
9 | + if (typeof define === 'function' && define.amd) { | |
10 | + // AMD. Register as an anonymous module unless amdModuleId is set | |
11 | + define(["jquery"], function (a0) { | |
12 | + return (factory(a0)); | |
13 | + }); | |
14 | + } else if (typeof exports === 'object') { | |
15 | + // Node. Does not work with strict CommonJS, but | |
16 | + // only CommonJS-like environments that support module.exports, | |
17 | + // like Node. | |
18 | + module.exports = factory(require("jquery")); | |
19 | + } else { | |
20 | + factory(jQuery); | |
21 | + } | |
22 | +}(this, function () { | |
23 | + | |
24 | +(function ($) { | |
25 | + $.fn.selectpicker.defaults = { | |
26 | + noneSelectedText: 'Nic není vybráno', | |
27 | + noneResultsText: 'Žádné výsledky {0}', | |
28 | + countSelectedText: 'Označeno {0} z {1}', | |
29 | + maxOptionsText: ['Limit překročen ({n} {var} max)', 'Limit skupiny překročen ({n} {var} max)', ['položek', 'položka']], | |
30 | + multipleSeparator: ', ' | |
31 | + }; | |
32 | +})(jQuery); | |
33 | + | |
34 | + | |
35 | +})); | ... | ... |
resource/lib/bootstrap-select/js/i18n/defaults-cs_CZ.min.js
0 → 100644
1 | +/*! | |
2 | + * Bootstrap-select v1.7.2 (http://silviomoreto.github.io/bootstrap-select) | |
3 | + * | |
4 | + * Copyright 2013-2015 bootstrap-select | |
5 | + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) | |
6 | + */ | |
7 | +!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"Nic není vybráno",noneResultsText:"Žádné výsledky {0}",countSelectedText:"Označeno {0} z {1}",maxOptionsText:["Limit překročen ({n} {var} max)","Limit skupiny překročen ({n} {var} max)",["položek","položka"]],multipleSeparator:", "}}(jQuery)}); | |
0 | 8 | \ No newline at end of file | ... | ... |
resource/lib/bootstrap-select/js/i18n/defaults-da_DK.js
0 → 100644
1 | +/*! | |
2 | + * Bootstrap-select v1.7.2 (http://silviomoreto.github.io/bootstrap-select) | |
3 | + * | |
4 | + * Copyright 2013-2015 bootstrap-select | |
5 | + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) | |
6 | + */ | |
7 | + | |
8 | +(function (root, factory) { | |
9 | + if (typeof define === 'function' && define.amd) { | |
10 | + // AMD. Register as an anonymous module unless amdModuleId is set | |
11 | + define(["jquery"], function (a0) { | |
12 | + return (factory(a0)); | |
13 | + }); | |
14 | + } else if (typeof exports === 'object') { | |
15 | + // Node. Does not work with strict CommonJS, but | |
16 | + // only CommonJS-like environments that support module.exports, | |
17 | + // like Node. | |
18 | + module.exports = factory(require("jquery")); | |
19 | + } else { | |
20 | + factory(jQuery); | |
21 | + } | |
22 | +}(this, function () { | |
23 | + | |
24 | +(function ($) { | |
25 | + $.fn.selectpicker.defaults = { | |
26 | + noneSelectedText: 'Intet valgt', | |
27 | + noneResultsText: 'Ingen resultater fundet {0}', | |
28 | + countSelectedText: function (numSelected, numTotal) { | |
29 | + return (numSelected == 1) ? "{0} valgt" : "{0} valgt"; | |
30 | + }, | |
31 | + maxOptionsText: function (numAll, numGroup) { | |
32 | + return [ | |
33 | + (numAll == 1) ? 'Begrænsning nået (max {n} valgt)' : 'Begrænsning nået (max {n} valgte)', | |
34 | + (numGroup == 1) ? 'Gruppe-begrænsning nået (max {n} valgt)' : 'Gruppe-begrænsning nået (max {n} valgte)' | |
35 | + ]; | |
36 | + }, | |
37 | + selectAllText: 'Markér alle', | |
38 | + deselectAllText: 'Afmarkér alle', | |
39 | + multipleSeparator: ', ' | |
40 | + }; | |
41 | +})(jQuery); | |
42 | + | |
43 | + | |
44 | +})); | ... | ... |
resource/lib/bootstrap-select/js/i18n/defaults-da_DK.min.js
0 → 100644
1 | +/*! | |
2 | + * Bootstrap-select v1.7.2 (http://silviomoreto.github.io/bootstrap-select) | |
3 | + * | |
4 | + * Copyright 2013-2015 bootstrap-select | |
5 | + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) | |
6 | + */ | |
7 | +!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"Intet valgt",noneResultsText:"Ingen resultater fundet {0}",countSelectedText:function(a,b){return"{0} valgt"},maxOptionsText:function(a,b){return[1==a?"Begrænsning nået (max {n} valgt)":"Begrænsning nået (max {n} valgte)",1==b?"Gruppe-begrænsning nået (max {n} valgt)":"Gruppe-begrænsning nået (max {n} valgte)"]},selectAllText:"Markér alle",deselectAllText:"Afmarkér alle",multipleSeparator:", "}}(jQuery)}); | |
0 | 8 | \ No newline at end of file | ... | ... |
resource/lib/bootstrap-select/js/i18n/defaults-de_DE.js
0 → 100644
1 | +/*! | |
2 | + * Bootstrap-select v1.7.2 (http://silviomoreto.github.io/bootstrap-select) | |
3 | + * | |
4 | + * Copyright 2013-2015 bootstrap-select | |
5 | + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) | |
6 | + */ | |
7 | + | |
8 | +(function (root, factory) { | |
9 | + if (typeof define === 'function' && define.amd) { | |
10 | + // AMD. Register as an anonymous module unless amdModuleId is set | |
11 | + define(["jquery"], function (a0) { | |
12 | + return (factory(a0)); | |
13 | + }); | |
14 | + } else if (typeof exports === 'object') { | |
15 | + // Node. Does not work with strict CommonJS, but | |
16 | + // only CommonJS-like environments that support module.exports, | |
17 | + // like Node. | |
18 | + module.exports = factory(require("jquery")); | |
19 | + } else { | |
20 | + factory(jQuery); | |
21 | + } | |
22 | +}(this, function () { | |
23 | + | |
24 | +(function ($) { | |
25 | + $.fn.selectpicker.defaults = { | |
26 | + noneSelectedText: 'Bitte wählen...', | |
27 | + noneResultsText: 'Keine Ergebnisse für {0}', | |
28 | + countSelectedText: '{0} von {1} ausgewählt', | |
29 | + maxOptionsText: ['Limit erreicht ({n} {var} max.)', 'Gruppen-Limit erreicht ({n} {var} max.)', ['Eintrag', 'Einträge']], | |
30 | + multipleSeparator: ', ' | |
31 | + }; | |
32 | +})(jQuery); | |
33 | + | |
34 | + | |
35 | +})); | ... | ... |
resource/lib/bootstrap-select/js/i18n/defaults-de_DE.min.js
0 → 100644
1 | +/*! | |
2 | + * Bootstrap-select v1.7.2 (http://silviomoreto.github.io/bootstrap-select) | |
3 | + * | |
4 | + * Copyright 2013-2015 bootstrap-select | |
5 | + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) | |
6 | + */ | |
7 | +!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"Bitte wählen...",noneResultsText:"Keine Ergebnisse für {0}",countSelectedText:"{0} von {1} ausgewählt",maxOptionsText:["Limit erreicht ({n} {var} max.)","Gruppen-Limit erreicht ({n} {var} max.)",["Eintrag","Einträge"]],multipleSeparator:", "}}(jQuery)}); | |
0 | 8 | \ No newline at end of file | ... | ... |
resource/lib/bootstrap-select/js/i18n/defaults-en_US.js
0 → 100644
1 | +/*! | |
2 | + * Bootstrap-select v1.7.2 (http://silviomoreto.github.io/bootstrap-select) | |
3 | + * | |
4 | + * Copyright 2013-2015 bootstrap-select | |
5 | + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) | |
6 | + */ | |
7 | + | |
8 | +(function (root, factory) { | |
9 | + if (typeof define === 'function' && define.amd) { | |
10 | + // AMD. Register as an anonymous module unless amdModuleId is set | |
11 | + define(["jquery"], function (a0) { | |
12 | + return (factory(a0)); | |
13 | + }); | |
14 | + } else if (typeof exports === 'object') { | |
15 | + // Node. Does not work with strict CommonJS, but | |
16 | + // only CommonJS-like environments that support module.exports, | |
17 | + // like Node. | |
18 | + module.exports = factory(require("jquery")); | |
19 | + } else { | |
20 | + factory(jQuery); | |
21 | + } | |
22 | +}(this, function () { | |
23 | + | |
24 | +(function ($) { | |
25 | + $.fn.selectpicker.defaults = { | |
26 | + noneSelectedText: 'Nothing selected', | |
27 | + noneResultsText: 'No results match {0}', | |
28 | + countSelectedText: function (numSelected, numTotal) { | |
29 | + return (numSelected == 1) ? "{0} item selected" : "{0} items selected"; | |
30 | + }, | |
31 | + maxOptionsText: function (numAll, numGroup) { | |
32 | + return [ | |
33 | + (numAll == 1) ? 'Limit reached ({n} item max)' : 'Limit reached ({n} items max)', | |
34 | + (numGroup == 1) ? 'Group limit reached ({n} item max)' : 'Group limit reached ({n} items max)' | |
35 | + ]; | |
36 | + }, | |
37 | + selectAllText: 'Select All', | |
38 | + deselectAllText: 'Deselect All', | |
39 | + multipleSeparator: ', ' | |
40 | + }; | |
41 | +})(jQuery); | |
42 | + | |
43 | + | |
44 | +})); | ... | ... |
resource/lib/bootstrap-select/js/i18n/defaults-en_US.min.js
0 → 100644
1 | +/*! | |
2 | + * Bootstrap-select v1.7.2 (http://silviomoreto.github.io/bootstrap-select) | |
3 | + * | |
4 | + * Copyright 2013-2015 bootstrap-select | |
5 | + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) | |
6 | + */ | |
7 | +!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"Nothing selected",noneResultsText:"No results match {0}",countSelectedText:function(a,b){return 1==a?"{0} item selected":"{0} items selected"},maxOptionsText:function(a,b){return[1==a?"Limit reached ({n} item max)":"Limit reached ({n} items max)",1==b?"Group limit reached ({n} item max)":"Group limit reached ({n} items max)"]},selectAllText:"Select All",deselectAllText:"Deselect All",multipleSeparator:", "}}(jQuery)}); | |
0 | 8 | \ No newline at end of file | ... | ... |
resource/lib/bootstrap-select/js/i18n/defaults-es_CL.js
0 → 100644
1 | +/*! | |
2 | + * Bootstrap-select v1.7.2 (http://silviomoreto.github.io/bootstrap-select) | |
3 | + * | |
4 | + * Copyright 2013-2015 bootstrap-select | |
5 | + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) | |
6 | + */ | |
7 | + | |
8 | +(function (root, factory) { | |
9 | + if (typeof define === 'function' && define.amd) { | |
10 | + // AMD. Register as an anonymous module unless amdModuleId is set | |
11 | + define(["jquery"], function (a0) { | |
12 | + return (factory(a0)); | |
13 | + }); | |
14 | + } else if (typeof exports === 'object') { | |
15 | + // Node. Does not work with strict CommonJS, but | |
16 | + // only CommonJS-like environments that support module.exports, | |
17 | + // like Node. | |
18 | + module.exports = factory(require("jquery")); | |
19 | + } else { | |
20 | + factory(jQuery); | |
21 | + } | |
22 | +}(this, function () { | |
23 | + | |
24 | +(function ($) { | |
25 | + $.fn.selectpicker.defaults = { | |
26 | + noneSelectedText: 'No hay selección', | |
27 | + noneResultsText: 'No hay resultados {0}', | |
28 | + countSelectedText: 'Seleccionados {0} de {1}', | |
29 | + maxOptionsText: ['Límite alcanzado ({n} {var} max)', 'Límite del grupo alcanzado({n} {var} max)', ['elementos', 'element']], | |
30 | + multipleSeparator: ', ' | |
31 | + }; | |
32 | +})(jQuery); | |
33 | + | |
34 | + | |
35 | +})); | ... | ... |
resource/lib/bootstrap-select/js/i18n/defaults-es_CL.min.js
0 → 100644
1 | +/*! | |
2 | + * Bootstrap-select v1.7.2 (http://silviomoreto.github.io/bootstrap-select) | |
3 | + * | |
4 | + * Copyright 2013-2015 bootstrap-select | |
5 | + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) | |
6 | + */ | |
7 | +!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"No hay selección",noneResultsText:"No hay resultados {0}",countSelectedText:"Seleccionados {0} de {1}",maxOptionsText:["Límite alcanzado ({n} {var} max)","Límite del grupo alcanzado({n} {var} max)",["elementos","element"]],multipleSeparator:", "}}(jQuery)}); | |
0 | 8 | \ No newline at end of file | ... | ... |
resource/lib/bootstrap-select/js/i18n/defaults-eu.js
0 → 100644
1 | +/*! | |
2 | + * Bootstrap-select v1.7.2 (http://silviomoreto.github.io/bootstrap-select) | |
3 | + * | |
4 | + * Copyright 2013-2015 bootstrap-select | |
5 | + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) | |
6 | + */ | |
7 | + | |
8 | +(function (root, factory) { | |
9 | + if (typeof define === 'function' && define.amd) { | |
10 | + // AMD. Register as an anonymous module unless amdModuleId is set | |
11 | + define(["jquery"], function (a0) { | |
12 | + return (factory(a0)); | |
13 | + }); | |
14 | + } else if (typeof exports === 'object') { | |
15 | + // Node. Does not work with strict CommonJS, but | |
16 | + // only CommonJS-like environments that support module.exports, | |
17 | + // like Node. | |
18 | + module.exports = factory(require("jquery")); | |
19 | + } else { | |
20 | + factory(jQuery); | |
21 | + } | |
22 | +}(this, function () { | |
23 | + | |
24 | +(function ($) { | |
25 | + $.fn.selectpicker.defaults = { | |
26 | + noneSelectedText: 'Hautapenik ez', | |
27 | + noneResultsText: 'Emaitzarik ez {0}', | |
28 | + countSelectedText: '{1}(e)tik {0} hautatuta', | |
29 | + maxOptionsText: ['Mugara iritsita ({n} {var} gehienez)', 'Taldearen mugara iritsita ({n} {var} gehienez)', ['elementu', 'elementu']], | |
30 | + multipleSeparator: ', ' | |
31 | + }; | |
32 | +})(jQuery); | |
33 | + | |
34 | + | |
35 | +})); | ... | ... |
resource/lib/bootstrap-select/js/i18n/defaults-eu.min.js
0 → 100644
1 | +/*! | |
2 | + * Bootstrap-select v1.7.2 (http://silviomoreto.github.io/bootstrap-select) | |
3 | + * | |
4 | + * Copyright 2013-2015 bootstrap-select | |
5 | + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) | |
6 | + */ | |
7 | +!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"Hautapenik ez",noneResultsText:"Emaitzarik ez {0}",countSelectedText:"{1}(e)tik {0} hautatuta",maxOptionsText:["Mugara iritsita ({n} {var} gehienez)","Taldearen mugara iritsita ({n} {var} gehienez)",["elementu","elementu"]],multipleSeparator:", "}}(jQuery)}); | |
0 | 8 | \ No newline at end of file | ... | ... |
resource/lib/bootstrap-select/js/i18n/defaults-fa_IR.js
0 → 100644
1 | +/*! | |
2 | + * Bootstrap-select v1.7.2 (http://silviomoreto.github.io/bootstrap-select) | |
3 | + * | |
4 | + * Copyright 2013-2015 bootstrap-select | |
5 | + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) | |
6 | + */ | |
7 | + | |
8 | +(function (root, factory) { | |
9 | + if (typeof define === 'function' && define.amd) { | |
10 | + // AMD. Register as an anonymous module unless amdModuleId is set | |
11 | + define(["jquery"], function (a0) { | |
12 | + return (factory(a0)); | |
13 | + }); | |
14 | + } else if (typeof exports === 'object') { | |
15 | + // Node. Does not work with strict CommonJS, but | |
16 | + // only CommonJS-like environments that support module.exports, | |
17 | + // like Node. | |
18 | + module.exports = factory(require("jquery")); | |
19 | + } else { | |
20 | + factory(jQuery); | |
21 | + } | |
22 | +}(this, function () { | |
23 | + | |
24 | +(function ($) { | |
25 | + $.fn.selectpicker.defaults = { | |
26 | + noneSelectedText: 'چیزی انتخاب نشده است', | |
27 | + noneResultsText: 'هیج مشابهی برای {0} پیدا نشد', | |
28 | + countSelectedText: "{0} از {1} مورد انتخاب شده", | |
29 | + maxOptionsText: ['بیشتر ممکن نیست {حداکثر {n} عدد}', 'بیشتر ممکن نیست {حداکثر {n} عدد}'], | |
30 | + selectAllText: 'انتخاب همه', | |
31 | + deselectAllText: 'انتخاب هیچ کدام', | |
32 | + multipleSeparator: ', ' | |
33 | + }; | |
34 | +})(jQuery); | |
35 | + | |
36 | + | |
37 | +})); | ... | ... |
resource/lib/bootstrap-select/js/i18n/defaults-fa_IR.min.js
0 → 100644
1 | +/*! | |
2 | + * Bootstrap-select v1.7.2 (http://silviomoreto.github.io/bootstrap-select) | |
3 | + * | |
4 | + * Copyright 2013-2015 bootstrap-select | |
5 | + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) | |
6 | + */ | |
7 | +!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"چیزی انتخاب نشده است",noneResultsText:"هیج مشابهی برای {0} پیدا نشد",countSelectedText:"{0} از {1} مورد انتخاب شده",maxOptionsText:["بیشتر ممکن نیست {حداکثر {n} عدد}","بیشتر ممکن نیست {حداکثر {n} عدد}"],selectAllText:"انتخاب همه",deselectAllText:"انتخاب هیچ کدام",multipleSeparator:", "}}(jQuery)}); | |
0 | 8 | \ No newline at end of file | ... | ... |
resource/lib/bootstrap-select/js/i18n/defaults-fr_FR.js
0 → 100644
1 | +/*! | |
2 | + * Bootstrap-select v1.7.2 (http://silviomoreto.github.io/bootstrap-select) | |
3 | + * | |
4 | + * Copyright 2013-2015 bootstrap-select | |
5 | + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) | |
6 | + */ | |
7 | + | |
8 | +(function (root, factory) { | |
9 | + if (typeof define === 'function' && define.amd) { | |
10 | + // AMD. Register as an anonymous module unless amdModuleId is set | |
11 | + define(["jquery"], function (a0) { | |
12 | + return (factory(a0)); | |
13 | + }); | |
14 | + } else if (typeof exports === 'object') { | |
15 | + // Node. Does not work with strict CommonJS, but | |
16 | + // only CommonJS-like environments that support module.exports, | |
17 | + // like Node. | |
18 | + module.exports = factory(require("jquery")); | |
19 | + } else { | |
20 | + factory(jQuery); | |
21 | + } | |
22 | +}(this, function () { | |
23 | + | |
24 | +(function ($) { | |
25 | + $.fn.selectpicker.defaults = { | |
26 | + noneSelectedText: 'Aucune sélection', | |
27 | + noneResultsText: 'Aucun résultat pour {0}', | |
28 | + countSelectedText: function (numSelected, numTotal) { | |
29 | + return (numSelected > 1) ? "{0} éléments sélectionnés" : "{0} élément sélectionné"; | |
30 | + }, | |
31 | + maxOptionsText: function (numAll, numGroup) { | |
32 | + return [ | |
33 | + (numAll > 1) ? 'Limite atteinte ({n} éléments max)' : 'Limite atteinte ({n} élément max)', | |
34 | + (numGroup > 1) ? 'Limite du groupe atteinte ({n} éléments max)' : 'Limite du groupe atteinte ({n} élément max)' | |
35 | + ]; | |
36 | + }, | |
37 | + multipleSeparator: ', ' | |
38 | + }; | |
39 | +})(jQuery); | |
40 | + | |
41 | + | |
42 | +})); | ... | ... |
resource/lib/bootstrap-select/js/i18n/defaults-fr_FR.min.js
0 → 100644
1 | +/*! | |
2 | + * Bootstrap-select v1.7.2 (http://silviomoreto.github.io/bootstrap-select) | |
3 | + * | |
4 | + * Copyright 2013-2015 bootstrap-select | |
5 | + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) | |
6 | + */ | |
7 | +!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"Aucune sélection",noneResultsText:"Aucun résultat pour {0}",countSelectedText:function(a,b){return a>1?"{0} éléments sélectionnés":"{0} élément sélectionné"},maxOptionsText:function(a,b){return[a>1?"Limite atteinte ({n} éléments max)":"Limite atteinte ({n} élément max)",b>1?"Limite du groupe atteinte ({n} éléments max)":"Limite du groupe atteinte ({n} élément max)"]},multipleSeparator:", "}}(jQuery)}); | |
0 | 8 | \ No newline at end of file | ... | ... |
resource/lib/bootstrap-select/js/i18n/defaults-hu_HU.js
0 → 100644
1 | +/*! | |
2 | + * Bootstrap-select v1.7.2 (http://silviomoreto.github.io/bootstrap-select) | |
3 | + * | |
4 | + * Copyright 2013-2015 bootstrap-select | |
5 | + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) | |
6 | + */ | |
7 | + | |
8 | +(function (root, factory) { | |
9 | + if (typeof define === 'function' && define.amd) { | |
10 | + // AMD. Register as an anonymous module unless amdModuleId is set | |
11 | + define(["jquery"], function (a0) { | |
12 | + return (factory(a0)); | |
13 | + }); | |
14 | + } else if (typeof exports === 'object') { | |
15 | + // Node. Does not work with strict CommonJS, but | |
16 | + // only CommonJS-like environments that support module.exports, | |
17 | + // like Node. | |
18 | + module.exports = factory(require("jquery")); | |
19 | + } else { | |
20 | + factory(jQuery); | |
21 | + } | |
22 | +}(this, function () { | |
23 | + | |
24 | +(function ($) { | |
25 | + $.fn.selectpicker.defaults = { | |
26 | + noneSelectedText: 'Válasszon!', | |
27 | + noneResultsText: 'Nincs találat {0}', | |
28 | + countSelectedText: function (numSelected, numTotal) { | |
29 | + return '{n} elem kiválasztva'; | |
30 | + }, | |
31 | + maxOptionsText: function (numAll, numGroup) { | |
32 | + return [ | |
33 | + 'Legfeljebb {n} elem választható', | |
34 | + 'A csoportban legfeljebb {n} elem választható' | |
35 | + ]; | |
36 | + }, | |
37 | + selectAllText: 'Mind', | |
38 | + deselectAllText: 'Egyik sem', | |
39 | + multipleSeparator: ', ' | |
40 | + }; | |
41 | +})(jQuery); | |
42 | + | |
43 | + | |
44 | +})); | ... | ... |
resource/lib/bootstrap-select/js/i18n/defaults-hu_HU.min.js
0 → 100644
1 | +/*! | |
2 | + * Bootstrap-select v1.7.2 (http://silviomoreto.github.io/bootstrap-select) | |
3 | + * | |
4 | + * Copyright 2013-2015 bootstrap-select | |
5 | + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) | |
6 | + */ | |
7 | +!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"Válasszon!",noneResultsText:"Nincs találat {0}",countSelectedText:function(a,b){return"{n} elem kiválasztva"},maxOptionsText:function(a,b){return["Legfeljebb {n} elem választható","A csoportban legfeljebb {n} elem választható"]},selectAllText:"Mind",deselectAllText:"Egyik sem",multipleSeparator:", "}}(jQuery)}); | |
0 | 8 | \ No newline at end of file | ... | ... |
resource/lib/bootstrap-select/js/i18n/defaults-it_IT.js
0 → 100644
1 | +/*! | |
2 | + * Bootstrap-select v1.7.2 (http://silviomoreto.github.io/bootstrap-select) | |
3 | + * | |
4 | + * Copyright 2013-2015 bootstrap-select | |
5 | + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) | |
6 | + */ | |
7 | + | |
8 | +(function (root, factory) { | |
9 | + if (typeof define === 'function' && define.amd) { | |
10 | + // AMD. Register as an anonymous module unless amdModuleId is set | |
11 | + define(["jquery"], function (a0) { | |
12 | + return (factory(a0)); | |
13 | + }); | |
14 | + } else if (typeof exports === 'object') { | |
15 | + // Node. Does not work with strict CommonJS, but | |
16 | + // only CommonJS-like environments that support module.exports, | |
17 | + // like Node. | |
18 | + module.exports = factory(require("jquery")); | |
19 | + } else { | |
20 | + factory(jQuery); | |
21 | + } | |
22 | +}(this, function () { | |
23 | + | |
24 | +(function ($) { | |
25 | + $.fn.selectpicker.defaults = { | |
26 | + noneSelectedText: 'Nessuna selezione', | |
27 | + noneResultsText: 'Nessun risultato per {0}', | |
28 | + countSelectedText: 'Selezionati {0} di {1}', | |
29 | + maxOptionsText: ['Limite raggiunto ({n} {var} max)', 'Limite del gruppo raggiunto ({n} {var} max)', ['elementi', 'elemento']], | |
30 | + multipleSeparator: ', ' | |
31 | + }; | |
32 | +})(jQuery); | |
33 | + | |
34 | + | |
35 | +})); | ... | ... |
resource/lib/bootstrap-select/js/i18n/defaults-it_IT.min.js
0 → 100644
1 | +/*! | |
2 | + * Bootstrap-select v1.7.2 (http://silviomoreto.github.io/bootstrap-select) | |
3 | + * | |
4 | + * Copyright 2013-2015 bootstrap-select | |
5 | + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) | |
6 | + */ | |
7 | +!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"Nessuna selezione",noneResultsText:"Nessun risultato per {0}",countSelectedText:"Selezionati {0} di {1}",maxOptionsText:["Limite raggiunto ({n} {var} max)","Limite del gruppo raggiunto ({n} {var} max)",["elementi","elemento"]],multipleSeparator:", "}}(jQuery)}); | |
0 | 8 | \ No newline at end of file | ... | ... |
resource/lib/bootstrap-select/js/i18n/defaults-ko_KR.js
0 → 100644
1 | +/*! | |
2 | + * Bootstrap-select v1.7.2 (http://silviomoreto.github.io/bootstrap-select) | |
3 | + * | |
4 | + * Copyright 2013-2015 bootstrap-select | |
5 | + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) | |
6 | + */ | |
7 | + | |
8 | +(function (root, factory) { | |
9 | + if (typeof define === 'function' && define.amd) { | |
10 | + // AMD. Register as an anonymous module unless amdModuleId is set | |
11 | + define(["jquery"], function (a0) { | |
12 | + return (factory(a0)); | |
13 | + }); | |
14 | + } else if (typeof exports === 'object') { | |
15 | + // Node. Does not work with strict CommonJS, but | |
16 | + // only CommonJS-like environments that support module.exports, | |
17 | + // like Node. | |
18 | + module.exports = factory(require("jquery")); | |
19 | + } else { | |
20 | + factory(jQuery); | |
21 | + } | |
22 | +}(this, function () { | |
23 | + | |
24 | +(function ($) { | |
25 | + $.fn.selectpicker.defaults = { | |
26 | + noneSelectedText: '항목을 선택해주세요', | |
27 | + noneResultsText: '{0} 검색 결과가 없습니다', | |
28 | + countSelectedText: function (numSelected, numTotal) { | |
29 | + return "{0}개를 선택하였습니다"; | |
30 | + }, | |
31 | + maxOptionsText: function (numAll, numGroup) { | |
32 | + return [ | |
33 | + '{n}개까지 선택 가능합니다', | |
34 | + '해당 그룹은 {n}개까지 선택 가능합니다' | |
35 | + ]; | |
36 | + }, | |
37 | + selectAllText: '전체선택', | |
38 | + deselectAllText: '전체해제', | |
39 | + multipleSeparator: ', ' | |
40 | + }; | |
41 | +})(jQuery); | |
42 | + | |
43 | + | |
44 | +})); | ... | ... |
resource/lib/bootstrap-select/js/i18n/defaults-ko_KR.min.js
0 → 100644
1 | +/*! | |
2 | + * Bootstrap-select v1.7.2 (http://silviomoreto.github.io/bootstrap-select) | |
3 | + * | |
4 | + * Copyright 2013-2015 bootstrap-select | |
5 | + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) | |
6 | + */ | |
7 | +!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"항목을 선택해주세요",noneResultsText:"{0} 검색 결과가 없습니다",countSelectedText:function(a,b){return"{0}개를 선택하였습니다"},maxOptionsText:function(a,b){return["{n}개까지 선택 가능합니다","해당 그룹은 {n}개까지 선택 가능합니다"]},selectAllText:"전체선택",deselectAllText:"전체해제",multipleSeparator:", "}}(jQuery)}); | |
0 | 8 | \ No newline at end of file | ... | ... |
resource/lib/bootstrap-select/js/i18n/defaults-nl_NL.js
0 → 100644
1 | +/*! | |
2 | + * Bootstrap-select v1.7.2 (http://silviomoreto.github.io/bootstrap-select) | |
3 | + * | |
4 | + * Copyright 2013-2015 bootstrap-select | |
5 | + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) | |
6 | + */ | |
7 | + | |
8 | +(function (root, factory) { | |
9 | + if (typeof define === 'function' && define.amd) { | |
10 | + // AMD. Register as an anonymous module unless amdModuleId is set | |
11 | + define(["jquery"], function (a0) { | |
12 | + return (factory(a0)); | |
13 | + }); | |
14 | + } else if (typeof exports === 'object') { | |
15 | + // Node. Does not work with strict CommonJS, but | |
16 | + // only CommonJS-like environments that support module.exports, | |
17 | + // like Node. | |
18 | + module.exports = factory(require("jquery")); | |
19 | + } else { | |
20 | + factory(jQuery); | |
21 | + } | |
22 | +}(this, function () { | |
23 | + | |
24 | +(function ($) { | |
25 | + $.fn.selectpicker.defaults = { | |
26 | + noneSelectedText: 'Niets geselecteerd', | |
27 | + noneResultsText: 'Geen resultaten gevonden voor {0}', | |
28 | + countSelectedText: '{0} van {1} geselecteerd', | |
29 | + maxOptionsText: ['Limiet bereikt ({n} {var} max)', 'Groep limiet bereikt ({n} {var} max)', ['items', 'item']], | |
30 | + multipleSeparator: ', ' | |
31 | + }; | |
32 | +})(jQuery); | |
33 | + | |
34 | + | |
35 | +})); | ... | ... |
resource/lib/bootstrap-select/js/i18n/defaults-nl_NL.min.js
0 → 100644
1 | +/*! | |
2 | + * Bootstrap-select v1.7.2 (http://silviomoreto.github.io/bootstrap-select) | |
3 | + * | |
4 | + * Copyright 2013-2015 bootstrap-select | |
5 | + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) | |
6 | + */ | |
7 | +!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"Niets geselecteerd",noneResultsText:"Geen resultaten gevonden voor {0}",countSelectedText:"{0} van {1} geselecteerd",maxOptionsText:["Limiet bereikt ({n} {var} max)","Groep limiet bereikt ({n} {var} max)",["items","item"]],multipleSeparator:", "}}(jQuery)}); | |
0 | 8 | \ No newline at end of file | ... | ... |
resource/lib/bootstrap-select/js/i18n/defaults-pl_PL.js
0 → 100644
1 | +/*! | |
2 | + * Bootstrap-select v1.7.2 (http://silviomoreto.github.io/bootstrap-select) | |
3 | + * | |
4 | + * Copyright 2013-2015 bootstrap-select | |
5 | + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) | |
6 | + */ | |
7 | + | |
8 | +(function (root, factory) { | |
9 | + if (typeof define === 'function' && define.amd) { | |
10 | + // AMD. Register as an anonymous module unless amdModuleId is set | |
11 | + define(["jquery"], function (a0) { | |
12 | + return (factory(a0)); | |
13 | + }); | |
14 | + } else if (typeof exports === 'object') { | |
15 | + // Node. Does not work with strict CommonJS, but | |
16 | + // only CommonJS-like environments that support module.exports, | |
17 | + // like Node. | |
18 | + module.exports = factory(require("jquery")); | |
19 | + } else { | |
20 | + factory(jQuery); | |
21 | + } | |
22 | +}(this, function () { | |
23 | + | |
24 | +(function ($) { | |
25 | + $.fn.selectpicker.defaults = { | |
26 | + noneSelectedText: 'Nic nie zaznaczono', | |
27 | + noneResultsText: 'Brak wyników wyszukiwania {0}', | |
28 | + countSelectedText: 'Zaznaczono {0} z {1}', | |
29 | + maxOptionsText: ['Osiągnięto limit ({n} {var} max)', 'Limit grupy osiągnięty ({n} {var} max)', ['elementy', 'element']], | |
30 | + selectAll: 'Zaznacz wszystkie', | |
31 | + deselectAll: 'Odznacz wszystkie', | |
32 | + multipleSeparator: ', ' | |
33 | + }; | |
34 | +})(jQuery); | |
35 | + | |
36 | + | |
37 | +})); | ... | ... |
resource/lib/bootstrap-select/js/i18n/defaults-pl_PL.min.js
0 → 100644
1 | +/*! | |
2 | + * Bootstrap-select v1.7.2 (http://silviomoreto.github.io/bootstrap-select) | |
3 | + * | |
4 | + * Copyright 2013-2015 bootstrap-select | |
5 | + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) | |
6 | + */ | |
7 | +!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"Nic nie zaznaczono",noneResultsText:"Brak wyników wyszukiwania {0}",countSelectedText:"Zaznaczono {0} z {1}",maxOptionsText:["Osiągnięto limit ({n} {var} max)","Limit grupy osiągnięty ({n} {var} max)",["elementy","element"]],selectAll:"Zaznacz wszystkie",deselectAll:"Odznacz wszystkie",multipleSeparator:", "}}(jQuery)}); | |
0 | 8 | \ No newline at end of file | ... | ... |
resource/lib/bootstrap-select/js/i18n/defaults-pt_BR.js
0 → 100644
1 | +/*! | |
2 | + * Bootstrap-select v1.7.2 (http://silviomoreto.github.io/bootstrap-select) | |
3 | + * | |
4 | + * Copyright 2013-2015 bootstrap-select | |
5 | + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) | |
6 | + */ | |
7 | + | |
8 | +(function (root, factory) { | |
9 | + if (typeof define === 'function' && define.amd) { | |
10 | + // AMD. Register as an anonymous module unless amdModuleId is set | |
11 | + define(["jquery"], function (a0) { | |
12 | + return (factory(a0)); | |
13 | + }); | |
14 | + } else if (typeof exports === 'object') { | |
15 | + // Node. Does not work with strict CommonJS, but | |
16 | + // only CommonJS-like environments that support module.exports, | |
17 | + // like Node. | |
18 | + module.exports = factory(require("jquery")); | |
19 | + } else { | |
20 | + factory(jQuery); | |
21 | + } | |
22 | +}(this, function () { | |
23 | + | |
24 | +(function ($) { | |
25 | + $.fn.selectpicker.defaults = { | |
26 | + noneSelectedText: 'Nada selecionado', | |
27 | + noneResultsText: 'Nada encontrado contendo {0}', | |
28 | + countSelectedText: 'Selecionado {0} de {1}', | |
29 | + maxOptionsText: ['Limite excedido (máx. {n} {var})', 'Limite do grupo excedido (máx. {n} {var})', ['itens', 'item']], | |
30 | + multipleSeparator: ', ' | |
31 | + }; | |
32 | +})(jQuery); | |
33 | + | |
34 | + | |
35 | +})); | ... | ... |
resource/lib/bootstrap-select/js/i18n/defaults-pt_BR.min.js
0 → 100644
1 | +/*! | |
2 | + * Bootstrap-select v1.7.2 (http://silviomoreto.github.io/bootstrap-select) | |
3 | + * | |
4 | + * Copyright 2013-2015 bootstrap-select | |
5 | + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) | |
6 | + */ | |
7 | +!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"Nada selecionado",noneResultsText:"Nada encontrado contendo {0}",countSelectedText:"Selecionado {0} de {1}",maxOptionsText:["Limite excedido (máx. {n} {var})","Limite do grupo excedido (máx. {n} {var})",["itens","item"]],multipleSeparator:", "}}(jQuery)}); | |
0 | 8 | \ No newline at end of file | ... | ... |
resource/lib/bootstrap-select/js/i18n/defaults-pt_PT.js
0 → 100644
1 | +/*! | |
2 | + * Bootstrap-select v1.7.2 (http://silviomoreto.github.io/bootstrap-select) | |
3 | + * | |
4 | + * Copyright 2013-2015 bootstrap-select | |
5 | + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) | |
6 | + */ | |
7 | + | |
8 | +(function (root, factory) { | |
9 | + if (typeof define === 'function' && define.amd) { | |
10 | + // AMD. Register as an anonymous module unless amdModuleId is set | |
11 | + define(["jquery"], function (a0) { | |
12 | + return (factory(a0)); | |
13 | + }); | |
14 | + } else if (typeof exports === 'object') { | |
15 | + // Node. Does not work with strict CommonJS, but | |
16 | + // only CommonJS-like environments that support module.exports, | |
17 | + // like Node. | |
18 | + module.exports = factory(require("jquery")); | |
19 | + } else { | |
20 | + factory(jQuery); | |
21 | + } | |
22 | +}(this, function () { | |
23 | + | |
24 | +(function ($) { | |
25 | +$.fn.selectpicker.defaults = { | |
26 | +noneSelectedText: 'Nenhum seleccionado', | |
27 | +noneResultsText: 'Sem resultados contendo {0}', | |
28 | +countSelectedText: 'Selecionado {0} de {1}', | |
29 | +maxOptionsText: ['Limite ultrapassado (máx. {n} {var})', 'Limite de seleções ultrapassado (máx. {n} {var})', ['itens', 'item']], | |
30 | +multipleSeparator: ', ' | |
31 | +}; | |
32 | +})(jQuery); | |
33 | + | |
34 | + | |
35 | +})); | ... | ... |
resource/lib/bootstrap-select/js/i18n/defaults-pt_PT.min.js
0 → 100644
1 | +/*! | |
2 | + * Bootstrap-select v1.7.2 (http://silviomoreto.github.io/bootstrap-select) | |
3 | + * | |
4 | + * Copyright 2013-2015 bootstrap-select | |
5 | + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) | |
6 | + */ | |
7 | +!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"Nenhum seleccionado",noneResultsText:"Sem resultados contendo {0}",countSelectedText:"Selecionado {0} de {1}",maxOptionsText:["Limite ultrapassado (máx. {n} {var})","Limite de seleções ultrapassado (máx. {n} {var})",["itens","item"]],multipleSeparator:", "}}(jQuery)}); | |
0 | 8 | \ No newline at end of file | ... | ... |
resource/lib/bootstrap-select/js/i18n/defaults-ro_RO.js
0 → 100644
1 | +/*! | |
2 | + * Bootstrap-select v1.7.2 (http://silviomoreto.github.io/bootstrap-select) | |
3 | + * | |
4 | + * Copyright 2013-2015 bootstrap-select | |
5 | + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) | |
6 | + */ | |
7 | + | |
8 | +(function (root, factory) { | |
9 | + if (typeof define === 'function' && define.amd) { | |
10 | + // AMD. Register as an anonymous module unless amdModuleId is set | |
11 | + define(["jquery"], function (a0) { | |
12 | + return (factory(a0)); | |
13 | + }); | |
14 | + } else if (typeof exports === 'object') { | |
15 | + // Node. Does not work with strict CommonJS, but | |
16 | + // only CommonJS-like environments that support module.exports, | |
17 | + // like Node. | |
18 | + module.exports = factory(require("jquery")); | |
19 | + } else { | |
20 | + factory(jQuery); | |
21 | + } | |
22 | +}(this, function () { | |
23 | + | |
24 | +(function ($) { | |
25 | + $.fn.selectpicker.defaults = { | |
26 | + noneSelectedText: 'Nu a fost selectat nimic', | |
27 | + noneResultsText: 'Nu exista niciun rezultat {0}', | |
28 | + countSelectedText: '{0} din {1} selectat(e)', | |
29 | + maxOptionsText: ['Limita a fost atinsa ({n} {var} max)', 'Limita de grup a fost atinsa ({n} {var} max)', ['iteme', 'item']], | |
30 | + multipleSeparator: ', ' | |
31 | + }; | |
32 | +})(jQuery); | |
33 | + | |
34 | + | |
35 | +})); | ... | ... |
resource/lib/bootstrap-select/js/i18n/defaults-ro_RO.min.js
0 → 100644
1 | +/*! | |
2 | + * Bootstrap-select v1.7.2 (http://silviomoreto.github.io/bootstrap-select) | |
3 | + * | |
4 | + * Copyright 2013-2015 bootstrap-select | |
5 | + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) | |
6 | + */ | |
7 | +!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"Nu a fost selectat nimic",noneResultsText:"Nu exista niciun rezultat {0}",countSelectedText:"{0} din {1} selectat(e)",maxOptionsText:["Limita a fost atinsa ({n} {var} max)","Limita de grup a fost atinsa ({n} {var} max)",["iteme","item"]],multipleSeparator:", "}}(jQuery)}); | |
0 | 8 | \ No newline at end of file | ... | ... |
resource/lib/bootstrap-select/js/i18n/defaults-ru_RU.js
0 → 100644
1 | +/*! | |
2 | + * Bootstrap-select v1.7.2 (http://silviomoreto.github.io/bootstrap-select) | |
3 | + * | |
4 | + * Copyright 2013-2015 bootstrap-select | |
5 | + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) | |
6 | + */ | |
7 | + | |
8 | +(function (root, factory) { | |
9 | + if (typeof define === 'function' && define.amd) { | |
10 | + // AMD. Register as an anonymous module unless amdModuleId is set | |
11 | + define(["jquery"], function (a0) { | |
12 | + return (factory(a0)); | |
13 | + }); | |
14 | + } else if (typeof exports === 'object') { | |
15 | + // Node. Does not work with strict CommonJS, but | |
16 | + // only CommonJS-like environments that support module.exports, | |
17 | + // like Node. | |
18 | + module.exports = factory(require("jquery")); | |
19 | + } else { | |
20 | + factory(jQuery); | |
21 | + } | |
22 | +}(this, function () { | |
23 | + | |
24 | +(function ($) { | |
25 | + $.fn.selectpicker.defaults = { | |
26 | + noneSelectedText: 'Ничего не выбрано', | |
27 | + noneResultsText: 'Совпадений не найдено {0}', | |
28 | + countSelectedText: 'Выбрано {0} из {1}', | |
29 | + maxOptionsText: ['Достигнут предел ({n} {var} максимум)', 'Достигнут предел в группе ({n} {var} максимум)', ['items', 'item']], | |
30 | + doneButtonText: 'Закрыть', | |
31 | + multipleSeparator: ', ' | |
32 | + }; | |
33 | +})(jQuery); | |
34 | + | |
35 | + | |
36 | +})); | ... | ... |
resource/lib/bootstrap-select/js/i18n/defaults-ru_RU.min.js
0 → 100644
1 | +/*! | |
2 | + * Bootstrap-select v1.7.2 (http://silviomoreto.github.io/bootstrap-select) | |
3 | + * | |
4 | + * Copyright 2013-2015 bootstrap-select | |
5 | + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) | |
6 | + */ | |
7 | +!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"Ничего не выбрано",noneResultsText:"Совпадений не найдено {0}",countSelectedText:"Выбрано {0} из {1}",maxOptionsText:["Достигнут предел ({n} {var} максимум)","Достигнут предел в группе ({n} {var} максимум)",["items","item"]],doneButtonText:"Закрыть",multipleSeparator:", "}}(jQuery)}); | |
0 | 8 | \ No newline at end of file | ... | ... |
resource/lib/bootstrap-select/js/i18n/defaults-sk_SK.js
0 → 100644
1 | +/*! | |
2 | + * Bootstrap-select v1.7.2 (http://silviomoreto.github.io/bootstrap-select) | |
3 | + * | |
4 | + * Copyright 2013-2015 bootstrap-select | |
5 | + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) | |
6 | + */ | |
7 | + | |
8 | +(function (root, factory) { | |
9 | + if (typeof define === 'function' && define.amd) { | |
10 | + // AMD. Register as an anonymous module unless amdModuleId is set | |
11 | + define(["jquery"], function (a0) { | |
12 | + return (factory(a0)); | |
13 | + }); | |
14 | + } else if (typeof exports === 'object') { | |
15 | + // Node. Does not work with strict CommonJS, but | |
16 | + // only CommonJS-like environments that support module.exports, | |
17 | + // like Node. | |
18 | + module.exports = factory(require("jquery")); | |
19 | + } else { | |
20 | + factory(jQuery); | |
21 | + } | |
22 | +}(this, function () { | |
23 | + | |
24 | +(function ($) { | |
25 | + $.fn.selectpicker.defaults = { | |
26 | + noneSelectedText: 'Vyberte zo zoznamu', | |
27 | + noneResultsText: 'Pre výraz {0} neboli nájdené žiadne výsledky', | |
28 | + countSelectedText: 'Vybrané {0} z {1}', | |
29 | + maxOptionsText: ['Limit prekročený ({n} {var} max)', 'Limit skupiny prekročený ({n} {var} max)', ['položiek', 'položka']], | |
30 | + selectAllText: 'Vybrať všetky', | |
31 | + deselectAllText: 'Zrušiť výber', | |
32 | + multipleSeparator: ', ' | |
33 | + }; | |
34 | +})(jQuery); | |
35 | + | |
36 | + | |
37 | +})); | ... | ... |
resource/lib/bootstrap-select/js/i18n/defaults-sk_SK.min.js
0 → 100644
1 | +/*! | |
2 | + * Bootstrap-select v1.7.2 (http://silviomoreto.github.io/bootstrap-select) | |
3 | + * | |
4 | + * Copyright 2013-2015 bootstrap-select | |
5 | + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) | |
6 | + */ | |
7 | +!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"Vyberte zo zoznamu",noneResultsText:"Pre výraz {0} neboli nájdené žiadne výsledky",countSelectedText:"Vybrané {0} z {1}",maxOptionsText:["Limit prekročený ({n} {var} max)","Limit skupiny prekročený ({n} {var} max)",["položiek","položka"]],selectAllText:"Vybrať všetky",deselectAllText:"Zrušiť výber",multipleSeparator:", "}}(jQuery)}); | |
0 | 8 | \ No newline at end of file | ... | ... |
resource/lib/bootstrap-select/js/i18n/defaults-sl_SI.js
0 → 100644
1 | +/*! | |
2 | + * Bootstrap-select v1.7.2 (http://silviomoreto.github.io/bootstrap-select) | |
3 | + * | |
4 | + * Copyright 2013-2015 bootstrap-select | |
5 | + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) | |
6 | + */ | |
7 | + | |
8 | +(function (root, factory) { | |
9 | + if (typeof define === 'function' && define.amd) { | |
10 | + // AMD. Register as an anonymous module unless amdModuleId is set | |
11 | + define(["jquery"], function (a0) { | |
12 | + return (factory(a0)); | |
13 | + }); | |
14 | + } else if (typeof exports === 'object') { | |
15 | + // Node. Does not work with strict CommonJS, but | |
16 | + // only CommonJS-like environments that support module.exports, | |
17 | + // like Node. | |
18 | + module.exports = factory(require("jquery")); | |
19 | + } else { | |
20 | + factory(jQuery); | |
21 | + } | |
22 | +}(this, function () { | |
23 | + | |
24 | +(function ($) { | |
25 | + $.fn.selectpicker.defaults = { | |
26 | + noneSelectedText: 'Nič izbranega', | |
27 | + noneResultsText: 'Ni zadetkov za {0}', | |
28 | + countSelectedText: function (numSelected, numTotal) { | |
29 | + "Število izbranih: {0}"; | |
30 | + }, | |
31 | + maxOptionsText: function (numAll, numGroup) { | |
32 | + return [ | |
33 | + 'Omejitev dosežena (max. izbranih: {n})', | |
34 | + 'Omejitev skupine dosežena (max. izbranih: {n})' | |
35 | + ]; | |
36 | + }, | |
37 | + selectAllText: 'Izberi vse', | |
38 | + deselectAllText: 'Počisti izbor', | |
39 | + multipleSeparator: ', ' | |
40 | + }; | |
41 | +})(jQuery); | |
42 | + | |
43 | + | |
44 | +})); | ... | ... |
resource/lib/bootstrap-select/js/i18n/defaults-sl_SI.min.js
0 → 100644
1 | +/*! | |
2 | + * Bootstrap-select v1.7.2 (http://silviomoreto.github.io/bootstrap-select) | |
3 | + * | |
4 | + * Copyright 2013-2015 bootstrap-select | |
5 | + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) | |
6 | + */ | |
7 | +!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"Nič izbranega",noneResultsText:"Ni zadetkov za {0}",countSelectedText:function(a,b){"Število izbranih: {0}"},maxOptionsText:function(a,b){return["Omejitev dosežena (max. izbranih: {n})","Omejitev skupine dosežena (max. izbranih: {n})"]},selectAllText:"Izberi vse",deselectAllText:"Počisti izbor",multipleSeparator:", "}}(jQuery)}); | |
0 | 8 | \ No newline at end of file | ... | ... |
resource/lib/bootstrap-select/js/i18n/defaults-sv_SE.js
0 → 100644
1 | +/*! | |
2 | + * Bootstrap-select v1.7.2 (http://silviomoreto.github.io/bootstrap-select) | |
3 | + * | |
4 | + * Copyright 2013-2015 bootstrap-select | |
5 | + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) | |
6 | + */ | |
7 | + | |
8 | +(function (root, factory) { | |
9 | + if (typeof define === 'function' && define.amd) { | |
10 | + // AMD. Register as an anonymous module unless amdModuleId is set | |
11 | + define(["jquery"], function (a0) { | |
12 | + return (factory(a0)); | |
13 | + }); | |
14 | + } else if (typeof exports === 'object') { | |
15 | + // Node. Does not work with strict CommonJS, but | |
16 | + // only CommonJS-like environments that support module.exports, | |
17 | + // like Node. | |
18 | + module.exports = factory(require("jquery")); | |
19 | + } else { | |
20 | + factory(jQuery); | |
21 | + } | |
22 | +}(this, function () { | |
23 | + | |
24 | +(function ($) { | |
25 | + $.fn.selectpicker.defaults = { | |
26 | + noneSelectedText: 'Inget valt', | |
27 | + noneResultsText: 'Inget sökresultat matchar {0}', | |
28 | + countSelectedText: function (numSelected, numTotal) { | |
29 | + return (numSelected === 1) ? "{0} alternativ valt" : "{0} alternativ valda"; | |
30 | + }, | |
31 | + maxOptionsText: function (numAll, numGroup) { | |
32 | + return [ | |
33 | + 'Gräns uppnåd (max {n} alternativ)', | |
34 | + 'Gräns uppnåd (max {n} gruppalternativ)' | |
35 | + ]; | |
36 | + }, | |
37 | + selectAllText: 'Markera alla', | |
38 | + deselectAllText: 'Avmarkera alla', | |
39 | + multipleSeparator: ', ' | |
40 | + }; | |
41 | +})(jQuery); | |
42 | + | |
43 | + | |
44 | +})); | ... | ... |
resource/lib/bootstrap-select/js/i18n/defaults-sv_SE.min.js
0 → 100644
1 | +/*! | |
2 | + * Bootstrap-select v1.7.2 (http://silviomoreto.github.io/bootstrap-select) | |
3 | + * | |
4 | + * Copyright 2013-2015 bootstrap-select | |
5 | + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) | |
6 | + */ | |
7 | +!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"Inget valt",noneResultsText:"Inget sökresultat matchar {0}",countSelectedText:function(a,b){return 1===a?"{0} alternativ valt":"{0} alternativ valda"},maxOptionsText:function(a,b){return["Gräns uppnåd (max {n} alternativ)","Gräns uppnåd (max {n} gruppalternativ)"]},selectAllText:"Markera alla",deselectAllText:"Avmarkera alla",multipleSeparator:", "}}(jQuery)}); | |
0 | 8 | \ No newline at end of file | ... | ... |
resource/lib/bootstrap-select/js/i18n/defaults-tr_TR.js
0 → 100644
1 | +/*! | |
2 | + * Bootstrap-select v1.7.2 (http://silviomoreto.github.io/bootstrap-select) | |
3 | + * | |
4 | + * Copyright 2013-2015 bootstrap-select | |
5 | + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) | |
6 | + */ | |
7 | + | |
8 | +(function (root, factory) { | |
9 | + if (typeof define === 'function' && define.amd) { | |
10 | + // AMD. Register as an anonymous module unless amdModuleId is set | |
11 | + define(["jquery"], function (a0) { | |
12 | + return (factory(a0)); | |
13 | + }); | |
14 | + } else if (typeof exports === 'object') { | |
15 | + // Node. Does not work with strict CommonJS, but | |
16 | + // only CommonJS-like environments that support module.exports, | |
17 | + // like Node. | |
18 | + module.exports = factory(require("jquery")); | |
19 | + } else { | |
20 | + factory(jQuery); | |
21 | + } | |
22 | +}(this, function () { | |
23 | + | |
24 | +(function ($) { | |
25 | + $.fn.selectpicker.defaults = { | |
26 | + noneSelectedText: 'Hiçbiri seçilmedi', | |
27 | + noneResultsText: 'Hiçbir sonuç bulunamadı {0}', | |
28 | + countSelectedText: function (numSelected, numTotal) { | |
29 | + return (numSelected == 1) ? "{0} öğe seçildi" : "{0} öğe seçildi"; | |
30 | + }, | |
31 | + maxOptionsText: function (numAll, numGroup) { | |
32 | + return [ | |
33 | + (numAll == 1) ? 'Limit aşıldı (maksimum {n} sayıda öğe )' : 'Limit aşıldı (maksimum {n} sayıda öğe)', | |
34 | + (numGroup == 1) ? 'Grup limiti aşıldı (maksimum {n} sayıda öğe)' : 'Grup limiti aşıldı (maksimum {n} sayıda öğe)' | |
35 | + ]; | |
36 | + }, | |
37 | + selectAllText: 'Tümünü Seç', | |
38 | + deselectAllText: 'Seçiniz', | |
39 | + multipleSeparator: ', ' | |
40 | + }; | |
41 | +})(jQuery); | |
42 | + | |
43 | + | |
44 | +})); | ... | ... |
resource/lib/bootstrap-select/js/i18n/defaults-tr_TR.min.js
0 → 100644
1 | +/*! | |
2 | + * Bootstrap-select v1.7.2 (http://silviomoreto.github.io/bootstrap-select) | |
3 | + * | |
4 | + * Copyright 2013-2015 bootstrap-select | |
5 | + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) | |
6 | + */ | |
7 | +!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"Hiçbiri seçilmedi",noneResultsText:"Hiçbir sonuç bulunamadı {0}",countSelectedText:function(a,b){return"{0} öğe seçildi"},maxOptionsText:function(a,b){return[1==a?"Limit aşıldı (maksimum {n} sayıda öğe )":"Limit aşıldı (maksimum {n} sayıda öğe)","Grup limiti aşıldı (maksimum {n} sayıda öğe)"]},selectAllText:"Tümünü Seç",deselectAllText:"Seçiniz",multipleSeparator:", "}}(jQuery)}); | |
0 | 8 | \ No newline at end of file | ... | ... |
resource/lib/bootstrap-select/js/i18n/defaults-ua_UA.js
0 → 100644
1 | +/*! | |
2 | + * Bootstrap-select v1.7.2 (http://silviomoreto.github.io/bootstrap-select) | |
3 | + * | |
4 | + * Copyright 2013-2015 bootstrap-select | |
5 | + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) | |
6 | + */ | |
7 | + | |
8 | +(function (root, factory) { | |
9 | + if (typeof define === 'function' && define.amd) { | |
10 | + // AMD. Register as an anonymous module unless amdModuleId is set | |
11 | + define(["jquery"], function (a0) { | |
12 | + return (factory(a0)); | |
13 | + }); | |
14 | + } else if (typeof exports === 'object') { | |
15 | + // Node. Does not work with strict CommonJS, but | |
16 | + // only CommonJS-like environments that support module.exports, | |
17 | + // like Node. | |
18 | + module.exports = factory(require("jquery")); | |
19 | + } else { | |
20 | + factory(jQuery); | |
21 | + } | |
22 | +}(this, function () { | |
23 | + | |
24 | +(function ($) { | |
25 | + $.fn.selectpicker.defaults = { | |
26 | + noneSelectedText: 'Нічого не вибрано', | |
27 | + noneResultsText: 'Збігів не знайдено {0}', | |
28 | + countSelectedText: 'Вибрано {0} із {1}', | |
29 | + maxOptionsText: ['Досягнута межа ({n} {var} максимум)', 'Досягнута межа в групі ({n} {var} максимум)', ['items', 'item']], | |
30 | + multipleSeparator: ', ' | |
31 | + }; | |
32 | +})(jQuery); | |
33 | + | |
34 | + | |
35 | +})); | ... | ... |
resource/lib/bootstrap-select/js/i18n/defaults-ua_UA.min.js
0 → 100644
1 | +/*! | |
2 | + * Bootstrap-select v1.7.2 (http://silviomoreto.github.io/bootstrap-select) | |
3 | + * | |
4 | + * Copyright 2013-2015 bootstrap-select | |
5 | + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) | |
6 | + */ | |
7 | +!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"Нічого не вибрано",noneResultsText:"Збігів не знайдено {0}",countSelectedText:"Вибрано {0} із {1}",maxOptionsText:["Досягнута межа ({n} {var} максимум)","Досягнута межа в групі ({n} {var} максимум)",["items","item"]],multipleSeparator:", "}}(jQuery)}); | |
0 | 8 | \ No newline at end of file | ... | ... |
resource/lib/bootstrap-select/js/i18n/defaults-zh_CN.js
0 → 100644
1 | +/*! | |
2 | + * Bootstrap-select v1.7.2 (http://silviomoreto.github.io/bootstrap-select) | |
3 | + * | |
4 | + * Copyright 2013-2015 bootstrap-select | |
5 | + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) | |
6 | + */ | |
7 | + | |
8 | +(function (root, factory) { | |
9 | + if (typeof define === 'function' && define.amd) { | |
10 | + // AMD. Register as an anonymous module unless amdModuleId is set | |
11 | + define(["jquery"], function (a0) { | |
12 | + return (factory(a0)); | |
13 | + }); | |
14 | + } else if (typeof exports === 'object') { | |
15 | + // Node. Does not work with strict CommonJS, but | |
16 | + // only CommonJS-like environments that support module.exports, | |
17 | + // like Node. | |
18 | + module.exports = factory(require("jquery")); | |
19 | + } else { | |
20 | + factory(jQuery); | |
21 | + } | |
22 | +}(this, function () { | |
23 | + | |
24 | +(function ($) { | |
25 | + $.fn.selectpicker.defaults = { | |
26 | + noneSelectedText: '没有选中任何项', | |
27 | + noneResultsText: '没有找到匹配项', | |
28 | + countSelectedText: '选中{1}中的{0}项', | |
29 | + maxOptionsText: ['超出限制 (最多选择{n}项)', '组选择超出限制(最多选择{n}组)'], | |
30 | + multipleSeparator: ', ' | |
31 | + }; | |
32 | +})(jQuery); | |
33 | + | |
34 | + | |
35 | +})); | ... | ... |
resource/lib/bootstrap-select/js/i18n/defaults-zh_CN.min.js
0 → 100644
1 | +/*! | |
2 | + * Bootstrap-select v1.7.2 (http://silviomoreto.github.io/bootstrap-select) | |
3 | + * | |
4 | + * Copyright 2013-2015 bootstrap-select | |
5 | + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) | |
6 | + */ | |
7 | +!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"没有选中任何项",noneResultsText:"没有找到匹配项",countSelectedText:"选中{1}中的{0}项",maxOptionsText:["超出限制 (最多选择{n}项)","组选择超出限制(最多选择{n}组)"],multipleSeparator:", "}}(jQuery)}); | |
0 | 8 | \ No newline at end of file | ... | ... |
resource/lib/bootstrap-select/js/i18n/defaults-zh_TW.js
0 → 100644
1 | +/*! | |
2 | + * Bootstrap-select v1.7.2 (http://silviomoreto.github.io/bootstrap-select) | |
3 | + * | |
4 | + * Copyright 2013-2015 bootstrap-select | |
5 | + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) | |
6 | + */ | |
7 | + | |
8 | +(function (root, factory) { | |
9 | + if (typeof define === 'function' && define.amd) { | |
10 | + // AMD. Register as an anonymous module unless amdModuleId is set | |
11 | + define(["jquery"], function (a0) { | |
12 | + return (factory(a0)); | |
13 | + }); | |
14 | + } else if (typeof exports === 'object') { | |
15 | + // Node. Does not work with strict CommonJS, but | |
16 | + // only CommonJS-like environments that support module.exports, | |
17 | + // like Node. | |
18 | + module.exports = factory(require("jquery")); | |
19 | + } else { | |
20 | + factory(jQuery); | |
21 | + } | |
22 | +}(this, function () { | |
23 | + | |
24 | +(function ($) { | |
25 | + $.fn.selectpicker.defaults = { | |
26 | + noneSelectedText: '沒有選取任何項目', | |
27 | + noneResultsText: '沒有找到符合的結果', | |
28 | + countSelectedText: '已經選取{0}個項目', | |
29 | + maxOptionsText: ['超過限制 (最多選擇{n}項)', '超過限制(最多選擇{n}組)'], | |
30 | + selectAllText: '選取全部', | |
31 | + deselectAllText: '全部取消', | |
32 | + multipleSeparator: ', ' | |
33 | + }; | |
34 | +})(jQuery); | |
35 | + | |
36 | + | |
37 | +})); | ... | ... |
resource/lib/bootstrap-select/js/i18n/defaults-zh_TW.min.js
0 → 100644
1 | +/*! | |
2 | + * Bootstrap-select v1.7.2 (http://silviomoreto.github.io/bootstrap-select) | |
3 | + * | |
4 | + * Copyright 2013-2015 bootstrap-select | |
5 | + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) | |
6 | + */ | |
7 | +!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"沒有選取任何項目",noneResultsText:"沒有找到符合的結果",countSelectedText:"已經選取{0}個項目",maxOptionsText:["超過限制 (最多選擇{n}項)","超過限制(最多選擇{n}組)"],selectAllText:"選取全部",deselectAllText:"全部取消",multipleSeparator:", "}}(jQuery)}); | |
0 | 8 | \ No newline at end of file | ... | ... |
resource/lib/bootstrap-table/bootstrap-table-fixed-columns.css
0 → 100644
1 | +.fixed-table-header-columns, | |
2 | +.fixed-table-body-columns { | |
3 | + position: absolute; | |
4 | + background-color: #fff; | |
5 | + display: none; | |
6 | + box-sizing: border-box; | |
7 | + overflow: hidden; | |
8 | +} | |
9 | + | |
10 | +.fixed-table-header-columns .table, | |
11 | +.fixed-table-body-columns .table { | |
12 | + border-right: 1px solid #ddd; | |
13 | +} | |
14 | + | |
15 | +.fixed-table-header-columns .table.table-no-bordered, | |
16 | +.fixed-table-body-columns .table.table-no-bordered { | |
17 | + border-right: 1px solid transparent; | |
18 | +} | |
19 | + | |
20 | +.fixed-table-body-columns table { | |
21 | + position: absolute; | |
22 | + animation: none; | |
23 | +} | |
24 | + | |
25 | +.bootstrap-table .table-hover > tbody > tr.hover > td{ | |
26 | + background-color: #f5f5f5; | |
27 | +} | |
0 | 28 | \ No newline at end of file | ... | ... |
resource/lib/bootstrap-table/bootstrap-table-fixed-columns.js
0 → 100755
1 | +(function ($) { | |
2 | + 'use strict'; | |
3 | + | |
4 | + $.extend($.fn.bootstrapTable.defaults, { | |
5 | + leftFixedColumns: false, | |
6 | + leftFixedNumber: 1, | |
7 | + rightFixedColumns: false, | |
8 | + rightFixedNumber: 1 | |
9 | + }); | |
10 | + | |
11 | + var BootstrapTable = $.fn.bootstrapTable.Constructor, | |
12 | + _initHeader = BootstrapTable.prototype.initHeader, | |
13 | + _initBody = BootstrapTable.prototype.initBody, | |
14 | + _resetView = BootstrapTable.prototype.resetView; | |
15 | + | |
16 | + BootstrapTable.prototype.initFixedColumns = function () { | |
17 | + this.timeoutHeaderColumns_ = 0; | |
18 | + this.timeoutBodyColumns_ = 0; | |
19 | + if (this.options.leftFixedColumns) { | |
20 | + this.$fixedBody = $([ | |
21 | + '<div class="fixed-table-column" style="position: absolute; background-color: #fff;">', | |
22 | + '<table>', | |
23 | + '<thead></thead>', | |
24 | + '<tbody></tbody>', | |
25 | + '</table>', | |
26 | + '</div>'].join('')); | |
27 | + | |
28 | + | |
29 | + this.$fixedBody.find('table').attr('class', this.$el.attr('class')); | |
30 | + this.$fixedHeaderColumns = this.$fixedBody.find('thead'); | |
31 | + this.$fixedBodyColumns = this.$fixedBody.find('tbody'); | |
32 | + this.$tableBody.before(this.$fixedBody); | |
33 | + } | |
34 | + if (this.options.rightFixedColumns) { | |
35 | + this.$rightfixedBody = $([ | |
36 | + '<div class="fixed-table-column" style="position: absolute;right:0px; background-color: #fff; ">', | |
37 | + '<table>', | |
38 | + '<thead></thead>', | |
39 | + '<tbody></tbody>', | |
40 | + '</table>', | |
41 | + '</div>'].join('')); | |
42 | + | |
43 | + this.$rightfixedBody.find('table').attr('class', this.$el.attr('class')); | |
44 | + this.$rightfixedHeaderColumns = this.$rightfixedBody.find('thead'); | |
45 | + this.$rightfixedBodyColumns = this.$rightfixedBody.find('tbody'); | |
46 | + this.$tableBody.before(this.$rightfixedBody); | |
47 | + } | |
48 | + }; | |
49 | + | |
50 | + BootstrapTable.prototype.initHeader = function () { | |
51 | + _initHeader.apply(this, Array.prototype.slice.apply(arguments)); | |
52 | + | |
53 | + if (!this.options.leftFixedColumns && !this.options.rightFixedColumns){ | |
54 | + return; | |
55 | + } | |
56 | + this.initFixedColumns(); | |
57 | + | |
58 | + var $tr = this.$header.find('tr:eq(0)').clone(), | |
59 | + $ths = $tr.clone().find('th'); | |
60 | + | |
61 | + $tr.html(''); | |
62 | + //左边列冻结 | |
63 | + if (this.options.leftFixedColumns) { | |
64 | + for (var i = 0; i < this.options.leftFixedNumber; i++) { | |
65 | + $tr.append($ths.eq(i).clone()); | |
66 | + } | |
67 | + this.$fixedHeaderColumns.html('').append($tr); | |
68 | + } | |
69 | + | |
70 | + //右边列冻结 | |
71 | + if (this.options.rightFixedColumns) { | |
72 | + for (var i = 0; i < this.options.rightFixedNumber; i++) { | |
73 | + $tr.append($ths.eq($ths.length - this.options.rightFixedNumber + i).clone()); | |
74 | + } | |
75 | + this.$rightfixedHeaderColumns.html('').append($tr); | |
76 | + } | |
77 | + }; | |
78 | + | |
79 | + BootstrapTable.prototype.initBody = function () { | |
80 | + _initBody.apply(this, Array.prototype.slice.apply(arguments)); | |
81 | + | |
82 | + if (!this.options.leftFixedColumns && !this.options.rightFixedColumns) { | |
83 | + return; | |
84 | + } | |
85 | + | |
86 | + var that = this; | |
87 | + if (this.options.leftFixedColumns) { | |
88 | + this.$fixedBodyColumns.html(''); | |
89 | + this.$body.find('> tr[data-index]').each(function () { | |
90 | + var $tr = $(this).clone(), | |
91 | + $tds = $tr.clone().find('td'); | |
92 | + | |
93 | + $tr.html(''); | |
94 | + for (var i = 0; i < that.options.leftFixedNumber; i++) { | |
95 | + $tr.append($tds.eq(i).clone()); | |
96 | + } | |
97 | + that.$fixedBodyColumns.append($tr); | |
98 | + }); | |
99 | + } | |
100 | + if (this.options.rightFixedColumns) { | |
101 | + this.$rightfixedBodyColumns.html(''); | |
102 | + this.$body.find('> tr[data-index]').each(function () { | |
103 | + var $tr = $(this).clone(), | |
104 | + $tds = $tr.clone().find('td'); | |
105 | + | |
106 | + $tr.html(''); | |
107 | + for (var i = 0; i < that.options.rightFixedNumber; i++) { | |
108 | + var indexTd = $tds.length - that.options.rightFixedNumber + i; | |
109 | + var oldTd = $tds.eq(indexTd); | |
110 | + var fixTd = oldTd.clone(); | |
111 | + var buttons = fixTd.find('button'); | |
112 | + //事件转移:冻结列里面的事件转移到实际按钮的事件 | |
113 | + buttons.each(function (key, item) { | |
114 | + $(item).click(function () { | |
115 | + that.$body.find("tr[data-index=" + $tr.attr('data-index') + "] td:eq(" + indexTd + ") button:eq(" + key + ")").click(); | |
116 | + }); | |
117 | + }); | |
118 | + $tr.append(fixTd); | |
119 | + } | |
120 | + that.$rightfixedBodyColumns.append($tr); | |
121 | + }); | |
122 | + } | |
123 | + }; | |
124 | + | |
125 | + BootstrapTable.prototype.resetView = function () { | |
126 | + _resetView.apply(this, Array.prototype.slice.apply(arguments)); | |
127 | + | |
128 | + if (!this.options.leftFixedColumns && !this.options.rightFixedColumns) { | |
129 | + return; | |
130 | + } | |
131 | + | |
132 | + clearTimeout(this.timeoutHeaderColumns_); | |
133 | + this.timeoutHeaderColumns_ = setTimeout($.proxy(this.fitHeaderColumns, this), this.$el.is(':hidden') ? 100 : 0); | |
134 | + | |
135 | + clearTimeout(this.timeoutBodyColumns_); | |
136 | + this.timeoutBodyColumns_ = setTimeout($.proxy(this.fitBodyColumns, this), this.$el.is(':hidden') ? 100 : 0); | |
137 | + }; | |
138 | + | |
139 | + BootstrapTable.prototype.fitHeaderColumns = function () { | |
140 | + var that = this, | |
141 | + visibleFields = this.getVisibleFields(), | |
142 | + headerWidth = 0; | |
143 | + if (that.options.leftFixedColumns) { | |
144 | + this.$body.find('tr:first-child:not(.no-records-found) > *').each(function (i) { | |
145 | + var $this = $(this), | |
146 | + index = i; | |
147 | + | |
148 | + if (i >= that.options.leftFixedNumber) { | |
149 | + return false; | |
150 | + } | |
151 | + | |
152 | + if (that.options.detailView && !that.options.cardView) { | |
153 | + index = i - 1; | |
154 | + } | |
155 | + | |
156 | + that.$fixedBody.find('thead th[data-field="' + visibleFields[index] + '"]') | |
157 | + .find('.fht-cell').width($this.innerWidth() - 1); | |
158 | + headerWidth += $this.outerWidth(); | |
159 | + }); | |
160 | + this.$fixedBody.width(headerWidth - 1).show(); | |
161 | + } | |
162 | + if (that.options.rightFixedColumns) { | |
163 | + this.$body.find('tr:first-child:not(.no-records-found) > *').each(function (i) { | |
164 | + var $this = $(this), | |
165 | + index = i; | |
166 | + | |
167 | + if (i >= visibleFields.length - that.options.rightFixedNumber) { | |
168 | + //return false; | |
169 | + | |
170 | + | |
171 | + //if (that.options.detailView && !that.options.cardView) { | |
172 | + // index = i - 1; | |
173 | + //} | |
174 | + // debugger; | |
175 | + that.$rightfixedBody.find('thead th[data-field="' + visibleFields[index] + '"]') | |
176 | + .find('.fht-cell').width($this.innerWidth() - 1); | |
177 | + headerWidth += $this.outerWidth(); | |
178 | + } | |
179 | + }); | |
180 | + this.$rightfixedBody.width(headerWidth - 1).show(); | |
181 | + } | |
182 | + }; | |
183 | + | |
184 | + BootstrapTable.prototype.fitBodyColumns = function () { | |
185 | + var that = this, | |
186 | + top = -(parseInt(this.$el.css('margin-top')) - 2), | |
187 | + height = this.$tableBody.height() - 2; | |
188 | + | |
189 | + if (that.options.leftFixedColumns) { | |
190 | + if (!this.$body.find('> tr[data-index]').length) { | |
191 | + this.$fixedBody.hide(); | |
192 | + return; | |
193 | + } | |
194 | + | |
195 | + this.$body.find('> tr').each(function (i) { | |
196 | + that.$fixedBody.find('tbody tr:eq(' + i + ')').height($(this).height()); | |
197 | + }); | |
198 | + | |
199 | + //// events | |
200 | + this.$tableBody.on('scroll', function () { | |
201 | + that.$fixedBody.find('table').css('top', -$(this).scrollTop()); | |
202 | + }); | |
203 | + this.$body.find('> tr[data-index]').off('hover').hover(function () { | |
204 | + var index = $(this).data('index'); | |
205 | + that.$fixedBody.find('tr[data-index="' + index + '"]').addClass('hover'); | |
206 | + }, function () { | |
207 | + var index = $(this).data('index'); | |
208 | + that.$fixedBody.find('tr[data-index="' + index + '"]').removeClass('hover'); | |
209 | + }); | |
210 | + this.$fixedBody.find('tr[data-index]').off('hover').hover(function () { | |
211 | + var index = $(this).data('index'); | |
212 | + that.$body.find('tr[data-index="' + index + '"]').addClass('hover'); | |
213 | + }, function () { | |
214 | + var index = $(this).data('index'); | |
215 | + that.$body.find('> tr[data-index="' + index + '"]').removeClass('hover'); | |
216 | + }); | |
217 | + } | |
218 | + if (that.options.rightFixedColumns) { | |
219 | + if (!this.$body.find('> tr[data-index]').length) { | |
220 | + this.$rightfixedBody.hide(); | |
221 | + return; | |
222 | + } | |
223 | + | |
224 | + this.$body.find('> tr').each(function (i) { | |
225 | + that.$rightfixedBody.find('tbody tr:eq(' + i + ')').height($(this).height()); | |
226 | + }); | |
227 | + | |
228 | + //// events | |
229 | + this.$tableBody.on('scroll', function () { | |
230 | + that.$rightfixedBody.find('table').css('top', -$(this).scrollTop()); | |
231 | + }); | |
232 | + this.$body.find('> tr[data-index]').off('hover').hover(function () { | |
233 | + var index = $(this).data('index'); | |
234 | + that.$rightfixedBody.find('tr[data-index="' + index + '"]').addClass('hover'); | |
235 | + }, function () { | |
236 | + var index = $(this).data('index'); | |
237 | + that.$rightfixedBody.find('tr[data-index="' + index + '"]').removeClass('hover'); | |
238 | + }); | |
239 | + this.$rightfixedBody.find('tr[data-index]').off('hover').hover(function () { | |
240 | + var index = $(this).data('index'); | |
241 | + that.$body.find('tr[data-index="' + index + '"]').addClass('hover'); | |
242 | + }, function () { | |
243 | + var index = $(this).data('index'); | |
244 | + that.$body.find('> tr[data-index="' + index + '"]').removeClass('hover'); | |
245 | + }); | |
246 | + } | |
247 | + }; | |
248 | + | |
249 | +})(jQuery); | |
0 | 250 | \ No newline at end of file | ... | ... |
resource/lib/bootstrap-table/bootstrap-table-zh-CN.js
0 → 100644
1 | +/** | |
2 | + * Bootstrap Table Chinese translation | |
3 | + * Author: Zhixin Wen<wenzhixin2010@gmail.com> | |
4 | + */ | |
5 | +(function ($) { | |
6 | + 'use strict'; | |
7 | + | |
8 | + $.fn.bootstrapTable.locales['zh-CN'] = { | |
9 | + formatLoadingMessage: function () { | |
10 | + return '<div class="spinner">'+ | |
11 | + '<div class="spinner-container container1">'+ | |
12 | + '<div class="circle1"></div>'+ | |
13 | + '<div class="circle2"></div>'+ | |
14 | + '<div class="circle3"></div>'+ | |
15 | + '<div class="circle4"></div>'+ | |
16 | + '</div>'+ | |
17 | + '<div class="spinner-container container2">'+ | |
18 | + '<div class="circle1"></div>'+ | |
19 | + '<div class="circle2"></div>'+ | |
20 | + '<div class="circle3"></div>'+ | |
21 | + '<div class="circle4"></div>'+ | |
22 | + '</div>'+ | |
23 | + '<div class="spinner-container container3">'+ | |
24 | + '<div class="circle1"></div>'+ | |
25 | + '<div class="circle2"></div>'+ | |
26 | + '<div class="circle3"></div>'+ | |
27 | + '<div class="circle4"></div>'+ | |
28 | + '</div>'+ | |
29 | + '</div>'; | |
30 | + }, | |
31 | + formatRecordsPerPage: function (pageNumber) { | |
32 | + return '每页 ' + pageNumber + ' 条'; | |
33 | + }, | |
34 | + formatShowingRows: function (pageFrom, pageTo, totalRows) { | |
35 | + return '总共 ' + totalRows + ' 条 '; | |
36 | + }, | |
37 | + formatSearch: function () { | |
38 | + return '搜索'; | |
39 | + }, | |
40 | + formatNoMatches: function () { | |
41 | + return '<div class="formatNoMatches"></div>暂无数据'; | |
42 | + }, | |
43 | + formatPaginationSwitch: function () { | |
44 | + return '隐藏/显示分页'; | |
45 | + }, | |
46 | + formatRefresh: function () { | |
47 | + return '刷新'; | |
48 | + }, | |
49 | + formatToggle: function () { | |
50 | + return '切换'; | |
51 | + }, | |
52 | + formatColumns: function () { | |
53 | + return '列'; | |
54 | + }, | |
55 | + formatExport: function () { | |
56 | + return '导出数据'; | |
57 | + }, | |
58 | + formatClearFilters: function () { | |
59 | + return '清空过滤'; | |
60 | + } | |
61 | + }; | |
62 | + | |
63 | + $.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales['zh-CN']); | |
64 | + | |
65 | +})(jQuery); | |
0 | 66 | \ No newline at end of file | ... | ... |
resource/lib/bootstrap-table/bootstrap-table.min.css
0 → 100644
1 | +.fixed-table-container .bs-checkbox,.fixed-table-container .no-records-found{text-align:center}.fixed-table-body thead th .th-inner,.table td,.table th{box-sizing:border-box}.bootstrap-table .table{margin-bottom:0!important;border-bottom:1px solid #ddd;border-collapse:collapse!important;border-radius:1px}.bootstrap-table .table:not(.table-condensed),.bootstrap-table .table:not(.table-condensed)>tbody>tr>td,.bootstrap-table .table:not(.table-condensed)>tbody>tr>th,.bootstrap-table .table:not(.table-condensed)>tfoot>tr>td,.bootstrap-table .table:not(.table-condensed)>tfoot>tr>th,.bootstrap-table .table:not(.table-condensed)>thead>tr>td{padding:8px}.bootstrap-table .table.table-no-bordered>tbody>tr>td,.bootstrap-table .table.table-no-bordered>thead>tr>th{border-right:2px solid transparent}.bootstrap-table .table.table-no-bordered>tbody>tr>td:last-child{border-right:none}.fixed-table-container{position:relative;clear:both;border:1px solid #ddd;border-radius:4px;-webkit-border-radius:4px;-moz-border-radius:4px}.fixed-table-container.table-no-bordered{border:1px solid transparent}.fixed-table-footer,.fixed-table-header{overflow:hidden}.fixed-table-footer{border-top:1px solid #ddd}.fixed-table-body{overflow-x:auto;overflow-y:auto;height:100%}.fixed-table-container table{width:100%}.fixed-table-container thead th{height:0;padding:0;margin:0;border-left:1px solid #ddd}.fixed-table-container thead th:focus{outline:transparent solid 0}.fixed-table-container thead th:first-child{border-left:none;border-top-left-radius:4px;-webkit-border-top-left-radius:4px;-moz-border-radius-topleft:4px}.fixed-table-container tbody td .th-inner,.fixed-table-container thead th .th-inner{padding:6px 10px 6px 24px;line-height:24px;vertical-align:top;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fixed-table-container thead th .sortable{cursor:pointer;background-position:right;background-repeat:no-repeat;padding-right:30px}.fixed-table-container thead th .both{background-image:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAQAAADYWf5HAAAAkElEQVQoz7X QMQ5AQBCF4dWQSJxC5wwax1Cq1e7BAdxD5SL+Tq/QCM1oNiJidwox0355mXnG/DrEtIQ6azioNZQxI0ykPhTQIwhCR+BmBYtlK7kLJYwWCcJA9M4qdrZrd8pPjZWPtOqdRQy320YSV17OatFC4euts6z39GYMKRPCTKY9UnPQ6P+GtMRfGtPnBCiqhAeJPmkqAAAAAElFTkSuQmCC')}.fixed-table-container thead th .asc{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAZ0lEQVQ4y2NgGLKgquEuFxBPAGI2ahhWCsS/gDibUoO0gPgxEP8H4ttArEyuQYxAPBdqEAxPBImTY5gjEL9DM+wTENuQahAvEO9DMwiGdwAxOymGJQLxTyD+jgWDxCMZRsEoGAVoAADeemwtPcZI2wAAAABJRU5ErkJggg==)}.fixed-table-container thead th .desc{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAZUlEQVQ4y2NgGAWjYBSggaqGu5FA/BOIv2PBIPFEUgxjB+IdQPwfC94HxLykus4GiD+hGfQOiB3J8SojEE9EM2wuSJzcsFMG4ttQgx4DsRalkZENxL+AuJQaMcsGxBOAmGvopk8AVz1sLZgg0bsAAAAASUVORK5CYII=)}.fixed-table-container th.detail{width:30px}.fixed-table-container tbody td{border-left:1px solid #ddd}.fixed-table-container tbody tr:first-child td{border-top:none}.fixed-table-container tbody td:first-child{border-left:none}.fixed-table-container tbody .selected td{background-color:#f5f5f5}.fixed-table-container .bs-checkbox .th-inner{padding:8px 0}.fixed-table-container input[type=radio],.fixed-table-container input[type=checkbox]{margin:0 auto!important}.fixed-table-pagination .pagination-detail,.fixed-table-pagination div.pagination{margin-top:10px;margin-bottom:10px}.fixed-table-pagination div.pagination .pagination{margin:0}.fixed-table-pagination .pagination a{padding:6px 12px;line-height:1.428571429}.fixed-table-pagination .pagination-info{line-height:34px;margin-right:5px}.fixed-table-pagination .btn-group{position:relative;display:inline-block;vertical-align:middle}.fixed-table-pagination .dropup .dropdown-menu{margin-bottom:0}.fixed-table-pagination .page-list{display:inline-block}.fixed-table-toolbar .columns-left{margin-right:5px}.fixed-table-toolbar .columns-right{margin-left:5px}.fixed-table-toolbar .columns label{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.428571429}.fixed-table-toolbar .bs-bars,.fixed-table-toolbar .columns,.fixed-table-toolbar .search{position:relative;margin-top:10px;margin-bottom:10px;line-height:34px}.fixed-table-pagination li.disabled a{pointer-events:none;cursor:default}.fixed-table-loading{color:rgba(0,0,0,.45);display:none;position:absolute;top:62px!important;right:0;bottom:0;left:0;z-index:99;background-color:#fff;text-align:center}.fixed-table-body .card-view .title{font-weight:700;display:inline-block;min-width:30%;text-align:left!important}.table td,.table th{vertical-align:middle}.fixed-table-toolbar .dropdown-menu{text-align:left;max-height:300px;overflow:auto}.fixed-table-toolbar .btn-group>.btn-group{display:inline-block;margin-left:-1px!important}.fixed-table-toolbar .btn-group>.btn-group>.btn{border-radius:0}.fixed-table-toolbar .btn-group>.btn-group:first-child>.btn{border-top-left-radius:4px;border-bottom-left-radius:4px}.fixed-table-toolbar .btn-group>.btn-group:last-child>.btn{border-top-right-radius:4px;border-bottom-right-radius:4px}.bootstrap-table .table>thead>tr>th{vertical-align:bottom;border-bottom:1px solid #d8e2e5;border-top:1px solid #d8e2e5!important;}.bootstrap-table .table thead>tr>th{padding:0;margin:0}.bootstrap-table .fixed-table-footer tbody>tr>td{padding:0!important}.bootstrap-table .fixed-table-footer .table{border-bottom:none;border-radius:0;padding:0!important}.pull-right .dropdown-menu{right:0;left:auto}p.fixed-table-scroll-inner{width:100%;height:200px}div.fixed-table-scroll-outer{top:0;left:0;visibility:hidden;width:200px;height:150px;overflow:hidden} | |
0 | 2 | \ No newline at end of file | ... | ... |
resource/lib/bootstrap-table/bootstrap-table.min.js
0 → 100644
1 | +/* | |
2 | + * bootstrap-table - v1.11.0 - 2016-07-02 | |
3 | + * https://github.com/wenzhixin/bootstrap-table | |
4 | + * Copyright (c) 2016 zhixin wen | |
5 | + * Licensed MIT License | |
6 | + */ | |
7 | +!function(a){"use strict";var b=null,c=function(a){var b=arguments,c=!0,d=1;return a=a.replace(/%s/g,function(){var a=b[d++];return"undefined"==typeof a?(c=!1,""):a}),c?a:""},d=function(b,c,d,e){var f="";return a.each(b,function(a,b){return b[c]===e?(f=b[d],!1):!0}),f},e=function(b,c){var d=-1;return a.each(b,function(a,b){return b.field===c?(d=a,!1):!0}),d},f=function(b){var c,d,e,f=0,g=[];for(c=0;c<b[0].length;c++)f+=b[0][c].colspan||1;for(c=0;c<b.length;c++)for(g[c]=[],d=0;f>d;d++)g[c][d]=!1;for(c=0;c<b.length;c++)for(d=0;d<b[c].length;d++){var h=b[c][d],i=h.rowspan||1,j=h.colspan||1,k=a.inArray(!1,g[c]);for(1===j&&(h.fieldIndex=k,"undefined"==typeof h.field&&(h.field=k)),e=0;i>e;e++)g[c+e][k]=!0;for(e=0;j>e;e++)g[c][k+e]=!0}},g=function(){if(null===b){var c,d,e=a("<p/>").addClass("fixed-table-scroll-inner"),f=a("<div/>").addClass("fixed-table-scroll-outer");f.append(e),a("body").append(f),c=e[0].offsetWidth,f.css("overflow","scroll"),d=e[0].offsetWidth,c===d&&(d=f[0].clientWidth),f.remove(),b=c-d}return b},h=function(b,d,e,f){var g=d;if("string"==typeof d){var h=d.split(".");h.length>1?(g=window,a.each(h,function(a,b){g=g[b]})):g=window[d]}return"object"==typeof g?g:"function"==typeof g?g.apply(b,e):!g&&"string"==typeof d&&c.apply(this,[d].concat(e))?c.apply(this,[d].concat(e)):f},i=function(b,c,d){var e=Object.getOwnPropertyNames(b),f=Object.getOwnPropertyNames(c),g="";if(d&&e.length!==f.length)return!1;for(var h=0;h<e.length;h++)if(g=e[h],a.inArray(g,f)>-1&&b[g]!==c[g])return!1;return!0},j=function(a){return"string"==typeof a?a.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'").replace(/`/g,"`"):a},k=function(b){var c=0;return b.children().each(function(){c<a(this).outerHeight(!0)&&(c=a(this).outerHeight(!0))}),c},l=function(a){for(var b in a){var c=b.split(/(?=[A-Z])/).join("-").toLowerCase();c!==b&&(a[c]=a[b],delete a[b])}return a},m=function(a,b,c){var d=a;if("string"!=typeof b||a.hasOwnProperty(b))return c?j(a[b]):a[b];var e=b.split(".");for(var f in e)d=d&&d[e[f]];return c?j(d):d},n=function(){return!!(navigator.userAgent.indexOf("MSIE ")>0||navigator.userAgent.match(/Trident.*rv\:11\./))},o=function(){Object.keys||(Object.keys=function(){var a=Object.prototype.hasOwnProperty,b=!{toString:null}.propertyIsEnumerable("toString"),c=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],d=c.length;return function(e){if("object"!=typeof e&&("function"!=typeof e||null===e))throw new TypeError("Object.keys called on non-object");var f,g,h=[];for(f in e)a.call(e,f)&&h.push(f);if(b)for(g=0;d>g;g++)a.call(e,c[g])&&h.push(c[g]);return h}}())},p=function(b,c){this.options=c,this.$el=a(b),this.$el_=this.$el.clone(),this.timeoutId_=0,this.timeoutFooter_=0,this.init()};p.DEFAULTS={classes:"table table-hover",locale:void 0,height:void 0,undefinedText:"-",sortName:void 0,sortOrder:"asc",sortStable:!1,striped:!1,columns:[[]],data:[],dataField:"rows",method:"get",url:void 0,ajax:void 0,cache:!0,contentType:"application/json",dataType:"json",ajaxOptions:{},queryParams:function(a){return a},queryParamsType:"limit",responseHandler:function(a){return a},pagination:!1,onlyInfoPagination:!1,sidePagination:"client",totalRows:0,pageNumber:1,pageSize:10,pageList:[10,25,50,100],paginationHAlign:"right",paginationVAlign:"bottom",paginationDetailHAlign:"left",paginationPreText:"‹",paginationNextText:"›",search:!1,searchOnEnterKey:!1,strictSearch:!1,searchAlign:"right",selectItemName:"btSelectItem",showHeader:!0,showFooter:!1,showColumns:!1,showPaginationSwitch:!1,showRefresh:!1,showToggle:!1,buttonsAlign:"right",smartDisplay:!0,escape:!1,minimumCountColumns:1,idField:void 0,uniqueId:void 0,cardView:!1,detailView:!1,detailFormatter:function(){return""},trimOnSearch:!0,clickToSelect:!1,singleSelect:!1,toolbar:void 0,toolbarAlign:"left",checkboxHeader:!0,sortable:!0,silentSort:!0,maintainSelected:!1,searchTimeOut:500,searchText:"",iconSize:void 0,buttonsClass:"default",iconsPrefix:"glyphicon",icons:{paginationSwitchDown:"glyphicon-collapse-down icon-chevron-down",paginationSwitchUp:"glyphicon-collapse-up icon-chevron-up",refresh:"glyphicon-refresh icon-refresh",toggle:"glyphicon-list-alt icon-list-alt",columns:"glyphicon-th icon-th",detailOpen:"glyphicon-plus icon-plus",detailClose:"glyphicon-minus icon-minus"},customSearch:a.noop,customSort:a.noop,rowStyle:function(){return{}},rowAttributes:function(){return{}},footerStyle:function(){return{}},onAll:function(){return!1},onClickCell:function(){return!1},onDblClickCell:function(){return!1},onClickRow:function(){return!1},onDblClickRow:function(){return!1},onSort:function(){return!1},onCheck:function(){return!1},onUncheck:function(){return!1},onCheckAll:function(){return!1},onUncheckAll:function(){return!1},onCheckSome:function(){return!1},onUncheckSome:function(){return!1},onLoadSuccess:function(){return!1},onLoadError:function(){return!1},onColumnSwitch:function(){return!1},onPageChange:function(){return!1},onSearch:function(){return!1},onToggle:function(){return!1},onPreBody:function(){return!1},onPostBody:function(){return!1},onPostHeader:function(){return!1},onExpandRow:function(){return!1},onCollapseRow:function(){return!1},onRefreshOptions:function(){return!1},onRefresh:function(){return!1},onResetView:function(){return!1}},p.LOCALES={},p.LOCALES["en-US"]=p.LOCALES.en={formatLoadingMessage:function(){return"Loading, please wait..."},formatRecordsPerPage:function(a){return c("%s rows per page",a)},formatShowingRows:function(a,b,d){return c("Showing %s to %s of %s rows",a,b,d)},formatDetailPagination:function(a){return c("Showing %s rows",a)},formatSearch:function(){return"Search"},formatNoMatches:function(){return"No matching records found"},formatPaginationSwitch:function(){return"Hide/Show pagination"},formatRefresh:function(){return"Refresh"},formatToggle:function(){return"Toggle"},formatColumns:function(){return"Columns"},formatAllRows:function(){return"All"}},a.extend(p.DEFAULTS,p.LOCALES["en-US"]),p.COLUMN_DEFAULTS={radio:!1,checkbox:!1,checkboxEnabled:!0,field:void 0,title:void 0,titleTooltip:void 0,"class":void 0,align:void 0,halign:void 0,falign:void 0,valign:void 0,width:void 0,sortable:!1,order:"asc",visible:!0,switchable:!0,clickToSelect:!0,formatter:void 0,footerFormatter:void 0,events:void 0,sorter:void 0,sortName:void 0,cellStyle:void 0,searchable:!0,searchFormatter:!0,cardVisible:!0},p.EVENTS={"all.bs.table":"onAll","click-cell.bs.table":"onClickCell","dbl-click-cell.bs.table":"onDblClickCell","click-row.bs.table":"onClickRow","dbl-click-row.bs.table":"onDblClickRow","sort.bs.table":"onSort","check.bs.table":"onCheck","uncheck.bs.table":"onUncheck","check-all.bs.table":"onCheckAll","uncheck-all.bs.table":"onUncheckAll","check-some.bs.table":"onCheckSome","uncheck-some.bs.table":"onUncheckSome","load-success.bs.table":"onLoadSuccess","load-error.bs.table":"onLoadError","column-switch.bs.table":"onColumnSwitch","page-change.bs.table":"onPageChange","search.bs.table":"onSearch","toggle.bs.table":"onToggle","pre-body.bs.table":"onPreBody","post-body.bs.table":"onPostBody","post-header.bs.table":"onPostHeader","expand-row.bs.table":"onExpandRow","collapse-row.bs.table":"onCollapseRow","refresh-options.bs.table":"onRefreshOptions","reset-view.bs.table":"onResetView","refresh.bs.table":"onRefresh"},p.prototype.init=function(){this.initLocale(),this.initContainer(),this.initTable(),this.initHeader(),this.initData(),this.initFooter(),this.initToolbar(),this.initPagination(),this.initBody(),this.initSearchText(),this.initServer()},p.prototype.initLocale=function(){if(this.options.locale){var b=this.options.locale.split(/-|_/);b[0].toLowerCase(),b[1]&&b[1].toUpperCase(),a.fn.bootstrapTable.locales[this.options.locale]?a.extend(this.options,a.fn.bootstrapTable.locales[this.options.locale]):a.fn.bootstrapTable.locales[b.join("-")]?a.extend(this.options,a.fn.bootstrapTable.locales[b.join("-")]):a.fn.bootstrapTable.locales[b[0]]&&a.extend(this.options,a.fn.bootstrapTable.locales[b[0]])}},p.prototype.initContainer=function(){this.$container=a(['<div class="bootstrap-table">','<div class="fixed-table-toolbar"></div>',"top"===this.options.paginationVAlign||"both"===this.options.paginationVAlign?'<div class="fixed-table-pagination" style="clear: both;"></div>':"",'<div class="fixed-table-container">','<div class="fixed-table-header"><table></table></div>','<div class="fixed-table-body">','<div class="fixed-table-loading">',this.options.formatLoadingMessage(),"</div>","</div>",'<div class="fixed-table-footer"><table><tr></tr></table></div>',"bottom"===this.options.paginationVAlign||"both"===this.options.paginationVAlign?'<div class="fixed-table-pagination"></div>':"","</div>","</div>"].join("")),this.$container.insertAfter(this.$el),this.$tableContainer=this.$container.find(".fixed-table-container"),this.$tableHeader=this.$container.find(".fixed-table-header"),this.$tableBody=this.$container.find(".fixed-table-body"),this.$tableLoading=this.$container.find(".fixed-table-loading"),this.$tableFooter=this.$container.find(".fixed-table-footer"),this.$toolbar=this.$container.find(".fixed-table-toolbar"),this.$pagination=this.$container.find(".fixed-table-pagination"),this.$tableBody.append(this.$el),this.$container.after('<div class="clearfix"></div>'),this.$el.addClass(this.options.classes),this.options.striped&&this.$el.addClass("table-striped"),-1!==a.inArray("table-no-bordered",this.options.classes.split(" "))&&this.$tableContainer.addClass("table-no-bordered")},p.prototype.initTable=function(){var b=this,c=[],d=[];if(this.$header=this.$el.find(">thead"),this.$header.length||(this.$header=a("<thead></thead>").appendTo(this.$el)),this.$header.find("tr").each(function(){var b=[];a(this).find("th").each(function(){"undefined"!=typeof a(this).data("field")&&a(this).data("field",a(this).data("field")+""),b.push(a.extend({},{title:a(this).html(),"class":a(this).attr("class"),titleTooltip:a(this).attr("title"),rowspan:a(this).attr("rowspan")?+a(this).attr("rowspan"):void 0,colspan:a(this).attr("colspan")?+a(this).attr("colspan"):void 0},a(this).data()))}),c.push(b)}),a.isArray(this.options.columns[0])||(this.options.columns=[this.options.columns]),this.options.columns=a.extend(!0,[],c,this.options.columns),this.columns=[],f(this.options.columns),a.each(this.options.columns,function(c,d){a.each(d,function(d,e){e=a.extend({},p.COLUMN_DEFAULTS,e),"undefined"!=typeof e.fieldIndex&&(b.columns[e.fieldIndex]=e),b.options.columns[c][d]=e})}),!this.options.data.length){var e=[];this.$el.find(">tbody>tr").each(function(c){var f={};f._id=a(this).attr("id"),f._class=a(this).attr("class"),f._data=l(a(this).data()),a(this).find(">td").each(function(d){for(var g,h,i=a(this),j=+i.attr("colspan")||1,k=+i.attr("rowspan")||1;e[c]&&e[c][d];d++);for(g=d;d+j>g;g++)for(h=c;c+k>h;h++)e[h]||(e[h]=[]),e[h][g]=!0;var m=b.columns[d].field;f[m]=a(this).html(),f["_"+m+"_id"]=a(this).attr("id"),f["_"+m+"_class"]=a(this).attr("class"),f["_"+m+"_rowspan"]=a(this).attr("rowspan"),f["_"+m+"_colspan"]=a(this).attr("colspan"),f["_"+m+"_title"]=a(this).attr("title"),f["_"+m+"_data"]=l(a(this).data())}),d.push(f)}),this.options.data=d,d.length&&(this.fromHtml=!0)}},p.prototype.initHeader=function(){var b=this,d={},e=[];this.header={fields:[],styles:[],classes:[],formatters:[],events:[],sorters:[],sortNames:[],cellStyles:[],searchables:[]},a.each(this.options.columns,function(f,g){e.push("<tr>"),0===f&&!b.options.cardView&&b.options.detailView&&e.push(c('<th class="detail" rowspan="%s"><div class="fht-cell"></div></th>',b.options.columns.length)),a.each(g,function(a,f){var g="",h="",i="",j="",k=c(' class="%s"',f["class"]),l=(b.options.sortOrder||f.order,"px"),m=f.width;if(void 0===f.width||b.options.cardView||"string"==typeof f.width&&-1!==f.width.indexOf("%")&&(l="%"),f.width&&"string"==typeof f.width&&(m=f.width.replace("%","").replace("px","")),h=c("text-align: %s; ",f.halign?f.halign:f.align),i=c("text-align: %s; ",f.align),j=c("vertical-align: %s; ",f.valign),j+=c("width: %s; ",!f.checkbox&&!f.radio||m?m?m+l:void 0:"36px"),"undefined"!=typeof f.fieldIndex){if(b.header.fields[f.fieldIndex]=f.field,b.header.styles[f.fieldIndex]=i+j,b.header.classes[f.fieldIndex]=k,b.header.formatters[f.fieldIndex]=f.formatter,b.header.events[f.fieldIndex]=f.events,b.header.sorters[f.fieldIndex]=f.sorter,b.header.sortNames[f.fieldIndex]=f.sortName,b.header.cellStyles[f.fieldIndex]=f.cellStyle,b.header.searchables[f.fieldIndex]=f.searchable,!f.visible)return;if(b.options.cardView&&!f.cardVisible)return;d[f.field]=f}e.push("<th"+c(' title="%s"',f.titleTooltip),f.checkbox||f.radio?c(' class="bs-checkbox %s"',f["class"]||""):k,c(' style="%s"',h+j),c(' rowspan="%s"',f.rowspan),c(' colspan="%s"',f.colspan),c(' data-field="%s"',f.field),"tabindex='0'",">"),e.push(c('<div class="th-inner %s">',b.options.sortable&&f.sortable?"sortable both":"")),g=f.title,f.checkbox&&(!b.options.singleSelect&&b.options.checkboxHeader&&(g='<input name="btSelectAll" type="checkbox" />'),b.header.stateField=f.field),f.radio&&(g="",b.header.stateField=f.field,b.options.singleSelect=!0),e.push(g),e.push("</div>"),e.push('<div class="fht-cell"></div>'),e.push("</div>"),e.push("</th>")}),e.push("</tr>")}),this.$header.html(e.join("")),this.$header.find("th[data-field]").each(function(){a(this).data(d[a(this).data("field")])}),this.$container.off("click",".th-inner").on("click",".th-inner",function(c){var d=a(this);return b.options.detailView&&d.closest(".bootstrap-table")[0]!==b.$container[0]?!1:void(b.options.sortable&&d.parent().data().sortable&&b.onSort(c))}),this.$header.children().children().off("keypress").on("keypress",function(c){if(b.options.sortable&&a(this).data().sortable){var d=c.keyCode||c.which;13==d&&b.onSort(c)}}),a(window).off("resize.bootstrap-table"),!this.options.showHeader||this.options.cardView?(this.$header.hide(),this.$tableHeader.hide(),this.$tableLoading.css("top",0)):(this.$header.show(),this.$tableHeader.show(),this.$tableLoading.css("top",this.$header.outerHeight()+1),this.getCaret(),a(window).on("resize.bootstrap-table",a.proxy(this.resetWidth,this))),this.$selectAll=this.$header.find('[name="btSelectAll"]'),this.$selectAll.off("click").on("click",function(){var c=a(this).prop("checked");b[c?"checkAll":"uncheckAll"](),b.updateSelected()})},p.prototype.initFooter=function(){!this.options.showFooter||this.options.cardView?this.$tableFooter.hide():this.$tableFooter.show()},p.prototype.initData=function(a,b){this.data="append"===b?this.data.concat(a):"prepend"===b?[].concat(a).concat(this.data):a||this.options.data,this.options.data="append"===b?this.options.data.concat(a):"prepend"===b?[].concat(a).concat(this.options.data):this.data,"server"!==this.options.sidePagination&&this.initSort()},p.prototype.initSort=function(){var b=this,c=this.options.sortName,d="desc"===this.options.sortOrder?-1:1,e=a.inArray(this.options.sortName,this.header.fields);return this.options.customSort!==a.noop?void this.options.customSort.apply(this,[this.options.sortName,this.options.sortOrder]):void(-1!==e&&(this.options.sortStable&&a.each(this.data,function(a,b){b.hasOwnProperty("_position")||(b._position=a)}),this.data.sort(function(f,g){b.header.sortNames[e]&&(c=b.header.sortNames[e]);var i=m(f,c,b.options.escape),j=m(g,c,b.options.escape),k=h(b.header,b.header.sorters[e],[i,j]);return void 0!==k?d*k:((void 0===i||null===i)&&(i=""),(void 0===j||null===j)&&(j=""),b.options.sortStable&&i===j&&(i=f._position,j=g._position),a.isNumeric(i)&&a.isNumeric(j)?(i=parseFloat(i),j=parseFloat(j),j>i?-1*d:d):i===j?0:("string"!=typeof i&&(i=i.toString()),-1===i.localeCompare(j)?-1*d:d))})))},p.prototype.onSort=function(b){var c="keypress"===b.type?a(b.currentTarget):a(b.currentTarget).parent(),d=this.$header.find("th").eq(c.index());return this.$header.add(this.$header_).find("span.order").remove(),this.options.sortName===c.data("field")?this.options.sortOrder="asc"===this.options.sortOrder?"desc":"asc":(this.options.sortName=c.data("field"),this.options.sortOrder="asc"===c.data("order")?"desc":"asc"),this.trigger("sort",this.options.sortName,this.options.sortOrder),c.add(d).data("order",this.options.sortOrder),this.getCaret(),"server"===this.options.sidePagination?void this.initServer(this.options.silentSort):(this.initSort(),void this.initBody())},p.prototype.initToolbar=function(){var b,d,e=this,f=[],g=0,i=0;this.$toolbar.find(".bs-bars").children().length&&a("body").append(a(this.options.toolbar)),this.$toolbar.html(""),("string"==typeof this.options.toolbar||"object"==typeof this.options.toolbar)&&a(c('<div class="bs-bars pull-%s"></div>',this.options.toolbarAlign)).appendTo(this.$toolbar).append(a(this.options.toolbar)),f=[c('<div class="columns columns-%s btn-group pull-%s">',this.options.buttonsAlign,this.options.buttonsAlign)],"string"==typeof this.options.icons&&(this.options.icons=h(null,this.options.icons)),this.options.showPaginationSwitch&&f.push(c('<button class="btn'+c(" btn-%s",this.options.buttonsClass)+c(" btn-%s",this.options.iconSize)+'" type="button" name="paginationSwitch" title="%s">',this.options.formatPaginationSwitch()),c('<i class="%s %s"></i>',this.options.iconsPrefix,this.options.icons.paginationSwitchDown),"</button>"),this.options.showRefresh&&f.push(c('<button class="btn'+c(" btn-%s",this.options.buttonsClass)+c(" btn-%s",this.options.iconSize)+'" type="button" name="refresh" title="%s">',this.options.formatRefresh()),c('<i class="%s %s"></i>',this.options.iconsPrefix,this.options.icons.refresh),"</button>"),this.options.showToggle&&f.push(c('<button class="btn'+c(" btn-%s",this.options.buttonsClass)+c(" btn-%s",this.options.iconSize)+'" type="button" name="toggle" title="%s">',this.options.formatToggle()),c('<i class="%s %s"></i>',this.options.iconsPrefix,this.options.icons.toggle),"</button>"),this.options.showColumns&&(f.push(c('<div class="keep-open btn-group" title="%s">',this.options.formatColumns()),'<button type="button" class="btn'+c(" btn-%s",this.options.buttonsClass)+c(" btn-%s",this.options.iconSize)+' dropdown-toggle" data-toggle="dropdown">',c('<i class="%s %s"></i>',this.options.iconsPrefix,this.options.icons.columns),' <span class="caret"></span>',"</button>",'<ul class="dropdown-menu" role="menu">'),a.each(this.columns,function(a,b){if(!(b.radio||b.checkbox||e.options.cardView&&!b.cardVisible)){var d=b.visible?' checked="checked"':"";b.switchable&&(f.push(c('<li><label><input type="checkbox" data-field="%s" value="%s"%s> %s</label></li>',b.field,a,d,b.title)),i++)}}),f.push("</ul>","</div>")),f.push("</div>"),(this.showToolbar||f.length>2)&&this.$toolbar.append(f.join("")),this.options.showPaginationSwitch&&this.$toolbar.find('button[name="paginationSwitch"]').off("click").on("click",a.proxy(this.togglePagination,this)),this.options.showRefresh&&this.$toolbar.find('button[name="refresh"]').off("click").on("click",a.proxy(this.refresh,this)),this.options.showToggle&&this.$toolbar.find('button[name="toggle"]').off("click").on("click",function(){e.toggleView()}),this.options.showColumns&&(b=this.$toolbar.find(".keep-open"),i<=this.options.minimumCountColumns&&b.find("input").prop("disabled",!0),b.find("li").off("click").on("click",function(a){a.stopImmediatePropagation()}),b.find("input").off("click").on("click",function(){var b=a(this);e.toggleColumn(a(this).val(),b.prop("checked"),!1),e.trigger("column-switch",a(this).data("field"),b.prop("checked"))})),this.options.search&&(f=[],f.push('<div class="pull-'+this.options.searchAlign+' search">',c('<input class="form-control'+c(" input-%s",this.options.iconSize)+'" type="text" placeholder="%s">',this.options.formatSearch()),"</div>"),this.$toolbar.append(f.join("")),d=this.$toolbar.find(".search input"),d.off("keyup drop").on("keyup drop",function(b){e.options.searchOnEnterKey&&13!==b.keyCode||a.inArray(b.keyCode,[37,38,39,40])>-1||(clearTimeout(g),g=setTimeout(function(){e.onSearch(b)},e.options.searchTimeOut))}),n()&&d.off("mouseup").on("mouseup",function(a){clearTimeout(g),g=setTimeout(function(){e.onSearch(a)},e.options.searchTimeOut)}))},p.prototype.onSearch=function(b){var c=a.trim(a(b.currentTarget).val());this.options.trimOnSearch&&a(b.currentTarget).val()!==c&&a(b.currentTarget).val(c),c!==this.searchText&&(this.searchText=c,this.options.searchText=c,this.options.pageNumber=1,this.initSearch(),this.updatePagination(),this.trigger("search",c))},p.prototype.initSearch=function(){var b=this;if("server"!==this.options.sidePagination){if(this.options.customSearch!==a.noop)return void this.options.customSearch.apply(this,[this.searchText]);var c=this.searchText&&(this.options.escape?j(this.searchText):this.searchText).toLowerCase(),d=a.isEmptyObject(this.filterColumns)?null:this.filterColumns;this.data=d?a.grep(this.options.data,function(b){for(var c in d)if(a.isArray(d[c])&&-1===a.inArray(b[c],d[c])||b[c]!==d[c])return!1;return!0}):this.options.data,this.data=c?a.grep(this.data,function(d,f){for(var g=0;g<b.header.fields.length;g++)if(b.header.searchables[g]){var i,j=a.isNumeric(b.header.fields[g])?parseInt(b.header.fields[g],10):b.header.fields[g],k=b.columns[e(b.columns,j)];if("string"==typeof j){i=d;for(var l=j.split("."),m=0;m<l.length;m++)i=i[l[m]];k&&k.searchFormatter&&(i=h(k,b.header.formatters[g],[i,d,f],i))}else i=d[j];if("string"==typeof i||"number"==typeof i)if(b.options.strictSearch){if((i+"").toLowerCase()===c)return!0}else if(-1!==(i+"").toLowerCase().indexOf(c))return!0}return!1}):this.data}},p.prototype.initPagination=function(){if(!this.options.pagination)return void this.$pagination.hide();this.$pagination.show();var b,d,e,f,g,h,i,j,k,l=this,m=[],n=!1,o=this.getData(),p=this.options.pageList;if("server"!==this.options.sidePagination&&(this.options.totalRows=o.length),this.totalPages=0,this.options.totalRows){if(this.options.pageSize===this.options.formatAllRows())this.options.pageSize=this.options.totalRows,n=!0;else if(this.options.pageSize===this.options.totalRows){var q="string"==typeof this.options.pageList?this.options.pageList.replace("[","").replace("]","").replace(/ /g,"").toLowerCase().split(","):this.options.pageList;a.inArray(this.options.formatAllRows().toLowerCase(),q)>-1&&(n=!0)}this.totalPages=~~((this.options.totalRows-1)/this.options.pageSize)+1,this.options.totalPages=this.totalPages}if(this.totalPages>0&&this.options.pageNumber>this.totalPages&&(this.options.pageNumber=this.totalPages),this.pageFrom=(this.options.pageNumber-1)*this.options.pageSize+1,this.pageTo=this.options.pageNumber*this.options.pageSize,this.pageTo>this.options.totalRows&&(this.pageTo=this.options.totalRows),m.push('<div class="pull-'+this.options.paginationDetailHAlign+' pagination-detail">','<span class="pagination-info">',this.options.onlyInfoPagination?this.options.formatDetailPagination(this.options.totalRows):this.options.formatShowingRows(this.pageFrom,this.pageTo,this.options.totalRows),"</span>"),!this.options.onlyInfoPagination){m.push('<span class="page-list">');var r=[c('<span class="btn-group %s">',"top"===this.options.paginationVAlign||"both"===this.options.paginationVAlign?"dropdown":"dropup"),'<button type="button" class="btn'+c(" btn-%s",this.options.buttonsClass)+c(" btn-%s",this.options.iconSize)+' dropdown-toggle" data-toggle="dropdown">','<span class="page-size">',n?this.options.formatAllRows():this.options.pageSize,"</span>",' <span class="caret"></span>',"</button>",'<ul class="dropdown-menu" role="menu">'];if("string"==typeof this.options.pageList){var s=this.options.pageList.replace("[","").replace("]","").replace(/ /g,"").split(",");p=[],a.each(s,function(a,b){p.push(b.toUpperCase()===l.options.formatAllRows().toUpperCase()?l.options.formatAllRows():+b)})}for(a.each(p,function(a,b){if(!l.options.smartDisplay||0===a||p[a-1]<=l.options.totalRows){var d;d=n?b===l.options.formatAllRows()?' class="active"':"":b===l.options.pageSize?' class="active"':"",r.push(c('<li%s><a href="javascript:void(0)">%s</a></li>',d,b))}}),r.push("</ul></span>"),m.push(this.options.formatRecordsPerPage(r.join(""))),m.push("</span>"),m.push("</div>",'<div class="pull-'+this.options.paginationHAlign+' pagination">','<ul class="pagination'+c(" pagination-%s",this.options.iconSize)+'">','<li class="page-pre"><a href="javascript:void(0)">'+this.options.paginationPreText+"</a></li>"),this.totalPages<5?(d=1,e=this.totalPages):(d=this.options.pageNumber-2,e=d+4,1>d&&(d=1,e=5),e>this.totalPages&&(e=this.totalPages,d=e-4)),this.totalPages>=6&&(this.options.pageNumber>=3&&(m.push('<li class="page-first'+(1===this.options.pageNumber?" active":"")+'">','<a href="javascript:void(0)">',1,"</a>","</li>"),d++),this.options.pageNumber>=4&&(4==this.options.pageNumber||6==this.totalPages||7==this.totalPages?d--:m.push('<li class="page-first-separator disabled">','<a href="javascript:void(0)">...</a>',"</li>"),e--)),this.totalPages>=7&&this.options.pageNumber>=this.totalPages-2&&d--,6==this.totalPages?this.options.pageNumber>=this.totalPages-2&&e++:this.totalPages>=7&&(7==this.totalPages||this.options.pageNumber>=this.totalPages-3)&&e++,b=d;e>=b;b++)m.push('<li class="page-number'+(b===this.options.pageNumber?" active":"")+'">','<a href="javascript:void(0)">',b,"</a>","</li>");this.totalPages>=8&&this.options.pageNumber<=this.totalPages-4&&m.push('<li class="page-last-separator disabled">','<a href="javascript:void(0)">...</a>',"</li>"),this.totalPages>=6&&this.options.pageNumber<=this.totalPages-3&&m.push('<li class="page-last'+(this.totalPages===this.options.pageNumber?" active":"")+'">','<a href="javascript:void(0)">',this.totalPages,"</a>","</li>"),m.push('<li class="page-next"><a href="javascript:void(0)">'+this.options.paginationNextText+"</a></li>","</ul>","</div>")}this.$pagination.html(m.join("")),this.options.onlyInfoPagination||(f=this.$pagination.find(".page-list a"),g=this.$pagination.find(".page-first"),h=this.$pagination.find(".page-pre"),i=this.$pagination.find(".page-next"),j=this.$pagination.find(".page-last"),k=this.$pagination.find(".page-number"),this.options.smartDisplay&&(this.totalPages<=1&&this.$pagination.find("div.pagination").hide(),(p.length<2||this.options.totalRows<=p[0])&&this.$pagination.find("span.page-list").hide(),this.$pagination[this.getData().length?"show":"hide"]()),n&&(this.options.pageSize=this.options.formatAllRows()),f.off("click").on("click",a.proxy(this.onPageListChange,this)),g.off("click").on("click",a.proxy(this.onPageFirst,this)),h.off("click").on("click",a.proxy(this.onPagePre,this)),i.off("click").on("click",a.proxy(this.onPageNext,this)),j.off("click").on("click",a.proxy(this.onPageLast,this)),k.off("click").on("click",a.proxy(this.onPageNumber,this)))},p.prototype.updatePagination=function(b){b&&a(b.currentTarget).hasClass("disabled")||(this.options.maintainSelected||this.resetRows(),this.initPagination(),"server"===this.options.sidePagination?this.initServer():this.initBody(),this.trigger("page-change",this.options.pageNumber,this.options.pageSize))},p.prototype.onPageListChange=function(b){var c=a(b.currentTarget);c.parent().addClass("active").siblings().removeClass("active"),this.options.pageSize=c.text().toUpperCase()===this.options.formatAllRows().toUpperCase()?this.options.formatAllRows():+c.text(),this.$toolbar.find(".page-size").text(this.options.pageSize),this.updatePagination(b)},p.prototype.onPageFirst=function(a){this.options.pageNumber=1,this.updatePagination(a)},p.prototype.onPagePre=function(a){this.options.pageNumber-1===0?this.options.pageNumber=this.options.totalPages:this.options.pageNumber--,this.updatePagination(a)},p.prototype.onPageNext=function(a){this.options.pageNumber+1>this.options.totalPages?this.options.pageNumber=1:this.options.pageNumber++,this.updatePagination(a)},p.prototype.onPageLast=function(a){this.options.pageNumber=this.totalPages,this.updatePagination(a)},p.prototype.onPageNumber=function(b){this.options.pageNumber!==+a(b.currentTarget).text()&&(this.options.pageNumber=+a(b.currentTarget).text(),this.updatePagination(b))},p.prototype.initBody=function(b){var f=this,g=[],i=this.getData();this.trigger("pre-body",i),this.$body=this.$el.find(">tbody"),this.$body.length||(this.$body=a("<tbody></tbody>").appendTo(this.$el)),this.options.pagination&&"server"!==this.options.sidePagination||(this.pageFrom=1,this.pageTo=i.length);for(var k=this.pageFrom-1;k<this.pageTo;k++){var l,n=i[k],o={},p=[],q="",r={},s=[];if(o=h(this.options,this.options.rowStyle,[n,k],o),o&&o.css)for(l in o.css)p.push(l+": "+o.css[l]);if(r=h(this.options,this.options.rowAttributes,[n,k],r))for(l in r)s.push(c('%s="%s"',l,j(r[l])));n._data&&!a.isEmptyObject(n._data)&&a.each(n._data,function(a,b){"index"!==a&&(q+=c(' data-%s="%s"',a,b))}),g.push("<tr",c(" %s",s.join(" ")),c(' id="%s"',a.isArray(n)?void 0:n._id),c(' class="%s"',o.classes||(a.isArray(n)?void 0:n._class)),c(' data-index="%s"',k),c(' data-uniqueid="%s"',n[this.options.uniqueId]),c("%s",q),">"),this.options.cardView&&g.push(c('<td colspan="%s"><div class="card-views">',this.header.fields.length)),!this.options.cardView&&this.options.detailView&&g.push("<td>",'<a class="detail-icon" href="javascript:">',c('<i class="%s %s"></i>',this.options.iconsPrefix,this.options.icons.detailOpen),"</a>","</td>"),a.each(this.header.fields,function(b,e){var i="",j=m(n,e,f.options.escape),l="",q={},r="",s=f.header.classes[b],t="",u="",v="",w="",x=f.columns[b];if(!(f.fromHtml&&"undefined"==typeof j||!x.visible||f.options.cardView&&!x.cardVisible)){if(o=c('style="%s"',p.concat(f.header.styles[b]).join("; ")),n["_"+e+"_id"]&&(r=c(' id="%s"',n["_"+e+"_id"])),n["_"+e+"_class"]&&(s=c(' class="%s"',n["_"+e+"_class"])),n["_"+e+"_rowspan"]&&(u=c(' rowspan="%s"',n["_"+e+"_rowspan"])),n["_"+e+"_colspan"]&&(v=c(' colspan="%s"',n["_"+e+"_colspan"])),n["_"+e+"_title"]&&(w=c(' title="%s"',n["_"+e+"_title"])),q=h(f.header,f.header.cellStyles[b],[j,n,k,e],q),q.classes&&(s=c(' class="%s"',q.classes)),q.css){var y=[];for(var z in q.css)y.push(z+": "+q.css[z]);o=c('style="%s"',y.concat(f.header.styles[b]).join("; "))}j=h(x,f.header.formatters[b],[j,n,k],j),n["_"+e+"_data"]&&!a.isEmptyObject(n["_"+e+"_data"])&&a.each(n["_"+e+"_data"],function(a,b){"index"!==a&&(t+=c(' data-%s="%s"',a,b))}),x.checkbox||x.radio?(l=x.checkbox?"checkbox":l,l=x.radio?"radio":l,i=[c(f.options.cardView?'<div class="card-view %s">':'<td class="bs-checkbox %s">',x["class"]||""),"<input"+c(' data-index="%s"',k)+c(' name="%s"',f.options.selectItemName)+c(' type="%s"',l)+c(' value="%s"',n[f.options.idField])+c(' checked="%s"',j===!0||j&&j.checked?"checked":void 0)+c(' disabled="%s"',!x.checkboxEnabled||j&&j.disabled?"disabled":void 0)+" />",f.header.formatters[b]&&"string"==typeof j?j:"",f.options.cardView?"</div>":"</td>"].join(""),n[f.header.stateField]=j===!0||j&&j.checked):(j="undefined"==typeof j||null===j?f.options.undefinedText:j,i=f.options.cardView?['<div class="card-view">',f.options.showHeader?c('<span class="title" %s>%s</span>',o,d(f.columns,"field","title",e)):"",c('<span class="value">%s</span>',j),"</div>"].join(""):[c("<td%s %s %s %s %s %s %s>",r,s,o,t,u,v,w),j,"</td>"].join(""),f.options.cardView&&f.options.smartDisplay&&""===j&&(i='<div class="card-view"></div>')),g.push(i)}}),this.options.cardView&&g.push("</div></td>"),g.push("</tr>")}g.length||g.push('<tr class="no-records-found">',c('<td colspan="%s">%s</td>',this.$header.find("th").length,this.options.formatNoMatches()),"</tr>"),this.$body.html(g.join("")),b||this.scrollTo(0),this.$body.find("> tr[data-index] > td").off("click dblclick").on("click dblclick",function(b){var d=a(this),g=d.parent(),h=f.data[g.data("index")],i=d[0].cellIndex,j=f.getVisibleFields(),k=j[f.options.detailView&&!f.options.cardView?i-1:i],l=f.columns[e(f.columns,k)],n=m(h,k,f.options.escape);if(!d.find(".detail-icon").length&&(f.trigger("click"===b.type?"click-cell":"dbl-click-cell",k,n,h,d),f.trigger("click"===b.type?"click-row":"dbl-click-row",h,g,k), | |
8 | + "click"===b.type&&f.options.clickToSelect&&l.clickToSelect)){var o=g.find(c('[name="%s"]',f.options.selectItemName));o.length&&o[0].click()}}),this.$body.find("> tr[data-index] > td > .detail-icon").off("click").on("click",function(){var b=a(this),d=b.parent().parent(),e=d.data("index"),g=i[e];if(d.next().is("tr.detail-view"))b.find("i").attr("class",c("%s %s",f.options.iconsPrefix,f.options.icons.detailOpen)),d.next().remove(),f.trigger("collapse-row",e,g);else{b.find("i").attr("class",c("%s %s",f.options.iconsPrefix,f.options.icons.detailClose)),d.after(c('<tr class="detail-view"><td colspan="%s"></td></tr>',d.find("td").length));var j=d.next().find("td"),k=h(f.options,f.options.detailFormatter,[e,g,j],"");1===j.length&&j.append(k),f.trigger("expand-row",e,g,j)}f.resetView()}),this.$selectItem=this.$body.find(c('[name="%s"]',this.options.selectItemName)),this.$selectItem.off("click").on("click",function(b){b.stopImmediatePropagation();var c=a(this),d=c.prop("checked"),e=f.data[c.data("index")];f.options.maintainSelected&&a(this).is(":radio")&&a.each(f.options.data,function(a,b){b[f.header.stateField]=!1}),e[f.header.stateField]=d,f.options.singleSelect&&(f.$selectItem.not(this).each(function(){f.data[a(this).data("index")][f.header.stateField]=!1}),f.$selectItem.filter(":checked").not(this).prop("checked",!1)),f.updateSelected(),f.trigger(d?"check":"uncheck",e,c)}),a.each(this.header.events,function(b,c){if(c){"string"==typeof c&&(c=h(null,c));var d=f.header.fields[b],e=a.inArray(d,f.getVisibleFields());f.options.detailView&&!f.options.cardView&&(e+=1);for(var g in c)f.$body.find(">tr:not(.no-records-found)").each(function(){var b=a(this),h=b.find(f.options.cardView?".card-view":"td").eq(e),i=g.indexOf(" "),j=g.substring(0,i),k=g.substring(i+1),l=c[g];h.find(k).off(j).on(j,function(a){var c=b.data("index"),e=f.data[c],g=e[d];l.apply(this,[a,g,e,c])})})}}),this.updateSelected(),this.resetView(),this.trigger("post-body",i)},p.prototype.initServer=function(b,c,d){var e,f=this,g={},i={searchText:this.searchText,sortName:this.options.sortName,sortOrder:this.options.sortOrder};this.options.pagination&&(i.pageSize=this.options.pageSize===this.options.formatAllRows()?this.options.totalRows:this.options.pageSize,i.pageNumber=this.options.pageNumber),(d||this.options.url||this.options.ajax)&&("limit"===this.options.queryParamsType&&(i={search:i.searchText,sort:i.sortName,order:i.sortOrder},this.options.pagination&&(i.offset=this.options.pageSize===this.options.formatAllRows()?0:this.options.pageSize*(this.options.pageNumber-1),i.limit=this.options.pageSize===this.options.formatAllRows()?this.options.totalRows:this.options.pageSize)),a.isEmptyObject(this.filterColumnsPartial)||(i.filter=JSON.stringify(this.filterColumnsPartial,null)),g=h(this.options,this.options.queryParams,[i],g),a.extend(g,c||{}),g!==!1&&(b||this.$tableLoading.show(),e=a.extend({},h(null,this.options.ajaxOptions),{type:this.options.method,url:d||this.options.url,data:"application/json"===this.options.contentType&&"post"===this.options.method?JSON.stringify(g):g,cache:this.options.cache,contentType:this.options.contentType,dataType:this.options.dataType,success:function(a){a=h(f.options,f.options.responseHandler,[a],a),f.load(a),f.trigger("load-success",a),b||f.$tableLoading.hide()},error:function(a){f.trigger("load-error",a.status,a),b||f.$tableLoading.hide()}}),this.options.ajax?h(this,this.options.ajax,[e],null):(this._xhr&&4!==this._xhr.readyState&&this._xhr.abort(),this._xhr=a.ajax(e))))},p.prototype.initSearchText=function(){if(this.options.search&&""!==this.options.searchText){var a=this.$toolbar.find(".search input");a.val(this.options.searchText),this.onSearch({currentTarget:a})}},p.prototype.getCaret=function(){var b=this;a.each(this.$header.find("th"),function(c,d){a(d).find(".sortable").removeClass("desc asc").addClass(a(d).data("field")===b.options.sortName?b.options.sortOrder:"both")})},p.prototype.updateSelected=function(){var b=this.$selectItem.filter(":enabled").length&&this.$selectItem.filter(":enabled").length===this.$selectItem.filter(":enabled").filter(":checked").length;this.$selectAll.add(this.$selectAll_).prop("checked",b),this.$selectItem.each(function(){a(this).closest("tr")[a(this).prop("checked")?"addClass":"removeClass"]("selected")})},p.prototype.updateRows=function(){var b=this;this.$selectItem.each(function(){b.data[a(this).data("index")][b.header.stateField]=a(this).prop("checked")})},p.prototype.resetRows=function(){var b=this;a.each(this.data,function(a,c){b.$selectAll.prop("checked",!1),b.$selectItem.prop("checked",!1),b.header.stateField&&(c[b.header.stateField]=!1)})},p.prototype.trigger=function(b){var c=Array.prototype.slice.call(arguments,1);b+=".bs.table",this.options[p.EVENTS[b]].apply(this.options,c),this.$el.trigger(a.Event(b),c),this.options.onAll(b,c),this.$el.trigger(a.Event("all.bs.table"),[b,c])},p.prototype.resetHeader=function(){clearTimeout(this.timeoutId_),this.timeoutId_=setTimeout(a.proxy(this.fitHeader,this),this.$el.is(":hidden")?100:0)},p.prototype.fitHeader=function(){var b,d,e,f,h=this;if(h.$el.is(":hidden"))return void(h.timeoutId_=setTimeout(a.proxy(h.fitHeader,h),100));if(b=this.$tableBody.get(0),d=b.scrollWidth>b.clientWidth&&b.scrollHeight>b.clientHeight+this.$header.outerHeight()?g():0,this.$el.css("margin-top",-this.$header.outerHeight()),e=a(":focus"),e.length>0){var i=e.parents("th");if(i.length>0){var j=i.attr("data-field");if(void 0!==j){var k=this.$header.find("[data-field='"+j+"']");k.length>0&&k.find(":input").addClass("focus-temp")}}}this.$header_=this.$header.clone(!0,!0),this.$selectAll_=this.$header_.find('[name="btSelectAll"]'),this.$tableHeader.css({"margin-right":d}).find("table").css("width",this.$el.outerWidth()).html("").attr("class",this.$el.attr("class")).append(this.$header_),f=a(".focus-temp:visible:eq(0)"),f.length>0&&(f.focus(),this.$header.find(".focus-temp").removeClass("focus-temp")),this.$header.find("th[data-field]").each(function(){h.$header_.find(c('th[data-field="%s"]',a(this).data("field"))).data(a(this).data())});var l=this.getVisibleFields(),m=this.$header_.find("th");this.$body.find(">tr:first-child:not(.no-records-found) > *").each(function(b){var d=a(this),e=b;h.options.detailView&&!h.options.cardView&&(0===b&&h.$header_.find("th.detail").find(".fht-cell").width(d.innerWidth()),e=b-1);var f=h.$header_.find(c('th[data-field="%s"]',l[e]));f.length>1&&(f=a(m[d[0].cellIndex])),f.find(".fht-cell").width(d.innerWidth())}),this.$tableBody.off("scroll").on("scroll",function(){h.$tableHeader.scrollLeft(a(this).scrollLeft()),h.options.showFooter&&!h.options.cardView&&h.$tableFooter.scrollLeft(a(this).scrollLeft())}),h.trigger("post-header")},p.prototype.resetFooter=function(){var b=this,d=b.getData(),e=[];this.options.showFooter&&!this.options.cardView&&(!this.options.cardView&&this.options.detailView&&e.push('<td><div class="th-inner"> </div><div class="fht-cell"></div></td>'),a.each(this.columns,function(a,f){var g,i="",j="",k=[],l={},m=c(' class="%s"',f["class"]);if(f.visible&&(!b.options.cardView||f.cardVisible)){if(i=c("text-align: %s; ",f.falign?f.falign:f.align),j=c("vertical-align: %s; ",f.valign),l=h(null,b.options.footerStyle),l&&l.css)for(g in l.css)k.push(g+": "+l.css[g]);e.push("<td",m,c(' style="%s"',i+j+k.concat().join("; ")),">"),e.push('<div class="th-inner">'),e.push(h(f,f.footerFormatter,[d]," ")||" "),e.push("</div>"),e.push('<div class="fht-cell"></div>'),e.push("</div>"),e.push("</td>")}}),this.$tableFooter.find("tr").html(e.join("")),this.$tableFooter.show(),clearTimeout(this.timeoutFooter_),this.timeoutFooter_=setTimeout(a.proxy(this.fitFooter,this),this.$el.is(":hidden")?100:0))},p.prototype.fitFooter=function(){var b,c,d;return clearTimeout(this.timeoutFooter_),this.$el.is(":hidden")?void(this.timeoutFooter_=setTimeout(a.proxy(this.fitFooter,this),100)):(c=this.$el.css("width"),d=c>this.$tableBody.width()?g():0,this.$tableFooter.css({"margin-right":d}).find("table").css("width",c).attr("class",this.$el.attr("class")),b=this.$tableFooter.find("td"),void this.$body.find(">tr:first-child:not(.no-records-found) > *").each(function(c){var d=a(this);b.eq(c).find(".fht-cell").width(d.innerWidth())}))},p.prototype.toggleColumn=function(a,b,d){if(-1!==a&&(this.columns[a].visible=b,this.initHeader(),this.initSearch(),this.initPagination(),this.initBody(),this.options.showColumns)){var e=this.$toolbar.find(".keep-open input").prop("disabled",!1);d&&e.filter(c('[value="%s"]',a)).prop("checked",b),e.filter(":checked").length<=this.options.minimumCountColumns&&e.filter(":checked").prop("disabled",!0)}},p.prototype.toggleRow=function(a,b,d){-1!==a&&this.$body.find("undefined"!=typeof a?c('tr[data-index="%s"]',a):c('tr[data-uniqueid="%s"]',b))[d?"show":"hide"]()},p.prototype.getVisibleFields=function(){var b=this,c=[];return a.each(this.header.fields,function(a,d){var f=b.columns[e(b.columns,d)];f.visible&&c.push(d)}),c},p.prototype.resetView=function(a){var b=0;if(a&&a.height&&(this.options.height=a.height),this.$selectAll.prop("checked",this.$selectItem.length>0&&this.$selectItem.length===this.$selectItem.filter(":checked").length),this.options.height){var c=k(this.$toolbar),d=k(this.$pagination),e=this.options.height-c-d;this.$tableContainer.css("height",e+"px")}return this.options.cardView?(this.$el.css("margin-top","0"),this.$tableContainer.css("padding-bottom","0"),void this.$tableFooter.hide()):(this.options.showHeader&&this.options.height?(this.$tableHeader.show(),this.resetHeader(),b+=this.$header.outerHeight()):(this.$tableHeader.hide(),this.trigger("post-header")),this.options.showFooter&&(this.resetFooter(),this.options.height&&(b+=this.$tableFooter.outerHeight()+1)),this.getCaret(),this.$tableContainer.css("padding-bottom",b+"px"),void this.trigger("reset-view"))},p.prototype.getData=function(b){return!this.searchText&&a.isEmptyObject(this.filterColumns)&&a.isEmptyObject(this.filterColumnsPartial)?b?this.options.data.slice(this.pageFrom-1,this.pageTo):this.options.data:b?this.data.slice(this.pageFrom-1,this.pageTo):this.data},p.prototype.load=function(b){var c=!1;"server"===this.options.sidePagination?(this.options.totalRows=b.total,c=b.fixedScroll,b=b[this.options.dataField]):a.isArray(b)||(c=b.fixedScroll,b=b.data),this.initData(b),this.initSearch(),this.initPagination(),this.initBody(c)},p.prototype.append=function(a){this.initData(a,"append"),this.initSearch(),this.initPagination(),this.initSort(),this.initBody(!0)},p.prototype.prepend=function(a){this.initData(a,"prepend"),this.initSearch(),this.initPagination(),this.initSort(),this.initBody(!0)},p.prototype.remove=function(b){var c,d,e=this.options.data.length;if(b.hasOwnProperty("field")&&b.hasOwnProperty("values")){for(c=e-1;c>=0;c--)d=this.options.data[c],d.hasOwnProperty(b.field)&&-1!==a.inArray(d[b.field],b.values)&&this.options.data.splice(c,1);e!==this.options.data.length&&(this.initSearch(),this.initPagination(),this.initSort(),this.initBody(!0))}},p.prototype.removeAll=function(){this.options.data.length>0&&(this.options.data.splice(0,this.options.data.length),this.initSearch(),this.initPagination(),this.initBody(!0))},p.prototype.getRowByUniqueId=function(a){var b,c,d,e=this.options.uniqueId,f=this.options.data.length,g=null;for(b=f-1;b>=0;b--){if(c=this.options.data[b],c.hasOwnProperty(e))d=c[e];else{if(!c._data.hasOwnProperty(e))continue;d=c._data[e]}if("string"==typeof d?a=a.toString():"number"==typeof d&&(Number(d)===d&&d%1===0?a=parseInt(a):d===Number(d)&&0!==d&&(a=parseFloat(a))),d===a){g=c;break}}return g},p.prototype.removeByUniqueId=function(a){var b=this.options.data.length,c=this.getRowByUniqueId(a);c&&this.options.data.splice(this.options.data.indexOf(c),1),b!==this.options.data.length&&(this.initSearch(),this.initPagination(),this.initBody(!0))},p.prototype.updateByUniqueId=function(b){var c=this,d=a.isArray(b)?b:[b];a.each(d,function(b,d){var e;d.hasOwnProperty("id")&&d.hasOwnProperty("row")&&(e=a.inArray(c.getRowByUniqueId(d.id),c.options.data),-1!==e&&a.extend(c.options.data[e],d.row))}),this.initSearch(),this.initSort(),this.initBody(!0)},p.prototype.insertRow=function(a){a.hasOwnProperty("index")&&a.hasOwnProperty("row")&&(this.data.splice(a.index,0,a.row),this.initSearch(),this.initPagination(),this.initSort(),this.initBody(!0))},p.prototype.updateRow=function(b){var c=this,d=a.isArray(b)?b:[b];a.each(d,function(b,d){d.hasOwnProperty("index")&&d.hasOwnProperty("row")&&a.extend(c.options.data[d.index],d.row)}),this.initSearch(),this.initSort(),this.initBody(!0)},p.prototype.showRow=function(a){(a.hasOwnProperty("index")||a.hasOwnProperty("uniqueId"))&&this.toggleRow(a.index,a.uniqueId,!0)},p.prototype.hideRow=function(a){(a.hasOwnProperty("index")||a.hasOwnProperty("uniqueId"))&&this.toggleRow(a.index,a.uniqueId,!1)},p.prototype.getRowsHidden=function(b){var c=a(this.$body[0]).children().filter(":hidden"),d=0;if(b)for(;d<c.length;d++)a(c[d]).show();return c},p.prototype.mergeCells=function(b){var c,d,e,f=b.index,g=a.inArray(b.field,this.getVisibleFields()),h=b.rowspan||1,i=b.colspan||1,j=this.$body.find(">tr");if(this.options.detailView&&!this.options.cardView&&(g+=1),e=j.eq(f).find(">td").eq(g),!(0>f||0>g||f>=this.data.length)){for(c=f;f+h>c;c++)for(d=g;g+i>d;d++)j.eq(c).find(">td").eq(d).hide();e.attr("rowspan",h).attr("colspan",i).show()}},p.prototype.updateCell=function(a){a.hasOwnProperty("index")&&a.hasOwnProperty("field")&&a.hasOwnProperty("value")&&(this.data[a.index][a.field]=a.value,a.reinit!==!1&&(this.initSort(),this.initBody(!0)))},p.prototype.getOptions=function(){return this.options},p.prototype.getSelections=function(){var b=this;return a.grep(this.options.data,function(a){return a[b.header.stateField]})},p.prototype.getAllSelections=function(){var b=this;return a.grep(this.options.data,function(a){return a[b.header.stateField]})},p.prototype.checkAll=function(){this.checkAll_(!0)},p.prototype.uncheckAll=function(){this.checkAll_(!1)},p.prototype.checkInvert=function(){var b=this,c=b.$selectItem.filter(":enabled"),d=c.filter(":checked");c.each(function(){a(this).prop("checked",!a(this).prop("checked"))}),b.updateRows(),b.updateSelected(),b.trigger("uncheck-some",d),d=b.getSelections(),b.trigger("check-some",d)},p.prototype.checkAll_=function(a){var b;a||(b=this.getSelections()),this.$selectAll.add(this.$selectAll_).prop("checked",a),this.$selectItem.filter(":enabled").prop("checked",a),this.updateRows(),a&&(b=this.getSelections()),this.trigger(a?"check-all":"uncheck-all",b)},p.prototype.check=function(a){this.check_(!0,a)},p.prototype.uncheck=function(a){this.check_(!1,a)},p.prototype.check_=function(a,b){var d=this.$selectItem.filter(c('[data-index="%s"]',b)).prop("checked",a);this.data[b][this.header.stateField]=a,this.updateSelected(),this.trigger(a?"check":"uncheck",this.data[b],d)},p.prototype.checkBy=function(a){this.checkBy_(!0,a)},p.prototype.uncheckBy=function(a){this.checkBy_(!1,a)},p.prototype.checkBy_=function(b,d){if(d.hasOwnProperty("field")&&d.hasOwnProperty("values")){var e=this,f=[];a.each(this.options.data,function(g,h){if(!h.hasOwnProperty(d.field))return!1;if(-1!==a.inArray(h[d.field],d.values)){var i=e.$selectItem.filter(":enabled").filter(c('[data-index="%s"]',g)).prop("checked",b);h[e.header.stateField]=b,f.push(h),e.trigger(b?"check":"uncheck",h,i)}}),this.updateSelected(),this.trigger(b?"check-some":"uncheck-some",f)}},p.prototype.destroy=function(){this.$el.insertBefore(this.$container),a(this.options.toolbar).insertBefore(this.$el),this.$container.next().remove(),this.$container.remove(),this.$el.html(this.$el_.html()).css("margin-top","0").attr("class",this.$el_.attr("class")||"")},p.prototype.showLoading=function(){this.$tableLoading.show()},p.prototype.hideLoading=function(){this.$tableLoading.hide()},p.prototype.togglePagination=function(){this.options.pagination=!this.options.pagination;var a=this.$toolbar.find('button[name="paginationSwitch"] i');this.options.pagination?a.attr("class",this.options.iconsPrefix+" "+this.options.icons.paginationSwitchDown):a.attr("class",this.options.iconsPrefix+" "+this.options.icons.paginationSwitchUp),this.updatePagination()},p.prototype.refresh=function(a){a&&a.url&&(this.options.pageNumber=1),this.initServer(a&&a.silent,a&&a.query,a&&a.url),this.trigger("refresh",a)},p.prototype.resetWidth=function(){this.options.showHeader&&this.options.height&&this.fitHeader(),this.options.showFooter&&this.fitFooter()},p.prototype.showColumn=function(a){this.toggleColumn(e(this.columns,a),!0,!0)},p.prototype.hideColumn=function(a){this.toggleColumn(e(this.columns,a),!1,!0)},p.prototype.getHiddenColumns=function(){return a.grep(this.columns,function(a){return!a.visible})},p.prototype.getVisibleColumns=function(){return a.grep(this.columns,function(a){return a.visible})},p.prototype.toggleAllColumns=function(b){if(a.each(this.columns,function(a){this.columns[a].visible=b}),this.initHeader(),this.initSearch(),this.initPagination(),this.initBody(),this.options.showColumns){var c=this.$toolbar.find(".keep-open input").prop("disabled",!1);c.filter(":checked").length<=this.options.minimumCountColumns&&c.filter(":checked").prop("disabled",!0)}},p.prototype.showAllColumns=function(){this.toggleAllColumns(!0)},p.prototype.hideAllColumns=function(){this.toggleAllColumns(!1)},p.prototype.filterBy=function(b){this.filterColumns=a.isEmptyObject(b)?{}:b,this.options.pageNumber=1,this.initSearch(),this.updatePagination()},p.prototype.scrollTo=function(a){return"string"==typeof a&&(a="bottom"===a?this.$tableBody[0].scrollHeight:0),"number"==typeof a&&this.$tableBody.scrollTop(a),"undefined"==typeof a?this.$tableBody.scrollTop():void 0},p.prototype.getScrollPosition=function(){return this.scrollTo()},p.prototype.selectPage=function(a){a>0&&a<=this.options.totalPages&&(this.options.pageNumber=a,this.updatePagination())},p.prototype.prevPage=function(){this.options.pageNumber>1&&(this.options.pageNumber--,this.updatePagination())},p.prototype.nextPage=function(){this.options.pageNumber<this.options.totalPages&&(this.options.pageNumber++,this.updatePagination())},p.prototype.toggleView=function(){this.options.cardView=!this.options.cardView,this.initHeader(),this.initBody(),this.trigger("toggle",this.options.cardView)},p.prototype.refreshOptions=function(b){i(this.options,b,!0)||(this.options=a.extend(this.options,b),this.trigger("refresh-options",this.options),this.destroy(),this.init())},p.prototype.resetSearch=function(a){var b=this.$toolbar.find(".search input");b.val(a||""),this.onSearch({currentTarget:b})},p.prototype.expandRow_=function(a,b){var d=this.$body.find(c('> tr[data-index="%s"]',b));d.next().is("tr.detail-view")===(a?!1:!0)&&d.find("> td > .detail-icon").click()},p.prototype.expandRow=function(a){this.expandRow_(!0,a)},p.prototype.collapseRow=function(a){this.expandRow_(!1,a)},p.prototype.expandAllRows=function(b){if(b){var d=this.$body.find(c('> tr[data-index="%s"]',0)),e=this,f=null,g=!1,h=-1;if(d.next().is("tr.detail-view")?d.next().next().is("tr.detail-view")||(d.next().find(".detail-icon").click(),g=!0):(d.find("> td > .detail-icon").click(),g=!0),g)try{h=setInterval(function(){f=e.$body.find("tr.detail-view").last().find(".detail-icon"),f.length>0?f.click():clearInterval(h)},1)}catch(i){clearInterval(h)}}else for(var j=this.$body.children(),k=0;k<j.length;k++)this.expandRow_(!0,a(j[k]).data("index"))},p.prototype.collapseAllRows=function(b){if(b)this.expandRow_(!1,0);else for(var c=this.$body.children(),d=0;d<c.length;d++)this.expandRow_(!1,a(c[d]).data("index"))},p.prototype.updateFormatText=function(a,b){this.options[c("format%s",a)]&&("string"==typeof b?this.options[c("format%s",a)]=function(){return b}:"function"==typeof b&&(this.options[c("format%s",a)]=b)),this.initToolbar(),this.initPagination(),this.initBody()};var q=["getOptions","getSelections","getAllSelections","getData","load","append","prepend","remove","removeAll","insertRow","updateRow","updateCell","updateByUniqueId","removeByUniqueId","getRowByUniqueId","showRow","hideRow","getRowsHidden","mergeCells","checkAll","uncheckAll","checkInvert","check","uncheck","checkBy","uncheckBy","refresh","resetView","resetWidth","destroy","showLoading","hideLoading","showColumn","hideColumn","getHiddenColumns","getVisibleColumns","showAllColumns","hideAllColumns","filterBy","scrollTo","getScrollPosition","selectPage","prevPage","nextPage","togglePagination","toggleView","refreshOptions","resetSearch","expandRow","collapseRow","expandAllRows","collapseAllRows","updateFormatText"];a.fn.bootstrapTable=function(b){var c,d=Array.prototype.slice.call(arguments,1);return this.each(function(){var e=a(this),f=e.data("bootstrap.table"),g=a.extend({},p.DEFAULTS,e.data(),"object"==typeof b&&b);if("string"==typeof b){if(a.inArray(b,q)<0)throw new Error("Unknown method: "+b);if(!f)return;c=f[b].apply(f,d),"destroy"===b&&e.removeData("bootstrap.table")}f||e.data("bootstrap.table",f=new p(this,g))}),"undefined"==typeof c?this:c},a.fn.bootstrapTable.Constructor=p,a.fn.bootstrapTable.defaults=p.DEFAULTS,a.fn.bootstrapTable.columnDefaults=p.COLUMN_DEFAULTS,a.fn.bootstrapTable.locales=p.LOCALES,a.fn.bootstrapTable.methods=q,a.fn.bootstrapTable.utils={sprintf:c,getFieldIndex:e,compareObjects:i,calculateObjectValue:h,getItemField:m,objectKeys:o,isIEBrowser:n},a(function(){a('[data-toggle="table"]').bootstrapTable()})}(jQuery); | |
0 | 9 | \ No newline at end of file | ... | ... |
resource/lib/bootstrap/css/bootstrap.min.css
0 → 100644
1 | +/*! | |
2 | + * Bootstrap v3.3.5 (http://getbootstrap.com) | |
3 | + * Copyright 2011-2015 Twitter, Inc. | |
4 | + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) | |
5 | + *//*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */.btn,.btn-group,.btn-group-vertical,.caret,.checkbox-inline,.radio-inline,img{vertical-align:middle}hr,img{border:0}body,figure{margin:0}.btn-group>.btn-group,.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.dropdown-menu{float:left}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.pre-scrollable{max-height:340px}html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}b,optgroup,strong{font-weight:700}dfn{font-style:italic}h1{margin:.67em 0}mark{background:#ff0;color:#000}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}svg:not(:root){overflow:hidden}hr{box-sizing:content-box;height:0}pre,textarea{overflow:auto}code,kbd,pre,samp{font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{blockquote,img,pre,tr{page-break-inside:avoid}*,:after,:before{background:0 0!important;color:#000!important;box-shadow:none!important;text-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="javascript:"]:after,a[href^="#"]:after{content:""}blockquote,pre{border:1px solid #999}thead{display:table-header-group}img{max-width:100%!important}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #ddd!important}}.btn,.btn-danger.active,.btn-danger:active,.btn-default.active,.btn-default:active,.btn-info.active,.btn-info:active,.btn-primary.active,.btn-primary:active,.btn-warning.active,.btn-warning:active,.btn.active,.btn:active,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover,.form-control,.navbar-toggle,.open>.btn-danger.dropdown-toggle,.open>.btn-default.dropdown-toggle,.open>.btn-info.dropdown-toggle,.open>.btn-primary.dropdown-toggle,.open>.btn-warning.dropdown-toggle{background-image:none}.img-thumbnail,body{background-color:#fff}@font-face{font-family:'Glyphicons Halflings';src:url(../fonts/bootstrap/glyphicons-halflings-regular.eot);src:url(../fonts/bootstrap/glyphicons-halflings-regular.eot?#iefix) format("embedded-opentype"),url(../fonts/bootstrap/glyphicons-halflings-regular.woff2) format("woff2"),url(../fonts/bootstrap/glyphicons-halflings-regular.woff) format("woff"),url(../fonts/bootstrap/glyphicons-halflings-regular.ttf) format("truetype"),url(../fonts/bootstrap/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format("svg")}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\2a"}.glyphicon-plus:before{content:"\2b"}.glyphicon-eur:before,.glyphicon-euro:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before,.glyphicon-btc:before,.glyphicon-xbt:before{content:"\e227"}.glyphicon-jpy:before,.glyphicon-yen:before{content:"\00a5"}.glyphicon-rub:before,.glyphicon-ruble:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}*,:after,:before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:transparent}body{font-family:"Microsoft YaHei",;font-size:14px;line-height:1.42857;color:#34495e}button,input,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#337ab7;text-decoration:none}a:focus,a:hover{color:#337ab7;text-decoration:none}a:focus{outline:dotted thin;outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px}.img-responsive{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{padding:4px;line-height:1.42857;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out;display:inline-block;max-width:100%;height:auto}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border-top:1px solid #fff}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[role=button]{cursor:pointer}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-weight:400;line-height:1;color:#6c8dae}.h1,.h2,.h3,h1,h2,h3{margin-top:20px;margin-bottom:10px}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small{font-size:65%}.h4,.h5,.h6,h4,h5,h6{margin-top:10px;margin-bottom:10px}.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-size:75%}.h1,h1{font-size:36px}.h2,h2{font-size:30px}.h3,h3{font-size:24px}.h4,h4{font-size:18px}.h5,h5{font-size:14px}.h6,h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}dt,kbd kbd,label{font-weight:700}@media (min-width:768px){.lead{font-size:21px}}.small,small{font-size:85%}.mark,mark{background-color:#f9e491;padding:.2em}.list-inline,.list-unstyled{padding-left:0;list-style:none}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.initialism,.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#6c8dae}.text-primary{color:#337ab7}a.text-primary:focus,a.text-primary:hover{color:#286090}.text-success{color:#28acb8}a.text-success:focus,a.text-success:hover{color:#1f858e}.text-info{color:#327ad5}a.text-info:focus,a.text-info:hover{color:#2462b0}.text-warning{color:#c29d0b}a.text-warning:focus,a.text-warning:hover{color:#927608}.text-danger{color:#e73d4a}a.text-danger:focus,a.text-danger:hover{color:#d71b29}.bg-primary{color:#fff;background-color:#337ab7}a.bg-primary:focus,a.bg-primary:hover{background-color:#286090}.bg-success{background-color:#b4eaee}a.bg-success:focus,a.bg-success:hover{background-color:#8adee5}.bg-info{background-color:#e0ebf9}a.bg-info:focus,a.bg-info:hover{background-color:#b5cff0}.bg-warning{background-color:#f9e491}a.bg-warning:focus,a.bg-warning:hover{background-color:#f6d861}.bg-danger{background-color:#fbe1e3}a.bg-danger:focus,a.bg-danger:hover{background-color:#f6b3b8}pre code,table{background-color:transparent}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #fff}dl,ol,ul{margin-top:0}blockquote ol:last-child,blockquote p:last-child,blockquote ul:last-child,ol ol,ol ul,ul ol,ul ul{margin-bottom:0}address,dl{margin-bottom:20px}ol,ul{margin-bottom:10px}.list-inline{margin-left:-5px}.list-inline>li{display:inline-block;padding-left:5px;padding-right:5px}dd,dt{line-height:1.42857}dd{margin-left:0}.dl-horizontal dd:after,.dl-horizontal dd:before{content:" ";display:table}.dl-horizontal dd:after{clear:both}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}.container{width:750px}}.btn-group-vertical>.btn-group:after,.btn-toolbar:after,.clearfix:after,.container-fluid:after,.container:after,.dropdown-menu>li>a,.form-horizontal .form-group:after,.modal-footer:after,.navbar-collapse:after,.navbar-header:after,.navbar:after,.pager:after,.panel-body:after,.row:after{clear:both}abbr[data-original-title],abbr[title]{cursor:help;border-bottom:1px dotted #6c8dae}.initialism{font-size:90%}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #fff}blockquote .small,blockquote footer,blockquote small{display:block;font-size:80%;line-height:1.42857;color:#6c8dae}legend,pre{color:#34495e}blockquote .small:before,blockquote footer:before,blockquote small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #fff;border-left:0;text-align:right}code,kbd{padding:2px 4px;font-size:90%}caption,th{text-align:left}.blockquote-reverse .small:before,.blockquote-reverse footer:before,.blockquote-reverse small:before,blockquote.pull-right .small:before,blockquote.pull-right footer:before,blockquote.pull-right small:before{content:''}.blockquote-reverse .small:after,.blockquote-reverse footer:after,.blockquote-reverse small:after,blockquote.pull-right .small:after,blockquote.pull-right footer:after,blockquote.pull-right small:after{content:'\00A0 \2014'}address{font-style:normal;line-height:1.42857}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{color:#fff;background-color:#333;border-radius:3px;box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}kbd kbd{padding:0;font-size:100%;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}.container-fluid:after,.container-fluid:before,.container:after,.container:before,.row:after,.row:before{display:table;content:" "}.container,.container-fluid{margin-right:auto;margin-left:auto}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;border-radius:0}.container,.container-fluid{padding-left:15px;padding-right:15px}.pre-scrollable{overflow-y:scroll}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.row{margin-left:-15px;margin-right:-15px}.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{position:relative;min-height:1px;padding-left:15px;padding-right:15px}.col-xs-1{width:8.33333%}.col-xs-2{width:16.66667%}.col-xs-3{width:25%}.col-xs-4{width:33.33333%}.col-xs-5{width:41.66667%}.col-xs-6{width:50%}.col-xs-7{width:58.33333%}.col-xs-8{width:66.66667%}.col-xs-9{width:75%}.col-xs-10{width:83.33333%}.col-xs-11{width:91.66667%}.col-xs-12{width:100%}.col-xs-pull-0{right:auto}.col-xs-pull-1{right:8.33333%}.col-xs-pull-2{right:16.66667%}.col-xs-pull-3{right:25%}.col-xs-pull-4{right:33.33333%}.col-xs-pull-5{right:41.66667%}.col-xs-pull-6{right:50%}.col-xs-pull-7{right:58.33333%}.col-xs-pull-8{right:66.66667%}.col-xs-pull-9{right:75%}.col-xs-pull-10{right:83.33333%}.col-xs-pull-11{right:91.66667%}.col-xs-pull-12{right:100%}.col-xs-push-0{left:auto}.col-xs-push-1{left:8.33333%}.col-xs-push-2{left:16.66667%}.col-xs-push-3{left:25%}.col-xs-push-4{left:33.33333%}.col-xs-push-5{left:41.66667%}.col-xs-push-6{left:50%}.col-xs-push-7{left:58.33333%}.col-xs-push-8{left:66.66667%}.col-xs-push-9{left:75%}.col-xs-push-10{left:83.33333%}.col-xs-push-11{left:91.66667%}.col-xs-push-12{left:100%}.col-xs-offset-0{margin-left:0}.col-xs-offset-1{margin-left:8.33333%}.col-xs-offset-2{margin-left:16.66667%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-4{margin-left:33.33333%}.col-xs-offset-5{margin-left:41.66667%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-7{margin-left:58.33333%}.col-xs-offset-8{margin-left:66.66667%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-10{margin-left:83.33333%}.col-xs-offset-11{margin-left:91.66667%}.col-xs-offset-12{margin-left:100%}@media (min-width:768px){.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9{float:left}.col-sm-1{width:8.33333%}.col-sm-2{width:16.66667%}.col-sm-3{width:25%}.col-sm-4{width:33.33333%}.col-sm-5{width:41.66667%}.col-sm-6{width:50%}.col-sm-7{width:58.33333%}.col-sm-8{width:66.66667%}.col-sm-9{width:75%}.col-sm-10{width:83.33333%}.col-sm-11{width:91.66667%}.col-sm-12{width:100%}.col-sm-pull-0{right:auto}.col-sm-pull-1{right:8.33333%}.col-sm-pull-2{right:16.66667%}.col-sm-pull-3{right:25%}.col-sm-pull-4{right:33.33333%}.col-sm-pull-5{right:41.66667%}.col-sm-pull-6{right:50%}.col-sm-pull-7{right:58.33333%}.col-sm-pull-8{right:66.66667%}.col-sm-pull-9{right:75%}.col-sm-pull-10{right:83.33333%}.col-sm-pull-11{right:91.66667%}.col-sm-pull-12{right:100%}.col-sm-push-0{left:auto}.col-sm-push-1{left:8.33333%}.col-sm-push-2{left:16.66667%}.col-sm-push-3{left:25%}.col-sm-push-4{left:33.33333%}.col-sm-push-5{left:41.66667%}.col-sm-push-6{left:50%}.col-sm-push-7{left:58.33333%}.col-sm-push-8{left:66.66667%}.col-sm-push-9{left:75%}.col-sm-push-10{left:83.33333%}.col-sm-push-11{left:91.66667%}.col-sm-push-12{left:100%}.col-sm-offset-0{margin-left:0}.col-sm-offset-1{margin-left:8.33333%}.col-sm-offset-2{margin-left:16.66667%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-4{margin-left:33.33333%}.col-sm-offset-5{margin-left:41.66667%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-7{margin-left:58.33333%}.col-sm-offset-8{margin-left:66.66667%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-10{margin-left:83.33333%}.col-sm-offset-11{margin-left:91.66667%}.col-sm-offset-12{margin-left:100%}}@media (min-width:992px){.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9{float:left}.col-md-1{width:8.33333%}.col-md-2{width:16.66667%}.col-md-3{width:25%}.col-md-4{width:33.33333%}.col-md-5{width:41.66667%}.col-md-6{width:50%}.col-md-7{width:58.33333%}.col-md-8{width:66.66667%}.col-md-9{width:75%}.col-md-10{width:83.33333%}.col-md-11{width:91.66667%}.col-md-12{width:100%}.col-md-pull-0{right:auto}.col-md-pull-1{right:8.33333%}.col-md-pull-2{right:16.66667%}.col-md-pull-3{right:25%}.col-md-pull-4{right:33.33333%}.col-md-pull-5{right:41.66667%}.col-md-pull-6{right:50%}.col-md-pull-7{right:58.33333%}.col-md-pull-8{right:66.66667%}.col-md-pull-9{right:75%}.col-md-pull-10{right:83.33333%}.col-md-pull-11{right:91.66667%}.col-md-pull-12{right:100%}.col-md-push-0{left:auto}.col-md-push-1{left:8.33333%}.col-md-push-2{left:16.66667%}.col-md-push-3{left:25%}.col-md-push-4{left:33.33333%}.col-md-push-5{left:41.66667%}.col-md-push-6{left:50%}.col-md-push-7{left:58.33333%}.col-md-push-8{left:66.66667%}.col-md-push-9{left:75%}.col-md-push-10{left:83.33333%}.col-md-push-11{left:91.66667%}.col-md-push-12{left:100%}.col-md-offset-0{margin-left:0}.col-md-offset-1{margin-left:8.33333%}.col-md-offset-2{margin-left:16.66667%}.col-md-offset-3{margin-left:25%}.col-md-offset-4{margin-left:33.33333%}.col-md-offset-5{margin-left:41.66667%}.col-md-offset-6{margin-left:50%}.col-md-offset-7{margin-left:58.33333%}.col-md-offset-8{margin-left:66.66667%}.col-md-offset-9{margin-left:75%}.col-md-offset-10{margin-left:83.33333%}.col-md-offset-11{margin-left:91.66667%}.col-md-offset-12{margin-left:100%}}@media (min-width:1200px){.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9{float:left}.col-lg-1{width:8.33333%}.col-lg-2{width:16.66667%}.col-lg-3{width:25%}.col-lg-4{width:33.33333%}.col-lg-5{width:41.66667%}.col-lg-6{width:50%}.col-lg-7{width:58.33333%}.col-lg-8{width:66.66667%}.col-lg-9{width:75%}.col-lg-10{width:83.33333%}.col-lg-11{width:91.66667%}.col-lg-12{width:100%}.col-lg-pull-0{right:auto}.col-lg-pull-1{right:8.33333%}.col-lg-pull-2{right:16.66667%}.col-lg-pull-3{right:25%}.col-lg-pull-4{right:33.33333%}.col-lg-pull-5{right:41.66667%}.col-lg-pull-6{right:50%}.col-lg-pull-7{right:58.33333%}.col-lg-pull-8{right:66.66667%}.col-lg-pull-9{right:75%}.col-lg-pull-10{right:83.33333%}.col-lg-pull-11{right:91.66667%}.col-lg-pull-12{right:100%}.col-lg-push-0{left:auto}.col-lg-push-1{left:8.33333%}.col-lg-push-2{left:16.66667%}.col-lg-push-3{left:25%}.col-lg-push-4{left:33.33333%}.col-lg-push-5{left:41.66667%}.col-lg-push-6{left:50%}.col-lg-push-7{left:58.33333%}.col-lg-push-8{left:66.66667%}.col-lg-push-9{left:75%}.col-lg-push-10{left:83.33333%}.col-lg-push-11{left:91.66667%}.col-lg-push-12{left:100%}.col-lg-offset-0{margin-left:0}.col-lg-offset-1{margin-left:8.33333%}.col-lg-offset-2{margin-left:16.66667%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-4{margin-left:33.33333%}.col-lg-offset-5{margin-left:41.66667%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-7{margin-left:58.33333%}.col-lg-offset-8{margin-left:66.66667%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-10{margin-left:83.33333%}.col-lg-offset-11{margin-left:91.66667%}.col-lg-offset-12{margin-left:100%}}caption{padding-top:8px;padding-bottom:8px;color:#6c8dae}.table{width:100%;max-width:100%;margin-bottom:20px}.table>tbody>tr>td,.table>tbody>tr>th,.table>tfoot>tr>td,.table>tfoot>tr>th,.table>thead>tr>td,.table>thead>tr>th{vertical-align:top;border-bottom:1px solid #f0f1f9}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #e7ecf1}.table>caption+thead>tr:first-child>td,.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>td,.table>thead:first-child>tr:first-child>th{border-top:0}.table>tbody+tbody{border-top:2px solid #e7ecf1}.table .table{background-color:#fff}.table-condensed>tbody>tr>td,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>td,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>thead>tr>th{padding:5px}.table-bordered,.table-bordered>tbody>tr>td,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>td,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border:1px solid #e7ecf1}.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#fff}.table-hover>tbody>tr:hover,.table>tbody>tr.active>td,.table>tbody>tr.active>th,.table>tbody>tr>td.active,.table>tbody>tr>th.active,.table>tfoot>tr.active>td,.table>tfoot>tr.active>th,.table>tfoot>tr>td.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>thead>tr.active>th,.table>thead>tr>td.active,.table>thead>tr>th.active{background-color:#eef1f5}table col[class*=col-]{position:static;float:none;display:table-column}table td[class*=col-],table th[class*=col-]{position:static;float:none;display:table-cell}.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr.active:hover>th,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover{background-color:#dee5ec}.table>tbody>tr.success>td,.table>tbody>tr.success>th,.table>tbody>tr>td.success,.table>tbody>tr>th.success,.table>tfoot>tr.success>td,.table>tfoot>tr.success>th,.table>tfoot>tr>td.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>thead>tr.success>th,.table>thead>tr>td.success,.table>thead>tr>th.success{background-color:rgba(38,190,150,0.2)}.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr.success:hover>th,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover{background-color:rgba(38,190,150,0.2)}.table>tbody>tr.info>td,.table>tbody>tr.info>th,.table>tbody>tr>td.info,.table>tbody>tr>th.info,.table>tfoot>tr.info>td,.table>tfoot>tr.info>th,.table>tfoot>tr>td.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>thead>tr.info>th,.table>thead>tr>td.info,.table>thead>tr>th.info{background-color:#e0ebf9}.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr.info:hover>th,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover{background-color:#caddf4}.table>tbody>tr.warning>td,.table>tbody>tr.warning>th,.table>tbody>tr>td.warning,.table>tbody>tr>th.warning,.table>tfoot>tr.warning>td,.table>tfoot>tr.warning>th,.table>tfoot>tr>td.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>thead>tr.warning>th,.table>thead>tr>td.warning,.table>thead>tr>th.warning{background-color:#f9e491}.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr.warning:hover>th,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover{background-color:#f7de79}.table>tbody>tr.danger>td,.table>tbody>tr.danger>th,.table>tbody>tr>td.danger,.table>tbody>tr>th.danger,.table>tfoot>tr.danger>td,.table>tfoot>tr.danger>th,.table>tfoot>tr>td.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>thead>tr.danger>th,.table>thead>tr>td.danger,.table>thead>tr>th.danger{background-color:#fbe1e3}.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr.danger:hover>th,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover{background-color:#f8cace}.table-responsive{overflow-x:auto;min-height:.01%}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #e7ecf1}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>td,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>thead>tr>th{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}}fieldset,legend{padding:0;border:0}fieldset{margin:0;min-width:0}legend{display:block;width:100%;margin-bottom:20px;font-size:21px;line-height:inherit;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px}input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-appearance:none}input[type=checkbox],input[type=radio]{margin:4px 0 0;margin-top:1px\9;line-height:normal}.form-control,output{font-size:14px;line-height:1.42857;color:#626c72;display:block}input[type=file]{display:block}input[type=range]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type=file]:focus,input[type=checkbox]:focus,input[type=radio]:focus{outline:dotted thin;outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px}output{padding-top:7px}.form-control{width:100%;height:34px;padding:6px 6px;background-color:#fff;border:1px solid #d8e2e5;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#93a1bb;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(147,161,187,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(147,161,187,.6)}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.has-success .checkbox,.has-success .checkbox-inline,.has-success .control-label,.has-success .form-control-feedback,.has-success .help-block,.has-success .radio,.has-success .radio-inline,.has-success.checkbox label,.has-success.checkbox-inline label,.has-success.radio label,.has-success.radio-inline label{color:#28acb8}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#fff;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}@media screen and (-webkit-min-device-pixel-ratio:0){input[type=date].form-control,input[type=time].form-control,input[type=datetime-local].form-control,input[type=month].form-control{line-height:34px}.input-group-sm input[type=date],.input-group-sm input[type=time],.input-group-sm input[type=datetime-local],.input-group-sm input[type=month],.input-group-sm>.input-group-btn>input[type=date].btn,.input-group-sm>.input-group-btn>input[type=time].btn,.input-group-sm>.input-group-btn>input[type=datetime-local].btn,.input-group-sm>.input-group-btn>input[type=month].btn,.input-group-sm>input[type=date].form-control,.input-group-sm>input[type=date].input-group-addon,.input-group-sm>input[type=time].form-control,.input-group-sm>input[type=time].input-group-addon,.input-group-sm>input[type=datetime-local].form-control,.input-group-sm>input[type=datetime-local].input-group-addon,.input-group-sm>input[type=month].form-control,.input-group-sm>input[type=month].input-group-addon,input[type=date].input-sm,input[type=time].input-sm,input[type=datetime-local].input-sm,input[type=month].input-sm{line-height:30px}.input-group-lg input[type=date],.input-group-lg input[type=time],.input-group-lg input[type=datetime-local],.input-group-lg input[type=month],.input-group-lg>.input-group-btn>input[type=date].btn,.input-group-lg>.input-group-btn>input[type=time].btn,.input-group-lg>.input-group-btn>input[type=datetime-local].btn,.input-group-lg>.input-group-btn>input[type=month].btn,.input-group-lg>input[type=date].form-control,.input-group-lg>input[type=date].input-group-addon,.input-group-lg>input[type=time].form-control,.input-group-lg>input[type=time].input-group-addon,.input-group-lg>input[type=datetime-local].form-control,.input-group-lg>input[type=datetime-local].input-group-addon,.input-group-lg>input[type=month].form-control,.input-group-lg>input[type=month].input-group-addon,input[type=date].input-lg,input[type=time].input-lg,input[type=datetime-local].input-lg,input[type=month].input-lg{line-height:46px}}.form-group{margin-bottom:15px}.checkbox,.radio{position:relative;display:block;margin-top:10px;margin-bottom:10px}.checkbox label,.radio label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox],.radio input[type=radio],.radio-inline input[type=radio]{position:absolute;margin-left:-20px;margin-top:4px\9}.checkbox+.checkbox,.radio+.radio{margin-top:-5px}.checkbox-inline,.radio-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}.checkbox-inline+.checkbox-inline,.radio-inline+.radio-inline{margin-top:0;margin-left:10px}.checkbox-inline.disabled,.checkbox.disabled label,.radio-inline.disabled,.radio.disabled label,fieldset[disabled] .checkbox label,fieldset[disabled] .checkbox-inline,fieldset[disabled] .radio label,fieldset[disabled] .radio-inline,fieldset[disabled] input[type=checkbox],fieldset[disabled] input[type=radio],input[type=checkbox].disabled,input[type=checkbox][disabled],input[type=radio].disabled,input[type=radio][disabled]{cursor:not-allowed}.form-control-static{padding-top:7px;padding-bottom:7px;margin-bottom:0;min-height:34px}.form-control-static.input-lg,.form-control-static.input-sm,.input-group-lg>.form-control-static.form-control,.input-group-lg>.form-control-static.input-group-addon,.input-group-lg>.input-group-btn>.form-control-static.btn,.input-group-sm>.form-control-static.form-control,.input-group-sm>.form-control-static.input-group-addon,.input-group-sm>.input-group-btn>.form-control-static.btn{padding-left:0;padding-right:0}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn,.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.input-group-sm>.input-group-btn>select.btn,.input-group-sm>select.form-control,.input-group-sm>select.input-group-addon,select.input-sm{height:30px;line-height:30px}.input-group-sm>.input-group-btn>select[multiple].btn,.input-group-sm>.input-group-btn>textarea.btn,.input-group-sm>select[multiple].form-control,.input-group-sm>select[multiple].input-group-addon,.input-group-sm>textarea.form-control,.input-group-sm>textarea.input-group-addon,select[multiple].input-sm,textarea.input-sm{height:auto}.form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.form-group-sm select.form-control{height:30px;line-height:30px}.form-group-sm select[multiple].form-control,.form-group-sm textarea.form-control{height:auto}.form-group-sm .form-control-static{height:30px;min-height:32px;padding:6px 10px;font-size:12px;line-height:1.5}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn,.input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.33333;border-radius:6px}.input-group-lg>.input-group-btn>select.btn,.input-group-lg>select.form-control,.input-group-lg>select.input-group-addon,select.input-lg{height:46px;line-height:46px}.input-group-lg>.input-group-btn>select[multiple].btn,.input-group-lg>.input-group-btn>textarea.btn,.input-group-lg>select[multiple].form-control,.input-group-lg>select[multiple].input-group-addon,.input-group-lg>textarea.form-control,.input-group-lg>textarea.input-group-addon,select[multiple].input-lg,textarea.input-lg{height:auto}.form-group-lg .form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.33333;border-radius:6px}.form-group-lg select.form-control{height:46px;line-height:46px}.form-group-lg select[multiple].form-control,.form-group-lg textarea.form-control{height:auto}.form-group-lg .form-control-static{height:46px;min-height:38px;padding:11px 16px;font-size:18px;line-height:1.33333}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center;pointer-events:none}.collapsing,.dropdown,.dropup{position:relative}.form-group-lg .form-control+.form-control-feedback,.input-group-lg+.form-control-feedback,.input-group-lg>.form-control+.form-control-feedback,.input-group-lg>.input-group-addon+.form-control-feedback,.input-group-lg>.input-group-btn>.btn+.form-control-feedback,.input-lg+.form-control-feedback{width:46px;height:46px;line-height:46px}.form-group-sm .form-control+.form-control-feedback,.input-group-sm+.form-control-feedback,.input-group-sm>.form-control+.form-control-feedback,.input-group-sm>.input-group-addon+.form-control-feedback,.input-group-sm>.input-group-btn>.btn+.form-control-feedback,.input-sm+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .form-control{border-color:#28acb8;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#1f858e;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #68d4de;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #68d4de}.has-success .input-group-addon{color:#28acb8;border-color:#28acb8;background-color:#b4eaee}.has-warning .checkbox,.has-warning .checkbox-inline,.has-warning .control-label,.has-warning .form-control-feedback,.has-warning .help-block,.has-warning .radio,.has-warning .radio-inline,.has-warning.checkbox label,.has-warning.checkbox-inline label,.has-warning.radio label,.has-warning.radio-inline label{color:#c29d0b}.has-warning .form-control{border-color:#c29d0b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#927608;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #f4d03f;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #f4d03f}.has-warning .input-group-addon{color:#c29d0b;border-color:#c29d0b;background-color:#f9e491}.has-error .checkbox,.has-error .checkbox-inline,.has-error .control-label,.has-error .form-control-feedback,.has-error .help-block,.has-error .radio,.has-error .radio-inline,.has-error.checkbox label,.has-error.checkbox-inline label,.has-error.radio label,.has-error.radio-inline label{color:#e73d4a}.has-error .form-control{border-color:#e73d4a;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#d71b29;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #f2989f;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #f2989f}.has-error .input-group-addon{color:#e73d4a;border-color:#e73d4a;background-color:#fbe1e3}.has-feedback label~.form-control-feedback{top:25px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#6789ab}@media (min-width:768px){.form-inline .form-control-static,.form-inline .form-group{display:inline-block}.form-inline .control-label,.form-inline .form-group{margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .form-control,.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .checkbox,.form-inline .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .checkbox label,.form-inline .radio label{padding-left:0}.form-inline .checkbox input[type=checkbox],.form-inline .radio input[type=radio]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}.form-horizontal .control-label{text-align:right;margin-bottom:0;padding-top:7px}}.form-horizontal .checkbox,.form-horizontal .checkbox-inline,.form-horizontal .radio,.form-horizontal .radio-inline{margin-top:0;margin-bottom:0;padding-top:7px}.form-horizontal .checkbox,.form-horizontal .radio{min-height:27px}.form-horizontal .form-group{margin-left:-15px;margin-right:-15px}.form-horizontal .form-group:after,.form-horizontal .form-group:before{content:" ";display:table}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:14.33px;font-size:18px}.form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:12px}}.btn{display:inline-block;margin-bottom:0;font-weight:400;text-align:center;touch-action:manipulation;cursor:pointer;border:1px solid transparent;white-space:nowrap;padding:6px 12px;font-size:14px;line-height:1.42857;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.btn.active.focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn:active:focus,.btn:focus{outline:dotted thin;outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px}.btn.focus,.btn:focus,.btn:hover{color:#333;text-decoration:none}.btn.active,.btn:active{outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-default{color:#9B9B9B;background-color:#fff;border-color:#ccc}.btn-default.active,.btn-default.focus,.btn-default:active,.btn-default:focus,.btn-default:hover,.open>.btn-default.dropdown-toggle{color:#9B9B9B}.btn-default.active.focus,.btn-default.active:focus,.btn-default.active:hover,.btn-default:active.focus,.btn-default:active:focus,.btn-default:active:hover,.open>.btn-default.dropdown-toggle.focus,.open>.btn-default.dropdown-toggle:focus,.open>.btn-default.dropdown-toggle:hover{color:#333;}.btn-default.disabled,.btn-default.disabled.active,.btn-default.disabled.focus,.btn-default.disabled:active,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled],.btn-default[disabled].active,.btn-default[disabled].focus,.btn-default[disabled]:active,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default,fieldset[disabled] .btn-default.active,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:active,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#337ab7;border-color:#2e6da4}.btn-primary.active,.btn-primary.focus,.btn-primary:active,.btn-primary:focus,.btn-primary:hover,.open>.btn-primary.dropdown-toggle{color:#fff;background-color:#286090;border-color:#23527c}.btn-primary.active.focus,.btn-primary.active:focus,.btn-primary.active:hover,.btn-primary:active.focus,.btn-primary:active:focus,.btn-primary:active:hover,.open>.btn-primary.dropdown-toggle.focus,.open>.btn-primary.dropdown-toggle:focus,.open>.btn-primary.dropdown-toggle:hover{color:#fff;background-color:#255884;border-color:#1f4a70}.btn-primary.disabled,.btn-primary.disabled.active,.btn-primary.disabled.focus,.btn-primary.disabled:active,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled],.btn-primary[disabled].active,.btn-primary[disabled].focus,.btn-primary[disabled]:active,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary.active,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#337ab7;border-color:#2e6da4}.btn-primary .badge{color:#337ab7;background-color:#fff}.btn-success{color:#fff;background-color:#3fc9d5;border-color:#2dc0cd}.btn-success.active,.btn-success.focus,.btn-success:active,.btn-success:focus,.btn-success:hover,.open>.btn-success.dropdown-toggle{color:#fff;background-color:#28acb8;border-color:#2499a3}.btn-success.active.focus,.btn-success.active:focus,.btn-success.active:hover,.btn-success:active.focus,.btn-success:active:focus,.btn-success:active:hover,.open>.btn-success.dropdown-toggle.focus,.open>.btn-success.dropdown-toggle:focus,.open>.btn-success.dropdown-toggle:hover{color:#fff;background-color:#26a1ab;border-color:#218d96}.btn-success.active,.btn-success:active,.open>.btn-success.dropdown-toggle{background-image:none}.btn-success.disabled,.btn-success.disabled.active,.btn-success.disabled.focus,.btn-success.disabled:active,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled],.btn-success[disabled].active,.btn-success[disabled].focus,.btn-success[disabled]:active,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success,fieldset[disabled] .btn-success.active,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:active,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#3fc9d5;border-color:#2dc0cd}.btn-success .badge{color:#3fc9d5;background-color:#fff}.btn-info{color:#fff;background-color:#659be0;border-color:#508edb}.btn-info.active,.btn-info.focus,.btn-info:active,.btn-info:focus,.btn-info:hover,.open>.btn-info.dropdown-toggle{color:#fff;background-color:#3a80d7;border-color:#2a73ce}.btn-info.active.focus,.btn-info.active:focus,.btn-info.active:hover,.btn-info:active.focus,.btn-info:active:focus,.btn-info:active:hover,.open>.btn-info.dropdown-toggle.focus,.open>.btn-info.dropdown-toggle:focus,.open>.btn-info.dropdown-toggle:hover{color:#fff;background-color:#2e78d4;border-color:#276cc1}.btn-info.disabled,.btn-info.disabled.active,.btn-info.disabled.focus,.btn-info.disabled:active,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled],.btn-info[disabled].active,.btn-info[disabled].focus,.btn-info[disabled]:active,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info,fieldset[disabled] .btn-info.active,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:active,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#659be0;border-color:#508edb}.btn-info .badge{color:#659be0;background-color:#fff}.btn-warning{color:#fff;background-color:#F1C40F;border-color:#dab10d}.btn-warning.active,.btn-warning.focus,.btn-warning:active,.btn-warning:focus,.btn-warning:hover,.open>.btn-warning.dropdown-toggle{color:#fff;background-color:#c29d0b;border-color:#aa8a0a}.btn-warning.active.focus,.btn-warning.active:focus,.btn-warning.active:hover,.btn-warning:active.focus,.btn-warning:active:focus,.btn-warning:active:hover,.open>.btn-warning.dropdown-toggle.focus,.open>.btn-warning.dropdown-toggle:focus,.open>.btn-warning.dropdown-toggle:hover{color:#fff;background-color:#b3920a;border-color:#9b7e09}.btn-warning.disabled,.btn-warning.disabled.active,.btn-warning.disabled.focus,.btn-warning.disabled:active,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled],.btn-warning[disabled].active,.btn-warning[disabled].focus,.btn-warning[disabled]:active,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning,fieldset[disabled] .btn-warning.active,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:active,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#F1C40F;border-color:#dab10d}.btn-warning .badge{color:#F1C40F;background-color:#fff}.btn-danger{color:#fff;background-color:#ed6b75;border-color:#ea5460}.btn-danger.active,.btn-danger.focus,.btn-danger:active,.btn-danger:focus,.btn-danger:hover,.open>.btn-danger.dropdown-toggle{color:#fff;background-color:#e73d4a;border-color:#e42735}.btn-danger.active.focus,.btn-danger.active:focus,.btn-danger.active:hover,.btn-danger:active.focus,.btn-danger:active:focus,.btn-danger:active:hover,.open>.btn-danger.dropdown-toggle.focus,.open>.btn-danger.dropdown-toggle:focus,.open>.btn-danger.dropdown-toggle:hover{color:#fff;background-color:#e5303e;border-color:#e01c2b}.btn-danger.disabled,.btn-danger.disabled.active,.btn-danger.disabled.focus,.btn-danger.disabled:active,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled],.btn-danger[disabled].active,.btn-danger[disabled].focus,.btn-danger[disabled]:active,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger,fieldset[disabled] .btn-danger.active,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:active,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#ed6b75;border-color:#ea5460}.btn-danger .badge{color:#ed6b75;background-color:#fff}.btn-link{color:#337ab7;font-weight:400;border-radius:0}.btn-link,.btn-link.active,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:active,.btn-link:focus,.btn-link:hover{border-color:transparent}.btn-link:focus,.btn-link:hover{color:#23527c;text-decoration:underline;background-color:transparent}.btn-link[disabled]:focus,.btn-link[disabled]:hover,fieldset[disabled] .btn-link:focus,fieldset[disabled] .btn-link:hover{color:#6c8dae;text-decoration:none}.btn-group-lg>.btn,.btn-lg{padding:10px 16px;font-size:18px;line-height:1.33333;border-radius:6px}.btn-group-sm>.btn,.btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-group-xs>.btn,.btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{height:0;overflow:hidden;-webkit-transition-property:height,visibility;transition-property:height,visibility;-webkit-transition-duration:.35s;transition-duration:.35s;-webkit-transition-timing-function:ease;transition-timing-function:ease}.caret{display:inline-block;width:0;height:0;margin-left:2px;border-top:4px dashed;border-top:4px solid\9;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;padding:5px 0;margin:2px 0 0;list-style:none;font-size:14px;text-align:left;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175);background-clip:padding-box}.dropdown-menu-right,.dropdown-menu.pull-right{left:auto;right:0}.dropdown-header,.dropdown-menu>li>a{display:block;padding:3px 20px;line-height:1.42857;white-space:nowrap}.btn-group-vertical>.btn:not(:first-child):not(:last-child),.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn,.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{font-weight:400;color:#34495e}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{text-decoration:none;color:#2b3c4e;background-color:#e1e5ec}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;outline:0;background-color:#337ab7}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{color:#6c8dae}.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{text-decoration:none;background-color:transparent;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);cursor:not-allowed}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-left{left:0;right:auto}.dropdown-header{font-size:12px;color:#6c8dae}.dropdown-backdrop{position:fixed;left:0;right:0;bottom:0;top:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px dashed;border-bottom:4px solid\9;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}.navbar-right .dropdown-menu-left{left:0;right:auto}}.btn-group,.btn-group-vertical{position:relative;display:inline-block}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;float:left}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar:after,.btn-toolbar:before{content:" ";display:table}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn .caret,.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px}.btn-group-lg.btn-group>.btn+.dropdown-toggle,.btn-group>.btn-lg+.dropdown-toggle{padding-left:12px;padding-right:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn-group-lg>.btn .caret,.btn-lg .caret{border-width:5px 5px 0}.dropup .btn-group-lg>.btn .caret,.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group:after,.btn-group-vertical>.btn-group:before{content:" ";display:table}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-bottom-left-radius:4px;border-top-right-radius:0;border-top-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn,.input-group .form-control:not(:first-child):not(:last-child),.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{float:none;display:table-cell;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle=buttons]>.btn input[type=checkbox],[data-toggle=buttons]>.btn input[type=radio],[data-toggle=buttons]>.btn-group>.btn input[type=checkbox],[data-toggle=buttons]>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group,.input-group-btn,.input-group-btn>.btn{position:relative}.input-group{display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-left:0;padding-right:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group .form-control,.input-group-addon,.input-group-btn{display:table-cell}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#4d6b8a;text-align:center;background-color:#fff;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.input-group-addon.btn{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.input-group-addon.btn{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type=checkbox],.input-group-addon input[type=radio]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn-group:not(:last-child)>.btn,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle{border-bottom-left-radius:0;border-top-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{font-size:0;white-space:nowrap}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:active,.input-group-btn>.btn:focus,.input-group-btn>.btn:hover{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{z-index:2;margin-left:-1px}.nav{margin-bottom:0;padding-left:0;list-style:none}.nav:after,.nav:before{content:" ";display:table}.nav>li,.nav>li>a{display:block;position:relative}.nav:after{clear:both}.nav>li>a{padding:10px 15px}.nav>li>a:focus,.nav>li>a:hover{text-decoration:none;background-color:#fff}.nav>li.disabled>a{color:#6c8dae}.nav>li.disabled>a:focus,.nav>li.disabled>a:hover{color:#6c8dae;text-decoration:none;background-color:transparent;cursor:not-allowed}.nav .open>a,.nav .open>a:focus,.nav .open>a:hover{background-color:#fff;border-color:#337ab7}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#fff #fff #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:focus,.nav-tabs>li.active>a:hover{color:#4d6b8a;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent;cursor:default}.nav-pills>li{float:left}.nav-justified>li,.nav-stacked>li,.nav-tabs.nav-justified>li{float:none}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:focus,.nav-pills>li.active>a:hover{color:#fff;background-color:#337ab7}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified,.nav-tabs.nav-justified{width:100%}.nav-justified>li>a,.nav-tabs.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}.nav-tabs-justified,.nav-tabs.nav-justified{border-bottom:0}.nav-tabs-justified>li>a,.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-justified>li,.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a,.nav-tabs.nav-justified>li>a{margin-bottom:0}.nav-tabs-justified>li>a,.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar-collapse:after,.navbar-collapse:before,.navbar-header:after,.navbar-header:before,.navbar:after,.navbar:before{content:" ";display:table}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}.navbar-collapse{overflow-x:visible;padding-right:15px;padding-left:15px;border-top:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,.1);-webkit-overflow-scrolling:touch}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar{border-radius:4px}.navbar-header{float:left}.navbar-collapse{width:auto;border-top:0;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse{padding-left:0;padding-right:0}}.embed-responsive,.modal,.modal-open,.progress{overflow:hidden}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:200px}}.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:-15px;margin-left:-15px}.navbar-static-top{z-index:9995;border-width:0 0 1px}.navbar-fixed-bottom,.navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;padding:15px;font-size:18px;line-height:20px;height:50px}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:0;margin-left:0}.navbar-fixed-bottom,.navbar-fixed-top,.navbar-static-top{border-radius:0}.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;margin-right:15px;padding:9px 10px;margin-top:8px;margin-bottom:8px;background-color:transparent;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;box-shadow:none}.navbar-nav .open .dropdown-menu .dropdown-header,.navbar-nav .open .dropdown-menu>li>a{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:focus,.navbar-nav .open .dropdown-menu>li>a:hover{background-image:none}}.progress-bar-striped,.progress-striped .progress-bar,.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}@media (min-width:768px){.navbar-toggle{display:none}.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}.navbar-form{padding:10px 15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);margin:8px -15px}@media (min-width:768px){.navbar-form .form-control-static,.navbar-form .form-group{display:inline-block}.navbar-form .control-label,.navbar-form .form-group{margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .form-control,.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .checkbox,.navbar-form .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .checkbox label,.navbar-form .radio label{padding-left:0}.navbar-form .checkbox input[type=checkbox],.navbar-form .radio input[type=radio]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}.navbar-form{width:auto;border:0;margin-left:0;margin-right:0;padding-top:0;padding-bottom:0;-webkit-box-shadow:none;box-shadow:none}}.breadcrumb>li,.pagination{display:inline-block}.btn .badge,.btn .label{top:-1px;position:relative}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-radius:4px 4px 0 0}.navbar-btn{margin-top:8px;margin-bottom:8px}.btn-group-sm>.navbar-btn.btn,.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.btn-group-xs>.navbar-btn.btn,.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-text{float:left;margin-left:15px;margin-right:15px}.navbar-left{float:left!important}.navbar-right{float:right!important;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:focus,.navbar-default .navbar-brand:hover{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-nav>li>a,.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a:focus,.navbar-default .navbar-nav>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:focus,.navbar-default .navbar-nav>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:focus,.navbar-default .navbar-nav>.disabled>a:hover{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:focus,.navbar-default .navbar-toggle:hover{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:focus,.navbar-default .navbar-nav>.open>a:hover{background-color:#e7e7e7;color:#555}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-default .btn-link{color:#777}.navbar-default .btn-link:focus,.navbar-default .btn-link:hover{color:#333}.navbar-default .btn-link[disabled]:focus,.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:focus,fieldset[disabled] .navbar-default .btn-link:hover{color:#ccc}.navbar-inverse{background-color:#222;border-color:#090909}.navbar-inverse .navbar-brand{color:#9eb3c9}.navbar-inverse .navbar-brand:focus,.navbar-inverse .navbar-brand:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>li>a,.navbar-inverse .navbar-text{color:#9eb3c9}.navbar-inverse .navbar-nav>li>a:focus,.navbar-inverse .navbar-nav>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:focus,.navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#090909}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:focus,.navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:focus,.navbar-inverse .navbar-toggle:hover{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:focus,.navbar-inverse .navbar-nav>.open>a:hover{background-color:#090909;color:#fff}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#090909}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#090909}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#9eb3c9}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-color:#090909}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#9eb3c9}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#9eb3c9}.navbar-inverse .btn-link:focus,.navbar-inverse .btn-link:hover{color:#fff}.navbar-inverse .btn-link[disabled]:focus,.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:focus,fieldset[disabled] .navbar-inverse .btn-link:hover{color:#444}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li+li:before{content:"/\\00a0";padding:0 5px;color:#ccc}.breadcrumb>.active{color:#6c8dae}.pagination{padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;line-height:1.42857;text-decoration:none;color:#337ab7;background-color:#fff;border:1px solid #ddd;margin-left:-1px}.list-group-item>.badge,.pager .next>a,.pager .next>span{float:right}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:4px;border-top-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-bottom-right-radius:4px;border-top-right-radius:4px}.pagination>li>a:focus,.pagination>li>a:hover,.pagination>li>span:focus,.pagination>li>span:hover{z-index:3;color:#23527c;background-color:#fff;border-color:#ddd}.pagination>.active>a,.pagination>.active>a:focus,.pagination>.active>a:hover,.pagination>.active>span,.pagination>.active>span:focus,.pagination>.active>span:hover{z-index:2;color:#fff;background-color:#337ab7;border-color:#337ab7;cursor:default}.pagination>.disabled>a,.pagination>.disabled>a:focus,.pagination>.disabled>a:hover,.pagination>.disabled>span,.pagination>.disabled>span:focus,.pagination>.disabled>span:hover{color:#6c8dae;background-color:#fff;border-color:#ddd;cursor:not-allowed}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px;line-height:1.33333}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-bottom-left-radius:6px;border-top-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-bottom-right-radius:6px;border-top-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px;line-height:1.5}.badge,.label{font-weight:700;line-height:1;white-space:nowrap;text-align:center}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-bottom-left-radius:3px;border-top-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-bottom-right-radius:3px;border-top-right-radius:3px}.pager{padding-left:0;margin:20px 0;list-style:none;text-align:center}.pager:after,.pager:before{content:" ";display:table}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:focus,.pager li>a:hover{text-decoration:none;background-color:#fff}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:focus,.pager .disabled>a:hover,.pager .disabled>span{color:#6c8dae;background-color:#fff;cursor:not-allowed}.label{display:inline;padding:.2em .6em .3em;font-size:75%;color:#fff;vertical-align:baseline;border-radius:.25em}.label:empty{display:none}a.label:focus,a.label:hover{color:#fff;text-decoration:none;cursor:pointer}.label-default{background-color:#6c8dae}.label-default[href]:focus,.label-default[href]:hover{background-color:#527495}.label-primary{background-color:#337ab7}.label-primary[href]:focus,.label-primary[href]:hover{background-color:#286090}.label-success{background-color:#3fc9d5}.label-success[href]:focus,.label-success[href]:hover{background-color:#28acb8}.label-info{background-color:#659be0}.label-info[href]:focus,.label-info[href]:hover{background-color:#3a80d7}.label-warning{background-color:#F1C40F}.label-warning[href]:focus,.label-warning[href]:hover{background-color:#c29d0b}.label-danger{background-color:#ed6b75}.label-danger[href]:focus,.label-danger[href]:hover{background-color:#e73d4a}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;color:#fff;vertical-align:middle;background-color:#6c8dae;border-radius:10px}.jumbotron,.thumbnail{background-color:#fff}.badge:empty{display:none}.media-object,.thumbnail{display:block}.btn-group-xs>.btn .badge,.btn-xs .badge{top:0;padding:1px 5px}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#337ab7;background-color:#fff}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}a.badge:focus,a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.jumbotron,.jumbotron .h1,.jumbotron h1{color:inherit}.jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.alert,.thumbnail{margin-bottom:20px}.alert .alert-link,.close{font-weight:700}.jumbotron>hr{border-top-color:#e6e6e6}.container .jumbotron,.container-fluid .jumbotron{border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron,.container-fluid .jumbotron{padding-left:60px;padding-right:60px}.jumbotron .h1,.jumbotron h1{font-size:63px}}.thumbnail{padding:4px;line-height:1.42857;border:1px solid #ddd;border-radius:4px;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.thumbnail a>img,.thumbnail>img{display:block;width:100%;height:100%;margin-left:auto;margin-right:auto}.thumbnail .caption{padding:9px;color:#34495e}a.thumbnail.active,a.thumbnail:focus,a.thumbnail:hover{border-color:#337ab7}.alert{padding:15px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.modal,.modal-backdrop{top:0;right:0;bottom:0;left:0}.alert-success{background-color:#b4eaee;border-color:#b4eaee;color:#28acb8}.alert-success hr{border-top-color:#9fe4ea}.alert-success .alert-link{color:#1f858e}.alert-info{background-color:#e0ebf9;border-color:#e0ebf9;color:#327ad5}.alert-info hr{border-top-color:#caddf4}.alert-info .alert-link{color:#2462b0}.alert-warning{background-color:#f9e491;border-color:#f9e491;color:#c29d0b}.alert-warning hr{border-top-color:#f7de79}.alert-warning .alert-link{color:#927608}.alert-danger{background-color:#fbe1e3;border-color:#fbe1e3;color:#e73d4a}.alert-danger hr{border-top-color:#f8cace}.alert-danger .alert-link{color:#d71b29}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:20px;margin-bottom:20px;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#337ab7;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress-bar-striped,.progress-striped .progress-bar{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:40px 40px}.progress-bar.active,.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#3fc9d5}.progress-striped .progress-bar-success{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-striped .progress-bar-info,.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-info{background-color:#659be0}.progress-striped .progress-bar-info{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-warning{background-color:#F1C40F}.progress-striped .progress-bar-warning{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-danger{background-color:#ed6b75}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{zoom:1;overflow:hidden}.media-body{width:10000px}.media-object.img-thumbnail{max-width:none}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-body,.media-left,.media-right{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{margin-bottom:20px;padding-left:0}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-right-radius:4px;border-top-left-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}a.list-group-item,button.list-group-item{color:#555}a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:#333}a.list-group-item:focus,a.list-group-item:hover,button.list-group-item:focus,button.list-group-item:hover{text-decoration:none;color:#555;background-color:#f5f5f5}button.list-group-item{width:100%;text-align:left}.list-group-item.disabled,.list-group-item.disabled:focus,.list-group-item.disabled:hover{background-color:#fff;color:#6c8dae;cursor:not-allowed}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text{color:#6c8dae}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{z-index:2;color:#fff;background-color:#337ab7;border-color:#337ab7}.list-group-item.active .list-group-item-heading,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:focus .list-group-item-text,.list-group-item.active:hover .list-group-item-text{color:#c7ddef}.list-group-item-success{color:#28acb8;background-color:#b4eaee}a.list-group-item-success,button.list-group-item-success{color:#28acb8}a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:focus,a.list-group-item-success:hover,button.list-group-item-success:focus,button.list-group-item-success:hover{color:#28acb8;background-color:#9fe4ea}a.list-group-item-success.active,a.list-group-item-success.active:focus,a.list-group-item-success.active:hover,button.list-group-item-success.active,button.list-group-item-success.active:focus,button.list-group-item-success.active:hover{color:#fff;background-color:#28acb8;border-color:#28acb8}.list-group-item-info{color:#327ad5;background-color:#e0ebf9}a.list-group-item-info,button.list-group-item-info{color:#327ad5}a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:focus,a.list-group-item-info:hover,button.list-group-item-info:focus,button.list-group-item-info:hover{color:#327ad5;background-color:#caddf4}a.list-group-item-info.active,a.list-group-item-info.active:focus,a.list-group-item-info.active:hover,button.list-group-item-info.active,button.list-group-item-info.active:focus,button.list-group-item-info.active:hover{color:#fff;background-color:#327ad5;border-color:#327ad5}.list-group-item-warning{color:#c29d0b;background-color:#f9e491}a.list-group-item-warning,button.list-group-item-warning{color:#c29d0b}a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:focus,a.list-group-item-warning:hover,button.list-group-item-warning:focus,button.list-group-item-warning:hover{color:#c29d0b;background-color:#f7de79}a.list-group-item-warning.active,a.list-group-item-warning.active:focus,a.list-group-item-warning.active:hover,button.list-group-item-warning.active,button.list-group-item-warning.active:focus,button.list-group-item-warning.active:hover{color:#fff;background-color:#c29d0b;border-color:#c29d0b}.list-group-item-danger{color:#e73d4a;background-color:#fbe1e3}a.list-group-item-danger,button.list-group-item-danger{color:#e73d4a}a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:focus,a.list-group-item-danger:hover,button.list-group-item-danger:focus,button.list-group-item-danger:hover{color:#e73d4a;background-color:#f8cace}a.list-group-item-danger.active,a.list-group-item-danger.active:focus,a.list-group-item-danger.active:hover,button.list-group-item-danger.active,button.list-group-item-danger.active:focus,button.list-group-item-danger.active:hover{color:#fff;background-color:#e73d4a;border-color:#e73d4a}.panel-heading>.dropdown .dropdown-toggle,.panel-title,.panel-title>.small,.panel-title>.small>a,.panel-title>a,.panel-title>small,.panel-title>small>a{color:inherit}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);box-shadow:0 1px 1px rgba(0,0,0,.05)}.panel-title,.panel>.list-group,.panel>.panel-collapse>.list-group,.panel>.panel-collapse>.table,.panel>.table,.panel>.table-responsive>.table{margin-bottom:0}.panel-body{padding:15px}.panel-body:after,.panel-body:before{content:" ";display:table}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:3px;border-top-left-radius:3px}.panel-title{margin-top:0;font-size:16px}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel-group .panel-heading,.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th{border-bottom:0}.panel>.table-responsive:last-child>.table:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-left-radius:3px;border-bottom-right-radius:3px}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-right-radius:3px;border-top-left-radius:3px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-right-radius:0;border-top-left-radius:0}.panel>.table-responsive:first-child>.table:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table:first-child>thead:first-child>tr:first-child{border-top-right-radius:3px;border-top-left-radius:3px}.list-group+.panel-footer,.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.panel>.panel-collapse>.table caption,.panel>.table caption,.panel>.table-responsive>.table caption{padding-left:15px;padding-right:15px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #e7ecf1}.panel>.table>tbody:first-child>tr:first-child td,.panel>.table>tbody:first-child>tr:first-child th{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.panel>.table-responsive{border:0;margin-bottom:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading+.panel-collapse>.list-group,.panel-group .panel-heading+.panel-collapse>.panel-body{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#34495e;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#34495e}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#337ab7}.panel-primary>.panel-heading{color:#fff;background-color:#337ab7;border-color:#337ab7}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#337ab7}.panel-primary>.panel-heading .badge{color:#337ab7;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#337ab7}.panel-success{border-color:#b4eaee}.panel-success>.panel-heading{color:#28acb8;background-color:#b4eaee;border-color:#b4eaee}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#b4eaee}.panel-success>.panel-heading .badge{color:#b4eaee;background-color:#28acb8}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#b4eaee}.panel-info{border-color:#e0ebf9}.panel-info>.panel-heading{color:#327ad5;background-color:#e0ebf9;border-color:#e0ebf9}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#e0ebf9}.panel-info>.panel-heading .badge{color:#e0ebf9;background-color:#327ad5}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#e0ebf9}.panel-warning{border-color:#f9e491}.panel-warning>.panel-heading{color:#c29d0b;background-color:#f9e491;border-color:#f9e491}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#f9e491}.panel-warning>.panel-heading .badge{color:#f9e491;background-color:#c29d0b}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#f9e491}.panel-danger{border-color:#fbe1e3}.panel-danger>.panel-heading{color:#e73d4a;background-color:#fbe1e3;border-color:#fbe1e3}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#fbe1e3}.panel-danger>.panel-heading .badge{color:#fbe1e3;background-color:#e73d4a}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#fbe1e3}.embed-responsive{position:relative;display:block;height:0;padding:0}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;left:0;bottom:0;height:100%;width:100%;border:0}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f1f4f7;border:1px solid #dae2ea;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;filter:alpha(opacity=20)}.popover,.tooltip{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-style:normal;font-weight:400;letter-spacing:normal;line-break:auto;line-height:1.42857;text-shadow:none;text-transform:none;white-space:normal;word-break:normal;word-spacing:normal;word-wrap:normal;text-decoration:none}.close:focus,.close:hover{color:#000;text-decoration:none;cursor:pointer;opacity:.5;filter:alpha(opacity=50)}button.close{padding:0;cursor:pointer;background:0 0;border:0;-webkit-appearance:none}.modal-content,.popover{background-clip:padding-box}.modal{display:none;position:fixed;z-index:10050;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);-o-transform:translate(0,-25%);transform:translate(0,-25%);-webkit-transition:-webkit-transform .3s ease-out;-moz-transition:-moz-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;}.modal-content{position:relative;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5);outline:0}.modal-backdrop{position:fixed;z-index:10049;background-color:#000}.modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.modal-backdrop.in{opacity:.5;filter:alpha(opacity=50)}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5;min-height:16.43px}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer:after,.modal-footer:before{content:" ";display:table}.modal-footer .btn+.btn{margin-left:5px;margin-bottom:0}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}.modal-sm{width:300px}}.tooltip.top-left .tooltip-arrow,.tooltip.top-right .tooltip-arrow{bottom:0;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1030;display:block;text-align:left;text-align:start;font-size:12px;opacity:0;filter:alpha(opacity=0)}.tooltip.in{opacity:.9;filter:alpha(opacity=90)}.tooltip.top{margin-top:-3px;padding:5px 0}.tooltip.right{margin-left:3px;padding:0 5px}.tooltip.bottom{margin-top:3px;padding:5px 0}.tooltip.left{margin-left:-3px;padding:0 5px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{right:5px}.tooltip.top-right .tooltip-arrow{left:5px}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow,.tooltip.bottom-left .tooltip-arrow,.tooltip.bottom-right .tooltip-arrow{border-width:0 5px 5px;border-bottom-color:#000;top:0}.tooltip.bottom .tooltip-arrow{left:50%;margin-left:-5px}.tooltip.bottom-left .tooltip-arrow{right:5px;margin-top:-5px}.tooltip.bottom-right .tooltip-arrow{left:5px;margin-top:-5px}.popover{position:absolute;top:0;left:0;z-index:1010;display:none;max-width:276px;padding:1px;text-align:left;text-align:start;font-size:14px;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2)}.carousel-caption,.carousel-control{color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{margin:0;padding:8px 14px;font-size:14px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.carousel,.carousel-inner{position:relative}.popover>.arrow{border-width:11px}.popover>.arrow:after{border-width:10px;content:""}.popover.top>.arrow{left:50%;margin-left:-11px;border-bottom-width:0;border-top-color:#999;border-top-color:rgba(0,0,0,.25);bottom:-11px}.popover.top>.arrow:after{content:" ";bottom:1px;margin-left:-10px;border-bottom-width:0;border-top-color:#fff}.popover.left>.arrow:after,.popover.right>.arrow:after{content:" ";bottom:-10px}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-left-width:0;border-right-color:#999;border-right-color:rgba(0,0,0,.25)}.popover.right>.arrow:after{left:1px;border-left-width:0;border-right-color:#fff}.popover.bottom>.arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25);top:-11px}.popover.bottom>.arrow:after{content:" ";top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}.popover.left>.arrow:after{right:1px;border-right-width:0;border-left-color:#fff}.carousel-inner{overflow:hidden;width:100%}.carousel-inner>.item{display:none;position:relative;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>a>img,.carousel-inner>.item>img{display:block;max-width:100%;height:auto;line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-moz-transition:-moz-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;-moz-perspective:1000px;perspective:1000px}.carousel-inner>.item.active.right,.carousel-inner>.item.next{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0);left:0}.carousel-inner>.item.active.left,.carousel-inner>.item.prev{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0);left:0}.carousel-inner>.item.active,.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);left:0}}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;left:0;bottom:0;width:15%;opacity:.5;filter:alpha(opacity=50);font-size:20px}.carousel-control.left{background-image:-webkit-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1)}.carousel-control.right{left:auto;right:0;background-image:-webkit-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1)}.carousel-control:focus,.carousel-control:hover{outline:0;color:#fff;text-decoration:none;opacity:.9;filter:alpha(opacity=90)}.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{position:absolute;top:50%;margin-top:-10px;z-index:5;display:inline-block}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{left:50%;margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{right:50%;margin-right:-10px}.carousel-control .icon-next,.carousel-control .icon-prev{width:20px;height:20px;line-height:1;font-family:serif}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;margin-left:-30%;padding-left:0;list-style:none;text-align:center}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;border:1px solid #fff;border-radius:10px;cursor:pointer;background-color:#000\9;background-color:transparent}.carousel-indicators .active{margin:0;width:12px;height:12px;background-color:#fff}.carousel-caption{position:absolute;left:15%;right:15%;bottom:20px;z-index:10;padding-top:20px;padding-bottom:20px}.carousel-caption .btn,.text-hide{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{width:30px;height:30px;margin-top:-15px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-15px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-15px}.carousel-caption{left:20%;right:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.clearfix:after,.clearfix:before{content:" ";display:table}.center-block{display:block;margin-left:auto;margin-right:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.hidden,.visible-lg,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block,.visible-md,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-sm,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-xs,.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block{display:none!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;background-color:transparent;border:0}.affix{position:fixed}@-ms-viewport{width:device-width}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table!important}tr.visible-xs{display:table-row!important}td.visible-xs,th.visible-xs{display:table-cell!important}.visible-xs-block{display:block!important}.visible-xs-inline{display:inline!important}.visible-xs-inline-block{display:inline-block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table!important}tr.visible-sm{display:table-row!important}td.visible-sm,th.visible-sm{display:table-cell!important}.visible-sm-block{display:block!important}.visible-sm-inline{display:inline!important}.visible-sm-inline-block{display:inline-block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table!important}tr.visible-md{display:table-row!important}td.visible-md,th.visible-md{display:table-cell!important}.visible-md-block{display:block!important}.visible-md-inline{display:inline!important}.visible-md-inline-block{display:inline-block!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table!important}tr.visible-lg{display:table-row!important}td.visible-lg,th.visible-lg{display:table-cell!important}.visible-lg-block{display:block!important}.visible-lg-inline{display:inline!important}.visible-lg-inline-block{display:inline-block!important}.hidden-lg{display:none!important}}@media (max-width:767px){.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:block!important}table.visible-print{display:table!important}tr.visible-print{display:table-row!important}td.visible-print,th.visible-print{display:table-cell!important}}.visible-print-block{display:none!important}@media print{.visible-print-block{display:block!important}}.visible-print-inline{display:none!important}@media print{.visible-print-inline{display:inline!important}}.visible-print-inline-block{display:none!important}@media print{.visible-print-inline-block{display:inline-block!important}.hidden-print{display:none!important}} | |
0 | 6 | \ No newline at end of file | ... | ... |
resource/lib/bootstrap/fonts/bootstrap/glyphicons-halflings-regular.eot
0 → 100644
No preview for this file type
resource/lib/bootstrap/fonts/bootstrap/glyphicons-halflings-regular.svg
0 → 100644
1 | +<?xml version="1.0" standalone="no"?> | |
2 | +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" > | |
3 | +<svg xmlns="http://www.w3.org/2000/svg"> | |
4 | +<metadata></metadata> | |
5 | +<defs> | |
6 | +<font id="glyphicons_halflingsregular" horiz-adv-x="1200" > | |
7 | +<font-face units-per-em="1200" ascent="960" descent="-240" /> | |
8 | +<missing-glyph horiz-adv-x="500" /> | |
9 | +<glyph horiz-adv-x="0" /> | |
10 | +<glyph horiz-adv-x="400" /> | |
11 | +<glyph unicode=" " /> | |
12 | +<glyph unicode="*" d="M600 1100q15 0 34 -1.5t30 -3.5l11 -1q10 -2 17.5 -10.5t7.5 -18.5v-224l158 158q7 7 18 8t19 -6l106 -106q7 -8 6 -19t-8 -18l-158 -158h224q10 0 18.5 -7.5t10.5 -17.5q6 -41 6 -75q0 -15 -1.5 -34t-3.5 -30l-1 -11q-2 -10 -10.5 -17.5t-18.5 -7.5h-224l158 -158 q7 -7 8 -18t-6 -19l-106 -106q-8 -7 -19 -6t-18 8l-158 158v-224q0 -10 -7.5 -18.5t-17.5 -10.5q-41 -6 -75 -6q-15 0 -34 1.5t-30 3.5l-11 1q-10 2 -17.5 10.5t-7.5 18.5v224l-158 -158q-7 -7 -18 -8t-19 6l-106 106q-7 8 -6 19t8 18l158 158h-224q-10 0 -18.5 7.5 t-10.5 17.5q-6 41 -6 75q0 15 1.5 34t3.5 30l1 11q2 10 10.5 17.5t18.5 7.5h224l-158 158q-7 7 -8 18t6 19l106 106q8 7 19 6t18 -8l158 -158v224q0 10 7.5 18.5t17.5 10.5q41 6 75 6z" /> | |
13 | +<glyph unicode="+" d="M450 1100h200q21 0 35.5 -14.5t14.5 -35.5v-350h350q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-350v-350q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v350h-350q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5 h350v350q0 21 14.5 35.5t35.5 14.5z" /> | |
14 | +<glyph unicode=" " /> | |
15 | +<glyph unicode="¥" d="M825 1100h250q10 0 12.5 -5t-5.5 -13l-364 -364q-6 -6 -11 -18h268q10 0 13 -6t-3 -14l-120 -160q-6 -8 -18 -14t-22 -6h-125v-100h275q10 0 13 -6t-3 -14l-120 -160q-6 -8 -18 -14t-22 -6h-125v-174q0 -11 -7.5 -18.5t-18.5 -7.5h-148q-11 0 -18.5 7.5t-7.5 18.5v174 h-275q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h125v100h-275q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h118q-5 12 -11 18l-364 364q-8 8 -5.5 13t12.5 5h250q25 0 43 -18l164 -164q8 -8 18 -8t18 8l164 164q18 18 43 18z" /> | |
16 | +<glyph unicode=" " horiz-adv-x="650" /> | |
17 | +<glyph unicode=" " horiz-adv-x="1300" /> | |
18 | +<glyph unicode=" " horiz-adv-x="650" /> | |
19 | +<glyph unicode=" " horiz-adv-x="1300" /> | |
20 | +<glyph unicode=" " horiz-adv-x="433" /> | |
21 | +<glyph unicode=" " horiz-adv-x="325" /> | |
22 | +<glyph unicode=" " horiz-adv-x="216" /> | |
23 | +<glyph unicode=" " horiz-adv-x="216" /> | |
24 | +<glyph unicode=" " horiz-adv-x="162" /> | |
25 | +<glyph unicode=" " horiz-adv-x="260" /> | |
26 | +<glyph unicode=" " horiz-adv-x="72" /> | |
27 | +<glyph unicode=" " horiz-adv-x="260" /> | |
28 | +<glyph unicode=" " horiz-adv-x="325" /> | |
29 | +<glyph unicode="€" d="M744 1198q242 0 354 -189q60 -104 66 -209h-181q0 45 -17.5 82.5t-43.5 61.5t-58 40.5t-60.5 24t-51.5 7.5q-19 0 -40.5 -5.5t-49.5 -20.5t-53 -38t-49 -62.5t-39 -89.5h379l-100 -100h-300q-6 -50 -6 -100h406l-100 -100h-300q9 -74 33 -132t52.5 -91t61.5 -54.5t59 -29 t47 -7.5q22 0 50.5 7.5t60.5 24.5t58 41t43.5 61t17.5 80h174q-30 -171 -128 -278q-107 -117 -274 -117q-206 0 -324 158q-36 48 -69 133t-45 204h-217l100 100h112q1 47 6 100h-218l100 100h134q20 87 51 153.5t62 103.5q117 141 297 141z" /> | |
30 | +<glyph unicode="₽" d="M428 1200h350q67 0 120 -13t86 -31t57 -49.5t35 -56.5t17 -64.5t6.5 -60.5t0.5 -57v-16.5v-16.5q0 -36 -0.5 -57t-6.5 -61t-17 -65t-35 -57t-57 -50.5t-86 -31.5t-120 -13h-178l-2 -100h288q10 0 13 -6t-3 -14l-120 -160q-6 -8 -18 -14t-22 -6h-138v-175q0 -11 -5.5 -18 t-15.5 -7h-149q-10 0 -17.5 7.5t-7.5 17.5v175h-267q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h117v100h-267q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h117v475q0 10 7.5 17.5t17.5 7.5zM600 1000v-300h203q64 0 86.5 33t22.5 119q0 84 -22.5 116t-86.5 32h-203z" /> | |
31 | +<glyph unicode="−" d="M250 700h800q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5z" /> | |
32 | +<glyph unicode="⌛" d="M1000 1200v-150q0 -21 -14.5 -35.5t-35.5 -14.5h-50v-100q0 -91 -49.5 -165.5t-130.5 -109.5q81 -35 130.5 -109.5t49.5 -165.5v-150h50q21 0 35.5 -14.5t14.5 -35.5v-150h-800v150q0 21 14.5 35.5t35.5 14.5h50v150q0 91 49.5 165.5t130.5 109.5q-81 35 -130.5 109.5 t-49.5 165.5v100h-50q-21 0 -35.5 14.5t-14.5 35.5v150h800zM400 1000v-100q0 -60 32.5 -109.5t87.5 -73.5q28 -12 44 -37t16 -55t-16 -55t-44 -37q-55 -24 -87.5 -73.5t-32.5 -109.5v-150h400v150q0 60 -32.5 109.5t-87.5 73.5q-28 12 -44 37t-16 55t16 55t44 37 q55 24 87.5 73.5t32.5 109.5v100h-400z" /> | |
33 | +<glyph unicode="◼" horiz-adv-x="500" d="M0 0z" /> | |
34 | +<glyph unicode="☁" d="M503 1089q110 0 200.5 -59.5t134.5 -156.5q44 14 90 14q120 0 205 -86.5t85 -206.5q0 -121 -85 -207.5t-205 -86.5h-750q-79 0 -135.5 57t-56.5 137q0 69 42.5 122.5t108.5 67.5q-2 12 -2 37q0 153 108 260.5t260 107.5z" /> | |
35 | +<glyph unicode="⛺" d="M774 1193.5q16 -9.5 20.5 -27t-5.5 -33.5l-136 -187l467 -746h30q20 0 35 -18.5t15 -39.5v-42h-1200v42q0 21 15 39.5t35 18.5h30l468 746l-135 183q-10 16 -5.5 34t20.5 28t34 5.5t28 -20.5l111 -148l112 150q9 16 27 20.5t34 -5zM600 200h377l-182 112l-195 534v-646z " /> | |
36 | +<glyph unicode="✉" d="M25 1100h1150q10 0 12.5 -5t-5.5 -13l-564 -567q-8 -8 -18 -8t-18 8l-564 567q-8 8 -5.5 13t12.5 5zM18 882l264 -264q8 -8 8 -18t-8 -18l-264 -264q-8 -8 -13 -5.5t-5 12.5v550q0 10 5 12.5t13 -5.5zM918 618l264 264q8 8 13 5.5t5 -12.5v-550q0 -10 -5 -12.5t-13 5.5 l-264 264q-8 8 -8 18t8 18zM818 482l364 -364q8 -8 5.5 -13t-12.5 -5h-1150q-10 0 -12.5 5t5.5 13l364 364q8 8 18 8t18 -8l164 -164q8 -8 18 -8t18 8l164 164q8 8 18 8t18 -8z" /> | |
37 | +<glyph unicode="✏" d="M1011 1210q19 0 33 -13l153 -153q13 -14 13 -33t-13 -33l-99 -92l-214 214l95 96q13 14 32 14zM1013 800l-615 -614l-214 214l614 614zM317 96l-333 -112l110 335z" /> | |
38 | +<glyph unicode="" d="M700 650v-550h250q21 0 35.5 -14.5t14.5 -35.5v-50h-800v50q0 21 14.5 35.5t35.5 14.5h250v550l-500 550h1200z" /> | |
39 | +<glyph unicode="" d="M368 1017l645 163q39 15 63 0t24 -49v-831q0 -55 -41.5 -95.5t-111.5 -63.5q-79 -25 -147 -4.5t-86 75t25.5 111.5t122.5 82q72 24 138 8v521l-600 -155v-606q0 -42 -44 -90t-109 -69q-79 -26 -147 -5.5t-86 75.5t25.5 111.5t122.5 82.5q72 24 138 7v639q0 38 14.5 59 t53.5 34z" /> | |
40 | +<glyph unicode="" d="M500 1191q100 0 191 -39t156.5 -104.5t104.5 -156.5t39 -191l-1 -2l1 -5q0 -141 -78 -262l275 -274q23 -26 22.5 -44.5t-22.5 -42.5l-59 -58q-26 -20 -46.5 -20t-39.5 20l-275 274q-119 -77 -261 -77l-5 1l-2 -1q-100 0 -191 39t-156.5 104.5t-104.5 156.5t-39 191 t39 191t104.5 156.5t156.5 104.5t191 39zM500 1022q-88 0 -162 -43t-117 -117t-43 -162t43 -162t117 -117t162 -43t162 43t117 117t43 162t-43 162t-117 117t-162 43z" /> | |
41 | +<glyph unicode="" d="M649 949q48 68 109.5 104t121.5 38.5t118.5 -20t102.5 -64t71 -100.5t27 -123q0 -57 -33.5 -117.5t-94 -124.5t-126.5 -127.5t-150 -152.5t-146 -174q-62 85 -145.5 174t-150 152.5t-126.5 127.5t-93.5 124.5t-33.5 117.5q0 64 28 123t73 100.5t104 64t119 20 t120.5 -38.5t104.5 -104z" /> | |
42 | +<glyph unicode="" d="M407 800l131 353q7 19 17.5 19t17.5 -19l129 -353h421q21 0 24 -8.5t-14 -20.5l-342 -249l130 -401q7 -20 -0.5 -25.5t-24.5 6.5l-343 246l-342 -247q-17 -12 -24.5 -6.5t-0.5 25.5l130 400l-347 251q-17 12 -14 20.5t23 8.5h429z" /> | |
43 | +<glyph unicode="" d="M407 800l131 353q7 19 17.5 19t17.5 -19l129 -353h421q21 0 24 -8.5t-14 -20.5l-342 -249l130 -401q7 -20 -0.5 -25.5t-24.5 6.5l-343 246l-342 -247q-17 -12 -24.5 -6.5t-0.5 25.5l130 400l-347 251q-17 12 -14 20.5t23 8.5h429zM477 700h-240l197 -142l-74 -226 l193 139l195 -140l-74 229l192 140h-234l-78 211z" /> | |
44 | +<glyph unicode="" d="M600 1200q124 0 212 -88t88 -212v-250q0 -46 -31 -98t-69 -52v-75q0 -10 6 -21.5t15 -17.5l358 -230q9 -5 15 -16.5t6 -21.5v-93q0 -10 -7.5 -17.5t-17.5 -7.5h-1150q-10 0 -17.5 7.5t-7.5 17.5v93q0 10 6 21.5t15 16.5l358 230q9 6 15 17.5t6 21.5v75q-38 0 -69 52 t-31 98v250q0 124 88 212t212 88z" /> | |
45 | +<glyph unicode="" d="M25 1100h1150q10 0 17.5 -7.5t7.5 -17.5v-1050q0 -10 -7.5 -17.5t-17.5 -7.5h-1150q-10 0 -17.5 7.5t-7.5 17.5v1050q0 10 7.5 17.5t17.5 7.5zM100 1000v-100h100v100h-100zM875 1000h-550q-10 0 -17.5 -7.5t-7.5 -17.5v-350q0 -10 7.5 -17.5t17.5 -7.5h550 q10 0 17.5 7.5t7.5 17.5v350q0 10 -7.5 17.5t-17.5 7.5zM1000 1000v-100h100v100h-100zM100 800v-100h100v100h-100zM1000 800v-100h100v100h-100zM100 600v-100h100v100h-100zM1000 600v-100h100v100h-100zM875 500h-550q-10 0 -17.5 -7.5t-7.5 -17.5v-350q0 -10 7.5 -17.5 t17.5 -7.5h550q10 0 17.5 7.5t7.5 17.5v350q0 10 -7.5 17.5t-17.5 7.5zM100 400v-100h100v100h-100zM1000 400v-100h100v100h-100zM100 200v-100h100v100h-100zM1000 200v-100h100v100h-100z" /> | |
46 | +<glyph unicode="" d="M50 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM650 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400 q0 21 14.5 35.5t35.5 14.5zM50 500h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM650 500h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400 q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5z" /> | |
47 | +<glyph unicode="" d="M50 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200 q0 21 14.5 35.5t35.5 14.5zM850 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM50 700h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200 q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 700h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM850 700h200q21 0 35.5 -14.5t14.5 -35.5v-200 q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM50 300h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 300h200 q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM850 300h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5 t35.5 14.5z" /> | |
48 | +<glyph unicode="" d="M50 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 1100h700q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v200 q0 21 14.5 35.5t35.5 14.5zM50 700h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 700h700q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-700 q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM50 300h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 300h700q21 0 35.5 -14.5t14.5 -35.5v-200 q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5z" /> | |
49 | +<glyph unicode="" d="M465 477l571 571q8 8 18 8t17 -8l177 -177q8 -7 8 -17t-8 -18l-783 -784q-7 -8 -17.5 -8t-17.5 8l-384 384q-8 8 -8 18t8 17l177 177q7 8 17 8t18 -8l171 -171q7 -7 18 -7t18 7z" /> | |
50 | +<glyph unicode="" d="M904 1083l178 -179q8 -8 8 -18.5t-8 -17.5l-267 -268l267 -268q8 -7 8 -17.5t-8 -18.5l-178 -178q-8 -8 -18.5 -8t-17.5 8l-268 267l-268 -267q-7 -8 -17.5 -8t-18.5 8l-178 178q-8 8 -8 18.5t8 17.5l267 268l-267 268q-8 7 -8 17.5t8 18.5l178 178q8 8 18.5 8t17.5 -8 l268 -267l268 268q7 7 17.5 7t18.5 -7z" /> | |
51 | +<glyph unicode="" d="M507 1177q98 0 187.5 -38.5t154.5 -103.5t103.5 -154.5t38.5 -187.5q0 -141 -78 -262l300 -299q8 -8 8 -18.5t-8 -18.5l-109 -108q-7 -8 -17.5 -8t-18.5 8l-300 299q-119 -77 -261 -77q-98 0 -188 38.5t-154.5 103t-103 154.5t-38.5 188t38.5 187.5t103 154.5 t154.5 103.5t188 38.5zM506.5 1023q-89.5 0 -165.5 -44t-120 -120.5t-44 -166t44 -165.5t120 -120t165.5 -44t166 44t120.5 120t44 165.5t-44 166t-120.5 120.5t-166 44zM425 900h150q10 0 17.5 -7.5t7.5 -17.5v-75h75q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5 t-17.5 -7.5h-75v-75q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v75h-75q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h75v75q0 10 7.5 17.5t17.5 7.5z" /> | |
52 | +<glyph unicode="" d="M507 1177q98 0 187.5 -38.5t154.5 -103.5t103.5 -154.5t38.5 -187.5q0 -141 -78 -262l300 -299q8 -8 8 -18.5t-8 -18.5l-109 -108q-7 -8 -17.5 -8t-18.5 8l-300 299q-119 -77 -261 -77q-98 0 -188 38.5t-154.5 103t-103 154.5t-38.5 188t38.5 187.5t103 154.5 t154.5 103.5t188 38.5zM506.5 1023q-89.5 0 -165.5 -44t-120 -120.5t-44 -166t44 -165.5t120 -120t165.5 -44t166 44t120.5 120t44 165.5t-44 166t-120.5 120.5t-166 44zM325 800h350q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-350q-10 0 -17.5 7.5 t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5z" /> | |
53 | +<glyph unicode="" d="M550 1200h100q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM800 975v166q167 -62 272 -209.5t105 -331.5q0 -117 -45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5 t-184.5 123t-123 184.5t-45.5 224q0 184 105 331.5t272 209.5v-166q-103 -55 -165 -155t-62 -220q0 -116 57 -214.5t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5q0 120 -62 220t-165 155z" /> | |
54 | +<glyph unicode="" d="M1025 1200h150q10 0 17.5 -7.5t7.5 -17.5v-1150q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v1150q0 10 7.5 17.5t17.5 7.5zM725 800h150q10 0 17.5 -7.5t7.5 -17.5v-750q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v750 q0 10 7.5 17.5t17.5 7.5zM425 500h150q10 0 17.5 -7.5t7.5 -17.5v-450q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v450q0 10 7.5 17.5t17.5 7.5zM125 300h150q10 0 17.5 -7.5t7.5 -17.5v-250q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5 v250q0 10 7.5 17.5t17.5 7.5z" /> | |
55 | +<glyph unicode="" d="M600 1174q33 0 74 -5l38 -152l5 -1q49 -14 94 -39l5 -2l134 80q61 -48 104 -105l-80 -134l3 -5q25 -44 39 -93l1 -6l152 -38q5 -43 5 -73q0 -34 -5 -74l-152 -38l-1 -6q-15 -49 -39 -93l-3 -5l80 -134q-48 -61 -104 -105l-134 81l-5 -3q-44 -25 -94 -39l-5 -2l-38 -151 q-43 -5 -74 -5q-33 0 -74 5l-38 151l-5 2q-49 14 -94 39l-5 3l-134 -81q-60 48 -104 105l80 134l-3 5q-25 45 -38 93l-2 6l-151 38q-6 42 -6 74q0 33 6 73l151 38l2 6q13 48 38 93l3 5l-80 134q47 61 105 105l133 -80l5 2q45 25 94 39l5 1l38 152q43 5 74 5zM600 815 q-89 0 -152 -63t-63 -151.5t63 -151.5t152 -63t152 63t63 151.5t-63 151.5t-152 63z" /> | |
56 | +<glyph unicode="" d="M500 1300h300q41 0 70.5 -29.5t29.5 -70.5v-100h275q10 0 17.5 -7.5t7.5 -17.5v-75h-1100v75q0 10 7.5 17.5t17.5 7.5h275v100q0 41 29.5 70.5t70.5 29.5zM500 1200v-100h300v100h-300zM1100 900v-800q0 -41 -29.5 -70.5t-70.5 -29.5h-700q-41 0 -70.5 29.5t-29.5 70.5 v800h900zM300 800v-700h100v700h-100zM500 800v-700h100v700h-100zM700 800v-700h100v700h-100zM900 800v-700h100v700h-100z" /> | |
57 | +<glyph unicode="" d="M18 618l620 608q8 7 18.5 7t17.5 -7l608 -608q8 -8 5.5 -13t-12.5 -5h-175v-575q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v375h-300v-375q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v575h-175q-10 0 -12.5 5t5.5 13z" /> | |
58 | +<glyph unicode="" d="M600 1200v-400q0 -41 29.5 -70.5t70.5 -29.5h300v-650q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v1100q0 21 14.5 35.5t35.5 14.5h450zM1000 800h-250q-21 0 -35.5 14.5t-14.5 35.5v250z" /> | |
59 | +<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM525 900h50q10 0 17.5 -7.5t7.5 -17.5v-275h175q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5z" /> | |
60 | +<glyph unicode="" d="M1300 0h-538l-41 400h-242l-41 -400h-538l431 1200h209l-21 -300h162l-20 300h208zM515 800l-27 -300h224l-27 300h-170z" /> | |
61 | +<glyph unicode="" d="M550 1200h200q21 0 35.5 -14.5t14.5 -35.5v-450h191q20 0 25.5 -11.5t-7.5 -27.5l-327 -400q-13 -16 -32 -16t-32 16l-327 400q-13 16 -7.5 27.5t25.5 11.5h191v450q0 21 14.5 35.5t35.5 14.5zM1125 400h50q10 0 17.5 -7.5t7.5 -17.5v-350q0 -10 -7.5 -17.5t-17.5 -7.5 h-1050q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h50q10 0 17.5 -7.5t7.5 -17.5v-175h900v175q0 10 7.5 17.5t17.5 7.5z" /> | |
62 | +<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM525 900h150q10 0 17.5 -7.5t7.5 -17.5v-275h137q21 0 26 -11.5t-8 -27.5l-223 -275q-13 -16 -32 -16t-32 16l-223 275q-13 16 -8 27.5t26 11.5h137v275q0 10 7.5 17.5t17.5 7.5z " /> | |
63 | +<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM632 914l223 -275q13 -16 8 -27.5t-26 -11.5h-137v-275q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v275h-137q-21 0 -26 11.5t8 27.5l223 275q13 16 32 16 t32 -16z" /> | |
64 | +<glyph unicode="" d="M225 1200h750q10 0 19.5 -7t12.5 -17l186 -652q7 -24 7 -49v-425q0 -12 -4 -27t-9 -17q-12 -6 -37 -6h-1100q-12 0 -27 4t-17 8q-6 13 -6 38l1 425q0 25 7 49l185 652q3 10 12.5 17t19.5 7zM878 1000h-556q-10 0 -19 -7t-11 -18l-87 -450q-2 -11 4 -18t16 -7h150 q10 0 19.5 -7t11.5 -17l38 -152q2 -10 11.5 -17t19.5 -7h250q10 0 19.5 7t11.5 17l38 152q2 10 11.5 17t19.5 7h150q10 0 16 7t4 18l-87 450q-2 11 -11 18t-19 7z" /> | |
65 | +<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM540 820l253 -190q17 -12 17 -30t-17 -30l-253 -190q-16 -12 -28 -6.5t-12 26.5v400q0 21 12 26.5t28 -6.5z" /> | |
66 | +<glyph unicode="" d="M947 1060l135 135q7 7 12.5 5t5.5 -13v-362q0 -10 -7.5 -17.5t-17.5 -7.5h-362q-11 0 -13 5.5t5 12.5l133 133q-109 76 -238 76q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5h150q0 -117 -45.5 -224 t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5q192 0 347 -117z" /> | |
67 | +<glyph unicode="" d="M947 1060l135 135q7 7 12.5 5t5.5 -13v-361q0 -11 -7.5 -18.5t-18.5 -7.5h-361q-11 0 -13 5.5t5 12.5l134 134q-110 75 -239 75q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5h-150q0 117 45.5 224t123 184.5t184.5 123t224 45.5q192 0 347 -117zM1027 600h150 q0 -117 -45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5q-192 0 -348 118l-134 -134q-7 -8 -12.5 -5.5t-5.5 12.5v360q0 11 7.5 18.5t18.5 7.5h360q10 0 12.5 -5.5t-5.5 -12.5l-133 -133q110 -76 240 -76q116 0 214.5 57t155.5 155.5t57 214.5z" /> | |
68 | +<glyph unicode="" d="M125 1200h1050q10 0 17.5 -7.5t7.5 -17.5v-1150q0 -10 -7.5 -17.5t-17.5 -7.5h-1050q-10 0 -17.5 7.5t-7.5 17.5v1150q0 10 7.5 17.5t17.5 7.5zM1075 1000h-850q-10 0 -17.5 -7.5t-7.5 -17.5v-850q0 -10 7.5 -17.5t17.5 -7.5h850q10 0 17.5 7.5t7.5 17.5v850 q0 10 -7.5 17.5t-17.5 7.5zM325 900h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 900h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5zM325 700h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 700h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5zM325 500h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 500h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5zM325 300h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 300h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5z" /> | |
69 | +<glyph unicode="" d="M900 800v200q0 83 -58.5 141.5t-141.5 58.5h-300q-82 0 -141 -59t-59 -141v-200h-100q-41 0 -70.5 -29.5t-29.5 -70.5v-600q0 -41 29.5 -70.5t70.5 -29.5h900q41 0 70.5 29.5t29.5 70.5v600q0 41 -29.5 70.5t-70.5 29.5h-100zM400 800v150q0 21 15 35.5t35 14.5h200 q20 0 35 -14.5t15 -35.5v-150h-300z" /> | |
70 | +<glyph unicode="" d="M125 1100h50q10 0 17.5 -7.5t7.5 -17.5v-1075h-100v1075q0 10 7.5 17.5t17.5 7.5zM1075 1052q4 0 9 -2q16 -6 16 -23v-421q0 -6 -3 -12q-33 -59 -66.5 -99t-65.5 -58t-56.5 -24.5t-52.5 -6.5q-26 0 -57.5 6.5t-52.5 13.5t-60 21q-41 15 -63 22.5t-57.5 15t-65.5 7.5 q-85 0 -160 -57q-7 -5 -15 -5q-6 0 -11 3q-14 7 -14 22v438q22 55 82 98.5t119 46.5q23 2 43 0.5t43 -7t32.5 -8.5t38 -13t32.5 -11q41 -14 63.5 -21t57 -14t63.5 -7q103 0 183 87q7 8 18 8z" /> | |
71 | +<glyph unicode="" d="M600 1175q116 0 227 -49.5t192.5 -131t131 -192.5t49.5 -227v-300q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v300q0 127 -70.5 231.5t-184.5 161.5t-245 57t-245 -57t-184.5 -161.5t-70.5 -231.5v-300q0 -10 -7.5 -17.5t-17.5 -7.5h-50 q-10 0 -17.5 7.5t-7.5 17.5v300q0 116 49.5 227t131 192.5t192.5 131t227 49.5zM220 500h160q8 0 14 -6t6 -14v-460q0 -8 -6 -14t-14 -6h-160q-8 0 -14 6t-6 14v460q0 8 6 14t14 6zM820 500h160q8 0 14 -6t6 -14v-460q0 -8 -6 -14t-14 -6h-160q-8 0 -14 6t-6 14v460 q0 8 6 14t14 6z" /> | |
72 | +<glyph unicode="" d="M321 814l258 172q9 6 15 2.5t6 -13.5v-750q0 -10 -6 -13.5t-15 2.5l-258 172q-21 14 -46 14h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h250q25 0 46 14zM900 668l120 120q7 7 17 7t17 -7l34 -34q7 -7 7 -17t-7 -17l-120 -120l120 -120q7 -7 7 -17 t-7 -17l-34 -34q-7 -7 -17 -7t-17 7l-120 119l-120 -119q-7 -7 -17 -7t-17 7l-34 34q-7 7 -7 17t7 17l119 120l-119 120q-7 7 -7 17t7 17l34 34q7 8 17 8t17 -8z" /> | |
73 | +<glyph unicode="" d="M321 814l258 172q9 6 15 2.5t6 -13.5v-750q0 -10 -6 -13.5t-15 2.5l-258 172q-21 14 -46 14h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h250q25 0 46 14zM766 900h4q10 -1 16 -10q96 -129 96 -290q0 -154 -90 -281q-6 -9 -17 -10l-3 -1q-9 0 -16 6 l-29 23q-7 7 -8.5 16.5t4.5 17.5q72 103 72 229q0 132 -78 238q-6 8 -4.5 18t9.5 17l29 22q7 5 15 5z" /> | |
74 | +<glyph unicode="" d="M967 1004h3q11 -1 17 -10q135 -179 135 -396q0 -105 -34 -206.5t-98 -185.5q-7 -9 -17 -10h-3q-9 0 -16 6l-42 34q-8 6 -9 16t5 18q111 150 111 328q0 90 -29.5 176t-84.5 157q-6 9 -5 19t10 16l42 33q7 5 15 5zM321 814l258 172q9 6 15 2.5t6 -13.5v-750q0 -10 -6 -13.5 t-15 2.5l-258 172q-21 14 -46 14h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h250q25 0 46 14zM766 900h4q10 -1 16 -10q96 -129 96 -290q0 -154 -90 -281q-6 -9 -17 -10l-3 -1q-9 0 -16 6l-29 23q-7 7 -8.5 16.5t4.5 17.5q72 103 72 229q0 132 -78 238 q-6 8 -4.5 18.5t9.5 16.5l29 22q7 5 15 5z" /> | |
75 | +<glyph unicode="" d="M500 900h100v-100h-100v-100h-400v-100h-100v600h500v-300zM1200 700h-200v-100h200v-200h-300v300h-200v300h-100v200h600v-500zM100 1100v-300h300v300h-300zM800 1100v-300h300v300h-300zM300 900h-100v100h100v-100zM1000 900h-100v100h100v-100zM300 500h200v-500 h-500v500h200v100h100v-100zM800 300h200v-100h-100v-100h-200v100h-100v100h100v200h-200v100h300v-300zM100 400v-300h300v300h-300zM300 200h-100v100h100v-100zM1200 200h-100v100h100v-100zM700 0h-100v100h100v-100zM1200 0h-300v100h300v-100z" /> | |
76 | +<glyph unicode="" d="M100 200h-100v1000h100v-1000zM300 200h-100v1000h100v-1000zM700 200h-200v1000h200v-1000zM900 200h-100v1000h100v-1000zM1200 200h-200v1000h200v-1000zM400 0h-300v100h300v-100zM600 0h-100v91h100v-91zM800 0h-100v91h100v-91zM1100 0h-200v91h200v-91z" /> | |
77 | +<glyph unicode="" d="M500 1200l682 -682q8 -8 8 -18t-8 -18l-464 -464q-8 -8 -18 -8t-18 8l-682 682l1 475q0 10 7.5 17.5t17.5 7.5h474zM319.5 1024.5q-29.5 29.5 -71 29.5t-71 -29.5t-29.5 -71.5t29.5 -71.5t71 -29.5t71 29.5t29.5 71.5t-29.5 71.5z" /> | |
78 | +<glyph unicode="" d="M500 1200l682 -682q8 -8 8 -18t-8 -18l-464 -464q-8 -8 -18 -8t-18 8l-682 682l1 475q0 10 7.5 17.5t17.5 7.5h474zM800 1200l682 -682q8 -8 8 -18t-8 -18l-464 -464q-8 -8 -18 -8t-18 8l-56 56l424 426l-700 700h150zM319.5 1024.5q-29.5 29.5 -71 29.5t-71 -29.5 t-29.5 -71.5t29.5 -71.5t71 -29.5t71 29.5t29.5 71.5t-29.5 71.5z" /> | |
79 | +<glyph unicode="" d="M300 1200h825q75 0 75 -75v-900q0 -25 -18 -43l-64 -64q-8 -8 -13 -5.5t-5 12.5v950q0 10 -7.5 17.5t-17.5 7.5h-700q-25 0 -43 -18l-64 -64q-8 -8 -5.5 -13t12.5 -5h700q10 0 17.5 -7.5t7.5 -17.5v-950q0 -10 -7.5 -17.5t-17.5 -7.5h-850q-10 0 -17.5 7.5t-7.5 17.5v975 q0 25 18 43l139 139q18 18 43 18z" /> | |
80 | +<glyph unicode="" d="M250 1200h800q21 0 35.5 -14.5t14.5 -35.5v-1150l-450 444l-450 -445v1151q0 21 14.5 35.5t35.5 14.5z" /> | |
81 | +<glyph unicode="" d="M822 1200h-444q-11 0 -19 -7.5t-9 -17.5l-78 -301q-7 -24 7 -45l57 -108q6 -9 17.5 -15t21.5 -6h450q10 0 21.5 6t17.5 15l62 108q14 21 7 45l-83 301q-1 10 -9 17.5t-19 7.5zM1175 800h-150q-10 0 -21 -6.5t-15 -15.5l-78 -156q-4 -9 -15 -15.5t-21 -6.5h-550 q-10 0 -21 6.5t-15 15.5l-78 156q-4 9 -15 15.5t-21 6.5h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-650q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h750q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5 t7.5 17.5v650q0 10 -7.5 17.5t-17.5 7.5zM850 200h-500q-10 0 -19.5 -7t-11.5 -17l-38 -152q-2 -10 3.5 -17t15.5 -7h600q10 0 15.5 7t3.5 17l-38 152q-2 10 -11.5 17t-19.5 7z" /> | |
82 | +<glyph unicode="" d="M500 1100h200q56 0 102.5 -20.5t72.5 -50t44 -59t25 -50.5l6 -20h150q41 0 70.5 -29.5t29.5 -70.5v-600q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5v600q0 41 29.5 70.5t70.5 29.5h150q2 8 6.5 21.5t24 48t45 61t72 48t102.5 21.5zM900 800v-100 h100v100h-100zM600 730q-95 0 -162.5 -67.5t-67.5 -162.5t67.5 -162.5t162.5 -67.5t162.5 67.5t67.5 162.5t-67.5 162.5t-162.5 67.5zM600 603q43 0 73 -30t30 -73t-30 -73t-73 -30t-73 30t-30 73t30 73t73 30z" /> | |
83 | +<glyph unicode="" d="M681 1199l385 -998q20 -50 60 -92q18 -19 36.5 -29.5t27.5 -11.5l10 -2v-66h-417v66q53 0 75 43.5t5 88.5l-82 222h-391q-58 -145 -92 -234q-11 -34 -6.5 -57t25.5 -37t46 -20t55 -6v-66h-365v66q56 24 84 52q12 12 25 30.5t20 31.5l7 13l399 1006h93zM416 521h340 l-162 457z" /> | |
84 | +<glyph unicode="" d="M753 641q5 -1 14.5 -4.5t36 -15.5t50.5 -26.5t53.5 -40t50.5 -54.5t35.5 -70t14.5 -87q0 -67 -27.5 -125.5t-71.5 -97.5t-98.5 -66.5t-108.5 -40.5t-102 -13h-500v89q41 7 70.5 32.5t29.5 65.5v827q0 24 -0.5 34t-3.5 24t-8.5 19.5t-17 13.5t-28 12.5t-42.5 11.5v71 l471 -1q57 0 115.5 -20.5t108 -57t80.5 -94t31 -124.5q0 -51 -15.5 -96.5t-38 -74.5t-45 -50.5t-38.5 -30.5zM400 700h139q78 0 130.5 48.5t52.5 122.5q0 41 -8.5 70.5t-29.5 55.5t-62.5 39.5t-103.5 13.5h-118v-350zM400 200h216q80 0 121 50.5t41 130.5q0 90 -62.5 154.5 t-156.5 64.5h-159v-400z" /> | |
85 | +<glyph unicode="" d="M877 1200l2 -57q-83 -19 -116 -45.5t-40 -66.5l-132 -839q-9 -49 13 -69t96 -26v-97h-500v97q186 16 200 98l173 832q3 17 3 30t-1.5 22.5t-9 17.5t-13.5 12.5t-21.5 10t-26 8.5t-33.5 10q-13 3 -19 5v57h425z" /> | |
86 | +<glyph unicode="" d="M1300 900h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-200v-850q0 -22 25 -34.5t50 -13.5l25 -2v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v850h-200q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h1000v-300zM175 1000h-75v-800h75l-125 -167l-125 167h75v800h-75l125 167z" /> | |
87 | +<glyph unicode="" d="M1100 900h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-200v-650q0 -22 25 -34.5t50 -13.5l25 -2v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v650h-200q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h1000v-300zM1167 50l-167 -125v75h-800v-75l-167 125l167 125v-75h800v75z" /> | |
88 | +<glyph unicode="" d="M50 1100h600q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 800h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM50 500h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" /> | |
89 | +<glyph unicode="" d="M250 1100h700q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 800h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM250 500h700q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" /> | |
90 | +<glyph unicode="" d="M500 950v100q0 21 14.5 35.5t35.5 14.5h600q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5zM100 650v100q0 21 14.5 35.5t35.5 14.5h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000 q-21 0 -35.5 14.5t-14.5 35.5zM300 350v100q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5zM0 50v100q0 21 14.5 35.5t35.5 14.5h1100q21 0 35.5 -14.5t14.5 -35.5v-100 q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5z" /> | |
91 | +<glyph unicode="" d="M50 1100h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 800h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM50 500h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" /> | |
92 | +<glyph unicode="" d="M50 1100h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 1100h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM50 800h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 800h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 500h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 500h800q21 0 35.5 -14.5t14.5 -35.5v-100 q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 200h800 q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" /> | |
93 | +<glyph unicode="" d="M400 0h-100v1100h100v-1100zM550 1100h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM550 800h500q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-500 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM267 550l-167 -125v75h-200v100h200v75zM550 500h300q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM550 200h600 q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" /> | |
94 | +<glyph unicode="" d="M50 1100h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM900 0h-100v1100h100v-1100zM50 800h500q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-500 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM1100 600h200v-100h-200v-75l-167 125l167 125v-75zM50 500h300q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h600 q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" /> | |
95 | +<glyph unicode="" d="M75 1000h750q31 0 53 -22t22 -53v-650q0 -31 -22 -53t-53 -22h-750q-31 0 -53 22t-22 53v650q0 31 22 53t53 22zM1200 300l-300 300l300 300v-600z" /> | |
96 | +<glyph unicode="" d="M44 1100h1112q18 0 31 -13t13 -31v-1012q0 -18 -13 -31t-31 -13h-1112q-18 0 -31 13t-13 31v1012q0 18 13 31t31 13zM100 1000v-737l247 182l298 -131l-74 156l293 318l236 -288v500h-1000zM342 884q56 0 95 -39t39 -94.5t-39 -95t-95 -39.5t-95 39.5t-39 95t39 94.5 t95 39z" /> | |
97 | +<glyph unicode="" d="M648 1169q117 0 216 -60t156.5 -161t57.5 -218q0 -115 -70 -258q-69 -109 -158 -225.5t-143 -179.5l-54 -62q-9 8 -25.5 24.5t-63.5 67.5t-91 103t-98.5 128t-95.5 148q-60 132 -60 249q0 88 34 169.5t91.5 142t137 96.5t166.5 36zM652.5 974q-91.5 0 -156.5 -65 t-65 -157t65 -156.5t156.5 -64.5t156.5 64.5t65 156.5t-65 157t-156.5 65z" /> | |
98 | +<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 173v854q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57z" /> | |
99 | +<glyph unicode="" d="M554 1295q21 -72 57.5 -143.5t76 -130t83 -118t82.5 -117t70 -116t49.5 -126t18.5 -136.5q0 -71 -25.5 -135t-68.5 -111t-99 -82t-118.5 -54t-125.5 -23q-84 5 -161.5 34t-139.5 78.5t-99 125t-37 164.5q0 69 18 136.5t49.5 126.5t69.5 116.5t81.5 117.5t83.5 119 t76.5 131t58.5 143zM344 710q-23 -33 -43.5 -70.5t-40.5 -102.5t-17 -123q1 -37 14.5 -69.5t30 -52t41 -37t38.5 -24.5t33 -15q21 -7 32 -1t13 22l6 34q2 10 -2.5 22t-13.5 19q-5 4 -14 12t-29.5 40.5t-32.5 73.5q-26 89 6 271q2 11 -6 11q-8 1 -15 -10z" /> | |
100 | +<glyph unicode="" d="M1000 1013l108 115q2 1 5 2t13 2t20.5 -1t25 -9.5t28.5 -21.5q22 -22 27 -43t0 -32l-6 -10l-108 -115zM350 1100h400q50 0 105 -13l-187 -187h-368q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v182l200 200v-332 q0 -165 -93.5 -257.5t-256.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5zM1009 803l-362 -362l-161 -50l55 170l355 355z" /> | |
101 | +<glyph unicode="" d="M350 1100h361q-164 -146 -216 -200h-195q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5l200 153v-103q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5z M824 1073l339 -301q8 -7 8 -17.5t-8 -17.5l-340 -306q-7 -6 -12.5 -4t-6.5 11v203q-26 1 -54.5 0t-78.5 -7.5t-92 -17.5t-86 -35t-70 -57q10 59 33 108t51.5 81.5t65 58.5t68.5 40.5t67 24.5t56 13.5t40 4.5v210q1 10 6.5 12.5t13.5 -4.5z" /> | |
102 | +<glyph unicode="" d="M350 1100h350q60 0 127 -23l-178 -177h-349q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v69l200 200v-219q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5z M643 639l395 395q7 7 17.5 7t17.5 -7l101 -101q7 -7 7 -17.5t-7 -17.5l-531 -532q-7 -7 -17.5 -7t-17.5 7l-248 248q-7 7 -7 17.5t7 17.5l101 101q7 7 17.5 7t17.5 -7l111 -111q8 -7 18 -7t18 7z" /> | |
103 | +<glyph unicode="" d="M318 918l264 264q8 8 18 8t18 -8l260 -264q7 -8 4.5 -13t-12.5 -5h-170v-200h200v173q0 10 5 12t13 -5l264 -260q8 -7 8 -17.5t-8 -17.5l-264 -265q-8 -7 -13 -5t-5 12v173h-200v-200h170q10 0 12.5 -5t-4.5 -13l-260 -264q-8 -8 -18 -8t-18 8l-264 264q-8 8 -5.5 13 t12.5 5h175v200h-200v-173q0 -10 -5 -12t-13 5l-264 265q-8 7 -8 17.5t8 17.5l264 260q8 7 13 5t5 -12v-173h200v200h-175q-10 0 -12.5 5t5.5 13z" /> | |
104 | +<glyph unicode="" d="M250 1100h100q21 0 35.5 -14.5t14.5 -35.5v-438l464 453q15 14 25.5 10t10.5 -25v-1000q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v1000q0 21 14.5 35.5t35.5 14.5z" /> | |
105 | +<glyph unicode="" d="M50 1100h100q21 0 35.5 -14.5t14.5 -35.5v-438l464 453q15 14 25.5 10t10.5 -25v-438l464 453q15 14 25.5 10t10.5 -25v-1000q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5 t-14.5 35.5v1000q0 21 14.5 35.5t35.5 14.5z" /> | |
106 | +<glyph unicode="" d="M1200 1050v-1000q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -10.5 -25t-25.5 10l-492 480q-15 14 -15 35t15 35l492 480q15 14 25.5 10t10.5 -25v-438l464 453q15 14 25.5 10t10.5 -25z" /> | |
107 | +<glyph unicode="" d="M243 1074l814 -498q18 -11 18 -26t-18 -26l-814 -498q-18 -11 -30.5 -4t-12.5 28v1000q0 21 12.5 28t30.5 -4z" /> | |
108 | +<glyph unicode="" d="M250 1000h200q21 0 35.5 -14.5t14.5 -35.5v-800q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v800q0 21 14.5 35.5t35.5 14.5zM650 1000h200q21 0 35.5 -14.5t14.5 -35.5v-800q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v800 q0 21 14.5 35.5t35.5 14.5z" /> | |
109 | +<glyph unicode="" d="M1100 950v-800q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v800q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5z" /> | |
110 | +<glyph unicode="" d="M500 612v438q0 21 10.5 25t25.5 -10l492 -480q15 -14 15 -35t-15 -35l-492 -480q-15 -14 -25.5 -10t-10.5 25v438l-464 -453q-15 -14 -25.5 -10t-10.5 25v1000q0 21 10.5 25t25.5 -10z" /> | |
111 | +<glyph unicode="" d="M1048 1102l100 1q20 0 35 -14.5t15 -35.5l5 -1000q0 -21 -14.5 -35.5t-35.5 -14.5l-100 -1q-21 0 -35.5 14.5t-14.5 35.5l-2 437l-463 -454q-14 -15 -24.5 -10.5t-10.5 25.5l-2 437l-462 -455q-15 -14 -25.5 -9.5t-10.5 24.5l-5 1000q0 21 10.5 25.5t25.5 -10.5l466 -450 l-2 438q0 20 10.5 24.5t25.5 -9.5l466 -451l-2 438q0 21 14.5 35.5t35.5 14.5z" /> | |
112 | +<glyph unicode="" d="M850 1100h100q21 0 35.5 -14.5t14.5 -35.5v-1000q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v438l-464 -453q-15 -14 -25.5 -10t-10.5 25v1000q0 21 10.5 25t25.5 -10l464 -453v438q0 21 14.5 35.5t35.5 14.5z" /> | |
113 | +<glyph unicode="" d="M686 1081l501 -540q15 -15 10.5 -26t-26.5 -11h-1042q-22 0 -26.5 11t10.5 26l501 540q15 15 36 15t36 -15zM150 400h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" /> | |
114 | +<glyph unicode="" d="M885 900l-352 -353l352 -353l-197 -198l-552 552l552 550z" /> | |
115 | +<glyph unicode="" d="M1064 547l-551 -551l-198 198l353 353l-353 353l198 198z" /> | |
116 | +<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM650 900h-100q-21 0 -35.5 -14.5t-14.5 -35.5v-150h-150 q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -21 14.5 -35.5t35.5 -14.5h150v-150q0 -21 14.5 -35.5t35.5 -14.5h100q21 0 35.5 14.5t14.5 35.5v150h150q21 0 35.5 14.5t14.5 35.5v100q0 21 -14.5 35.5t-35.5 14.5h-150v150q0 21 -14.5 35.5t-35.5 14.5z" /> | |
117 | +<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM850 700h-500q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -21 14.5 -35.5 t35.5 -14.5h500q21 0 35.5 14.5t14.5 35.5v100q0 21 -14.5 35.5t-35.5 14.5z" /> | |
118 | +<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM741.5 913q-12.5 0 -21.5 -9l-120 -120l-120 120q-9 9 -21.5 9 t-21.5 -9l-141 -141q-9 -9 -9 -21.5t9 -21.5l120 -120l-120 -120q-9 -9 -9 -21.5t9 -21.5l141 -141q9 -9 21.5 -9t21.5 9l120 120l120 -120q9 -9 21.5 -9t21.5 9l141 141q9 9 9 21.5t-9 21.5l-120 120l120 120q9 9 9 21.5t-9 21.5l-141 141q-9 9 -21.5 9z" /> | |
119 | +<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM546 623l-84 85q-7 7 -17.5 7t-18.5 -7l-139 -139q-7 -8 -7 -18t7 -18 l242 -241q7 -8 17.5 -8t17.5 8l375 375q7 7 7 17.5t-7 18.5l-139 139q-7 7 -17.5 7t-17.5 -7z" /> | |
120 | +<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM588 941q-29 0 -59 -5.5t-63 -20.5t-58 -38.5t-41.5 -63t-16.5 -89.5 q0 -25 20 -25h131q30 -5 35 11q6 20 20.5 28t45.5 8q20 0 31.5 -10.5t11.5 -28.5q0 -23 -7 -34t-26 -18q-1 0 -13.5 -4t-19.5 -7.5t-20 -10.5t-22 -17t-18.5 -24t-15.5 -35t-8 -46q-1 -8 5.5 -16.5t20.5 -8.5h173q7 0 22 8t35 28t37.5 48t29.5 74t12 100q0 47 -17 83 t-42.5 57t-59.5 34.5t-64 18t-59 4.5zM675 400h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5z" /> | |
121 | +<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM675 1000h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5 t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5zM675 700h-250q-10 0 -17.5 -7.5t-7.5 -17.5v-50q0 -10 7.5 -17.5t17.5 -7.5h75v-200h-75q-10 0 -17.5 -7.5t-7.5 -17.5v-50q0 -10 7.5 -17.5t17.5 -7.5h350q10 0 17.5 7.5t7.5 17.5v50q0 10 -7.5 17.5 t-17.5 7.5h-75v275q0 10 -7.5 17.5t-17.5 7.5z" /> | |
122 | +<glyph unicode="" d="M525 1200h150q10 0 17.5 -7.5t7.5 -17.5v-194q103 -27 178.5 -102.5t102.5 -178.5h194q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-194q-27 -103 -102.5 -178.5t-178.5 -102.5v-194q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v194 q-103 27 -178.5 102.5t-102.5 178.5h-194q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h194q27 103 102.5 178.5t178.5 102.5v194q0 10 7.5 17.5t17.5 7.5zM700 893v-168q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v168q-68 -23 -119 -74 t-74 -119h168q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-168q23 -68 74 -119t119 -74v168q0 10 7.5 17.5t17.5 7.5h150q10 0 17.5 -7.5t7.5 -17.5v-168q68 23 119 74t74 119h-168q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h168 q-23 68 -74 119t-119 74z" /> | |
123 | +<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM759 823l64 -64q7 -7 7 -17.5t-7 -17.5l-124 -124l124 -124q7 -7 7 -17.5t-7 -17.5l-64 -64q-7 -7 -17.5 -7t-17.5 7l-124 124l-124 -124q-7 -7 -17.5 -7t-17.5 7l-64 64 q-7 7 -7 17.5t7 17.5l124 124l-124 124q-7 7 -7 17.5t7 17.5l64 64q7 7 17.5 7t17.5 -7l124 -124l124 124q7 7 17.5 7t17.5 -7z" /> | |
124 | +<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM782 788l106 -106q7 -7 7 -17.5t-7 -17.5l-320 -321q-8 -7 -18 -7t-18 7l-202 203q-8 7 -8 17.5t8 17.5l106 106q7 8 17.5 8t17.5 -8l79 -79l197 197q7 7 17.5 7t17.5 -7z" /> | |
125 | +<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5q0 -120 65 -225 l587 587q-105 65 -225 65zM965 819l-584 -584q104 -62 219 -62q116 0 214.5 57t155.5 155.5t57 214.5q0 115 -62 219z" /> | |
126 | +<glyph unicode="" d="M39 582l522 427q16 13 27.5 8t11.5 -26v-291h550q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-550v-291q0 -21 -11.5 -26t-27.5 8l-522 427q-16 13 -16 32t16 32z" /> | |
127 | +<glyph unicode="" d="M639 1009l522 -427q16 -13 16 -32t-16 -32l-522 -427q-16 -13 -27.5 -8t-11.5 26v291h-550q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h550v291q0 21 11.5 26t27.5 -8z" /> | |
128 | +<glyph unicode="" d="M682 1161l427 -522q13 -16 8 -27.5t-26 -11.5h-291v-550q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v550h-291q-21 0 -26 11.5t8 27.5l427 522q13 16 32 16t32 -16z" /> | |
129 | +<glyph unicode="" d="M550 1200h200q21 0 35.5 -14.5t14.5 -35.5v-550h291q21 0 26 -11.5t-8 -27.5l-427 -522q-13 -16 -32 -16t-32 16l-427 522q-13 16 -8 27.5t26 11.5h291v550q0 21 14.5 35.5t35.5 14.5z" /> | |
130 | +<glyph unicode="" d="M639 1109l522 -427q16 -13 16 -32t-16 -32l-522 -427q-16 -13 -27.5 -8t-11.5 26v291q-94 -2 -182 -20t-170.5 -52t-147 -92.5t-100.5 -135.5q5 105 27 193.5t67.5 167t113 135t167 91.5t225.5 42v262q0 21 11.5 26t27.5 -8z" /> | |
131 | +<glyph unicode="" d="M850 1200h300q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -10.5 -25t-24.5 10l-94 94l-249 -249q-8 -7 -18 -7t-18 7l-106 106q-7 8 -7 18t7 18l249 249l-94 94q-14 14 -10 24.5t25 10.5zM350 0h-300q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 10.5 25t24.5 -10l94 -94l249 249 q8 7 18 7t18 -7l106 -106q7 -8 7 -18t-7 -18l-249 -249l94 -94q14 -14 10 -24.5t-25 -10.5z" /> | |
132 | +<glyph unicode="" d="M1014 1120l106 -106q7 -8 7 -18t-7 -18l-249 -249l94 -94q14 -14 10 -24.5t-25 -10.5h-300q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 10.5 25t24.5 -10l94 -94l249 249q8 7 18 7t18 -7zM250 600h300q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -10.5 -25t-24.5 10l-94 94 l-249 -249q-8 -7 -18 -7t-18 7l-106 106q-7 8 -7 18t7 18l249 249l-94 94q-14 14 -10 24.5t25 10.5z" /> | |
133 | +<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM704 900h-208q-20 0 -32 -14.5t-8 -34.5l58 -302q4 -20 21.5 -34.5 t37.5 -14.5h54q20 0 37.5 14.5t21.5 34.5l58 302q4 20 -8 34.5t-32 14.5zM675 400h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5z" /> | |
134 | +<glyph unicode="" d="M260 1200q9 0 19 -2t15 -4l5 -2q22 -10 44 -23l196 -118q21 -13 36 -24q29 -21 37 -12q11 13 49 35l196 118q22 13 45 23q17 7 38 7q23 0 47 -16.5t37 -33.5l13 -16q14 -21 18 -45l25 -123l8 -44q1 -9 8.5 -14.5t17.5 -5.5h61q10 0 17.5 -7.5t7.5 -17.5v-50 q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 -7.5t-7.5 -17.5v-175h-400v300h-200v-300h-400v175q0 10 -7.5 17.5t-17.5 7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5h61q11 0 18 3t7 8q0 4 9 52l25 128q5 25 19 45q2 3 5 7t13.5 15t21.5 19.5t26.5 15.5 t29.5 7zM915 1079l-166 -162q-7 -7 -5 -12t12 -5h219q10 0 15 7t2 17l-51 149q-3 10 -11 12t-15 -6zM463 917l-177 157q-8 7 -16 5t-11 -12l-51 -143q-3 -10 2 -17t15 -7h231q11 0 12.5 5t-5.5 12zM500 0h-375q-10 0 -17.5 7.5t-7.5 17.5v375h400v-400zM1100 400v-375 q0 -10 -7.5 -17.5t-17.5 -7.5h-375v400h400z" /> | |
135 | +<glyph unicode="" d="M1165 1190q8 3 21 -6.5t13 -17.5q-2 -178 -24.5 -323.5t-55.5 -245.5t-87 -174.5t-102.5 -118.5t-118 -68.5t-118.5 -33t-120 -4.5t-105 9.5t-90 16.5q-61 12 -78 11q-4 1 -12.5 0t-34 -14.5t-52.5 -40.5l-153 -153q-26 -24 -37 -14.5t-11 43.5q0 64 42 102q8 8 50.5 45 t66.5 58q19 17 35 47t13 61q-9 55 -10 102.5t7 111t37 130t78 129.5q39 51 80 88t89.5 63.5t94.5 45t113.5 36t129 31t157.5 37t182 47.5zM1116 1098q-8 9 -22.5 -3t-45.5 -50q-38 -47 -119 -103.5t-142 -89.5l-62 -33q-56 -30 -102 -57t-104 -68t-102.5 -80.5t-85.5 -91 t-64 -104.5q-24 -56 -31 -86t2 -32t31.5 17.5t55.5 59.5q25 30 94 75.5t125.5 77.5t147.5 81q70 37 118.5 69t102 79.5t99 111t86.5 148.5q22 50 24 60t-6 19z" /> | |
136 | +<glyph unicode="" d="M653 1231q-39 -67 -54.5 -131t-10.5 -114.5t24.5 -96.5t47.5 -80t63.5 -62.5t68.5 -46.5t65 -30q-4 7 -17.5 35t-18.5 39.5t-17 39.5t-17 43t-13 42t-9.5 44.5t-2 42t4 43t13.5 39t23 38.5q96 -42 165 -107.5t105 -138t52 -156t13 -159t-19 -149.5q-13 -55 -44 -106.5 t-68 -87t-78.5 -64.5t-72.5 -45t-53 -22q-72 -22 -127 -11q-31 6 -13 19q6 3 17 7q13 5 32.5 21t41 44t38.5 63.5t21.5 81.5t-6.5 94.5t-50 107t-104 115.5q10 -104 -0.5 -189t-37 -140.5t-65 -93t-84 -52t-93.5 -11t-95 24.5q-80 36 -131.5 114t-53.5 171q-2 23 0 49.5 t4.5 52.5t13.5 56t27.5 60t46 64.5t69.5 68.5q-8 -53 -5 -102.5t17.5 -90t34 -68.5t44.5 -39t49 -2q31 13 38.5 36t-4.5 55t-29 64.5t-36 75t-26 75.5q-15 85 2 161.5t53.5 128.5t85.5 92.5t93.5 61t81.5 25.5z" /> | |
137 | +<glyph unicode="" d="M600 1094q82 0 160.5 -22.5t140 -59t116.5 -82.5t94.5 -95t68 -95t42.5 -82.5t14 -57.5t-14 -57.5t-43 -82.5t-68.5 -95t-94.5 -95t-116.5 -82.5t-140 -59t-159.5 -22.5t-159.5 22.5t-140 59t-116.5 82.5t-94.5 95t-68.5 95t-43 82.5t-14 57.5t14 57.5t42.5 82.5t68 95 t94.5 95t116.5 82.5t140 59t160.5 22.5zM888 829q-15 15 -18 12t5 -22q25 -57 25 -119q0 -124 -88 -212t-212 -88t-212 88t-88 212q0 59 23 114q8 19 4.5 22t-17.5 -12q-70 -69 -160 -184q-13 -16 -15 -40.5t9 -42.5q22 -36 47 -71t70 -82t92.5 -81t113 -58.5t133.5 -24.5 t133.5 24t113 58.5t92.5 81.5t70 81.5t47 70.5q11 18 9 42.5t-14 41.5q-90 117 -163 189zM448 727l-35 -36q-15 -15 -19.5 -38.5t4.5 -41.5q37 -68 93 -116q16 -13 38.5 -11t36.5 17l35 34q14 15 12.5 33.5t-16.5 33.5q-44 44 -89 117q-11 18 -28 20t-32 -12z" /> | |
138 | +<glyph unicode="" d="M592 0h-148l31 120q-91 20 -175.5 68.5t-143.5 106.5t-103.5 119t-66.5 110t-22 76q0 21 14 57.5t42.5 82.5t68 95t94.5 95t116.5 82.5t140 59t160.5 22.5q61 0 126 -15l32 121h148zM944 770l47 181q108 -85 176.5 -192t68.5 -159q0 -26 -19.5 -71t-59.5 -102t-93 -112 t-129 -104.5t-158 -75.5l46 173q77 49 136 117t97 131q11 18 9 42.5t-14 41.5q-54 70 -107 130zM310 824q-70 -69 -160 -184q-13 -16 -15 -40.5t9 -42.5q18 -30 39 -60t57 -70.5t74 -73t90 -61t105 -41.5l41 154q-107 18 -178.5 101.5t-71.5 193.5q0 59 23 114q8 19 4.5 22 t-17.5 -12zM448 727l-35 -36q-15 -15 -19.5 -38.5t4.5 -41.5q37 -68 93 -116q16 -13 38.5 -11t36.5 17l12 11l22 86l-3 4q-44 44 -89 117q-11 18 -28 20t-32 -12z" /> | |
139 | +<glyph unicode="" d="M-90 100l642 1066q20 31 48 28.5t48 -35.5l642 -1056q21 -32 7.5 -67.5t-50.5 -35.5h-1294q-37 0 -50.5 34t7.5 66zM155 200h345v75q0 10 7.5 17.5t17.5 7.5h150q10 0 17.5 -7.5t7.5 -17.5v-75h345l-445 723zM496 700h208q20 0 32 -14.5t8 -34.5l-58 -252 q-4 -20 -21.5 -34.5t-37.5 -14.5h-54q-20 0 -37.5 14.5t-21.5 34.5l-58 252q-4 20 8 34.5t32 14.5z" /> | |
140 | +<glyph unicode="" d="M650 1200q62 0 106 -44t44 -106v-339l363 -325q15 -14 26 -38.5t11 -44.5v-41q0 -20 -12 -26.5t-29 5.5l-359 249v-263q100 -93 100 -113v-64q0 -21 -13 -29t-32 1l-205 128l-205 -128q-19 -9 -32 -1t-13 29v64q0 20 100 113v263l-359 -249q-17 -12 -29 -5.5t-12 26.5v41 q0 20 11 44.5t26 38.5l363 325v339q0 62 44 106t106 44z" /> | |
141 | +<glyph unicode="" d="M850 1200h100q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-150h-1100v150q0 21 14.5 35.5t35.5 14.5h50v50q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-50h500v50q0 21 14.5 35.5t35.5 14.5zM1100 800v-750q0 -21 -14.5 -35.5 t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v750h1100zM100 600v-100h100v100h-100zM300 600v-100h100v100h-100zM500 600v-100h100v100h-100zM700 600v-100h100v100h-100zM900 600v-100h100v100h-100zM100 400v-100h100v100h-100zM300 400v-100h100v100h-100zM500 400 v-100h100v100h-100zM700 400v-100h100v100h-100zM900 400v-100h100v100h-100zM100 200v-100h100v100h-100zM300 200v-100h100v100h-100zM500 200v-100h100v100h-100zM700 200v-100h100v100h-100zM900 200v-100h100v100h-100z" /> | |
142 | +<glyph unicode="" d="M1135 1165l249 -230q15 -14 15 -35t-15 -35l-249 -230q-14 -14 -24.5 -10t-10.5 25v150h-159l-600 -600h-291q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h209l600 600h241v150q0 21 10.5 25t24.5 -10zM522 819l-141 -141l-122 122h-209q-21 0 -35.5 14.5 t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h291zM1135 565l249 -230q15 -14 15 -35t-15 -35l-249 -230q-14 -14 -24.5 -10t-10.5 25v150h-241l-181 181l141 141l122 -122h159v150q0 21 10.5 25t24.5 -10z" /> | |
143 | +<glyph unicode="" d="M100 1100h1000q41 0 70.5 -29.5t29.5 -70.5v-600q0 -41 -29.5 -70.5t-70.5 -29.5h-596l-304 -300v300h-100q-41 0 -70.5 29.5t-29.5 70.5v600q0 41 29.5 70.5t70.5 29.5z" /> | |
144 | +<glyph unicode="" d="M150 1200h200q21 0 35.5 -14.5t14.5 -35.5v-250h-300v250q0 21 14.5 35.5t35.5 14.5zM850 1200h200q21 0 35.5 -14.5t14.5 -35.5v-250h-300v250q0 21 14.5 35.5t35.5 14.5zM1100 800v-300q0 -41 -3 -77.5t-15 -89.5t-32 -96t-58 -89t-89 -77t-129 -51t-174 -20t-174 20 t-129 51t-89 77t-58 89t-32 96t-15 89.5t-3 77.5v300h300v-250v-27v-42.5t1.5 -41t5 -38t10 -35t16.5 -30t25.5 -24.5t35 -19t46.5 -12t60 -4t60 4.5t46.5 12.5t35 19.5t25 25.5t17 30.5t10 35t5 38t2 40.5t-0.5 42v25v250h300z" /> | |
145 | +<glyph unicode="" d="M1100 411l-198 -199l-353 353l-353 -353l-197 199l551 551z" /> | |
146 | +<glyph unicode="" d="M1101 789l-550 -551l-551 551l198 199l353 -353l353 353z" /> | |
147 | +<glyph unicode="" d="M404 1000h746q21 0 35.5 -14.5t14.5 -35.5v-551h150q21 0 25 -10.5t-10 -24.5l-230 -249q-14 -15 -35 -15t-35 15l-230 249q-14 14 -10 24.5t25 10.5h150v401h-381zM135 984l230 -249q14 -14 10 -24.5t-25 -10.5h-150v-400h385l215 -200h-750q-21 0 -35.5 14.5 t-14.5 35.5v550h-150q-21 0 -25 10.5t10 24.5l230 249q14 15 35 15t35 -15z" /> | |
148 | +<glyph unicode="" d="M56 1200h94q17 0 31 -11t18 -27l38 -162h896q24 0 39 -18.5t10 -42.5l-100 -475q-5 -21 -27 -42.5t-55 -21.5h-633l48 -200h535q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-50q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v50h-300v-50 q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v50h-31q-18 0 -32.5 10t-20.5 19l-5 10l-201 961h-54q-20 0 -35 14.5t-15 35.5t15 35.5t35 14.5z" /> | |
149 | +<glyph unicode="" d="M1200 1000v-100h-1200v100h200q0 41 29.5 70.5t70.5 29.5h300q41 0 70.5 -29.5t29.5 -70.5h500zM0 800h1200v-800h-1200v800z" /> | |
150 | +<glyph unicode="" d="M200 800l-200 -400v600h200q0 41 29.5 70.5t70.5 29.5h300q42 0 71 -29.5t29 -70.5h500v-200h-1000zM1500 700l-300 -700h-1200l300 700h1200z" /> | |
151 | +<glyph unicode="" d="M635 1184l230 -249q14 -14 10 -24.5t-25 -10.5h-150v-601h150q21 0 25 -10.5t-10 -24.5l-230 -249q-14 -15 -35 -15t-35 15l-230 249q-14 14 -10 24.5t25 10.5h150v601h-150q-21 0 -25 10.5t10 24.5l230 249q14 15 35 15t35 -15z" /> | |
152 | +<glyph unicode="" d="M936 864l249 -229q14 -15 14 -35.5t-14 -35.5l-249 -229q-15 -15 -25.5 -10.5t-10.5 24.5v151h-600v-151q0 -20 -10.5 -24.5t-25.5 10.5l-249 229q-14 15 -14 35.5t14 35.5l249 229q15 15 25.5 10.5t10.5 -25.5v-149h600v149q0 21 10.5 25.5t25.5 -10.5z" /> | |
153 | +<glyph unicode="" d="M1169 400l-172 732q-5 23 -23 45.5t-38 22.5h-672q-20 0 -38 -20t-23 -41l-172 -739h1138zM1100 300h-1000q-41 0 -70.5 -29.5t-29.5 -70.5v-100q0 -41 29.5 -70.5t70.5 -29.5h1000q41 0 70.5 29.5t29.5 70.5v100q0 41 -29.5 70.5t-70.5 29.5zM800 100v100h100v-100h-100 zM1000 100v100h100v-100h-100z" /> | |
154 | +<glyph unicode="" d="M1150 1100q21 0 35.5 -14.5t14.5 -35.5v-850q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v850q0 21 14.5 35.5t35.5 14.5zM1000 200l-675 200h-38l47 -276q3 -16 -5.5 -20t-29.5 -4h-7h-84q-20 0 -34.5 14t-18.5 35q-55 337 -55 351v250v6q0 16 1 23.5t6.5 14 t17.5 6.5h200l675 250v-850zM0 750v-250q-4 0 -11 0.5t-24 6t-30 15t-24 30t-11 48.5v50q0 26 10.5 46t25 30t29 16t25.5 7z" /> | |
155 | +<glyph unicode="" d="M553 1200h94q20 0 29 -10.5t3 -29.5l-18 -37q83 -19 144 -82.5t76 -140.5l63 -327l118 -173h17q19 0 33 -14.5t14 -35t-13 -40.5t-31 -27q-8 -4 -23 -9.5t-65 -19.5t-103 -25t-132.5 -20t-158.5 -9q-57 0 -115 5t-104 12t-88.5 15.5t-73.5 17.5t-54.5 16t-35.5 12l-11 4 q-18 8 -31 28t-13 40.5t14 35t33 14.5h17l118 173l63 327q15 77 76 140t144 83l-18 32q-6 19 3.5 32t28.5 13zM498 110q50 -6 102 -6q53 0 102 6q-12 -49 -39.5 -79.5t-62.5 -30.5t-63 30.5t-39 79.5z" /> | |
156 | +<glyph unicode="" d="M800 946l224 78l-78 -224l234 -45l-180 -155l180 -155l-234 -45l78 -224l-224 78l-45 -234l-155 180l-155 -180l-45 234l-224 -78l78 224l-234 45l180 155l-180 155l234 45l-78 224l224 -78l45 234l155 -180l155 180z" /> | |
157 | +<glyph unicode="" d="M650 1200h50q40 0 70 -40.5t30 -84.5v-150l-28 -125h328q40 0 70 -40.5t30 -84.5v-100q0 -45 -29 -74l-238 -344q-16 -24 -38 -40.5t-45 -16.5h-250q-7 0 -42 25t-66 50l-31 25h-61q-45 0 -72.5 18t-27.5 57v400q0 36 20 63l145 196l96 198q13 28 37.5 48t51.5 20z M650 1100l-100 -212l-150 -213v-375h100l136 -100h214l250 375v125h-450l50 225v175h-50zM50 800h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v500q0 21 14.5 35.5t35.5 14.5z" /> | |
158 | +<glyph unicode="" d="M600 1100h250q23 0 45 -16.5t38 -40.5l238 -344q29 -29 29 -74v-100q0 -44 -30 -84.5t-70 -40.5h-328q28 -118 28 -125v-150q0 -44 -30 -84.5t-70 -40.5h-50q-27 0 -51.5 20t-37.5 48l-96 198l-145 196q-20 27 -20 63v400q0 39 27.5 57t72.5 18h61q124 100 139 100z M50 1000h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v500q0 21 14.5 35.5t35.5 14.5zM636 1000l-136 -100h-100v-375l150 -213l100 -212h50v175l-50 225h450v125l-250 375h-214z" /> | |
159 | +<glyph unicode="" d="M356 873l363 230q31 16 53 -6l110 -112q13 -13 13.5 -32t-11.5 -34l-84 -121h302q84 0 138 -38t54 -110t-55 -111t-139 -39h-106l-131 -339q-6 -21 -19.5 -41t-28.5 -20h-342q-7 0 -90 81t-83 94v525q0 17 14 35.5t28 28.5zM400 792v-503l100 -89h293l131 339 q6 21 19.5 41t28.5 20h203q21 0 30.5 25t0.5 50t-31 25h-456h-7h-6h-5.5t-6 0.5t-5 1.5t-5 2t-4 2.5t-4 4t-2.5 4.5q-12 25 5 47l146 183l-86 83zM50 800h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v500 q0 21 14.5 35.5t35.5 14.5z" /> | |
160 | +<glyph unicode="" d="M475 1103l366 -230q2 -1 6 -3.5t14 -10.5t18 -16.5t14.5 -20t6.5 -22.5v-525q0 -13 -86 -94t-93 -81h-342q-15 0 -28.5 20t-19.5 41l-131 339h-106q-85 0 -139.5 39t-54.5 111t54 110t138 38h302l-85 121q-11 15 -10.5 34t13.5 32l110 112q22 22 53 6zM370 945l146 -183 q17 -22 5 -47q-2 -2 -3.5 -4.5t-4 -4t-4 -2.5t-5 -2t-5 -1.5t-6 -0.5h-6h-6.5h-6h-475v-100h221q15 0 29 -20t20 -41l130 -339h294l106 89v503l-342 236zM1050 800h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5 v500q0 21 14.5 35.5t35.5 14.5z" /> | |
161 | +<glyph unicode="" d="M550 1294q72 0 111 -55t39 -139v-106l339 -131q21 -6 41 -19.5t20 -28.5v-342q0 -7 -81 -90t-94 -83h-525q-17 0 -35.5 14t-28.5 28l-9 14l-230 363q-16 31 6 53l112 110q13 13 32 13.5t34 -11.5l121 -84v302q0 84 38 138t110 54zM600 972v203q0 21 -25 30.5t-50 0.5 t-25 -31v-456v-7v-6v-5.5t-0.5 -6t-1.5 -5t-2 -5t-2.5 -4t-4 -4t-4.5 -2.5q-25 -12 -47 5l-183 146l-83 -86l236 -339h503l89 100v293l-339 131q-21 6 -41 19.5t-20 28.5zM450 200h500q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-500 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" /> | |
162 | +<glyph unicode="" d="M350 1100h500q21 0 35.5 14.5t14.5 35.5v100q0 21 -14.5 35.5t-35.5 14.5h-500q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -21 14.5 -35.5t35.5 -14.5zM600 306v-106q0 -84 -39 -139t-111 -55t-110 54t-38 138v302l-121 -84q-15 -12 -34 -11.5t-32 13.5l-112 110 q-22 22 -6 53l230 363q1 2 3.5 6t10.5 13.5t16.5 17t20 13.5t22.5 6h525q13 0 94 -83t81 -90v-342q0 -15 -20 -28.5t-41 -19.5zM308 900l-236 -339l83 -86l183 146q22 17 47 5q2 -1 4.5 -2.5t4 -4t2.5 -4t2 -5t1.5 -5t0.5 -6v-5.5v-6v-7v-456q0 -22 25 -31t50 0.5t25 30.5 v203q0 15 20 28.5t41 19.5l339 131v293l-89 100h-503z" /> | |
163 | +<glyph unicode="" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM914 632l-275 223q-16 13 -27.5 8t-11.5 -26v-137h-275 q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h275v-137q0 -21 11.5 -26t27.5 8l275 223q16 13 16 32t-16 32z" /> | |
164 | +<glyph unicode="" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM561 855l-275 -223q-16 -13 -16 -32t16 -32l275 -223q16 -13 27.5 -8 t11.5 26v137h275q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5h-275v137q0 21 -11.5 26t-27.5 -8z" /> | |
165 | +<glyph unicode="" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM855 639l-223 275q-13 16 -32 16t-32 -16l-223 -275q-13 -16 -8 -27.5 t26 -11.5h137v-275q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v275h137q21 0 26 11.5t-8 27.5z" /> | |
166 | +<glyph unicode="" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM675 900h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-275h-137q-21 0 -26 -11.5 t8 -27.5l223 -275q13 -16 32 -16t32 16l223 275q13 16 8 27.5t-26 11.5h-137v275q0 10 -7.5 17.5t-17.5 7.5z" /> | |
167 | +<glyph unicode="" d="M600 1176q116 0 222.5 -46t184 -123.5t123.5 -184t46 -222.5t-46 -222.5t-123.5 -184t-184 -123.5t-222.5 -46t-222.5 46t-184 123.5t-123.5 184t-46 222.5t46 222.5t123.5 184t184 123.5t222.5 46zM627 1101q-15 -12 -36.5 -20.5t-35.5 -12t-43 -8t-39 -6.5 q-15 -3 -45.5 0t-45.5 -2q-20 -7 -51.5 -26.5t-34.5 -34.5q-3 -11 6.5 -22.5t8.5 -18.5q-3 -34 -27.5 -91t-29.5 -79q-9 -34 5 -93t8 -87q0 -9 17 -44.5t16 -59.5q12 0 23 -5t23.5 -15t19.5 -14q16 -8 33 -15t40.5 -15t34.5 -12q21 -9 52.5 -32t60 -38t57.5 -11 q7 -15 -3 -34t-22.5 -40t-9.5 -38q13 -21 23 -34.5t27.5 -27.5t36.5 -18q0 -7 -3.5 -16t-3.5 -14t5 -17q104 -2 221 112q30 29 46.5 47t34.5 49t21 63q-13 8 -37 8.5t-36 7.5q-15 7 -49.5 15t-51.5 19q-18 0 -41 -0.5t-43 -1.5t-42 -6.5t-38 -16.5q-51 -35 -66 -12 q-4 1 -3.5 25.5t0.5 25.5q-6 13 -26.5 17.5t-24.5 6.5q1 15 -0.5 30.5t-7 28t-18.5 11.5t-31 -21q-23 -25 -42 4q-19 28 -8 58q6 16 22 22q6 -1 26 -1.5t33.5 -4t19.5 -13.5q7 -12 18 -24t21.5 -20.5t20 -15t15.5 -10.5l5 -3q2 12 7.5 30.5t8 34.5t-0.5 32q-3 18 3.5 29 t18 22.5t15.5 24.5q6 14 10.5 35t8 31t15.5 22.5t34 22.5q-6 18 10 36q8 0 24 -1.5t24.5 -1.5t20 4.5t20.5 15.5q-10 23 -31 42.5t-37.5 29.5t-49 27t-43.5 23q0 1 2 8t3 11.5t1.5 10.5t-1 9.5t-4.5 4.5q31 -13 58.5 -14.5t38.5 2.5l12 5q5 28 -9.5 46t-36.5 24t-50 15 t-41 20q-18 -4 -37 0zM613 994q0 -17 8 -42t17 -45t9 -23q-8 1 -39.5 5.5t-52.5 10t-37 16.5q3 11 16 29.5t16 25.5q10 -10 19 -10t14 6t13.5 14.5t16.5 12.5z" /> | |
168 | +<glyph unicode="" d="M756 1157q164 92 306 -9l-259 -138l145 -232l251 126q6 -89 -34 -156.5t-117 -110.5q-60 -34 -127 -39.5t-126 16.5l-596 -596q-15 -16 -36.5 -16t-36.5 16l-111 110q-15 15 -15 36.5t15 37.5l600 599q-34 101 5.5 201.5t135.5 154.5z" /> | |
169 | +<glyph unicode="" horiz-adv-x="1220" d="M100 1196h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5v100q0 41 29.5 70.5t70.5 29.5zM1100 1096h-200v-100h200v100zM100 796h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000 q-41 0 -70.5 29.5t-29.5 70.5v100q0 41 29.5 70.5t70.5 29.5zM1100 696h-500v-100h500v100zM100 396h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5v100q0 41 29.5 70.5t70.5 29.5zM1100 296h-300v-100h300v100z " /> | |
170 | +<glyph unicode="" d="M150 1200h900q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM700 500v-300l-200 -200v500l-350 500h900z" /> | |
171 | +<glyph unicode="" d="M500 1200h200q41 0 70.5 -29.5t29.5 -70.5v-100h300q41 0 70.5 -29.5t29.5 -70.5v-400h-500v100h-200v-100h-500v400q0 41 29.5 70.5t70.5 29.5h300v100q0 41 29.5 70.5t70.5 29.5zM500 1100v-100h200v100h-200zM1200 400v-200q0 -41 -29.5 -70.5t-70.5 -29.5h-1000 q-41 0 -70.5 29.5t-29.5 70.5v200h1200z" /> | |
172 | +<glyph unicode="" d="M50 1200h300q21 0 25 -10.5t-10 -24.5l-94 -94l199 -199q7 -8 7 -18t-7 -18l-106 -106q-8 -7 -18 -7t-18 7l-199 199l-94 -94q-14 -14 -24.5 -10t-10.5 25v300q0 21 14.5 35.5t35.5 14.5zM850 1200h300q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -10.5 -25t-24.5 10l-94 94 l-199 -199q-8 -7 -18 -7t-18 7l-106 106q-7 8 -7 18t7 18l199 199l-94 94q-14 14 -10 24.5t25 10.5zM364 470l106 -106q7 -8 7 -18t-7 -18l-199 -199l94 -94q14 -14 10 -24.5t-25 -10.5h-300q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 10.5 25t24.5 -10l94 -94l199 199 q8 7 18 7t18 -7zM1071 271l94 94q14 14 24.5 10t10.5 -25v-300q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -25 10.5t10 24.5l94 94l-199 199q-7 8 -7 18t7 18l106 106q8 7 18 7t18 -7z" /> | |
173 | +<glyph unicode="" d="M596 1192q121 0 231.5 -47.5t190 -127t127 -190t47.5 -231.5t-47.5 -231.5t-127 -190.5t-190 -127t-231.5 -47t-231.5 47t-190.5 127t-127 190.5t-47 231.5t47 231.5t127 190t190.5 127t231.5 47.5zM596 1010q-112 0 -207.5 -55.5t-151 -151t-55.5 -207.5t55.5 -207.5 t151 -151t207.5 -55.5t207.5 55.5t151 151t55.5 207.5t-55.5 207.5t-151 151t-207.5 55.5zM454.5 905q22.5 0 38.5 -16t16 -38.5t-16 -39t-38.5 -16.5t-38.5 16.5t-16 39t16 38.5t38.5 16zM754.5 905q22.5 0 38.5 -16t16 -38.5t-16 -39t-38 -16.5q-14 0 -29 10l-55 -145 q17 -23 17 -51q0 -36 -25.5 -61.5t-61.5 -25.5t-61.5 25.5t-25.5 61.5q0 32 20.5 56.5t51.5 29.5l122 126l1 1q-9 14 -9 28q0 23 16 39t38.5 16zM345.5 709q22.5 0 38.5 -16t16 -38.5t-16 -38.5t-38.5 -16t-38.5 16t-16 38.5t16 38.5t38.5 16zM854.5 709q22.5 0 38.5 -16 t16 -38.5t-16 -38.5t-38.5 -16t-38.5 16t-16 38.5t16 38.5t38.5 16z" /> | |
174 | +<glyph unicode="" d="M546 173l469 470q91 91 99 192q7 98 -52 175.5t-154 94.5q-22 4 -47 4q-34 0 -66.5 -10t-56.5 -23t-55.5 -38t-48 -41.5t-48.5 -47.5q-376 -375 -391 -390q-30 -27 -45 -41.5t-37.5 -41t-32 -46.5t-16 -47.5t-1.5 -56.5q9 -62 53.5 -95t99.5 -33q74 0 125 51l548 548 q36 36 20 75q-7 16 -21.5 26t-32.5 10q-26 0 -50 -23q-13 -12 -39 -38l-341 -338q-15 -15 -35.5 -15.5t-34.5 13.5t-14 34.5t14 34.5q327 333 361 367q35 35 67.5 51.5t78.5 16.5q14 0 29 -1q44 -8 74.5 -35.5t43.5 -68.5q14 -47 2 -96.5t-47 -84.5q-12 -11 -32 -32 t-79.5 -81t-114.5 -115t-124.5 -123.5t-123 -119.5t-96.5 -89t-57 -45q-56 -27 -120 -27q-70 0 -129 32t-93 89q-48 78 -35 173t81 163l511 511q71 72 111 96q91 55 198 55q80 0 152 -33q78 -36 129.5 -103t66.5 -154q17 -93 -11 -183.5t-94 -156.5l-482 -476 q-15 -15 -36 -16t-37 14t-17.5 34t14.5 35z" /> | |
175 | +<glyph unicode="" d="M649 949q48 68 109.5 104t121.5 38.5t118.5 -20t102.5 -64t71 -100.5t27 -123q0 -57 -33.5 -117.5t-94 -124.5t-126.5 -127.5t-150 -152.5t-146 -174q-62 85 -145.5 174t-150 152.5t-126.5 127.5t-93.5 124.5t-33.5 117.5q0 64 28 123t73 100.5t104 64t119 20 t120.5 -38.5t104.5 -104zM896 972q-33 0 -64.5 -19t-56.5 -46t-47.5 -53.5t-43.5 -45.5t-37.5 -19t-36 19t-40 45.5t-43 53.5t-54 46t-65.5 19q-67 0 -122.5 -55.5t-55.5 -132.5q0 -23 13.5 -51t46 -65t57.5 -63t76 -75l22 -22q15 -14 44 -44t50.5 -51t46 -44t41 -35t23 -12 t23.5 12t42.5 36t46 44t52.5 52t44 43q4 4 12 13q43 41 63.5 62t52 55t46 55t26 46t11.5 44q0 79 -53 133.5t-120 54.5z" /> | |
176 | +<glyph unicode="" d="M776.5 1214q93.5 0 159.5 -66l141 -141q66 -66 66 -160q0 -42 -28 -95.5t-62 -87.5l-29 -29q-31 53 -77 99l-18 18l95 95l-247 248l-389 -389l212 -212l-105 -106l-19 18l-141 141q-66 66 -66 159t66 159l283 283q65 66 158.5 66zM600 706l105 105q10 -8 19 -17l141 -141 q66 -66 66 -159t-66 -159l-283 -283q-66 -66 -159 -66t-159 66l-141 141q-66 66 -66 159.5t66 159.5l55 55q29 -55 75 -102l18 -17l-95 -95l247 -248l389 389z" /> | |
177 | +<glyph unicode="" d="M603 1200q85 0 162 -15t127 -38t79 -48t29 -46v-953q0 -41 -29.5 -70.5t-70.5 -29.5h-600q-41 0 -70.5 29.5t-29.5 70.5v953q0 21 30 46.5t81 48t129 37.5t163 15zM300 1000v-700h600v700h-600zM600 254q-43 0 -73.5 -30.5t-30.5 -73.5t30.5 -73.5t73.5 -30.5t73.5 30.5 t30.5 73.5t-30.5 73.5t-73.5 30.5z" /> | |
178 | +<glyph unicode="" d="M902 1185l283 -282q15 -15 15 -36t-14.5 -35.5t-35.5 -14.5t-35 15l-36 35l-279 -267v-300l-212 210l-308 -307l-280 -203l203 280l307 308l-210 212h300l267 279l-35 36q-15 14 -15 35t14.5 35.5t35.5 14.5t35 -15z" /> | |
179 | +<glyph unicode="" d="M700 1248v-78q38 -5 72.5 -14.5t75.5 -31.5t71 -53.5t52 -84t24 -118.5h-159q-4 36 -10.5 59t-21 45t-40 35.5t-64.5 20.5v-307l64 -13q34 -7 64 -16.5t70 -32t67.5 -52.5t47.5 -80t20 -112q0 -139 -89 -224t-244 -97v-77h-100v79q-150 16 -237 103q-40 40 -52.5 93.5 t-15.5 139.5h139q5 -77 48.5 -126t117.5 -65v335l-27 8q-46 14 -79 26.5t-72 36t-63 52t-40 72.5t-16 98q0 70 25 126t67.5 92t94.5 57t110 27v77h100zM600 754v274q-29 -4 -50 -11t-42 -21.5t-31.5 -41.5t-10.5 -65q0 -29 7 -50.5t16.5 -34t28.5 -22.5t31.5 -14t37.5 -10 q9 -3 13 -4zM700 547v-310q22 2 42.5 6.5t45 15.5t41.5 27t29 42t12 59.5t-12.5 59.5t-38 44.5t-53 31t-66.5 24.5z" /> | |
180 | +<glyph unicode="" d="M561 1197q84 0 160.5 -40t123.5 -109.5t47 -147.5h-153q0 40 -19.5 71.5t-49.5 48.5t-59.5 26t-55.5 9q-37 0 -79 -14.5t-62 -35.5q-41 -44 -41 -101q0 -26 13.5 -63t26.5 -61t37 -66q6 -9 9 -14h241v-100h-197q8 -50 -2.5 -115t-31.5 -95q-45 -62 -99 -112 q34 10 83 17.5t71 7.5q32 1 102 -16t104 -17q83 0 136 30l50 -147q-31 -19 -58 -30.5t-55 -15.5t-42 -4.5t-46 -0.5q-23 0 -76 17t-111 32.5t-96 11.5q-39 -3 -82 -16t-67 -25l-23 -11l-55 145q4 3 16 11t15.5 10.5t13 9t15.5 12t14.5 14t17.5 18.5q48 55 54 126.5 t-30 142.5h-221v100h166q-23 47 -44 104q-7 20 -12 41.5t-6 55.5t6 66.5t29.5 70.5t58.5 71q97 88 263 88z" /> | |
181 | +<glyph unicode="" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM935 1184l230 -249q14 -14 10 -24.5t-25 -10.5h-150v-900h-200v900h-150q-21 0 -25 10.5t10 24.5l230 249q14 15 35 15t35 -15z" /> | |
182 | +<glyph unicode="" d="M1000 700h-100v100h-100v-100h-100v500h300v-500zM400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM801 1100v-200h100v200h-100zM1000 350l-200 -250h200v-100h-300v150l200 250h-200v100h300v-150z " /> | |
183 | +<glyph unicode="" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1000 1050l-200 -250h200v-100h-300v150l200 250h-200v100h300v-150zM1000 0h-100v100h-100v-100h-100v500h300v-500zM801 400v-200h100v200h-100z " /> | |
184 | +<glyph unicode="" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1000 700h-100v400h-100v100h200v-500zM1100 0h-100v100h-200v400h300v-500zM901 400v-200h100v200h-100z" /> | |
185 | +<glyph unicode="" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1100 700h-100v100h-200v400h300v-500zM901 1100v-200h100v200h-100zM1000 0h-100v400h-100v100h200v-500z" /> | |
186 | +<glyph unicode="" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM900 1000h-200v200h200v-200zM1000 700h-300v200h300v-200zM1100 400h-400v200h400v-200zM1200 100h-500v200h500v-200z" /> | |
187 | +<glyph unicode="" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1200 1000h-500v200h500v-200zM1100 700h-400v200h400v-200zM1000 400h-300v200h300v-200zM900 100h-200v200h200v-200z" /> | |
188 | +<glyph unicode="" d="M350 1100h400q162 0 256 -93.5t94 -256.5v-400q0 -165 -93.5 -257.5t-256.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5z" /> | |
189 | +<glyph unicode="" d="M350 1100h400q165 0 257.5 -92.5t92.5 -257.5v-400q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-163 0 -256.5 92.5t-93.5 257.5v400q0 163 94 256.5t256 93.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5zM440 770l253 -190q17 -12 17 -30t-17 -30l-253 -190q-16 -12 -28 -6.5t-12 26.5v400q0 21 12 26.5t28 -6.5z" /> | |
190 | +<glyph unicode="" d="M350 1100h400q163 0 256.5 -94t93.5 -256v-400q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 163 92.5 256.5t257.5 93.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5zM350 700h400q21 0 26.5 -12t-6.5 -28l-190 -253q-12 -17 -30 -17t-30 17l-190 253q-12 16 -6.5 28t26.5 12z" /> | |
191 | +<glyph unicode="" d="M350 1100h400q165 0 257.5 -92.5t92.5 -257.5v-400q0 -163 -92.5 -256.5t-257.5 -93.5h-400q-163 0 -256.5 94t-93.5 256v400q0 165 92.5 257.5t257.5 92.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5zM580 693l190 -253q12 -16 6.5 -28t-26.5 -12h-400q-21 0 -26.5 12t6.5 28l190 253q12 17 30 17t30 -17z" /> | |
192 | +<glyph unicode="" d="M550 1100h400q165 0 257.5 -92.5t92.5 -257.5v-400q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h450q41 0 70.5 29.5t29.5 70.5v500q0 41 -29.5 70.5t-70.5 29.5h-450q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM338 867l324 -284q16 -14 16 -33t-16 -33l-324 -284q-16 -14 -27 -9t-11 26v150h-250q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h250v150q0 21 11 26t27 -9z" /> | |
193 | +<glyph unicode="" d="M793 1182l9 -9q8 -10 5 -27q-3 -11 -79 -225.5t-78 -221.5l300 1q24 0 32.5 -17.5t-5.5 -35.5q-1 0 -133.5 -155t-267 -312.5t-138.5 -162.5q-12 -15 -26 -15h-9l-9 8q-9 11 -4 32q2 9 42 123.5t79 224.5l39 110h-302q-23 0 -31 19q-10 21 6 41q75 86 209.5 237.5 t228 257t98.5 111.5q9 16 25 16h9z" /> | |
194 | +<glyph unicode="" d="M350 1100h400q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-450q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h450q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400 q0 165 92.5 257.5t257.5 92.5zM938 867l324 -284q16 -14 16 -33t-16 -33l-324 -284q-16 -14 -27 -9t-11 26v150h-250q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h250v150q0 21 11 26t27 -9z" /> | |
195 | +<glyph unicode="" d="M750 1200h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -10.5 -25t-24.5 10l-109 109l-312 -312q-15 -15 -35.5 -15t-35.5 15l-141 141q-15 15 -15 35.5t15 35.5l312 312l-109 109q-14 14 -10 24.5t25 10.5zM456 900h-156q-41 0 -70.5 -29.5t-29.5 -70.5v-500 q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v148l200 200v-298q0 -165 -93.5 -257.5t-256.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5h300z" /> | |
196 | +<glyph unicode="" d="M600 1186q119 0 227.5 -46.5t187 -125t125 -187t46.5 -227.5t-46.5 -227.5t-125 -187t-187 -125t-227.5 -46.5t-227.5 46.5t-187 125t-125 187t-46.5 227.5t46.5 227.5t125 187t187 125t227.5 46.5zM600 1022q-115 0 -212 -56.5t-153.5 -153.5t-56.5 -212t56.5 -212 t153.5 -153.5t212 -56.5t212 56.5t153.5 153.5t56.5 212t-56.5 212t-153.5 153.5t-212 56.5zM600 794q80 0 137 -57t57 -137t-57 -137t-137 -57t-137 57t-57 137t57 137t137 57z" /> | |
197 | +<glyph unicode="" d="M450 1200h200q21 0 35.5 -14.5t14.5 -35.5v-350h245q20 0 25 -11t-9 -26l-383 -426q-14 -15 -33.5 -15t-32.5 15l-379 426q-13 15 -8.5 26t25.5 11h250v350q0 21 14.5 35.5t35.5 14.5zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5z M900 200v-50h100v50h-100z" /> | |
198 | +<glyph unicode="" d="M583 1182l378 -435q14 -15 9 -31t-26 -16h-244v-250q0 -20 -17 -35t-39 -15h-200q-20 0 -32 14.5t-12 35.5v250h-250q-20 0 -25.5 16.5t8.5 31.5l383 431q14 16 33.5 17t33.5 -14zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5z M900 200v-50h100v50h-100z" /> | |
199 | +<glyph unicode="" d="M396 723l369 369q7 7 17.5 7t17.5 -7l139 -139q7 -8 7 -18.5t-7 -17.5l-525 -525q-7 -8 -17.5 -8t-17.5 8l-292 291q-7 8 -7 18t7 18l139 139q8 7 18.5 7t17.5 -7zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5zM900 200v-50h100v50 h-100z" /> | |
200 | +<glyph unicode="" d="M135 1023l142 142q14 14 35 14t35 -14l77 -77l-212 -212l-77 76q-14 15 -14 36t14 35zM655 855l210 210q14 14 24.5 10t10.5 -25l-2 -599q-1 -20 -15.5 -35t-35.5 -15l-597 -1q-21 0 -25 10.5t10 24.5l208 208l-154 155l212 212zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5 v-250h-1100v250q0 21 14.5 35.5t35.5 14.5zM900 200v-50h100v50h-100z" /> | |
201 | +<glyph unicode="" d="M350 1200l599 -2q20 -1 35 -15.5t15 -35.5l1 -597q0 -21 -10.5 -25t-24.5 10l-208 208l-155 -154l-212 212l155 154l-210 210q-14 14 -10 24.5t25 10.5zM524 512l-76 -77q-15 -14 -36 -14t-35 14l-142 142q-14 14 -14 35t14 35l77 77zM50 300h1000q21 0 35.5 -14.5 t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5zM900 200v-50h100v50h-100z" /> | |
202 | +<glyph unicode="" d="M1200 103l-483 276l-314 -399v423h-399l1196 796v-1096zM483 424v-230l683 953z" /> | |
203 | +<glyph unicode="" d="M1100 1000v-850q0 -21 -14.5 -35.5t-35.5 -14.5h-150v400h-700v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200z" /> | |
204 | +<glyph unicode="" d="M1100 1000l-2 -149l-299 -299l-95 95q-9 9 -21.5 9t-21.5 -9l-149 -147h-312v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM1132 638l106 -106q7 -7 7 -17.5t-7 -17.5l-420 -421q-8 -7 -18 -7 t-18 7l-202 203q-8 7 -8 17.5t8 17.5l106 106q7 8 17.5 8t17.5 -8l79 -79l297 297q7 7 17.5 7t17.5 -7z" /> | |
205 | +<glyph unicode="" d="M1100 1000v-269l-103 -103l-134 134q-15 15 -33.5 16.5t-34.5 -12.5l-266 -266h-329v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM1202 572l70 -70q15 -15 15 -35.5t-15 -35.5l-131 -131 l131 -131q15 -15 15 -35.5t-15 -35.5l-70 -70q-15 -15 -35.5 -15t-35.5 15l-131 131l-131 -131q-15 -15 -35.5 -15t-35.5 15l-70 70q-15 15 -15 35.5t15 35.5l131 131l-131 131q-15 15 -15 35.5t15 35.5l70 70q15 15 35.5 15t35.5 -15l131 -131l131 131q15 15 35.5 15 t35.5 -15z" /> | |
206 | +<glyph unicode="" d="M1100 1000v-300h-350q-21 0 -35.5 -14.5t-14.5 -35.5v-150h-500v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM850 600h100q21 0 35.5 -14.5t14.5 -35.5v-250h150q21 0 25 -10.5t-10 -24.5 l-230 -230q-14 -14 -35 -14t-35 14l-230 230q-14 14 -10 24.5t25 10.5h150v250q0 21 14.5 35.5t35.5 14.5z" /> | |
207 | +<glyph unicode="" d="M1100 1000v-400l-165 165q-14 15 -35 15t-35 -15l-263 -265h-402v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM935 565l230 -229q14 -15 10 -25.5t-25 -10.5h-150v-250q0 -20 -14.5 -35 t-35.5 -15h-100q-21 0 -35.5 15t-14.5 35v250h-150q-21 0 -25 10.5t10 25.5l230 229q14 15 35 15t35 -15z" /> | |
208 | +<glyph unicode="" d="M50 1100h1100q21 0 35.5 -14.5t14.5 -35.5v-150h-1200v150q0 21 14.5 35.5t35.5 14.5zM1200 800v-550q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v550h1200zM100 500v-200h400v200h-400z" /> | |
209 | +<glyph unicode="" d="M935 1165l248 -230q14 -14 14 -35t-14 -35l-248 -230q-14 -14 -24.5 -10t-10.5 25v150h-400v200h400v150q0 21 10.5 25t24.5 -10zM200 800h-50q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h50v-200zM400 800h-100v200h100v-200zM18 435l247 230 q14 14 24.5 10t10.5 -25v-150h400v-200h-400v-150q0 -21 -10.5 -25t-24.5 10l-247 230q-15 14 -15 35t15 35zM900 300h-100v200h100v-200zM1000 500h51q20 0 34.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-34.5 -14.5h-51v200z" /> | |
210 | +<glyph unicode="" d="M862 1073l276 116q25 18 43.5 8t18.5 -41v-1106q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v397q-4 1 -11 5t-24 17.5t-30 29t-24 42t-11 56.5v359q0 31 18.5 65t43.5 52zM550 1200q22 0 34.5 -12.5t14.5 -24.5l1 -13v-450q0 -28 -10.5 -59.5 t-25 -56t-29 -45t-25.5 -31.5l-10 -11v-447q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v447q-4 4 -11 11.5t-24 30.5t-30 46t-24 55t-11 60v450q0 2 0.5 5.5t4 12t8.5 15t14.5 12t22.5 5.5q20 0 32.5 -12.5t14.5 -24.5l3 -13v-350h100v350v5.5t2.5 12 t7 15t15 12t25.5 5.5q23 0 35.5 -12.5t13.5 -24.5l1 -13v-350h100v350q0 2 0.5 5.5t3 12t7 15t15 12t24.5 5.5z" /> | |
211 | +<glyph unicode="" d="M1200 1100v-56q-4 0 -11 -0.5t-24 -3t-30 -7.5t-24 -15t-11 -24v-888q0 -22 25 -34.5t50 -13.5l25 -2v-56h-400v56q75 0 87.5 6.5t12.5 43.5v394h-500v-394q0 -37 12.5 -43.5t87.5 -6.5v-56h-400v56q4 0 11 0.5t24 3t30 7.5t24 15t11 24v888q0 22 -25 34.5t-50 13.5 l-25 2v56h400v-56q-75 0 -87.5 -6.5t-12.5 -43.5v-394h500v394q0 37 -12.5 43.5t-87.5 6.5v56h400z" /> | |
212 | +<glyph unicode="" d="M675 1000h375q21 0 35.5 -14.5t14.5 -35.5v-150h-105l-295 -98v98l-200 200h-400l100 100h375zM100 900h300q41 0 70.5 -29.5t29.5 -70.5v-500q0 -41 -29.5 -70.5t-70.5 -29.5h-300q-41 0 -70.5 29.5t-29.5 70.5v500q0 41 29.5 70.5t70.5 29.5zM100 800v-200h300v200 h-300zM1100 535l-400 -133v163l400 133v-163zM100 500v-200h300v200h-300zM1100 398v-248q0 -21 -14.5 -35.5t-35.5 -14.5h-375l-100 -100h-375l-100 100h400l200 200h105z" /> | |
213 | +<glyph unicode="" d="M17 1007l162 162q17 17 40 14t37 -22l139 -194q14 -20 11 -44.5t-20 -41.5l-119 -118q102 -142 228 -268t267 -227l119 118q17 17 42.5 19t44.5 -12l192 -136q19 -14 22.5 -37.5t-13.5 -40.5l-163 -162q-3 -1 -9.5 -1t-29.5 2t-47.5 6t-62.5 14.5t-77.5 26.5t-90 42.5 t-101.5 60t-111 83t-119 108.5q-74 74 -133.5 150.5t-94.5 138.5t-60 119.5t-34.5 100t-15 74.5t-4.5 48z" /> | |
214 | +<glyph unicode="" d="M600 1100q92 0 175 -10.5t141.5 -27t108.5 -36.5t81.5 -40t53.5 -37t31 -27l9 -10v-200q0 -21 -14.5 -33t-34.5 -9l-202 34q-20 3 -34.5 20t-14.5 38v146q-141 24 -300 24t-300 -24v-146q0 -21 -14.5 -38t-34.5 -20l-202 -34q-20 -3 -34.5 9t-14.5 33v200q3 4 9.5 10.5 t31 26t54 37.5t80.5 39.5t109 37.5t141 26.5t175 10.5zM600 795q56 0 97 -9.5t60 -23.5t30 -28t12 -24l1 -10v-50l365 -303q14 -15 24.5 -40t10.5 -45v-212q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v212q0 20 10.5 45t24.5 40l365 303v50 q0 4 1 10.5t12 23t30 29t60 22.5t97 10z" /> | |
215 | +<glyph unicode="" d="M1100 700l-200 -200h-600l-200 200v500h200v-200h200v200h200v-200h200v200h200v-500zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-12l137 -100h-950l137 100h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5 t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" /> | |
216 | +<glyph unicode="" d="M700 1100h-100q-41 0 -70.5 -29.5t-29.5 -70.5v-1000h300v1000q0 41 -29.5 70.5t-70.5 29.5zM1100 800h-100q-41 0 -70.5 -29.5t-29.5 -70.5v-700h300v700q0 41 -29.5 70.5t-70.5 29.5zM400 0h-300v400q0 41 29.5 70.5t70.5 29.5h100q41 0 70.5 -29.5t29.5 -70.5v-400z " /> | |
217 | +<glyph unicode="" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 700h-200v-100h200v-300h-300v100h200v100h-200v300h300v-100zM900 700v-300l-100 -100h-200v500h200z M700 700v-300h100v300h-100z" /> | |
218 | +<glyph unicode="" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 300h-100v200h-100v-200h-100v500h100v-200h100v200h100v-500zM900 700v-300l-100 -100h-200v500h200z M700 700v-300h100v300h-100z" /> | |
219 | +<glyph unicode="" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 700h-200v-300h200v-100h-300v500h300v-100zM900 700h-200v-300h200v-100h-300v500h300v-100z" /> | |
220 | +<glyph unicode="" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 400l-300 150l300 150v-300zM900 550l-300 -150v300z" /> | |
221 | +<glyph unicode="" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM900 300h-700v500h700v-500zM800 700h-130q-38 0 -66.5 -43t-28.5 -108t27 -107t68 -42h130v300zM300 700v-300 h130q41 0 68 42t27 107t-28.5 108t-66.5 43h-130z" /> | |
222 | +<glyph unicode="" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 700h-200v-100h200v-300h-300v100h200v100h-200v300h300v-100zM900 300h-100v400h-100v100h200v-500z M700 300h-100v100h100v-100z" /> | |
223 | +<glyph unicode="" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM300 700h200v-400h-300v500h100v-100zM900 300h-100v400h-100v100h200v-500zM300 600v-200h100v200h-100z M700 300h-100v100h100v-100z" /> | |
224 | +<glyph unicode="" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 500l-199 -200h-100v50l199 200v150h-200v100h300v-300zM900 300h-100v400h-100v100h200v-500zM701 300h-100 v100h100v-100z" /> | |
225 | +<glyph unicode="" d="M600 1191q120 0 229.5 -47t188.5 -126t126 -188.5t47 -229.5t-47 -229.5t-126 -188.5t-188.5 -126t-229.5 -47t-229.5 47t-188.5 126t-126 188.5t-47 229.5t47 229.5t126 188.5t188.5 126t229.5 47zM600 1021q-114 0 -211 -56.5t-153.5 -153.5t-56.5 -211t56.5 -211 t153.5 -153.5t211 -56.5t211 56.5t153.5 153.5t56.5 211t-56.5 211t-153.5 153.5t-211 56.5zM800 700h-300v-200h300v-100h-300l-100 100v200l100 100h300v-100z" /> | |
226 | +<glyph unicode="" d="M600 1191q120 0 229.5 -47t188.5 -126t126 -188.5t47 -229.5t-47 -229.5t-126 -188.5t-188.5 -126t-229.5 -47t-229.5 47t-188.5 126t-126 188.5t-47 229.5t47 229.5t126 188.5t188.5 126t229.5 47zM600 1021q-114 0 -211 -56.5t-153.5 -153.5t-56.5 -211t56.5 -211 t153.5 -153.5t211 -56.5t211 56.5t153.5 153.5t56.5 211t-56.5 211t-153.5 153.5t-211 56.5zM800 700v-100l-50 -50l100 -100v-50h-100l-100 100h-150v-100h-100v400h300zM500 700v-100h200v100h-200z" /> | |
227 | +<glyph unicode="" d="M503 1089q110 0 200.5 -59.5t134.5 -156.5q44 14 90 14q120 0 205 -86.5t85 -207t-85 -207t-205 -86.5h-128v250q0 21 -14.5 35.5t-35.5 14.5h-300q-21 0 -35.5 -14.5t-14.5 -35.5v-250h-222q-80 0 -136 57.5t-56 136.5q0 69 43 122.5t108 67.5q-2 19 -2 37q0 100 49 185 t134 134t185 49zM525 500h150q10 0 17.5 -7.5t7.5 -17.5v-275h137q21 0 26 -11.5t-8 -27.5l-223 -244q-13 -16 -32 -16t-32 16l-223 244q-13 16 -8 27.5t26 11.5h137v275q0 10 7.5 17.5t17.5 7.5z" /> | |
228 | +<glyph unicode="" d="M502 1089q110 0 201 -59.5t135 -156.5q43 15 89 15q121 0 206 -86.5t86 -206.5q0 -99 -60 -181t-150 -110l-378 360q-13 16 -31.5 16t-31.5 -16l-381 -365h-9q-79 0 -135.5 57.5t-56.5 136.5q0 69 43 122.5t108 67.5q-2 19 -2 38q0 100 49 184.5t133.5 134t184.5 49.5z M632 467l223 -228q13 -16 8 -27.5t-26 -11.5h-137v-275q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v275h-137q-21 0 -26 11.5t8 27.5q199 204 223 228q19 19 31.5 19t32.5 -19z" /> | |
229 | +<glyph unicode="" d="M700 100v100h400l-270 300h170l-270 300h170l-300 333l-300 -333h170l-270 -300h170l-270 -300h400v-100h-50q-21 0 -35.5 -14.5t-14.5 -35.5v-50h400v50q0 21 -14.5 35.5t-35.5 14.5h-50z" /> | |
230 | +<glyph unicode="" d="M600 1179q94 0 167.5 -56.5t99.5 -145.5q89 -6 150.5 -71.5t61.5 -155.5q0 -61 -29.5 -112.5t-79.5 -82.5q9 -29 9 -55q0 -74 -52.5 -126.5t-126.5 -52.5q-55 0 -100 30v-251q21 0 35.5 -14.5t14.5 -35.5v-50h-300v50q0 21 14.5 35.5t35.5 14.5v251q-45 -30 -100 -30 q-74 0 -126.5 52.5t-52.5 126.5q0 18 4 38q-47 21 -75.5 65t-28.5 97q0 74 52.5 126.5t126.5 52.5q5 0 23 -2q0 2 -1 10t-1 13q0 116 81.5 197.5t197.5 81.5z" /> | |
231 | +<glyph unicode="" d="M1010 1010q111 -111 150.5 -260.5t0 -299t-150.5 -260.5q-83 -83 -191.5 -126.5t-218.5 -43.5t-218.5 43.5t-191.5 126.5q-111 111 -150.5 260.5t0 299t150.5 260.5q83 83 191.5 126.5t218.5 43.5t218.5 -43.5t191.5 -126.5zM476 1065q-4 0 -8 -1q-121 -34 -209.5 -122.5 t-122.5 -209.5q-4 -12 2.5 -23t18.5 -14l36 -9q3 -1 7 -1q23 0 29 22q27 96 98 166q70 71 166 98q11 3 17.5 13.5t3.5 22.5l-9 35q-3 13 -14 19q-7 4 -15 4zM512 920q-4 0 -9 -2q-80 -24 -138.5 -82.5t-82.5 -138.5q-4 -13 2 -24t19 -14l34 -9q4 -1 8 -1q22 0 28 21 q18 58 58.5 98.5t97.5 58.5q12 3 18 13.5t3 21.5l-9 35q-3 12 -14 19q-7 4 -15 4zM719.5 719.5q-49.5 49.5 -119.5 49.5t-119.5 -49.5t-49.5 -119.5t49.5 -119.5t119.5 -49.5t119.5 49.5t49.5 119.5t-49.5 119.5zM855 551q-22 0 -28 -21q-18 -58 -58.5 -98.5t-98.5 -57.5 q-11 -4 -17 -14.5t-3 -21.5l9 -35q3 -12 14 -19q7 -4 15 -4q4 0 9 2q80 24 138.5 82.5t82.5 138.5q4 13 -2.5 24t-18.5 14l-34 9q-4 1 -8 1zM1000 515q-23 0 -29 -22q-27 -96 -98 -166q-70 -71 -166 -98q-11 -3 -17.5 -13.5t-3.5 -22.5l9 -35q3 -13 14 -19q7 -4 15 -4 q4 0 8 1q121 34 209.5 122.5t122.5 209.5q4 12 -2.5 23t-18.5 14l-36 9q-3 1 -7 1z" /> | |
232 | +<glyph unicode="" d="M700 800h300v-380h-180v200h-340v-200h-380v755q0 10 7.5 17.5t17.5 7.5h575v-400zM1000 900h-200v200zM700 300h162l-212 -212l-212 212h162v200h100v-200zM520 0h-395q-10 0 -17.5 7.5t-7.5 17.5v395zM1000 220v-195q0 -10 -7.5 -17.5t-17.5 -7.5h-195z" /> | |
233 | +<glyph unicode="" d="M700 800h300v-520l-350 350l-550 -550v1095q0 10 7.5 17.5t17.5 7.5h575v-400zM1000 900h-200v200zM862 200h-162v-200h-100v200h-162l212 212zM480 0h-355q-10 0 -17.5 7.5t-7.5 17.5v55h380v-80zM1000 80v-55q0 -10 -7.5 -17.5t-17.5 -7.5h-155v80h180z" /> | |
234 | +<glyph unicode="" d="M1162 800h-162v-200h100l100 -100h-300v300h-162l212 212zM200 800h200q27 0 40 -2t29.5 -10.5t23.5 -30t7 -57.5h300v-100h-600l-200 -350v450h100q0 36 7 57.5t23.5 30t29.5 10.5t40 2zM800 400h240l-240 -400h-800l300 500h500v-100z" /> | |
235 | +<glyph unicode="" d="M650 1100h100q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h50v50q0 21 14.5 35.5t35.5 14.5zM1000 850v150q41 0 70.5 -29.5t29.5 -70.5v-800 q0 -41 -29.5 -70.5t-70.5 -29.5h-600q-1 0 -20 4l246 246l-326 326v324q0 41 29.5 70.5t70.5 29.5v-150q0 -62 44 -106t106 -44h300q62 0 106 44t44 106zM412 250l-212 -212v162h-200v100h200v162z" /> | |
236 | +<glyph unicode="" d="M450 1100h100q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h50v50q0 21 14.5 35.5t35.5 14.5zM800 850v150q41 0 70.5 -29.5t29.5 -70.5v-500 h-200v-300h200q0 -36 -7 -57.5t-23.5 -30t-29.5 -10.5t-40 -2h-600q-41 0 -70.5 29.5t-29.5 70.5v800q0 41 29.5 70.5t70.5 29.5v-150q0 -62 44 -106t106 -44h300q62 0 106 44t44 106zM1212 250l-212 -212v162h-200v100h200v162z" /> | |
237 | +<glyph unicode="" d="M658 1197l637 -1104q23 -38 7 -65.5t-60 -27.5h-1276q-44 0 -60 27.5t7 65.5l637 1104q22 39 54 39t54 -39zM704 800h-208q-20 0 -32 -14.5t-8 -34.5l58 -302q4 -20 21.5 -34.5t37.5 -14.5h54q20 0 37.5 14.5t21.5 34.5l58 302q4 20 -8 34.5t-32 14.5zM500 300v-100h200 v100h-200z" /> | |
238 | +<glyph unicode="" d="M425 1100h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM425 800h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5 t17.5 7.5zM825 800h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM25 500h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150 q0 10 7.5 17.5t17.5 7.5zM425 500h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM825 500h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5 v150q0 10 7.5 17.5t17.5 7.5zM25 200h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM425 200h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5 t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM825 200h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5z" /> | |
239 | +<glyph unicode="" d="M700 1200h100v-200h-100v-100h350q62 0 86.5 -39.5t-3.5 -94.5l-66 -132q-41 -83 -81 -134h-772q-40 51 -81 134l-66 132q-28 55 -3.5 94.5t86.5 39.5h350v100h-100v200h100v100h200v-100zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-12l137 -100 h-950l138 100h-13q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" /> | |
240 | +<glyph unicode="" d="M600 1300q40 0 68.5 -29.5t28.5 -70.5h-194q0 41 28.5 70.5t68.5 29.5zM443 1100h314q18 -37 18 -75q0 -8 -3 -25h328q41 0 44.5 -16.5t-30.5 -38.5l-175 -145h-678l-178 145q-34 22 -29 38.5t46 16.5h328q-3 17 -3 25q0 38 18 75zM250 700h700q21 0 35.5 -14.5 t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-150v-200l275 -200h-950l275 200v200h-150q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" /> | |
241 | +<glyph unicode="" d="M600 1181q75 0 128 -53t53 -128t-53 -128t-128 -53t-128 53t-53 128t53 128t128 53zM602 798h46q34 0 55.5 -28.5t21.5 -86.5q0 -76 39 -183h-324q39 107 39 183q0 58 21.5 86.5t56.5 28.5h45zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-13 l138 -100h-950l137 100h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" /> | |
242 | +<glyph unicode="" d="M600 1300q47 0 92.5 -53.5t71 -123t25.5 -123.5q0 -78 -55.5 -133.5t-133.5 -55.5t-133.5 55.5t-55.5 133.5q0 62 34 143l144 -143l111 111l-163 163q34 26 63 26zM602 798h46q34 0 55.5 -28.5t21.5 -86.5q0 -76 39 -183h-324q39 107 39 183q0 58 21.5 86.5t56.5 28.5h45 zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-13l138 -100h-950l137 100h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" /> | |
243 | +<glyph unicode="" d="M600 1200l300 -161v-139h-300q0 -57 18.5 -108t50 -91.5t63 -72t70 -67.5t57.5 -61h-530q-60 83 -90.5 177.5t-30.5 178.5t33 164.5t87.5 139.5t126 96.5t145.5 41.5v-98zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-13l138 -100h-950l137 100 h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" /> | |
244 | +<glyph unicode="" d="M600 1300q41 0 70.5 -29.5t29.5 -70.5v-78q46 -26 73 -72t27 -100v-50h-400v50q0 54 27 100t73 72v78q0 41 29.5 70.5t70.5 29.5zM400 800h400q54 0 100 -27t72 -73h-172v-100h200v-100h-200v-100h200v-100h-200v-100h200q0 -83 -58.5 -141.5t-141.5 -58.5h-400 q-83 0 -141.5 58.5t-58.5 141.5v400q0 83 58.5 141.5t141.5 58.5z" /> | |
245 | +<glyph unicode="" d="M150 1100h900q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v500q0 21 14.5 35.5t35.5 14.5zM125 400h950q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-283l224 -224q13 -13 13 -31.5t-13 -32 t-31.5 -13.5t-31.5 13l-88 88h-524l-87 -88q-13 -13 -32 -13t-32 13.5t-13 32t13 31.5l224 224h-289q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM541 300l-100 -100h324l-100 100h-124z" /> | |
246 | +<glyph unicode="" d="M200 1100h800q83 0 141.5 -58.5t58.5 -141.5v-200h-100q0 41 -29.5 70.5t-70.5 29.5h-250q-41 0 -70.5 -29.5t-29.5 -70.5h-100q0 41 -29.5 70.5t-70.5 29.5h-250q-41 0 -70.5 -29.5t-29.5 -70.5h-100v200q0 83 58.5 141.5t141.5 58.5zM100 600h1000q41 0 70.5 -29.5 t29.5 -70.5v-300h-1200v300q0 41 29.5 70.5t70.5 29.5zM300 100v-50q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v50h200zM1100 100v-50q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v50h200z" /> | |
247 | +<glyph unicode="" d="M480 1165l682 -683q31 -31 31 -75.5t-31 -75.5l-131 -131h-481l-517 518q-32 31 -32 75.5t32 75.5l295 296q31 31 75.5 31t76.5 -31zM108 794l342 -342l303 304l-341 341zM250 100h800q21 0 35.5 -14.5t14.5 -35.5v-50h-900v50q0 21 14.5 35.5t35.5 14.5z" /> | |
248 | +<glyph unicode="" d="M1057 647l-189 506q-8 19 -27.5 33t-40.5 14h-400q-21 0 -40.5 -14t-27.5 -33l-189 -506q-8 -19 1.5 -33t30.5 -14h625v-150q0 -21 14.5 -35.5t35.5 -14.5t35.5 14.5t14.5 35.5v150h125q21 0 30.5 14t1.5 33zM897 0h-595v50q0 21 14.5 35.5t35.5 14.5h50v50 q0 21 14.5 35.5t35.5 14.5h48v300h200v-300h47q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-50z" /> | |
249 | +<glyph unicode="" d="M900 800h300v-575q0 -10 -7.5 -17.5t-17.5 -7.5h-375v591l-300 300v84q0 10 7.5 17.5t17.5 7.5h375v-400zM1200 900h-200v200zM400 600h300v-575q0 -10 -7.5 -17.5t-17.5 -7.5h-650q-10 0 -17.5 7.5t-7.5 17.5v950q0 10 7.5 17.5t17.5 7.5h375v-400zM700 700h-200v200z " /> | |
250 | +<glyph unicode="" d="M484 1095h195q75 0 146 -32.5t124 -86t89.5 -122.5t48.5 -142q18 -14 35 -20q31 -10 64.5 6.5t43.5 48.5q10 34 -15 71q-19 27 -9 43q5 8 12.5 11t19 -1t23.5 -16q41 -44 39 -105q-3 -63 -46 -106.5t-104 -43.5h-62q-7 -55 -35 -117t-56 -100l-39 -234q-3 -20 -20 -34.5 t-38 -14.5h-100q-21 0 -33 14.5t-9 34.5l12 70q-49 -14 -91 -14h-195q-24 0 -65 8l-11 -64q-3 -20 -20 -34.5t-38 -14.5h-100q-21 0 -33 14.5t-9 34.5l26 157q-84 74 -128 175l-159 53q-19 7 -33 26t-14 40v50q0 21 14.5 35.5t35.5 14.5h124q11 87 56 166l-111 95 q-16 14 -12.5 23.5t24.5 9.5h203q116 101 250 101zM675 1000h-250q-10 0 -17.5 -7.5t-7.5 -17.5v-50q0 -10 7.5 -17.5t17.5 -7.5h250q10 0 17.5 7.5t7.5 17.5v50q0 10 -7.5 17.5t-17.5 7.5z" /> | |
251 | +<glyph unicode="" d="M641 900l423 247q19 8 42 2.5t37 -21.5l32 -38q14 -15 12.5 -36t-17.5 -34l-139 -120h-390zM50 1100h106q67 0 103 -17t66 -71l102 -212h823q21 0 35.5 -14.5t14.5 -35.5v-50q0 -21 -14 -40t-33 -26l-737 -132q-23 -4 -40 6t-26 25q-42 67 -100 67h-300q-62 0 -106 44 t-44 106v200q0 62 44 106t106 44zM173 928h-80q-19 0 -28 -14t-9 -35v-56q0 -51 42 -51h134q16 0 21.5 8t5.5 24q0 11 -16 45t-27 51q-18 28 -43 28zM550 727q-32 0 -54.5 -22.5t-22.5 -54.5t22.5 -54.5t54.5 -22.5t54.5 22.5t22.5 54.5t-22.5 54.5t-54.5 22.5zM130 389 l152 130q18 19 34 24t31 -3.5t24.5 -17.5t25.5 -28q28 -35 50.5 -51t48.5 -13l63 5l48 -179q13 -61 -3.5 -97.5t-67.5 -79.5l-80 -69q-47 -40 -109 -35.5t-103 51.5l-130 151q-40 47 -35.5 109.5t51.5 102.5zM380 377l-102 -88q-31 -27 2 -65l37 -43q13 -15 27.5 -19.5 t31.5 6.5l61 53q19 16 14 49q-2 20 -12 56t-17 45q-11 12 -19 14t-23 -8z" /> | |
252 | +<glyph unicode="" d="M625 1200h150q10 0 17.5 -7.5t7.5 -17.5v-109q79 -33 131 -87.5t53 -128.5q1 -46 -15 -84.5t-39 -61t-46 -38t-39 -21.5l-17 -6q6 0 15 -1.5t35 -9t50 -17.5t53 -30t50 -45t35.5 -64t14.5 -84q0 -59 -11.5 -105.5t-28.5 -76.5t-44 -51t-49.5 -31.5t-54.5 -16t-49.5 -6.5 t-43.5 -1v-75q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v75h-100v-75q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v75h-175q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h75v600h-75q-10 0 -17.5 7.5t-7.5 17.5v150 q0 10 7.5 17.5t17.5 7.5h175v75q0 10 7.5 17.5t17.5 7.5h150q10 0 17.5 -7.5t7.5 -17.5v-75h100v75q0 10 7.5 17.5t17.5 7.5zM400 900v-200h263q28 0 48.5 10.5t30 25t15 29t5.5 25.5l1 10q0 4 -0.5 11t-6 24t-15 30t-30 24t-48.5 11h-263zM400 500v-200h363q28 0 48.5 10.5 t30 25t15 29t5.5 25.5l1 10q0 4 -0.5 11t-6 24t-15 30t-30 24t-48.5 11h-363z" /> | |
253 | +<glyph unicode="" d="M212 1198h780q86 0 147 -61t61 -147v-416q0 -51 -18 -142.5t-36 -157.5l-18 -66q-29 -87 -93.5 -146.5t-146.5 -59.5h-572q-82 0 -147 59t-93 147q-8 28 -20 73t-32 143.5t-20 149.5v416q0 86 61 147t147 61zM600 1045q-70 0 -132.5 -11.5t-105.5 -30.5t-78.5 -41.5 t-57 -45t-36 -41t-20.5 -30.5l-6 -12l156 -243h560l156 243q-2 5 -6 12.5t-20 29.5t-36.5 42t-57 44.5t-79 42t-105 29.5t-132.5 12zM762 703h-157l195 261z" /> | |
254 | +<glyph unicode="" d="M475 1300h150q103 0 189 -86t86 -189v-500q0 -41 -42 -83t-83 -42h-450q-41 0 -83 42t-42 83v500q0 103 86 189t189 86zM700 300v-225q0 -21 -27 -48t-48 -27h-150q-21 0 -48 27t-27 48v225h300z" /> | |
255 | +<glyph unicode="" d="M475 1300h96q0 -150 89.5 -239.5t239.5 -89.5v-446q0 -41 -42 -83t-83 -42h-450q-41 0 -83 42t-42 83v500q0 103 86 189t189 86zM700 300v-225q0 -21 -27 -48t-48 -27h-150q-21 0 -48 27t-27 48v225h300z" /> | |
256 | +<glyph unicode="" d="M1294 767l-638 -283l-378 170l-78 -60v-224l100 -150v-199l-150 148l-150 -149v200l100 150v250q0 4 -0.5 10.5t0 9.5t1 8t3 8t6.5 6l47 40l-147 65l642 283zM1000 380l-350 -166l-350 166v147l350 -165l350 165v-147z" /> | |
257 | +<glyph unicode="" d="M250 800q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM650 800q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM1050 800q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44z" /> | |
258 | +<glyph unicode="" d="M550 1100q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM550 700q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM550 300q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44z" /> | |
259 | +<glyph unicode="" d="M125 1100h950q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-950q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM125 700h950q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-950q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5 t17.5 7.5zM125 300h950q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-950q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5z" /> | |
260 | +<glyph unicode="" d="M350 1200h500q162 0 256 -93.5t94 -256.5v-500q0 -165 -93.5 -257.5t-256.5 -92.5h-500q-165 0 -257.5 92.5t-92.5 257.5v500q0 165 92.5 257.5t257.5 92.5zM900 1000h-600q-41 0 -70.5 -29.5t-29.5 -70.5v-600q0 -41 29.5 -70.5t70.5 -29.5h600q41 0 70.5 29.5 t29.5 70.5v600q0 41 -29.5 70.5t-70.5 29.5zM350 900h500q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -14.5 -35.5t-35.5 -14.5h-500q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 14.5 35.5t35.5 14.5zM400 800v-200h400v200h-400z" /> | |
261 | +<glyph unicode="" d="M150 1100h1000q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-200h50q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-200h50q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-200h50q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5 t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5h50v200h-50q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5h50v200h-50q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5h50v200h-50q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5z" /> | |
262 | +<glyph unicode="" d="M650 1187q87 -67 118.5 -156t0 -178t-118.5 -155q-87 66 -118.5 155t0 178t118.5 156zM300 800q124 0 212 -88t88 -212q-124 0 -212 88t-88 212zM1000 800q0 -124 -88 -212t-212 -88q0 124 88 212t212 88zM300 500q124 0 212 -88t88 -212q-124 0 -212 88t-88 212z M1000 500q0 -124 -88 -212t-212 -88q0 124 88 212t212 88zM700 199v-144q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v142q40 -4 43 -4q17 0 57 6z" /> | |
263 | +<glyph unicode="" d="M745 878l69 19q25 6 45 -12l298 -295q11 -11 15 -26.5t-2 -30.5q-5 -14 -18 -23.5t-28 -9.5h-8q1 0 1 -13q0 -29 -2 -56t-8.5 -62t-20 -63t-33 -53t-51 -39t-72.5 -14h-146q-184 0 -184 288q0 24 10 47q-20 4 -62 4t-63 -4q11 -24 11 -47q0 -288 -184 -288h-142 q-48 0 -84.5 21t-56 51t-32 71.5t-16 75t-3.5 68.5q0 13 2 13h-7q-15 0 -27.5 9.5t-18.5 23.5q-6 15 -2 30.5t15 25.5l298 296q20 18 46 11l76 -19q20 -5 30.5 -22.5t5.5 -37.5t-22.5 -31t-37.5 -5l-51 12l-182 -193h891l-182 193l-44 -12q-20 -5 -37.5 6t-22.5 31t6 37.5 t31 22.5z" /> | |
264 | +<glyph unicode="" d="M1200 900h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-200v-850q0 -22 25 -34.5t50 -13.5l25 -2v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v850h-200q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h1000v-300zM500 450h-25q0 15 -4 24.5t-9 14.5t-17 7.5t-20 3t-25 0.5h-100v-425q0 -11 12.5 -17.5t25.5 -7.5h12v-50h-200v50q50 0 50 25v425h-100q-17 0 -25 -0.5t-20 -3t-17 -7.5t-9 -14.5t-4 -24.5h-25v150h500v-150z" /> | |
265 | +<glyph unicode="" d="M1000 300v50q-25 0 -55 32q-14 14 -25 31t-16 27l-4 11l-289 747h-69l-300 -754q-18 -35 -39 -56q-9 -9 -24.5 -18.5t-26.5 -14.5l-11 -5v-50h273v50q-49 0 -78.5 21.5t-11.5 67.5l69 176h293l61 -166q13 -34 -3.5 -66.5t-55.5 -32.5v-50h312zM412 691l134 342l121 -342 h-255zM1100 150v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h1000q21 0 35.5 -14.5t14.5 -35.5z" /> | |
266 | +<glyph unicode="" d="M50 1200h1100q21 0 35.5 -14.5t14.5 -35.5v-1100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v1100q0 21 14.5 35.5t35.5 14.5zM611 1118h-70q-13 0 -18 -12l-299 -753q-17 -32 -35 -51q-18 -18 -56 -34q-12 -5 -12 -18v-50q0 -8 5.5 -14t14.5 -6 h273q8 0 14 6t6 14v50q0 8 -6 14t-14 6q-55 0 -71 23q-10 14 0 39l63 163h266l57 -153q11 -31 -6 -55q-12 -17 -36 -17q-8 0 -14 -6t-6 -14v-50q0 -8 6 -14t14 -6h313q8 0 14 6t6 14v50q0 7 -5.5 13t-13.5 7q-17 0 -42 25q-25 27 -40 63h-1l-288 748q-5 12 -19 12zM639 611 h-197l103 264z" /> | |
267 | +<glyph unicode="" d="M1200 1100h-1200v100h1200v-100zM50 1000h400q21 0 35.5 -14.5t14.5 -35.5v-900q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v900q0 21 14.5 35.5t35.5 14.5zM650 1000h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400 q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM700 900v-300h300v300h-300z" /> | |
268 | +<glyph unicode="" d="M50 1200h400q21 0 35.5 -14.5t14.5 -35.5v-900q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v900q0 21 14.5 35.5t35.5 14.5zM650 700h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400 q0 21 14.5 35.5t35.5 14.5zM700 600v-300h300v300h-300zM1200 0h-1200v100h1200v-100z" /> | |
269 | +<glyph unicode="" d="M50 1000h400q21 0 35.5 -14.5t14.5 -35.5v-350h100v150q0 21 14.5 35.5t35.5 14.5h400q21 0 35.5 -14.5t14.5 -35.5v-150h100v-100h-100v-150q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v150h-100v-350q0 -21 -14.5 -35.5t-35.5 -14.5h-400 q-21 0 -35.5 14.5t-14.5 35.5v800q0 21 14.5 35.5t35.5 14.5zM700 700v-300h300v300h-300z" /> | |
270 | +<glyph unicode="" d="M100 0h-100v1200h100v-1200zM250 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM300 1000v-300h300v300h-300zM250 500h900q21 0 35.5 -14.5t14.5 -35.5v-400 q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5z" /> | |
271 | +<glyph unicode="" d="M600 1100h150q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-150v-100h450q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5h350v100h-150q-21 0 -35.5 14.5 t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5h150v100h100v-100zM400 1000v-300h300v300h-300z" /> | |
272 | +<glyph unicode="" d="M1200 0h-100v1200h100v-1200zM550 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM600 1000v-300h300v300h-300zM50 500h900q21 0 35.5 -14.5t14.5 -35.5v-400 q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5z" /> | |
273 | +<glyph unicode="" d="M865 565l-494 -494q-23 -23 -41 -23q-14 0 -22 13.5t-8 38.5v1000q0 25 8 38.5t22 13.5q18 0 41 -23l494 -494q14 -14 14 -35t-14 -35z" /> | |
274 | +<glyph unicode="" d="M335 635l494 494q29 29 50 20.5t21 -49.5v-1000q0 -41 -21 -49.5t-50 20.5l-494 494q-14 14 -14 35t14 35z" /> | |
275 | +<glyph unicode="" d="M100 900h1000q41 0 49.5 -21t-20.5 -50l-494 -494q-14 -14 -35 -14t-35 14l-494 494q-29 29 -20.5 50t49.5 21z" /> | |
276 | +<glyph unicode="" d="M635 865l494 -494q29 -29 20.5 -50t-49.5 -21h-1000q-41 0 -49.5 21t20.5 50l494 494q14 14 35 14t35 -14z" /> | |
277 | +<glyph unicode="" d="M700 741v-182l-692 -323v221l413 193l-413 193v221zM1200 0h-800v200h800v-200z" /> | |
278 | +<glyph unicode="" d="M1200 900h-200v-100h200v-100h-300v300h200v100h-200v100h300v-300zM0 700h50q0 21 4 37t9.5 26.5t18 17.5t22 11t28.5 5.5t31 2t37 0.5h100v-550q0 -22 -25 -34.5t-50 -13.5l-25 -2v-100h400v100q-4 0 -11 0.5t-24 3t-30 7t-24 15t-11 24.5v550h100q25 0 37 -0.5t31 -2 t28.5 -5.5t22 -11t18 -17.5t9.5 -26.5t4 -37h50v300h-800v-300z" /> | |
279 | +<glyph unicode="" d="M800 700h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-100v-550q0 -22 25 -34.5t50 -14.5l25 -1v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v550h-100q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h800v-300zM1100 200h-200v-100h200v-100h-300v300h200v100h-200v100h300v-300z" /> | |
280 | +<glyph unicode="" d="M701 1098h160q16 0 21 -11t-7 -23l-464 -464l464 -464q12 -12 7 -23t-21 -11h-160q-13 0 -23 9l-471 471q-7 8 -7 18t7 18l471 471q10 9 23 9z" /> | |
281 | +<glyph unicode="" d="M339 1098h160q13 0 23 -9l471 -471q7 -8 7 -18t-7 -18l-471 -471q-10 -9 -23 -9h-160q-16 0 -21 11t7 23l464 464l-464 464q-12 12 -7 23t21 11z" /> | |
282 | +<glyph unicode="" d="M1087 882q11 -5 11 -21v-160q0 -13 -9 -23l-471 -471q-8 -7 -18 -7t-18 7l-471 471q-9 10 -9 23v160q0 16 11 21t23 -7l464 -464l464 464q12 12 23 7z" /> | |
283 | +<glyph unicode="" d="M618 993l471 -471q9 -10 9 -23v-160q0 -16 -11 -21t-23 7l-464 464l-464 -464q-12 -12 -23 -7t-11 21v160q0 13 9 23l471 471q8 7 18 7t18 -7z" /> | |
284 | +<glyph unicode="" d="M1000 1200q0 -124 -88 -212t-212 -88q0 124 88 212t212 88zM450 1000h100q21 0 40 -14t26 -33l79 -194q5 1 16 3q34 6 54 9.5t60 7t65.5 1t61 -10t56.5 -23t42.5 -42t29 -64t5 -92t-19.5 -121.5q-1 -7 -3 -19.5t-11 -50t-20.5 -73t-32.5 -81.5t-46.5 -83t-64 -70 t-82.5 -50q-13 -5 -42 -5t-65.5 2.5t-47.5 2.5q-14 0 -49.5 -3.5t-63 -3.5t-43.5 7q-57 25 -104.5 78.5t-75 111.5t-46.5 112t-26 90l-7 35q-15 63 -18 115t4.5 88.5t26 64t39.5 43.5t52 25.5t58.5 13t62.5 2t59.5 -4.5t55.5 -8l-147 192q-12 18 -5.5 30t27.5 12z" /> | |
285 | +<glyph unicode="🔑" d="M250 1200h600q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-150v-500l-255 -178q-19 -9 -32 -1t-13 29v650h-150q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM400 1100v-100h300v100h-300z" /> | |
286 | +<glyph unicode="🚪" d="M250 1200h750q39 0 69.5 -40.5t30.5 -84.5v-933l-700 -117v950l600 125h-700v-1000h-100v1025q0 23 15.5 49t34.5 26zM500 525v-100l100 20v100z" /> | |
287 | +</font> | |
288 | +</defs></svg> | |
0 | 289 | \ No newline at end of file | ... | ... |
resource/lib/bootstrap/fonts/bootstrap/glyphicons-halflings-regular.ttf
0 → 100644
No preview for this file type
resource/lib/bootstrap/fonts/bootstrap/glyphicons-halflings-regular.woff
0 → 100644
No preview for this file type
resource/lib/bootstrap/fonts/bootstrap/glyphicons-halflings-regular.woff2
0 → 100644
No preview for this file type