Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
V
venjob
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
1
Issues
1
List
Board
Labels
Milestones
Merge Requests
3
Merge Requests
3
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Xuan Trung Le
venjob
Commits
c4767154
Commit
c4767154
authored
Nov 02, 2017
by
Xuan Trung Le
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix bugs
parent
d820e01d
Show whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
87 additions
and
2 deletions
+87
-2
app/assets/javascripts/application.js
+13
-0
app/assets/stylesheets/application.scss
+4
-0
app/controllers/admins/applies_controller.rb
+2
-0
app/models/apply_job.rb
+2
-0
app/views/admins/applies/_application.html.erb
+9
-0
app/views/admins/applies/index.html.erb
+45
-2
vendor/assets/javascripts/bootstrap-datetimepicker.min.js
+2
-0
vendor/assets/stylesheets/bootstrap-datetimepicker.min.css
+10
-0
No files found.
app/assets/javascripts/application.js
View file @
c4767154
...
@@ -14,7 +14,20 @@
...
@@ -14,7 +14,20 @@
//= require_tree .
//= require_tree .
//= require javascripts/jquery-3.2.1.min.js
//= require javascripts/jquery-3.2.1.min.js
//= require javascripts/bootstrap.min.js
//= require javascripts/bootstrap.min.js
//= require javascripts/bootstrap.min.js
//= require bootstrap-datetimepicker.min.js
$
(
document
).
ready
(
function
(){
$
(
document
).
ready
(
function
(){
$
(
'.message'
).
delay
(
5000
).
fadeOut
(
'slow'
);
$
(
'.message'
).
delay
(
5000
).
fadeOut
(
'slow'
);
$
(
'.form_date'
).
datetimepicker
({
language
:
'fr'
,
weekStart
:
1
,
todayBtn
:
1
,
autoclose
:
1
,
todayHighlight
:
1
,
startView
:
2
,
minView
:
2
,
forceParse
:
0
});
});
});
app/assets/stylesheets/application.scss
View file @
c4767154
@import
"stylesheets/bootstrap-theme.min.css"
;
@import
"stylesheets/bootstrap-theme.min.css"
;
@import
"stylesheets/bootstrap.min.css"
;
@import
"stylesheets/bootstrap.min.css"
;
@import
"stylesheets/font-awesome.css"
;
@import
"stylesheets/font-awesome.css"
;
@import
"stylesheets/bootstrap-datetimepicker.min.css"
;
body
{
body
{
...
@@ -36,6 +37,9 @@ body{
...
@@ -36,6 +37,9 @@ body{
.wid80
{
.wid80
{
width
:
80%
!
important
;
width
:
80%
!
important
;
}
}
.mt-20
{
margin-top
:
20px
;
}
// key-visual
// key-visual
.key-visual
{
.key-visual
{
...
...
app/controllers/admins/applies_controller.rb
View file @
c4767154
class
Admins
::
AppliesController
<
ApplicationController
class
Admins
::
AppliesController
<
ApplicationController
def
index
def
index
@cities
=
City
.
pluck
(
:id
,
:name
)
@applications
=
ApplyJob
.
applications
.
includes
(
:job
,
:user
)
end
end
end
end
app/models/apply_job.rb
View file @
c4767154
...
@@ -4,4 +4,6 @@ class ApplyJob < ApplicationRecord
...
@@ -4,4 +4,6 @@ class ApplyJob < ApplicationRecord
validates
:cv
,
presence:
true
validates
:cv
,
presence:
true
validates
:email
,
presence:
true
validates
:email
,
presence:
true
validates
:name
,
presence:
true
validates
:name
,
presence:
true
scope
:applications
,
->
{
joins
(
:job
)
}
end
end
app/views/admins/applies/_application.html.erb
0 → 100644
View file @
c4767154
<div
class=
"job-intro well mr0 mrBot20"
>
<h4
class=
"mr0"
>
<%=
link_to
application
.
job
.
name
,
job_path
(
application
.
job
)
%>
</h4>
<p>
<%=
"Candidate Name:
#{
application
.
user
.
name
}
"
%>
</p>
<p>
<%=
"Candidate CV:
#{
application
.
user
.
cv
}
"
%>
</p>
<p>
<span>
<%=
"Candidate Email:
#{
application
.
user
.
email
}
"
%>
</span>
<span
class=
"navbar-right"
>
<%=
"Applied at:
#{
application
.
created_at
.
strftime
(
'%m/%d/%y'
)
}
"
%>
</span>
</p>
</div>
app/views/admins/applies/index.html.erb
View file @
c4767154
<h1>
Admins::Applies#index
</h1>
<div
class=
"row"
>
<p>
Find me in app/views/admins/applies/index.html.erb
</p>
<div
class=
"container"
>
<div
class=
"col-md-12 search mt-20"
>
<%=
form_tag
admins_applies_path
,
method: :get
,
class:
"search-form"
do
%>
<div
class=
"field form-group"
>
<%=
text_field_tag
(
:search
,
params
[
:search
],
placeholder:
"Email"
,
class:
"form-control"
)
%>
</div>
<div
class=
"field form-group"
>
<%=
select_tag
:city
,
options_for_select
(
City
.
pluck
(
:name
)),
include_blank:
"City"
,
class:
"form-control"
%>
</div>
<div
class=
"field form-group"
>
<%=
select_tag
:industry
,
options_for_select
(
Industry
.
pluck
(
:name
)),
include_blank:
"Industry"
,
class:
"form-control"
%>
</div>
<div
class=
"form-group form-inline"
>
<div
class=
"input-group date form_date col-md-5"
data-date=
""
data-date-format=
"dd MM yyyy"
data-link-field=
"dtp_input1"
data-link-format=
"yyyy-mm-dd"
>
<input
class=
"form-control"
size=
"16"
type=
"text"
value=
""
readonly
>
<span
class=
"input-group-addon"
><span
class=
"glyphicon glyphicon-remove fa fa-trash-o"
></span></span>
<span
class=
"input-group-addon"
><span
class=
"glyphicon glyphicon-calendar fa fa-calendar"
></span></span>
</div>
<!-- <input type="hidden" id="dtp_input1" value="" /> -->
<%=
hidden_field_tag
(
'dtp_input1'
,
params
[
:date_from
],
value:
''
)
%>
<strong>
~
</strong>
<div
class=
"input-group date form_date col-md-5"
data-date=
""
data-date-format=
"dd MM yyyy"
data-link-field=
"dtp_input2"
data-link-format=
"yyyy-mm-dd"
>
<input
class=
"form-control"
size=
"16"
type=
"text"
value=
""
readonly
>
<span
class=
"input-group-addon"
><span
class=
"glyphicon glyphicon-remove fa fa-trash-o"
></span></span>
<span
class=
"input-group-addon"
><span
class=
"glyphicon glyphicon-calendar fa fa-calendar"
></span></span>
</div>
<%=
hidden_field_tag
(
'dtp_input2'
,
params
[
:date_to
],
value:
''
)
%>
</div>
<div
class=
"field form-group form-inline text-center"
>
<%=
submit_tag
"search"
,
class:
"btn btn-default"
%>
<%=
submit_tag
"Down csv"
,
class:
"btn btn-default"
%>
</div>
<%
end
%>
</div>
<div
class=
"col-md-12 jobs"
>
<div
class=
"panel border_bot clearfix"
>
<%
@applications
.
each
do
|
application
|
%>
<%=
render
"admins/applies/application"
,
application:
application
%>
<%
end
%>
</div>
</div>
</div>
</div>
vendor/assets/javascripts/bootstrap-datetimepicker.min.js
0 → 100644
View file @
c4767154
(
function
(
a
){
if
(
typeof
define
===
"function"
&&
define
.
amd
){
define
([
"jquery"
],
a
)}
else
{
if
(
typeof
exports
===
"object"
){
a
(
require
(
"jquery"
))}
else
{
a
(
jQuery
)}}}(
function
(
d
,
f
){
if
(
!
(
"indexOf"
in
Array
.
prototype
)){
Array
.
prototype
.
indexOf
=
function
(
k
,
j
){
if
(
j
===
f
){
j
=
0
}
if
(
j
<
0
){
j
+=
this
.
length
}
if
(
j
<
0
){
j
=
0
}
for
(
var
l
=
this
.
length
;
j
<
l
;
j
++
){
if
(
j
in
this
&&
this
[
j
]
===
k
){
return
j
}}
return
-
1
}}
function
a
(){
var
q
,
k
,
p
,
l
,
j
,
n
,
m
,
o
;
k
=
(
new
Date
()).
toString
();
p
=
((
m
=
k
.
split
(
"("
)[
1
])
!=
null
?
m
.
slice
(
0
,
-
1
):
0
)
||
k
.
split
(
" "
);
if
(
p
instanceof
Array
){
n
=
[];
for
(
var
l
=
0
,
j
=
p
.
length
;
l
<
j
;
l
++
){
o
=
p
[
l
];
if
((
q
=
(
m
=
o
.
match
(
/
\b[
A-Z
]
+
\b
/
))
!==
null
)?
m
[
0
]:
0
){
n
.
push
(
q
)}}
p
=
n
.
pop
()}
return
p
}
function
h
(){
return
new
Date
(
Date
.
UTC
.
apply
(
Date
,
arguments
))}
var
g
=
function
(
k
,
j
){
var
m
=
this
;
this
.
element
=
d
(
k
);
this
.
container
=
j
.
container
||
"body"
;
this
.
language
=
j
.
language
||
this
.
element
.
data
(
"date-language"
)
||
"en"
;
this
.
language
=
this
.
language
in
e
?
this
.
language
:
this
.
language
.
split
(
"-"
)[
0
];
this
.
language
=
this
.
language
in
e
?
this
.
language
:
"en"
;
this
.
isRTL
=
e
[
this
.
language
].
rtl
||
false
;
this
.
formatType
=
j
.
formatType
||
this
.
element
.
data
(
"format-type"
)
||
"standard"
;
this
.
format
=
c
.
parseFormat
(
j
.
format
||
this
.
element
.
data
(
"date-format"
)
||
e
[
this
.
language
].
format
||
c
.
getDefaultFormat
(
this
.
formatType
,
"input"
),
this
.
formatType
);
this
.
isInline
=
false
;
this
.
isVisible
=
false
;
this
.
isInput
=
this
.
element
.
is
(
"input"
);
this
.
fontAwesome
=
j
.
fontAwesome
||
this
.
element
.
data
(
"font-awesome"
)
||
false
;
this
.
bootcssVer
=
j
.
bootcssVer
||
(
this
.
isInput
?(
this
.
element
.
is
(
".form-control"
)?
3
:
2
):(
this
.
bootcssVer
=
this
.
element
.
is
(
".input-group"
)?
3
:
2
));
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
;
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
;
this
.
hasInput
=
this
.
component
&&
this
.
element
.
find
(
"input"
).
length
;
if
(
this
.
component
&&
this
.
component
.
length
===
0
){
this
.
component
=
false
}
this
.
linkField
=
j
.
linkField
||
this
.
element
.
data
(
"link-field"
)
||
false
;
this
.
linkFormat
=
c
.
parseFormat
(
j
.
linkFormat
||
this
.
element
.
data
(
"link-format"
)
||
c
.
getDefaultFormat
(
this
.
formatType
,
"link"
),
this
.
formatType
);
this
.
minuteStep
=
j
.
minuteStep
||
this
.
element
.
data
(
"minute-step"
)
||
5
;
this
.
pickerPosition
=
j
.
pickerPosition
||
this
.
element
.
data
(
"picker-position"
)
||
"bottom-right"
;
this
.
showMeridian
=
j
.
showMeridian
||
this
.
element
.
data
(
"show-meridian"
)
||
false
;
this
.
initialDate
=
j
.
initialDate
||
new
Date
();
this
.
zIndex
=
j
.
zIndex
||
this
.
element
.
data
(
"z-index"
)
||
f
;
this
.
title
=
typeof
j
.
title
===
"undefined"
?
false
:
j
.
title
;
this
.
timezone
=
j
.
timezone
||
a
();
this
.
icons
=
{
leftArrow
:
this
.
fontAwesome
?
"fa-arrow-left"
:(
this
.
bootcssVer
===
3
?
"glyphicon-arrow-left"
:
"icon-arrow-left"
),
rightArrow
:
this
.
fontAwesome
?
"fa-arrow-right"
:(
this
.
bootcssVer
===
3
?
"glyphicon-arrow-right"
:
"icon-arrow-right"
)};
this
.
icontype
=
this
.
fontAwesome
?
"fa"
:
"glyphicon"
;
this
.
_attachEvents
();
this
.
clickedOutside
=
function
(
n
){
if
(
d
(
n
.
target
).
closest
(
".datetimepicker"
).
length
===
0
){
m
.
hide
()}};
this
.
formatViewType
=
"datetime"
;
if
(
"formatViewType"
in
j
){
this
.
formatViewType
=
j
.
formatViewType
}
else
{
if
(
"formatViewType"
in
this
.
element
.
data
()){
this
.
formatViewType
=
this
.
element
.
data
(
"formatViewType"
)}}
this
.
minView
=
0
;
if
(
"minView"
in
j
){
this
.
minView
=
j
.
minView
}
else
{
if
(
"minView"
in
this
.
element
.
data
()){
this
.
minView
=
this
.
element
.
data
(
"min-view"
)}}
this
.
minView
=
c
.
convertViewMode
(
this
.
minView
);
this
.
maxView
=
c
.
modes
.
length
-
1
;
if
(
"maxView"
in
j
){
this
.
maxView
=
j
.
maxView
}
else
{
if
(
"maxView"
in
this
.
element
.
data
()){
this
.
maxView
=
this
.
element
.
data
(
"max-view"
)}}
this
.
maxView
=
c
.
convertViewMode
(
this
.
maxView
);
this
.
wheelViewModeNavigation
=
false
;
if
(
"wheelViewModeNavigation"
in
j
){
this
.
wheelViewModeNavigation
=
j
.
wheelViewModeNavigation
}
else
{
if
(
"wheelViewModeNavigation"
in
this
.
element
.
data
()){
this
.
wheelViewModeNavigation
=
this
.
element
.
data
(
"view-mode-wheel-navigation"
)}}
this
.
wheelViewModeNavigationInverseDirection
=
false
;
if
(
"wheelViewModeNavigationInverseDirection"
in
j
){
this
.
wheelViewModeNavigationInverseDirection
=
j
.
wheelViewModeNavigationInverseDirection
}
else
{
if
(
"wheelViewModeNavigationInverseDirection"
in
this
.
element
.
data
()){
this
.
wheelViewModeNavigationInverseDirection
=
this
.
element
.
data
(
"view-mode-wheel-navigation-inverse-dir"
)}}
this
.
wheelViewModeNavigationDelay
=
100
;
if
(
"wheelViewModeNavigationDelay"
in
j
){
this
.
wheelViewModeNavigationDelay
=
j
.
wheelViewModeNavigationDelay
}
else
{
if
(
"wheelViewModeNavigationDelay"
in
this
.
element
.
data
()){
this
.
wheelViewModeNavigationDelay
=
this
.
element
.
data
(
"view-mode-wheel-navigation-delay"
)}}
this
.
startViewMode
=
2
;
if
(
"startView"
in
j
){
this
.
startViewMode
=
j
.
startView
}
else
{
if
(
"startView"
in
this
.
element
.
data
()){
this
.
startViewMode
=
this
.
element
.
data
(
"start-view"
)}}
this
.
startViewMode
=
c
.
convertViewMode
(
this
.
startViewMode
);
this
.
viewMode
=
this
.
startViewMode
;
this
.
viewSelect
=
this
.
minView
;
if
(
"viewSelect"
in
j
){
this
.
viewSelect
=
j
.
viewSelect
}
else
{
if
(
"viewSelect"
in
this
.
element
.
data
()){
this
.
viewSelect
=
this
.
element
.
data
(
"view-select"
)}}
this
.
viewSelect
=
c
.
convertViewMode
(
this
.
viewSelect
);
this
.
forceParse
=
true
;
if
(
"forceParse"
in
j
){
this
.
forceParse
=
j
.
forceParse
}
else
{
if
(
"dateForceParse"
in
this
.
element
.
data
()){
this
.
forceParse
=
this
.
element
.
data
(
"date-force-parse"
)}}
var
l
=
this
.
bootcssVer
===
3
?
c
.
templateV3
:
c
.
template
;
while
(
l
.
indexOf
(
"{iconType}"
)
!==-
1
){
l
=
l
.
replace
(
"{iconType}"
,
this
.
icontype
)}
while
(
l
.
indexOf
(
"{leftArrow}"
)
!==-
1
){
l
=
l
.
replace
(
"{leftArrow}"
,
this
.
icons
.
leftArrow
)}
while
(
l
.
indexOf
(
"{rightArrow}"
)
!==-
1
){
l
=
l
.
replace
(
"{rightArrow}"
,
this
.
icons
.
rightArrow
)}
this
.
picker
=
d
(
l
).
appendTo
(
this
.
isInline
?
this
.
element
:
this
.
container
).
on
({
click
:
d
.
proxy
(
this
.
click
,
this
),
mousedown
:
d
.
proxy
(
this
.
mousedown
,
this
)});
if
(
this
.
wheelViewModeNavigation
){
if
(
d
.
fn
.
mousewheel
){
this
.
picker
.
on
({
mousewheel
:
d
.
proxy
(
this
.
mousewheel
,
this
)})}
else
{
console
.
log
(
"Mouse Wheel event is not supported. Please include the jQuery Mouse Wheel plugin before enabling this option"
)}}
if
(
this
.
isInline
){
this
.
picker
.
addClass
(
"datetimepicker-inline"
)}
else
{
this
.
picker
.
addClass
(
"datetimepicker-dropdown-"
+
this
.
pickerPosition
+
" dropdown-menu"
)}
if
(
this
.
isRTL
){
this
.
picker
.
addClass
(
"datetimepicker-rtl"
);
var
i
=
this
.
bootcssVer
===
3
?
".prev span, .next span"
:
".prev i, .next i"
;
this
.
picker
.
find
(
i
).
toggleClass
(
this
.
icons
.
leftArrow
+
" "
+
this
.
icons
.
rightArrow
)}
d
(
document
).
on
(
"mousedown touchend"
,
this
.
clickedOutside
);
this
.
autoclose
=
false
;
if
(
"autoclose"
in
j
){
this
.
autoclose
=
j
.
autoclose
}
else
{
if
(
"dateAutoclose"
in
this
.
element
.
data
()){
this
.
autoclose
=
this
.
element
.
data
(
"date-autoclose"
)}}
this
.
keyboardNavigation
=
true
;
if
(
"keyboardNavigation"
in
j
){
this
.
keyboardNavigation
=
j
.
keyboardNavigation
}
else
{
if
(
"dateKeyboardNavigation"
in
this
.
element
.
data
()){
this
.
keyboardNavigation
=
this
.
element
.
data
(
"date-keyboard-navigation"
)}}
this
.
todayBtn
=
(
j
.
todayBtn
||
this
.
element
.
data
(
"date-today-btn"
)
||
false
);
this
.
clearBtn
=
(
j
.
clearBtn
||
this
.
element
.
data
(
"date-clear-btn"
)
||
false
);
this
.
todayHighlight
=
(
j
.
todayHighlight
||
this
.
element
.
data
(
"date-today-highlight"
)
||
false
);
this
.
weekStart
=
0
;
if
(
typeof
j
.
weekStart
!==
"undefined"
){
this
.
weekStart
=
j
.
weekStart
}
else
{
if
(
typeof
this
.
element
.
data
(
"date-weekstart"
)
!==
"undefined"
){
this
.
weekStart
=
this
.
element
.
data
(
"date-weekstart"
)}
else
{
if
(
typeof
e
[
this
.
language
].
weekStart
!==
"undefined"
){
this
.
weekStart
=
e
[
this
.
language
].
weekStart
}}}
this
.
weekStart
=
this
.
weekStart
%
7
;
this
.
weekEnd
=
((
this
.
weekStart
+
6
)
%
7
);
this
.
onRenderDay
=
function
(
n
){
var
p
=
(
j
.
onRenderDay
||
function
(){
return
[]})(
n
);
if
(
typeof
p
===
"string"
){
p
=
[
p
]}
var
o
=
[
"day"
];
return
o
.
concat
((
p
?
p
:[]))};
this
.
onRenderHour
=
function
(
n
){
var
p
=
(
j
.
onRenderHour
||
function
(){
return
[]})(
n
);
var
o
=
[
"hour"
];
if
(
typeof
p
===
"string"
){
p
=
[
p
]}
return
o
.
concat
((
p
?
p
:[]))};
this
.
onRenderMinute
=
function
(
n
){
var
p
=
(
j
.
onRenderMinute
||
function
(){
return
[]})(
n
);
var
o
=
[
"minute"
];
if
(
typeof
p
===
"string"
){
p
=
[
p
]}
if
(
n
<
this
.
startDate
||
n
>
this
.
endDate
){
o
.
push
(
"disabled"
)}
else
{
if
(
Math
.
floor
(
this
.
date
.
getUTCMinutes
()
/
this
.
minuteStep
)
===
Math
.
floor
(
n
.
getUTCMinutes
()
/
this
.
minuteStep
)){
o
.
push
(
"active"
)}}
return
o
.
concat
((
p
?
p
:[]))};
this
.
onRenderYear
=
function
(
o
){
var
q
=
(
j
.
onRenderYear
||
function
(){
return
[]})(
o
);
var
p
=
[
"year"
];
if
(
typeof
q
===
"string"
){
q
=
[
q
]}
if
(
this
.
date
.
getUTCFullYear
()
===
o
.
getUTCFullYear
()){
p
.
push
(
"active"
)}
var
n
=
o
.
getUTCFullYear
();
var
r
=
this
.
endDate
.
getUTCFullYear
();
if
(
o
<
this
.
startDate
||
n
>
r
){
p
.
push
(
"disabled"
)}
return
p
.
concat
((
q
?
q
:[]))};
this
.
onRenderMonth
=
function
(
n
){
var
p
=
(
j
.
onRenderMonth
||
function
(){
return
[]})(
n
);
var
o
=
[
"month"
];
if
(
typeof
p
===
"string"
){
p
=
[
p
]}
return
o
.
concat
((
p
?
p
:[]))};
this
.
startDate
=
new
Date
(
-
8639968443048000
);
this
.
endDate
=
new
Date
(
8639968443048000
);
this
.
datesDisabled
=
[];
this
.
daysOfWeekDisabled
=
[];
this
.
setStartDate
(
j
.
startDate
||
this
.
element
.
data
(
"date-startdate"
));
this
.
setEndDate
(
j
.
endDate
||
this
.
element
.
data
(
"date-enddate"
));
this
.
setDatesDisabled
(
j
.
datesDisabled
||
this
.
element
.
data
(
"date-dates-disabled"
));
this
.
setDaysOfWeekDisabled
(
j
.
daysOfWeekDisabled
||
this
.
element
.
data
(
"date-days-of-week-disabled"
));
this
.
setMinutesDisabled
(
j
.
minutesDisabled
||
this
.
element
.
data
(
"date-minute-disabled"
));
this
.
setHoursDisabled
(
j
.
hoursDisabled
||
this
.
element
.
data
(
"date-hour-disabled"
));
this
.
fillDow
();
this
.
fillMonths
();
this
.
update
();
this
.
showMode
();
if
(
this
.
isInline
){
this
.
show
()}};
g
.
prototype
=
{
constructor
:
g
,
_events
:[],
_attachEvents
:
function
(){
this
.
_detachEvents
();
if
(
this
.
isInput
){
this
.
_events
=
[[
this
.
element
,{
focus
:
d
.
proxy
(
this
.
show
,
this
),
keyup
:
d
.
proxy
(
this
.
update
,
this
),
keydown
:
d
.
proxy
(
this
.
keydown
,
this
)}]]}
else
{
if
(
this
.
component
&&
this
.
hasInput
){
this
.
_events
=
[[
this
.
element
.
find
(
"input"
),{
focus
:
d
.
proxy
(
this
.
show
,
this
),
keyup
:
d
.
proxy
(
this
.
update
,
this
),
keydown
:
d
.
proxy
(
this
.
keydown
,
this
)}],[
this
.
component
,{
click
:
d
.
proxy
(
this
.
show
,
this
)}]];
if
(
this
.
componentReset
){
this
.
_events
.
push
([
this
.
componentReset
,{
click
:
d
.
proxy
(
this
.
reset
,
this
)}])}}
else
{
if
(
this
.
element
.
is
(
"div"
)){
this
.
isInline
=
true
}
else
{
this
.
_events
=
[[
this
.
element
,{
click
:
d
.
proxy
(
this
.
show
,
this
)}]]}}}
for
(
var
j
=
0
,
k
,
l
;
j
<
this
.
_events
.
length
;
j
++
){
k
=
this
.
_events
[
j
][
0
];
l
=
this
.
_events
[
j
][
1
];
k
.
on
(
l
)}},
_detachEvents
:
function
(){
for
(
var
j
=
0
,
k
,
l
;
j
<
this
.
_events
.
length
;
j
++
){
k
=
this
.
_events
[
j
][
0
];
l
=
this
.
_events
[
j
][
1
];
k
.
off
(
l
)}
this
.
_events
=
[]},
show
:
function
(
i
){
this
.
picker
.
show
();
this
.
height
=
this
.
component
?
this
.
component
.
outerHeight
():
this
.
element
.
outerHeight
();
if
(
this
.
forceParse
){
this
.
update
()}
this
.
place
();
d
(
window
).
on
(
"resize"
,
d
.
proxy
(
this
.
place
,
this
));
if
(
i
){
i
.
stopPropagation
();
i
.
preventDefault
()}
this
.
isVisible
=
true
;
this
.
element
.
trigger
({
type
:
"show"
,
date
:
this
.
date
})},
hide
:
function
(){
if
(
!
this
.
isVisible
){
return
}
if
(
this
.
isInline
){
return
}
this
.
picker
.
hide
();
d
(
window
).
off
(
"resize"
,
this
.
place
);
this
.
viewMode
=
this
.
startViewMode
;
this
.
showMode
();
if
(
!
this
.
isInput
){
d
(
document
).
off
(
"mousedown"
,
this
.
hide
)}
if
(
this
.
forceParse
&&
(
this
.
isInput
&&
this
.
element
.
val
()
||
this
.
hasInput
&&
this
.
element
.
find
(
"input"
).
val
())){
this
.
setValue
()}
this
.
isVisible
=
false
;
this
.
element
.
trigger
({
type
:
"hide"
,
date
:
this
.
date
})},
remove
:
function
(){
this
.
_detachEvents
();
d
(
document
).
off
(
"mousedown"
,
this
.
clickedOutside
);
this
.
picker
.
remove
();
delete
this
.
picker
;
delete
this
.
element
.
data
().
datetimepicker
},
getDate
:
function
(){
var
i
=
this
.
getUTCDate
();
if
(
i
===
null
){
return
null
}
return
new
Date
(
i
.
getTime
()
+
(
i
.
getTimezoneOffset
()
*
60000
))},
getUTCDate
:
function
(){
return
this
.
date
},
getInitialDate
:
function
(){
return
this
.
initialDate
},
setInitialDate
:
function
(
i
){
this
.
initialDate
=
i
},
setDate
:
function
(
i
){
this
.
setUTCDate
(
new
Date
(
i
.
getTime
()
-
(
i
.
getTimezoneOffset
()
*
60000
)))},
setUTCDate
:
function
(
i
){
if
(
i
>=
this
.
startDate
&&
i
<=
this
.
endDate
){
this
.
date
=
i
;
this
.
setValue
();
this
.
viewDate
=
this
.
date
;
this
.
fill
()}
else
{
this
.
element
.
trigger
({
type
:
"outOfRange"
,
date
:
i
,
startDate
:
this
.
startDate
,
endDate
:
this
.
endDate
})}},
setFormat
:
function
(
j
){
this
.
format
=
c
.
parseFormat
(
j
,
this
.
formatType
);
var
i
;
if
(
this
.
isInput
){
i
=
this
.
element
}
else
{
if
(
this
.
component
){
i
=
this
.
element
.
find
(
"input"
)}}
if
(
i
&&
i
.
val
()){
this
.
setValue
()}},
setValue
:
function
(){
var
i
=
this
.
getFormattedDate
();
if
(
!
this
.
isInput
){
if
(
this
.
component
){
this
.
element
.
find
(
"input"
).
val
(
i
)}
this
.
element
.
data
(
"date"
,
i
)}
else
{
this
.
element
.
val
(
i
)}
if
(
this
.
linkField
){
d
(
"#"
+
this
.
linkField
).
val
(
this
.
getFormattedDate
(
this
.
linkFormat
))}},
getFormattedDate
:
function
(
i
){
i
=
i
||
this
.
format
;
return
c
.
formatDate
(
this
.
date
,
i
,
this
.
language
,
this
.
formatType
,
this
.
timezone
)},
setStartDate
:
function
(
i
){
this
.
startDate
=
i
||
this
.
startDate
;
if
(
this
.
startDate
.
valueOf
()
!==
8639968443048000
){
this
.
startDate
=
c
.
parseDate
(
this
.
startDate
,
this
.
format
,
this
.
language
,
this
.
formatType
,
this
.
timezone
)}
this
.
update
();
this
.
updateNavArrows
()},
setEndDate
:
function
(
i
){
this
.
endDate
=
i
||
this
.
endDate
;
if
(
this
.
endDate
.
valueOf
()
!==
8639968443048000
){
this
.
endDate
=
c
.
parseDate
(
this
.
endDate
,
this
.
format
,
this
.
language
,
this
.
formatType
,
this
.
timezone
)}
this
.
update
();
this
.
updateNavArrows
()},
setDatesDisabled
:
function
(
j
){
this
.
datesDisabled
=
j
||
[];
if
(
!
d
.
isArray
(
this
.
datesDisabled
)){
this
.
datesDisabled
=
this
.
datesDisabled
.
split
(
/,
\s
*/
)}
var
i
=
this
;
this
.
datesDisabled
=
d
.
map
(
this
.
datesDisabled
,
function
(
k
){
return
c
.
parseDate
(
k
,
i
.
format
,
i
.
language
,
i
.
formatType
,
i
.
timezone
).
toDateString
()});
this
.
update
();
this
.
updateNavArrows
()},
setTitle
:
function
(
i
,
j
){
return
this
.
picker
.
find
(
i
).
find
(
"th:eq(1)"
).
text
(
this
.
title
===
false
?
j
:
this
.
title
)},
setDaysOfWeekDisabled
:
function
(
i
){
this
.
daysOfWeekDisabled
=
i
||
[];
if
(
!
d
.
isArray
(
this
.
daysOfWeekDisabled
)){
this
.
daysOfWeekDisabled
=
this
.
daysOfWeekDisabled
.
split
(
/,
\s
*/
)}
this
.
daysOfWeekDisabled
=
d
.
map
(
this
.
daysOfWeekDisabled
,
function
(
j
){
return
parseInt
(
j
,
10
)});
this
.
update
();
this
.
updateNavArrows
()},
setMinutesDisabled
:
function
(
i
){
this
.
minutesDisabled
=
i
||
[];
if
(
!
d
.
isArray
(
this
.
minutesDisabled
)){
this
.
minutesDisabled
=
this
.
minutesDisabled
.
split
(
/,
\s
*/
)}
this
.
minutesDisabled
=
d
.
map
(
this
.
minutesDisabled
,
function
(
j
){
return
parseInt
(
j
,
10
)});
this
.
update
();
this
.
updateNavArrows
()},
setHoursDisabled
:
function
(
i
){
this
.
hoursDisabled
=
i
||
[];
if
(
!
d
.
isArray
(
this
.
hoursDisabled
)){
this
.
hoursDisabled
=
this
.
hoursDisabled
.
split
(
/,
\s
*/
)}
this
.
hoursDisabled
=
d
.
map
(
this
.
hoursDisabled
,
function
(
j
){
return
parseInt
(
j
,
10
)});
this
.
update
();
this
.
updateNavArrows
()},
place
:
function
(){
if
(
this
.
isInline
){
return
}
if
(
!
this
.
zIndex
){
var
j
=
0
;
d
(
"div"
).
each
(
function
(){
var
o
=
parseInt
(
d
(
this
).
css
(
"zIndex"
),
10
);
if
(
o
>
j
){
j
=
o
}});
this
.
zIndex
=
j
+
10
}
var
n
,
m
,
l
,
k
;
if
(
this
.
container
instanceof
d
){
k
=
this
.
container
.
offset
()}
else
{
k
=
d
(
this
.
container
).
offset
()}
if
(
this
.
component
){
n
=
this
.
component
.
offset
();
l
=
n
.
left
;
if
(
this
.
pickerPosition
===
"bottom-left"
||
this
.
pickerPosition
===
"top-left"
){
l
+=
this
.
component
.
outerWidth
()
-
this
.
picker
.
outerWidth
()}}
else
{
n
=
this
.
element
.
offset
();
l
=
n
.
left
;
if
(
this
.
pickerPosition
===
"bottom-left"
||
this
.
pickerPosition
===
"top-left"
){
l
+=
this
.
element
.
outerWidth
()
-
this
.
picker
.
outerWidth
()}}
var
i
=
document
.
body
.
clientWidth
||
window
.
innerWidth
;
if
(
l
+
220
>
i
){
l
=
i
-
220
}
if
(
this
.
pickerPosition
===
"top-left"
||
this
.
pickerPosition
===
"top-right"
){
m
=
n
.
top
-
this
.
picker
.
outerHeight
()}
else
{
m
=
n
.
top
+
this
.
height
}
m
=
m
-
k
.
top
;
l
=
l
-
k
.
left
;
this
.
picker
.
css
({
top
:
m
,
left
:
l
,
zIndex
:
this
.
zIndex
})},
hour_minute
:
"^([0-9]|0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]"
,
update
:
function
(){
var
i
,
j
=
false
;
if
(
arguments
&&
arguments
.
length
&&
(
typeof
arguments
[
0
]
===
"string"
||
arguments
[
0
]
instanceof
Date
)){
i
=
arguments
[
0
];
j
=
true
}
else
{
i
=
(
this
.
isInput
?
this
.
element
.
val
():
this
.
element
.
find
(
"input"
).
val
())
||
this
.
element
.
data
(
"date"
)
||
this
.
initialDate
;
if
(
typeof
i
===
"string"
){
i
=
i
.
replace
(
/^
\s
+|
\s
+$/g
,
""
)}}
if
(
!
i
){
i
=
new
Date
();
j
=
false
}
if
(
typeof
i
===
"string"
){
if
(
new
RegExp
(
this
.
hour_minute
).
test
(
i
)
||
new
RegExp
(
this
.
hour_minute
+
":[0-5][0-9]"
).
test
(
i
)){
i
=
this
.
getDate
()}}
this
.
date
=
c
.
parseDate
(
i
,
this
.
format
,
this
.
language
,
this
.
formatType
,
this
.
timezone
);
if
(
j
){
this
.
setValue
()}
if
(
this
.
date
<
this
.
startDate
){
this
.
viewDate
=
new
Date
(
this
.
startDate
)}
else
{
if
(
this
.
date
>
this
.
endDate
){
this
.
viewDate
=
new
Date
(
this
.
endDate
)}
else
{
this
.
viewDate
=
new
Date
(
this
.
date
)}}
this
.
fill
()},
fillDow
:
function
(){
var
i
=
this
.
weekStart
,
j
=
"<tr>"
;
while
(
i
<
this
.
weekStart
+
7
){
j
+=
'<th class="dow">'
+
e
[
this
.
language
].
daysMin
[(
i
++
)
%
7
]
+
"</th>"
}
j
+=
"</tr>"
;
this
.
picker
.
find
(
".datetimepicker-days thead"
).
append
(
j
)},
fillMonths
:
function
(){
var
l
=
""
;
var
m
=
new
Date
(
this
.
viewDate
);
for
(
var
k
=
0
;
k
<
12
;
k
++
){
m
.
setUTCMonth
(
k
);
var
j
=
this
.
onRenderMonth
(
m
);
l
+=
'<span class="'
+
j
.
join
(
" "
)
+
'">'
+
e
[
this
.
language
].
monthsShort
[
k
]
+
"</span>"
}
this
.
picker
.
find
(
".datetimepicker-months td"
).
html
(
l
)},
fill
:
function
(){
if
(
!
this
.
date
||!
this
.
viewDate
){
return
}
var
E
=
new
Date
(
this
.
viewDate
),
t
=
E
.
getUTCFullYear
(),
G
=
E
.
getUTCMonth
(),
n
=
E
.
getUTCDate
(),
A
=
E
.
getUTCHours
(),
w
=
this
.
startDate
.
getUTCFullYear
(),
B
=
this
.
startDate
.
getUTCMonth
(),
p
=
this
.
endDate
.
getUTCFullYear
(),
x
=
this
.
endDate
.
getUTCMonth
()
+
1
,
q
=
(
new
h
(
this
.
date
.
getUTCFullYear
(),
this
.
date
.
getUTCMonth
(),
this
.
date
.
getUTCDate
())).
valueOf
(),
D
=
new
Date
();
this
.
setTitle
(
".datetimepicker-days"
,
e
[
this
.
language
].
months
[
G
]
+
" "
+
t
);
if
(
this
.
formatViewType
===
"time"
){
var
k
=
this
.
getFormattedDate
();
this
.
setTitle
(
".datetimepicker-hours"
,
k
);
this
.
setTitle
(
".datetimepicker-minutes"
,
k
)}
else
{
this
.
setTitle
(
".datetimepicker-hours"
,
n
+
" "
+
e
[
this
.
language
].
months
[
G
]
+
" "
+
t
);
this
.
setTitle
(
".datetimepicker-minutes"
,
n
+
" "
+
e
[
this
.
language
].
months
[
G
]
+
" "
+
t
)}
this
.
picker
.
find
(
"tfoot th.today"
).
text
(
e
[
this
.
language
].
today
||
e
.
en
.
today
).
toggle
(
this
.
todayBtn
!==
false
);
this
.
picker
.
find
(
"tfoot th.clear"
).
text
(
e
[
this
.
language
].
clear
||
e
.
en
.
clear
).
toggle
(
this
.
clearBtn
!==
false
);
this
.
updateNavArrows
();
this
.
fillMonths
();
var
I
=
h
(
t
,
G
-
1
,
28
,
0
,
0
,
0
,
0
),
z
=
c
.
getDaysInMonth
(
I
.
getUTCFullYear
(),
I
.
getUTCMonth
());
I
.
setUTCDate
(
z
);
I
.
setUTCDate
(
z
-
(
I
.
getUTCDay
()
-
this
.
weekStart
+
7
)
%
7
);
var
j
=
new
Date
(
I
);
j
.
setUTCDate
(
j
.
getUTCDate
()
+
42
);
j
=
j
.
valueOf
();
var
r
=
[];
var
F
;
while
(
I
.
valueOf
()
<
j
){
if
(
I
.
getUTCDay
()
===
this
.
weekStart
){
r
.
push
(
"<tr>"
)}
F
=
this
.
onRenderDay
(
I
);
if
(
I
.
getUTCFullYear
()
<
t
||
(
I
.
getUTCFullYear
()
===
t
&&
I
.
getUTCMonth
()
<
G
)){
F
.
push
(
"old"
)}
else
{
if
(
I
.
getUTCFullYear
()
>
t
||
(
I
.
getUTCFullYear
()
===
t
&&
I
.
getUTCMonth
()
>
G
)){
F
.
push
(
"new"
)}}
if
(
this
.
todayHighlight
&&
I
.
getUTCFullYear
()
===
D
.
getFullYear
()
&&
I
.
getUTCMonth
()
===
D
.
getMonth
()
&&
I
.
getUTCDate
()
===
D
.
getDate
()){
F
.
push
(
"today"
)}
if
(
I
.
valueOf
()
===
q
){
F
.
push
(
"active"
)}
if
((
I
.
valueOf
()
+
86400000
)
<=
this
.
startDate
||
I
.
valueOf
()
>
this
.
endDate
||
d
.
inArray
(
I
.
getUTCDay
(),
this
.
daysOfWeekDisabled
)
!==-
1
||
d
.
inArray
(
I
.
toDateString
(),
this
.
datesDisabled
)
!==-
1
){
F
.
push
(
"disabled"
)}
r
.
push
(
'<td class="'
+
F
.
join
(
" "
)
+
'">'
+
I
.
getUTCDate
()
+
"</td>"
);
if
(
I
.
getUTCDay
()
===
this
.
weekEnd
){
r
.
push
(
"</tr>"
)}
I
.
setUTCDate
(
I
.
getUTCDate
()
+
1
)}
this
.
picker
.
find
(
".datetimepicker-days tbody"
).
empty
().
append
(
r
.
join
(
""
));
r
=
[];
var
u
=
""
,
C
=
""
,
s
=
""
;
var
l
=
this
.
hoursDisabled
||
[];
E
=
new
Date
(
this
.
viewDate
);
for
(
var
y
=
0
;
y
<
24
;
y
++
){
E
.
setUTCHours
(
y
);
F
=
this
.
onRenderHour
(
E
);
if
(
l
.
indexOf
(
y
)
!==-
1
){
F
.
push
(
"disabled"
)}
var
v
=
h
(
t
,
G
,
n
,
y
);
if
((
v
.
valueOf
()
+
3600000
)
<=
this
.
startDate
||
v
.
valueOf
()
>
this
.
endDate
){
F
.
push
(
"disabled"
)}
else
{
if
(
A
===
y
){
F
.
push
(
"active"
)}}
if
(
this
.
showMeridian
&&
e
[
this
.
language
].
meridiem
.
length
===
2
){
C
=
(
y
<
12
?
e
[
this
.
language
].
meridiem
[
0
]:
e
[
this
.
language
].
meridiem
[
1
]);
if
(
C
!==
s
){
if
(
s
!==
""
){
r
.
push
(
"</fieldset>"
)}
r
.
push
(
'<fieldset class="hour"><legend>'
+
C
.
toUpperCase
()
+
"</legend>"
)}
s
=
C
;
u
=
(
y
%
12
?
y
%
12
:
12
);
if
(
y
<
12
){
F
.
push
(
"hour_am"
)}
else
{
F
.
push
(
"hour_pm"
)}
r
.
push
(
'<span class="'
+
F
.
join
(
" "
)
+
'">'
+
u
+
"</span>"
);
if
(
y
===
23
){
r
.
push
(
"</fieldset>"
)}}
else
{
u
=
y
+
":00"
;
r
.
push
(
'<span class="'
+
F
.
join
(
" "
)
+
'">'
+
u
+
"</span>"
)}}
this
.
picker
.
find
(
".datetimepicker-hours td"
).
html
(
r
.
join
(
""
));
r
=
[];
u
=
""
;
C
=
""
;
s
=
""
;
var
m
=
this
.
minutesDisabled
||
[];
E
=
new
Date
(
this
.
viewDate
);
for
(
var
y
=
0
;
y
<
60
;
y
+=
this
.
minuteStep
){
if
(
m
.
indexOf
(
y
)
!==-
1
){
continue
}
E
.
setUTCMinutes
(
y
);
E
.
setUTCSeconds
(
0
);
F
=
this
.
onRenderMinute
(
E
);
if
(
this
.
showMeridian
&&
e
[
this
.
language
].
meridiem
.
length
===
2
){
C
=
(
A
<
12
?
e
[
this
.
language
].
meridiem
[
0
]:
e
[
this
.
language
].
meridiem
[
1
]);
if
(
C
!==
s
){
if
(
s
!==
""
){
r
.
push
(
"</fieldset>"
)}
r
.
push
(
'<fieldset class="minute"><legend>'
+
C
.
toUpperCase
()
+
"</legend>"
)}
s
=
C
;
u
=
(
A
%
12
?
A
%
12
:
12
);
r
.
push
(
'<span class="'
+
F
.
join
(
" "
)
+
'">'
+
u
+
":"
+
(
y
<
10
?
"0"
+
y
:
y
)
+
"</span>"
);
if
(
y
===
59
){
r
.
push
(
"</fieldset>"
)}}
else
{
u
=
y
+
":00"
;
r
.
push
(
'<span class="'
+
F
.
join
(
" "
)
+
'">'
+
A
+
":"
+
(
y
<
10
?
"0"
+
y
:
y
)
+
"</span>"
)}}
this
.
picker
.
find
(
".datetimepicker-minutes td"
).
html
(
r
.
join
(
""
));
var
J
=
this
.
date
.
getUTCFullYear
();
var
o
=
this
.
setTitle
(
".datetimepicker-months"
,
t
).
end
().
find
(
".month"
).
removeClass
(
"active"
);
if
(
J
===
t
){
o
.
eq
(
this
.
date
.
getUTCMonth
()).
addClass
(
"active"
)}
if
(
t
<
w
||
t
>
p
){
o
.
addClass
(
"disabled"
)}
if
(
t
===
w
){
o
.
slice
(
0
,
B
).
addClass
(
"disabled"
)}
if
(
t
===
p
){
o
.
slice
(
x
).
addClass
(
"disabled"
)}
r
=
""
;
t
=
parseInt
(
t
/
10
,
10
)
*
10
;
var
H
=
this
.
setTitle
(
".datetimepicker-years"
,
t
+
"-"
+
(
t
+
9
)).
end
().
find
(
"td"
);
t
-=
1
;
E
=
new
Date
(
this
.
viewDate
);
for
(
var
y
=-
1
;
y
<
11
;
y
++
){
E
.
setUTCFullYear
(
t
);
F
=
this
.
onRenderYear
(
E
);
if
(
y
===-
1
||
y
===
10
){
F
.
push
(
b
)}
r
+=
'<span class="'
+
F
.
join
(
" "
)
+
'">'
+
t
+
"</span>"
;
t
+=
1
}
H
.
html
(
r
);
this
.
place
()},
updateNavArrows
:
function
(){
var
m
=
new
Date
(
this
.
viewDate
),
k
=
m
.
getUTCFullYear
(),
l
=
m
.
getUTCMonth
(),
j
=
m
.
getUTCDate
(),
i
=
m
.
getUTCHours
();
switch
(
this
.
viewMode
){
case
0
:
if
(
k
<=
this
.
startDate
.
getUTCFullYear
()
&&
l
<=
this
.
startDate
.
getUTCMonth
()
&&
j
<=
this
.
startDate
.
getUTCDate
()
&&
i
<=
this
.
startDate
.
getUTCHours
()){
this
.
picker
.
find
(
".prev"
).
css
({
visibility
:
"hidden"
})}
else
{
this
.
picker
.
find
(
".prev"
).
css
({
visibility
:
"visible"
})}
if
(
k
>=
this
.
endDate
.
getUTCFullYear
()
&&
l
>=
this
.
endDate
.
getUTCMonth
()
&&
j
>=
this
.
endDate
.
getUTCDate
()
&&
i
>=
this
.
endDate
.
getUTCHours
()){
this
.
picker
.
find
(
".next"
).
css
({
visibility
:
"hidden"
})}
else
{
this
.
picker
.
find
(
".next"
).
css
({
visibility
:
"visible"
})}
break
;
case
1
:
if
(
k
<=
this
.
startDate
.
getUTCFullYear
()
&&
l
<=
this
.
startDate
.
getUTCMonth
()
&&
j
<=
this
.
startDate
.
getUTCDate
()){
this
.
picker
.
find
(
".prev"
).
css
({
visibility
:
"hidden"
})}
else
{
this
.
picker
.
find
(
".prev"
).
css
({
visibility
:
"visible"
})}
if
(
k
>=
this
.
endDate
.
getUTCFullYear
()
&&
l
>=
this
.
endDate
.
getUTCMonth
()
&&
j
>=
this
.
endDate
.
getUTCDate
()){
this
.
picker
.
find
(
".next"
).
css
({
visibility
:
"hidden"
})}
else
{
this
.
picker
.
find
(
".next"
).
css
({
visibility
:
"visible"
})}
break
;
case
2
:
if
(
k
<=
this
.
startDate
.
getUTCFullYear
()
&&
l
<=
this
.
startDate
.
getUTCMonth
()){
this
.
picker
.
find
(
".prev"
).
css
({
visibility
:
"hidden"
})}
else
{
this
.
picker
.
find
(
".prev"
).
css
({
visibility
:
"visible"
})}
if
(
k
>=
this
.
endDate
.
getUTCFullYear
()
&&
l
>=
this
.
endDate
.
getUTCMonth
()){
this
.
picker
.
find
(
".next"
).
css
({
visibility
:
"hidden"
})}
else
{
this
.
picker
.
find
(
".next"
).
css
({
visibility
:
"visible"
})}
break
;
case
3
:
case
4
:
if
(
k
<=
this
.
startDate
.
getUTCFullYear
()){
this
.
picker
.
find
(
".prev"
).
css
({
visibility
:
"hidden"
})}
else
{
this
.
picker
.
find
(
".prev"
).
css
({
visibility
:
"visible"
})}
if
(
k
>=
this
.
endDate
.
getUTCFullYear
()){
this
.
picker
.
find
(
".next"
).
css
({
visibility
:
"hidden"
})}
else
{
this
.
picker
.
find
(
".next"
).
css
({
visibility
:
"visible"
})}
break
}},
mousewheel
:
function
(
j
){
j
.
preventDefault
();
j
.
stopPropagation
();
if
(
this
.
wheelPause
){
return
}
this
.
wheelPause
=
true
;
var
i
=
j
.
originalEvent
;
var
l
=
i
.
wheelDelta
;
var
k
=
l
>
0
?
1
:(
l
===
0
)?
0
:
-
1
;
if
(
this
.
wheelViewModeNavigationInverseDirection
){
k
=-
k
}
this
.
showMode
(
k
);
setTimeout
(
d
.
proxy
(
function
(){
this
.
wheelPause
=
false
},
this
),
this
.
wheelViewModeNavigationDelay
)},
click
:
function
(
m
){
m
.
stopPropagation
();
m
.
preventDefault
();
var
n
=
d
(
m
.
target
).
closest
(
"span, td, th, legend"
);
if
(
n
.
is
(
"."
+
this
.
icontype
)){
n
=
d
(
n
).
parent
().
closest
(
"span, td, th, legend"
)}
if
(
n
.
length
===
1
){
if
(
n
.
is
(
".disabled"
)){
this
.
element
.
trigger
({
type
:
"outOfRange"
,
date
:
this
.
viewDate
,
startDate
:
this
.
startDate
,
endDate
:
this
.
endDate
});
return
}
switch
(
n
[
0
].
nodeName
.
toLowerCase
()){
case
"th"
:
switch
(
n
[
0
].
className
){
case
"switch"
:
this
.
showMode
(
1
);
break
;
case
"prev"
:
case
"next"
:
var
i
=
c
.
modes
[
this
.
viewMode
].
navStep
*
(
n
[
0
].
className
===
"prev"
?
-
1
:
1
);
switch
(
this
.
viewMode
){
case
0
:
this
.
viewDate
=
this
.
moveHour
(
this
.
viewDate
,
i
);
break
;
case
1
:
this
.
viewDate
=
this
.
moveDate
(
this
.
viewDate
,
i
);
break
;
case
2
:
this
.
viewDate
=
this
.
moveMonth
(
this
.
viewDate
,
i
);
break
;
case
3
:
case
4
:
this
.
viewDate
=
this
.
moveYear
(
this
.
viewDate
,
i
);
break
}
this
.
fill
();
this
.
element
.
trigger
({
type
:
n
[
0
].
className
+
":"
+
this
.
convertViewModeText
(
this
.
viewMode
),
date
:
this
.
viewDate
,
startDate
:
this
.
startDate
,
endDate
:
this
.
endDate
});
break
;
case
"clear"
:
this
.
reset
();
if
(
this
.
autoclose
){
this
.
hide
()}
break
;
case
"today"
:
var
j
=
new
Date
();
j
=
h
(
j
.
getFullYear
(),
j
.
getMonth
(),
j
.
getDate
(),
j
.
getHours
(),
j
.
getMinutes
(),
j
.
getSeconds
(),
0
);
if
(
j
<
this
.
startDate
){
j
=
this
.
startDate
}
else
{
if
(
j
>
this
.
endDate
){
j
=
this
.
endDate
}}
this
.
viewMode
=
this
.
startViewMode
;
this
.
showMode
(
0
);
this
.
_setDate
(
j
);
this
.
fill
();
if
(
this
.
autoclose
){
this
.
hide
()}
break
}
break
;
case
"span"
:
if
(
!
n
.
is
(
".disabled"
)){
var
p
=
this
.
viewDate
.
getUTCFullYear
(),
o
=
this
.
viewDate
.
getUTCMonth
(),
q
=
this
.
viewDate
.
getUTCDate
(),
r
=
this
.
viewDate
.
getUTCHours
(),
k
=
this
.
viewDate
.
getUTCMinutes
(),
s
=
this
.
viewDate
.
getUTCSeconds
();
if
(
n
.
is
(
".month"
)){
this
.
viewDate
.
setUTCDate
(
1
);
o
=
n
.
parent
().
find
(
"span"
).
index
(
n
);
q
=
this
.
viewDate
.
getUTCDate
();
this
.
viewDate
.
setUTCMonth
(
o
);
this
.
element
.
trigger
({
type
:
"changeMonth"
,
date
:
this
.
viewDate
});
if
(
this
.
viewSelect
>=
3
){
this
.
_setDate
(
h
(
p
,
o
,
q
,
r
,
k
,
s
,
0
))}}
else
{
if
(
n
.
is
(
".year"
)){
this
.
viewDate
.
setUTCDate
(
1
);
p
=
parseInt
(
n
.
text
(),
10
)
||
0
;
this
.
viewDate
.
setUTCFullYear
(
p
);
this
.
element
.
trigger
({
type
:
"changeYear"
,
date
:
this
.
viewDate
});
if
(
this
.
viewSelect
>=
4
){
this
.
_setDate
(
h
(
p
,
o
,
q
,
r
,
k
,
s
,
0
))}}
else
{
if
(
n
.
is
(
".hour"
)){
r
=
parseInt
(
n
.
text
(),
10
)
||
0
;
if
(
n
.
hasClass
(
"hour_am"
)
||
n
.
hasClass
(
"hour_pm"
)){
if
(
r
===
12
&&
n
.
hasClass
(
"hour_am"
)){
r
=
0
}
else
{
if
(
r
!==
12
&&
n
.
hasClass
(
"hour_pm"
)){
r
+=
12
}}}
this
.
viewDate
.
setUTCHours
(
r
);
this
.
element
.
trigger
({
type
:
"changeHour"
,
date
:
this
.
viewDate
});
if
(
this
.
viewSelect
>=
1
){
this
.
_setDate
(
h
(
p
,
o
,
q
,
r
,
k
,
s
,
0
))}}
else
{
if
(
n
.
is
(
".minute"
)){
k
=
parseInt
(
n
.
text
().
substr
(
n
.
text
().
indexOf
(
":"
)
+
1
),
10
)
||
0
;
this
.
viewDate
.
setUTCMinutes
(
k
);
this
.
element
.
trigger
({
type
:
"changeMinute"
,
date
:
this
.
viewDate
});
if
(
this
.
viewSelect
>=
0
){
this
.
_setDate
(
h
(
p
,
o
,
q
,
r
,
k
,
s
,
0
))}}}}}
if
(
this
.
viewMode
!==
0
){
var
l
=
this
.
viewMode
;
this
.
showMode
(
-
1
);
this
.
fill
();
if
(
l
===
this
.
viewMode
&&
this
.
autoclose
){
this
.
hide
()}}
else
{
this
.
fill
();
if
(
this
.
autoclose
){
this
.
hide
()}}}
break
;
case
"td"
:
if
(
n
.
is
(
".day"
)
&&!
n
.
is
(
".disabled"
)){
var
q
=
parseInt
(
n
.
text
(),
10
)
||
1
;
var
p
=
this
.
viewDate
.
getUTCFullYear
(),
o
=
this
.
viewDate
.
getUTCMonth
(),
r
=
this
.
viewDate
.
getUTCHours
(),
k
=
this
.
viewDate
.
getUTCMinutes
(),
s
=
this
.
viewDate
.
getUTCSeconds
();
if
(
n
.
is
(
".old"
)){
if
(
o
===
0
){
o
=
11
;
p
-=
1
}
else
{
o
-=
1
}}
else
{
if
(
n
.
is
(
".new"
)){
if
(
o
===
11
){
o
=
0
;
p
+=
1
}
else
{
o
+=
1
}}}
this
.
viewDate
.
setUTCFullYear
(
p
);
this
.
viewDate
.
setUTCMonth
(
o
,
q
);
this
.
element
.
trigger
({
type
:
"changeDay"
,
date
:
this
.
viewDate
});
if
(
this
.
viewSelect
>=
2
){
this
.
_setDate
(
h
(
p
,
o
,
q
,
r
,
k
,
s
,
0
))}}
var
l
=
this
.
viewMode
;
this
.
showMode
(
-
1
);
this
.
fill
();
if
(
l
===
this
.
viewMode
&&
this
.
autoclose
){
this
.
hide
()}
break
}}},
_setDate
:
function
(
i
,
k
){
if
(
!
k
||
k
===
"date"
){
this
.
date
=
i
}
if
(
!
k
||
k
===
"view"
){
this
.
viewDate
=
i
}
this
.
fill
();
this
.
setValue
();
var
j
;
if
(
this
.
isInput
){
j
=
this
.
element
}
else
{
if
(
this
.
component
){
j
=
this
.
element
.
find
(
"input"
)}}
if
(
j
){
j
.
change
()}
this
.
element
.
trigger
({
type
:
"changeDate"
,
date
:
this
.
getDate
()});
if
(
i
===
null
){
this
.
date
=
this
.
viewDate
}},
moveMinute
:
function
(
j
,
i
){
if
(
!
i
){
return
j
}
var
k
=
new
Date
(
j
.
valueOf
());
k
.
setUTCMinutes
(
k
.
getUTCMinutes
()
+
(
i
*
this
.
minuteStep
));
return
k
},
moveHour
:
function
(
j
,
i
){
if
(
!
i
){
return
j
}
var
k
=
new
Date
(
j
.
valueOf
());
k
.
setUTCHours
(
k
.
getUTCHours
()
+
i
);
return
k
},
moveDate
:
function
(
j
,
i
){
if
(
!
i
){
return
j
}
var
k
=
new
Date
(
j
.
valueOf
());
k
.
setUTCDate
(
k
.
getUTCDate
()
+
i
);
return
k
},
moveMonth
:
function
(
j
,
k
){
if
(
!
k
){
return
j
}
var
n
=
new
Date
(
j
.
valueOf
()),
r
=
n
.
getUTCDate
(),
o
=
n
.
getUTCMonth
(),
m
=
Math
.
abs
(
k
),
q
,
p
;
k
=
k
>
0
?
1
:
-
1
;
if
(
m
===
1
){
p
=
k
===-
1
?
function
(){
return
n
.
getUTCMonth
()
===
o
}:
function
(){
return
n
.
getUTCMonth
()
!==
q
};
q
=
o
+
k
;
n
.
setUTCMonth
(
q
);
if
(
q
<
0
||
q
>
11
){
q
=
(
q
+
12
)
%
12
}}
else
{
for
(
var
l
=
0
;
l
<
m
;
l
++
){
n
=
this
.
moveMonth
(
n
,
k
)}
q
=
n
.
getUTCMonth
();
n
.
setUTCDate
(
r
);
p
=
function
(){
return
q
!==
n
.
getUTCMonth
()}}
while
(
p
()){
n
.
setUTCDate
(
--
r
);
n
.
setUTCMonth
(
q
)}
return
n
},
moveYear
:
function
(
j
,
i
){
return
this
.
moveMonth
(
j
,
i
*
12
)},
dateWithinRange
:
function
(
i
){
return
i
>=
this
.
startDate
&&
i
<=
this
.
endDate
},
keydown
:
function
(
o
){
if
(
this
.
picker
.
is
(
":not(:visible)"
)){
if
(
o
.
keyCode
===
27
){
this
.
show
()}
return
}
var
k
=
false
,
j
,
i
,
n
;
switch
(
o
.
keyCode
){
case
27
:
this
.
hide
();
o
.
preventDefault
();
break
;
case
37
:
case
39
:
if
(
!
this
.
keyboardNavigation
){
break
}
j
=
o
.
keyCode
===
37
?
-
1
:
1
;
var
m
=
this
.
viewMode
;
if
(
o
.
ctrlKey
){
m
+=
2
}
else
{
if
(
o
.
shiftKey
){
m
+=
1
}}
if
(
m
===
4
){
i
=
this
.
moveYear
(
this
.
date
,
j
);
n
=
this
.
moveYear
(
this
.
viewDate
,
j
)}
else
{
if
(
m
===
3
){
i
=
this
.
moveMonth
(
this
.
date
,
j
);
n
=
this
.
moveMonth
(
this
.
viewDate
,
j
)}
else
{
if
(
m
===
2
){
i
=
this
.
moveDate
(
this
.
date
,
j
);
n
=
this
.
moveDate
(
this
.
viewDate
,
j
)}
else
{
if
(
m
===
1
){
i
=
this
.
moveHour
(
this
.
date
,
j
);
n
=
this
.
moveHour
(
this
.
viewDate
,
j
)}
else
{
if
(
m
===
0
){
i
=
this
.
moveMinute
(
this
.
date
,
j
);
n
=
this
.
moveMinute
(
this
.
viewDate
,
j
)}}}}}
if
(
this
.
dateWithinRange
(
i
)){
this
.
date
=
i
;
this
.
viewDate
=
n
;
this
.
setValue
();
this
.
update
();
o
.
preventDefault
();
k
=
true
}
break
;
case
38
:
case
40
:
if
(
!
this
.
keyboardNavigation
){
break
}
j
=
o
.
keyCode
===
38
?
-
1
:
1
;
m
=
this
.
viewMode
;
if
(
o
.
ctrlKey
){
m
+=
2
}
else
{
if
(
o
.
shiftKey
){
m
+=
1
}}
if
(
m
===
4
){
i
=
this
.
moveYear
(
this
.
date
,
j
);
n
=
this
.
moveYear
(
this
.
viewDate
,
j
)}
else
{
if
(
m
===
3
){
i
=
this
.
moveMonth
(
this
.
date
,
j
);
n
=
this
.
moveMonth
(
this
.
viewDate
,
j
)}
else
{
if
(
m
===
2
){
i
=
this
.
moveDate
(
this
.
date
,
j
*
7
);
n
=
this
.
moveDate
(
this
.
viewDate
,
j
*
7
)}
else
{
if
(
m
===
1
){
if
(
this
.
showMeridian
){
i
=
this
.
moveHour
(
this
.
date
,
j
*
6
);
n
=
this
.
moveHour
(
this
.
viewDate
,
j
*
6
)}
else
{
i
=
this
.
moveHour
(
this
.
date
,
j
*
4
);
n
=
this
.
moveHour
(
this
.
viewDate
,
j
*
4
)}}
else
{
if
(
m
===
0
){
i
=
this
.
moveMinute
(
this
.
date
,
j
*
4
);
n
=
this
.
moveMinute
(
this
.
viewDate
,
j
*
4
)}}}}}
if
(
this
.
dateWithinRange
(
i
)){
this
.
date
=
i
;
this
.
viewDate
=
n
;
this
.
setValue
();
this
.
update
();
o
.
preventDefault
();
k
=
true
}
break
;
case
13
:
if
(
this
.
viewMode
!==
0
){
var
p
=
this
.
viewMode
;
this
.
showMode
(
-
1
);
this
.
fill
();
if
(
p
===
this
.
viewMode
&&
this
.
autoclose
){
this
.
hide
()}}
else
{
this
.
fill
();
if
(
this
.
autoclose
){
this
.
hide
()}}
o
.
preventDefault
();
break
;
case
9
:
this
.
hide
();
break
}
if
(
k
){
var
l
;
if
(
this
.
isInput
){
l
=
this
.
element
}
else
{
if
(
this
.
component
){
l
=
this
.
element
.
find
(
"input"
)}}
if
(
l
){
l
.
change
()}
this
.
element
.
trigger
({
type
:
"changeDate"
,
date
:
this
.
getDate
()})}},
showMode
:
function
(
i
){
if
(
i
){
var
j
=
Math
.
max
(
0
,
Math
.
min
(
c
.
modes
.
length
-
1
,
this
.
viewMode
+
i
));
if
(
j
>=
this
.
minView
&&
j
<=
this
.
maxView
){
this
.
element
.
trigger
({
type
:
"changeMode"
,
date
:
this
.
viewDate
,
oldViewMode
:
this
.
viewMode
,
newViewMode
:
j
});
this
.
viewMode
=
j
}}
this
.
picker
.
find
(
">div"
).
hide
().
filter
(
".datetimepicker-"
+
c
.
modes
[
this
.
viewMode
].
clsName
).
css
(
"display"
,
"block"
);
this
.
updateNavArrows
()},
reset
:
function
(){
this
.
_setDate
(
null
,
"date"
)},
convertViewModeText
:
function
(
i
){
switch
(
i
){
case
4
:
return
"decade"
;
case
3
:
return
"year"
;
case
2
:
return
"month"
;
case
1
:
return
"day"
;
case
0
:
return
"hour"
}}};
var
b
=
d
.
fn
.
datetimepicker
;
d
.
fn
.
datetimepicker
=
function
(
k
){
var
i
=
Array
.
apply
(
null
,
arguments
);
i
.
shift
();
var
j
;
this
.
each
(
function
(){
var
n
=
d
(
this
),
m
=
n
.
data
(
"datetimepicker"
),
l
=
typeof
k
===
"object"
&&
k
;
if
(
!
m
){
n
.
data
(
"datetimepicker"
,(
m
=
new
g
(
this
,
d
.
extend
({},
d
.
fn
.
datetimepicker
.
defaults
,
l
))))}
if
(
typeof
k
===
"string"
&&
typeof
m
[
k
]
===
"function"
){
j
=
m
[
k
].
apply
(
m
,
i
);
if
(
j
!==
f
){
return
false
}}});
if
(
j
!==
f
){
return
j
}
else
{
return
this
}};
d
.
fn
.
datetimepicker
.
defaults
=
{};
d
.
fn
.
datetimepicker
.
Constructor
=
g
;
var
e
=
d
.
fn
.
datetimepicker
.
dates
=
{
en
:{
days
:[
"Sunday"
,
"Monday"
,
"Tuesday"
,
"Wednesday"
,
"Thursday"
,
"Friday"
,
"Saturday"
,
"Sunday"
],
daysShort
:[
"Sun"
,
"Mon"
,
"Tue"
,
"Wed"
,
"Thu"
,
"Fri"
,
"Sat"
,
"Sun"
],
daysMin
:[
"Su"
,
"Mo"
,
"Tu"
,
"We"
,
"Th"
,
"Fr"
,
"Sa"
,
"Su"
],
months
:[
"January"
,
"February"
,
"March"
,
"April"
,
"May"
,
"June"
,
"July"
,
"August"
,
"September"
,
"October"
,
"November"
,
"December"
],
monthsShort
:[
"Jan"
,
"Feb"
,
"Mar"
,
"Apr"
,
"May"
,
"Jun"
,
"Jul"
,
"Aug"
,
"Sep"
,
"Oct"
,
"Nov"
,
"Dec"
],
meridiem
:[
"am"
,
"pm"
],
suffix
:[
"st"
,
"nd"
,
"rd"
,
"th"
],
today
:
"Today"
,
clear
:
"Clear"
}};
var
c
=
{
modes
:[{
clsName
:
"minutes"
,
navFnc
:
"Hours"
,
navStep
:
1
},{
clsName
:
"hours"
,
navFnc
:
"Date"
,
navStep
:
1
},{
clsName
:
"days"
,
navFnc
:
"Month"
,
navStep
:
1
},{
clsName
:
"months"
,
navFnc
:
"FullYear"
,
navStep
:
1
},{
clsName
:
"years"
,
navFnc
:
"FullYear"
,
navStep
:
10
}],
isLeapYear
:
function
(
i
){
return
(((
i
%
4
===
0
)
&&
(
i
%
100
!==
0
))
||
(
i
%
400
===
0
))},
getDaysInMonth
:
function
(
i
,
j
){
return
[
31
,(
c
.
isLeapYear
(
i
)?
29
:
28
),
31
,
30
,
31
,
30
,
31
,
31
,
30
,
31
,
30
,
31
][
j
]},
getDefaultFormat
:
function
(
i
,
j
){
if
(
i
===
"standard"
){
if
(
j
===
"input"
){
return
"yyyy-mm-dd hh:ii"
}
else
{
return
"yyyy-mm-dd hh:ii:ss"
}}
else
{
if
(
i
===
"php"
){
if
(
j
===
"input"
){
return
"Y-m-d H:i"
}
else
{
return
"Y-m-d H:i:s"
}}
else
{
throw
new
Error
(
"Invalid format type."
)}}},
validParts
:
function
(
i
){
if
(
i
===
"standard"
){
return
/t|hh
?
|HH
?
|p|P|z|Z|ii
?
|ss
?
|dd
?
|DD
?
|mm
?
|MM
?
|yy
(?:
yy
)?
/g
}
else
{
if
(
i
===
"php"
){
return
/
[
dDjlNwzFmMnStyYaABgGhHis
]
/g
}
else
{
throw
new
Error
(
"Invalid format type."
)}}},
nonpunctuation
:
/
[^
-
\/
:-@
\[
-`{-~
\t\n\r
TZ
]
+/g
,
parseFormat
:
function
(
l
,
j
){
var
i
=
l
.
replace
(
this
.
validParts
(
j
),
"
\
0"
).
split
(
"
\
0"
),
k
=
l
.
match
(
this
.
validParts
(
j
));
if
(
!
i
||!
i
.
length
||!
k
||
k
.
length
===
0
){
throw
new
Error
(
"Invalid date format."
)}
return
{
separators
:
i
,
parts
:
k
}},
parseDate
:
function
(
A
,
y
,
v
,
j
,
r
){
if
(
A
instanceof
Date
){
var
u
=
new
Date
(
A
.
valueOf
()
-
A
.
getTimezoneOffset
()
*
60000
);
u
.
setMilliseconds
(
0
);
return
u
}
if
(
/^
\d{4}\-\d{1,2}\-\d{1,2}
$/
.
test
(
A
)){
y
=
this
.
parseFormat
(
"yyyy-mm-dd"
,
j
)}
if
(
/^
\d{4}\-\d{1,2}\-\d{1,2}[
T
]\d{1,2}\:\d{1,2}
$/
.
test
(
A
)){
y
=
this
.
parseFormat
(
"yyyy-mm-dd hh:ii"
,
j
)}
if
(
/^
\d{4}\-\d{1,2}\-\d{1,2}[
T
]\d{1,2}\:\d{1,2}\:\d{1,2}[
Z
]{0,1}
$/
.
test
(
A
)){
y
=
this
.
parseFormat
(
"yyyy-mm-dd hh:ii:ss"
,
j
)}
if
(
/^
[
-+
]\d
+
[
dmwy
]([\s
,
]
+
[
-+
]\d
+
[
dmwy
])
*$/
.
test
(
A
)){
var
l
=
/
([
-+
]\d
+
)([
dmwy
])
/
,
q
=
A
.
match
(
/
([
-+
]\d
+
)([
dmwy
])
/g
),
t
,
p
;
A
=
new
Date
();
for
(
var
x
=
0
;
x
<
q
.
length
;
x
++
){
t
=
l
.
exec
(
q
[
x
]);
p
=
parseInt
(
t
[
1
]);
switch
(
t
[
2
]){
case
"d"
:
A
.
setUTCDate
(
A
.
getUTCDate
()
+
p
);
break
;
case
"m"
:
A
=
g
.
prototype
.
moveMonth
.
call
(
g
.
prototype
,
A
,
p
);
break
;
case
"w"
:
A
.
setUTCDate
(
A
.
getUTCDate
()
+
p
*
7
);
break
;
case
"y"
:
A
=
g
.
prototype
.
moveYear
.
call
(
g
.
prototype
,
A
,
p
);
break
}}
return
h
(
A
.
getUTCFullYear
(),
A
.
getUTCMonth
(),
A
.
getUTCDate
(),
A
.
getUTCHours
(),
A
.
getUTCMinutes
(),
A
.
getUTCSeconds
(),
0
)}
var
q
=
A
&&
A
.
toString
().
match
(
this
.
nonpunctuation
)
||
[],
A
=
new
Date
(
0
,
0
,
0
,
0
,
0
,
0
,
0
),
m
=
{},
z
=
[
"hh"
,
"h"
,
"ii"
,
"i"
,
"ss"
,
"s"
,
"yyyy"
,
"yy"
,
"M"
,
"MM"
,
"m"
,
"mm"
,
"D"
,
"DD"
,
"d"
,
"dd"
,
"H"
,
"HH"
,
"p"
,
"P"
,
"z"
,
"Z"
],
o
=
{
hh
:
function
(
s
,
i
){
return
s
.
setUTCHours
(
i
)},
h
:
function
(
s
,
i
){
return
s
.
setUTCHours
(
i
)},
HH
:
function
(
s
,
i
){
return
s
.
setUTCHours
(
i
===
12
?
0
:
i
)},
H
:
function
(
s
,
i
){
return
s
.
setUTCHours
(
i
===
12
?
0
:
i
)},
ii
:
function
(
s
,
i
){
return
s
.
setUTCMinutes
(
i
)},
i
:
function
(
s
,
i
){
return
s
.
setUTCMinutes
(
i
)},
ss
:
function
(
s
,
i
){
return
s
.
setUTCSeconds
(
i
)},
s
:
function
(
s
,
i
){
return
s
.
setUTCSeconds
(
i
)},
yyyy
:
function
(
s
,
i
){
return
s
.
setUTCFullYear
(
i
)},
yy
:
function
(
s
,
i
){
return
s
.
setUTCFullYear
(
2000
+
i
)},
m
:
function
(
s
,
i
){
i
-=
1
;
while
(
i
<
0
){
i
+=
12
}
i
%=
12
;
s
.
setUTCMonth
(
i
);
while
(
s
.
getUTCMonth
()
!==
i
){
if
(
isNaN
(
s
.
getUTCMonth
())){
return
s
}
else
{
s
.
setUTCDate
(
s
.
getUTCDate
()
-
1
)}}
return
s
},
d
:
function
(
s
,
i
){
return
s
.
setUTCDate
(
i
)},
p
:
function
(
s
,
i
){
return
s
.
setUTCHours
(
i
===
1
?
s
.
getUTCHours
()
+
12
:
s
.
getUTCHours
())},
z
:
function
(){
return
r
}},
B
,
k
,
t
;
o
.
M
=
o
.
MM
=
o
.
mm
=
o
.
m
;
o
.
dd
=
o
.
d
;
o
.
P
=
o
.
p
;
o
.
Z
=
o
.
z
;
A
=
h
(
A
.
getFullYear
(),
A
.
getMonth
(),
A
.
getDate
(),
A
.
getHours
(),
A
.
getMinutes
(),
A
.
getSeconds
());
if
(
q
.
length
===
y
.
parts
.
length
){
for
(
var
x
=
0
,
w
=
y
.
parts
.
length
;
x
<
w
;
x
++
){
B
=
parseInt
(
q
[
x
],
10
);
t
=
y
.
parts
[
x
];
if
(
isNaN
(
B
)){
switch
(
t
){
case
"MM"
:
k
=
d
(
e
[
v
].
months
).
filter
(
function
(){
var
i
=
this
.
slice
(
0
,
q
[
x
].
length
),
s
=
q
[
x
].
slice
(
0
,
i
.
length
);
return
i
===
s
});
B
=
d
.
inArray
(
k
[
0
],
e
[
v
].
months
)
+
1
;
break
;
case
"M"
:
k
=
d
(
e
[
v
].
monthsShort
).
filter
(
function
(){
var
i
=
this
.
slice
(
0
,
q
[
x
].
length
),
s
=
q
[
x
].
slice
(
0
,
i
.
length
);
return
i
.
toLowerCase
()
===
s
.
toLowerCase
()});
B
=
d
.
inArray
(
k
[
0
],
e
[
v
].
monthsShort
)
+
1
;
break
;
case
"p"
:
case
"P"
:
B
=
d
.
inArray
(
q
[
x
].
toLowerCase
(),
e
[
v
].
meridiem
);
break
;
case
"z"
:
case
"Z"
:
r
;
break
}}
m
[
t
]
=
B
}
for
(
var
x
=
0
,
n
;
x
<
z
.
length
;
x
++
){
n
=
z
[
x
];
if
(
n
in
m
&&!
isNaN
(
m
[
n
])){
o
[
n
](
A
,
m
[
n
])}}}
return
A
},
formatDate
:
function
(
l
,
q
,
m
,
p
,
o
){
if
(
l
===
null
){
return
""
}
var
k
;
if
(
p
===
"standard"
){
k
=
{
t
:
l
.
getTime
(),
yy
:
l
.
getUTCFullYear
().
toString
().
substring
(
2
),
yyyy
:
l
.
getUTCFullYear
(),
m
:
l
.
getUTCMonth
()
+
1
,
M
:
e
[
m
].
monthsShort
[
l
.
getUTCMonth
()],
MM
:
e
[
m
].
months
[
l
.
getUTCMonth
()],
d
:
l
.
getUTCDate
(),
D
:
e
[
m
].
daysShort
[
l
.
getUTCDay
()],
DD
:
e
[
m
].
days
[
l
.
getUTCDay
()],
p
:(
e
[
m
].
meridiem
.
length
===
2
?
e
[
m
].
meridiem
[
l
.
getUTCHours
()
<
12
?
0
:
1
]:
""
),
h
:
l
.
getUTCHours
(),
i
:
l
.
getUTCMinutes
(),
s
:
l
.
getUTCSeconds
(),
z
:
o
};
if
(
e
[
m
].
meridiem
.
length
===
2
){
k
.
H
=
(
k
.
h
%
12
===
0
?
12
:
k
.
h
%
12
)}
else
{
k
.
H
=
k
.
h
}
k
.
HH
=
(
k
.
H
<
10
?
"0"
:
""
)
+
k
.
H
;
k
.
P
=
k
.
p
.
toUpperCase
();
k
.
Z
=
k
.
z
;
k
.
hh
=
(
k
.
h
<
10
?
"0"
:
""
)
+
k
.
h
;
k
.
ii
=
(
k
.
i
<
10
?
"0"
:
""
)
+
k
.
i
;
k
.
ss
=
(
k
.
s
<
10
?
"0"
:
""
)
+
k
.
s
;
k
.
dd
=
(
k
.
d
<
10
?
"0"
:
""
)
+
k
.
d
;
k
.
mm
=
(
k
.
m
<
10
?
"0"
:
""
)
+
k
.
m
}
else
{
if
(
p
===
"php"
){
k
=
{
y
:
l
.
getUTCFullYear
().
toString
().
substring
(
2
),
Y
:
l
.
getUTCFullYear
(),
F
:
e
[
m
].
months
[
l
.
getUTCMonth
()],
M
:
e
[
m
].
monthsShort
[
l
.
getUTCMonth
()],
n
:
l
.
getUTCMonth
()
+
1
,
t
:
c
.
getDaysInMonth
(
l
.
getUTCFullYear
(),
l
.
getUTCMonth
()),
j
:
l
.
getUTCDate
(),
l
:
e
[
m
].
days
[
l
.
getUTCDay
()],
D
:
e
[
m
].
daysShort
[
l
.
getUTCDay
()],
w
:
l
.
getUTCDay
(),
N
:(
l
.
getUTCDay
()
===
0
?
7
:
l
.
getUTCDay
()),
S
:(
l
.
getUTCDate
()
%
10
<=
e
[
m
].
suffix
.
length
?
e
[
m
].
suffix
[
l
.
getUTCDate
()
%
10
-
1
]:
""
),
a
:(
e
[
m
].
meridiem
.
length
===
2
?
e
[
m
].
meridiem
[
l
.
getUTCHours
()
<
12
?
0
:
1
]:
""
),
g
:(
l
.
getUTCHours
()
%
12
===
0
?
12
:
l
.
getUTCHours
()
%
12
),
G
:
l
.
getUTCHours
(),
i
:
l
.
getUTCMinutes
(),
s
:
l
.
getUTCSeconds
()};
k
.
m
=
(
k
.
n
<
10
?
"0"
:
""
)
+
k
.
n
;
k
.
d
=
(
k
.
j
<
10
?
"0"
:
""
)
+
k
.
j
;
k
.
A
=
k
.
a
.
toString
().
toUpperCase
();
k
.
h
=
(
k
.
g
<
10
?
"0"
:
""
)
+
k
.
g
;
k
.
H
=
(
k
.
G
<
10
?
"0"
:
""
)
+
k
.
G
;
k
.
i
=
(
k
.
i
<
10
?
"0"
:
""
)
+
k
.
i
;
k
.
s
=
(
k
.
s
<
10
?
"0"
:
""
)
+
k
.
s
}
else
{
throw
new
Error
(
"Invalid format type."
)}}
var
l
=
[],
r
=
d
.
extend
([],
q
.
separators
);
for
(
var
n
=
0
,
j
=
q
.
parts
.
length
;
n
<
j
;
n
++
){
if
(
r
.
length
){
l
.
push
(
r
.
shift
())}
l
.
push
(
k
[
q
.
parts
[
n
]])}
if
(
r
.
length
){
l
.
push
(
r
.
shift
())}
return
l
.
join
(
""
)},
convertViewMode
:
function
(
i
){
switch
(
i
){
case
4
:
case
"decade"
:
i
=
4
;
break
;
case
3
:
case
"year"
:
i
=
3
;
break
;
case
2
:
case
"month"
:
i
=
2
;
break
;
case
1
:
case
"day"
:
i
=
1
;
break
;
case
0
:
case
"hour"
:
i
=
0
;
break
}
return
i
},
headTemplate
:
'<thead><tr><th class="prev"><i class="{iconType} {leftArrow}"/></th><th colspan="5" class="switch"></th><th class="next"><i class="{iconType} {rightArrow}"/></th></tr></thead>'
,
headTemplateV3
:
'<thead><tr><th class="prev"><span class="{iconType} {leftArrow}"></span> </th><th colspan="5" class="switch"></th><th class="next"><span class="{iconType} {rightArrow}"></span> </th></tr></thead>'
,
contTemplate
:
'<tbody><tr><td colspan="7"></td></tr></tbody>'
,
footTemplate
:
'<tfoot><tr><th colspan="7" class="today"></th></tr><tr><th colspan="7" class="clear"></th></tr></tfoot>'
};
c
.
template
=
'<div class="datetimepicker"><div class="datetimepicker-minutes"><table class=" table-condensed">'
+
c
.
headTemplate
+
c
.
contTemplate
+
c
.
footTemplate
+
'</table></div><div class="datetimepicker-hours"><table class=" table-condensed">'
+
c
.
headTemplate
+
c
.
contTemplate
+
c
.
footTemplate
+
'</table></div><div class="datetimepicker-days"><table class=" table-condensed">'
+
c
.
headTemplate
+
"<tbody></tbody>"
+
c
.
footTemplate
+
'</table></div><div class="datetimepicker-months"><table class="table-condensed">'
+
c
.
headTemplate
+
c
.
contTemplate
+
c
.
footTemplate
+
'</table></div><div class="datetimepicker-years"><table class="table-condensed">'
+
c
.
headTemplate
+
c
.
contTemplate
+
c
.
footTemplate
+
"</table></div></div>"
;
c
.
templateV3
=
'<div class="datetimepicker"><div class="datetimepicker-minutes"><table class=" table-condensed">'
+
c
.
headTemplateV3
+
c
.
contTemplate
+
c
.
footTemplate
+
'</table></div><div class="datetimepicker-hours"><table class=" table-condensed">'
+
c
.
headTemplateV3
+
c
.
contTemplate
+
c
.
footTemplate
+
'</table></div><div class="datetimepicker-days"><table class=" table-condensed">'
+
c
.
headTemplateV3
+
"<tbody></tbody>"
+
c
.
footTemplate
+
'</table></div><div class="datetimepicker-months"><table class="table-condensed">'
+
c
.
headTemplateV3
+
c
.
contTemplate
+
c
.
footTemplate
+
'</table></div><div class="datetimepicker-years"><table class="table-condensed">'
+
c
.
headTemplateV3
+
c
.
contTemplate
+
c
.
footTemplate
+
"</table></div></div>"
;
d
.
fn
.
datetimepicker
.
DPGlobal
=
c
;
d
.
fn
.
datetimepicker
.
noConflict
=
function
(){
d
.
fn
.
datetimepicker
=
b
;
return
this
};
d
(
document
).
on
(
"focus.datetimepicker.data-api click.datetimepicker.data-api"
,
'[data-provide="datetimepicker"]'
,
function
(
j
){
var
i
=
d
(
this
);
if
(
i
.
data
(
"datetimepicker"
)){
return
}
j
.
preventDefault
();
i
.
datetimepicker
(
"show"
)});
d
(
function
(){
d
(
'[data-provide="datetimepicker-inline"]'
).
datetimepicker
()})}));
\ No newline at end of file
vendor/assets/stylesheets/bootstrap-datetimepicker.min.css
0 → 100644
View file @
c4767154
/*!
* Datetimepicker for Bootstrap
*
* Copyright 2012 Stefan Petre
* Improvements by Andrew Rowls
* Licensed under the Apache License v2.0
* http://www.apache.org/licenses/LICENSE-2.0
*
*/
.datetimepicker
{
padding
:
4px
;
margin-top
:
1px
;
-webkit-border-radius
:
4px
;
-moz-border-radius
:
4px
;
border-radius
:
4px
;
direction
:
ltr
}
.datetimepicker-inline
{
width
:
220px
}
.datetimepicker.datetimepicker-rtl
{
direction
:
rtl
}
.datetimepicker.datetimepicker-rtl
table
tr
td
span
{
float
:
right
}
.datetimepicker-dropdown
,
.datetimepicker-dropdown-left
{
top
:
0
;
left
:
0
}
[
class
*=
" datetimepicker-dropdown"
]
:before
{
content
:
''
;
display
:
inline-block
;
border-left
:
7px
solid
transparent
;
border-right
:
7px
solid
transparent
;
border-bottom
:
7px
solid
#ccc
;
border-bottom-color
:
rgba
(
0
,
0
,
0
,
0.2
);
position
:
absolute
}
[
class
*=
" datetimepicker-dropdown"
]
:after
{
content
:
''
;
display
:
inline-block
;
border-left
:
6px
solid
transparent
;
border-right
:
6px
solid
transparent
;
border-bottom
:
6px
solid
#fff
;
position
:
absolute
}
[
class
*=
" datetimepicker-dropdown-top"
]
:before
{
content
:
''
;
display
:
inline-block
;
border-left
:
7px
solid
transparent
;
border-right
:
7px
solid
transparent
;
border-top
:
7px
solid
#ccc
;
border-top-color
:
rgba
(
0
,
0
,
0
,
0.2
);
border-bottom
:
0
}
[
class
*=
" datetimepicker-dropdown-top"
]
:after
{
content
:
''
;
display
:
inline-block
;
border-left
:
6px
solid
transparent
;
border-right
:
6px
solid
transparent
;
border-top
:
6px
solid
#fff
;
border-bottom
:
0
}
.datetimepicker-dropdown-bottom-left
:before
{
top
:
-7px
;
right
:
6px
}
.datetimepicker-dropdown-bottom-left
:after
{
top
:
-6px
;
right
:
7px
}
.datetimepicker-dropdown-bottom-right
:before
{
top
:
-7px
;
left
:
6px
}
.datetimepicker-dropdown-bottom-right
:after
{
top
:
-6px
;
left
:
7px
}
.datetimepicker-dropdown-top-left
:before
{
bottom
:
-7px
;
right
:
6px
}
.datetimepicker-dropdown-top-left
:after
{
bottom
:
-6px
;
right
:
7px
}
.datetimepicker-dropdown-top-right
:before
{
bottom
:
-7px
;
left
:
6px
}
.datetimepicker-dropdown-top-right
:after
{
bottom
:
-6px
;
left
:
7px
}
.datetimepicker
>
div
{
display
:
none
}
.datetimepicker.minutes
div
.datetimepicker-minutes
{
display
:
block
}
.datetimepicker.hours
div
.datetimepicker-hours
{
display
:
block
}
.datetimepicker.days
div
.datetimepicker-days
{
display
:
block
}
.datetimepicker.months
div
.datetimepicker-months
{
display
:
block
}
.datetimepicker.years
div
.datetimepicker-years
{
display
:
block
}
.datetimepicker
table
{
margin
:
0
}
.datetimepicker
td
,
.datetimepicker
th
{
text-align
:
center
;
width
:
20px
;
height
:
20px
;
-webkit-border-radius
:
4px
;
-moz-border-radius
:
4px
;
border-radius
:
4px
;
border
:
0
}
.table-striped
.datetimepicker
table
tr
td
,
.table-striped
.datetimepicker
table
tr
th
{
background-color
:
transparent
}
.datetimepicker
table
tr
td
.minute
:hover
{
background
:
#eee
;
cursor
:
pointer
}
.datetimepicker
table
tr
td
.hour
:hover
{
background
:
#eee
;
cursor
:
pointer
}
.datetimepicker
table
tr
td
.day
:hover
{
background
:
#eee
;
cursor
:
pointer
}
.datetimepicker
table
tr
td
.old
,
.datetimepicker
table
tr
td
.new
{
color
:
#999
}
.datetimepicker
table
tr
td
.disabled
,
.datetimepicker
table
tr
td
.disabled
:hover
{
background
:
0
;
color
:
#999
;
cursor
:
default
}
.datetimepicker
table
tr
td
.today
,
.datetimepicker
table
tr
td
.today
:hover
,
.datetimepicker
table
tr
td
.today.disabled
,
.datetimepicker
table
tr
td
.today.disabled
:hover
{
background-color
:
#fde19a
;
background-image
:
-moz-linear-gradient
(
top
,
#fdd49a
,
#fdf59a
);
background-image
:
-ms-linear-gradient
(
top
,
#fdd49a
,
#fdf59a
);
background-image
:
-webkit-gradient
(
linear
,
0
0
,
0
100%
,
from
(
#fdd49a
),
to
(
#fdf59a
));
background-image
:
-webkit-linear-gradient
(
top
,
#fdd49a
,
#fdf59a
);
background-image
:
-o-linear-gradient
(
top
,
#fdd49a
,
#fdf59a
);
background-image
:
linear-gradient
(
to
bottom
,
#fdd49a
,
#fdf59a
);
background-repeat
:
repeat-x
;
filter
:
progid
:
DXImageTransform
.
Microsoft
.
gradient
(
startColorstr
=
'#fdd49a'
,
endColorstr
=
'#fdf59a'
,
GradientType
=
0
);
border-color
:
#fdf59a
#fdf59a
#fbed50
;
border-color
:
rgba
(
0
,
0
,
0
,
0.1
)
rgba
(
0
,
0
,
0
,
0.1
)
rgba
(
0
,
0
,
0
,
0.25
);
filter
:
progid
:
DXImageTransform
.
Microsoft
.
gradient
(
enabled
=
false
)}
.datetimepicker
table
tr
td
.today
:hover
,
.datetimepicker
table
tr
td
.today
:hover:hover
,
.datetimepicker
table
tr
td
.today.disabled
:hover
,
.datetimepicker
table
tr
td
.today.disabled
:hover:hover
,
.datetimepicker
table
tr
td
.today
:active
,
.datetimepicker
table
tr
td
.today
:hover:active
,
.datetimepicker
table
tr
td
.today.disabled
:active
,
.datetimepicker
table
tr
td
.today.disabled
:hover:active
,
.datetimepicker
table
tr
td
.today.active
,
.datetimepicker
table
tr
td
.today
:hover
.active
,
.datetimepicker
table
tr
td
.today.disabled.active
,
.datetimepicker
table
tr
td
.today.disabled
:hover
.active
,
.datetimepicker
table
tr
td
.today.disabled
,
.datetimepicker
table
tr
td
.today
:hover
.disabled
,
.datetimepicker
table
tr
td
.today.disabled.disabled
,
.datetimepicker
table
tr
td
.today.disabled
:hover
.disabled
,
.datetimepicker
table
tr
td
.today
[
disabled
],
.datetimepicker
table
tr
td
.today
:hover
[
disabled
],
.datetimepicker
table
tr
td
.today.disabled
[
disabled
],
.datetimepicker
table
tr
td
.today.disabled
:hover
[
disabled
]
{
background-color
:
#fdf59a
}
.datetimepicker
table
tr
td
.today
:active
,
.datetimepicker
table
tr
td
.today
:hover:active
,
.datetimepicker
table
tr
td
.today.disabled
:active
,
.datetimepicker
table
tr
td
.today.disabled
:hover:active
,
.datetimepicker
table
tr
td
.today.active
,
.datetimepicker
table
tr
td
.today
:hover
.active
,
.datetimepicker
table
tr
td
.today.disabled.active
,
.datetimepicker
table
tr
td
.today.disabled
:hover
.active
{
background-color
:
#fbf069
}
.datetimepicker
table
tr
td
.active
,
.datetimepicker
table
tr
td
.active
:hover
,
.datetimepicker
table
tr
td
.active.disabled
,
.datetimepicker
table
tr
td
.active.disabled
:hover
{
background-color
:
#006dcc
;
background-image
:
-moz-linear-gradient
(
top
,
#08c
,
#04c
);
background-image
:
-ms-linear-gradient
(
top
,
#08c
,
#04c
);
background-image
:
-webkit-gradient
(
linear
,
0
0
,
0
100%
,
from
(
#08c
),
to
(
#04c
));
background-image
:
-webkit-linear-gradient
(
top
,
#08c
,
#04c
);
background-image
:
-o-linear-gradient
(
top
,
#08c
,
#04c
);
background-image
:
linear-gradient
(
to
bottom
,
#08c
,
#04c
);
background-repeat
:
repeat-x
;
filter
:
progid
:
DXImageTransform
.
Microsoft
.
gradient
(
startColorstr
=
'#0088cc'
,
endColorstr
=
'#0044cc'
,
GradientType
=
0
);
border-color
:
#04c
#04c
#002a80
;
border-color
:
rgba
(
0
,
0
,
0
,
0.1
)
rgba
(
0
,
0
,
0
,
0.1
)
rgba
(
0
,
0
,
0
,
0.25
);
filter
:
progid
:
DXImageTransform
.
Microsoft
.
gradient
(
enabled
=
false
);
color
:
#fff
;
text-shadow
:
0
-1px
0
rgba
(
0
,
0
,
0
,
0.25
)}
.datetimepicker
table
tr
td
.active
:hover
,
.datetimepicker
table
tr
td
.active
:hover:hover
,
.datetimepicker
table
tr
td
.active.disabled
:hover
,
.datetimepicker
table
tr
td
.active.disabled
:hover:hover
,
.datetimepicker
table
tr
td
.active
:active
,
.datetimepicker
table
tr
td
.active
:hover:active
,
.datetimepicker
table
tr
td
.active.disabled
:active
,
.datetimepicker
table
tr
td
.active.disabled
:hover:active
,
.datetimepicker
table
tr
td
.active.active
,
.datetimepicker
table
tr
td
.active
:hover
.active
,
.datetimepicker
table
tr
td
.active.disabled.active
,
.datetimepicker
table
tr
td
.active.disabled
:hover
.active
,
.datetimepicker
table
tr
td
.active.disabled
,
.datetimepicker
table
tr
td
.active
:hover
.disabled
,
.datetimepicker
table
tr
td
.active.disabled.disabled
,
.datetimepicker
table
tr
td
.active.disabled
:hover
.disabled
,
.datetimepicker
table
tr
td
.active
[
disabled
],
.datetimepicker
table
tr
td
.active
:hover
[
disabled
],
.datetimepicker
table
tr
td
.active.disabled
[
disabled
],
.datetimepicker
table
tr
td
.active.disabled
:hover
[
disabled
]
{
background-color
:
#04c
}
.datetimepicker
table
tr
td
.active
:active
,
.datetimepicker
table
tr
td
.active
:hover:active
,
.datetimepicker
table
tr
td
.active.disabled
:active
,
.datetimepicker
table
tr
td
.active.disabled
:hover:active
,
.datetimepicker
table
tr
td
.active.active
,
.datetimepicker
table
tr
td
.active
:hover
.active
,
.datetimepicker
table
tr
td
.active.disabled.active
,
.datetimepicker
table
tr
td
.active.disabled
:hover
.active
{
background-color
:
#039
}
.datetimepicker
table
tr
td
span
{
display
:
block
;
width
:
23%
;
height
:
54px
;
line-height
:
54px
;
float
:
left
;
margin
:
1%
;
cursor
:
pointer
;
-webkit-border-radius
:
4px
;
-moz-border-radius
:
4px
;
border-radius
:
4px
}
.datetimepicker
.datetimepicker-hours
span
{
height
:
26px
;
line-height
:
26px
}
.datetimepicker
.datetimepicker-hours
table
tr
td
span
.hour_am
,
.datetimepicker
.datetimepicker-hours
table
tr
td
span
.hour_pm
{
width
:
14.6%
}
.datetimepicker
.datetimepicker-hours
fieldset
legend
,
.datetimepicker
.datetimepicker-minutes
fieldset
legend
{
margin-bottom
:
inherit
;
line-height
:
30px
}
.datetimepicker
.datetimepicker-minutes
span
{
height
:
26px
;
line-height
:
26px
}
.datetimepicker
table
tr
td
span
:hover
{
background
:
#eee
}
.datetimepicker
table
tr
td
span
.disabled
,
.datetimepicker
table
tr
td
span
.disabled
:hover
{
background
:
0
;
color
:
#999
;
cursor
:
default
}
.datetimepicker
table
tr
td
span
.active
,
.datetimepicker
table
tr
td
span
.active
:hover
,
.datetimepicker
table
tr
td
span
.active.disabled
,
.datetimepicker
table
tr
td
span
.active.disabled
:hover
{
background-color
:
#006dcc
;
background-image
:
-moz-linear-gradient
(
top
,
#08c
,
#04c
);
background-image
:
-ms-linear-gradient
(
top
,
#08c
,
#04c
);
background-image
:
-webkit-gradient
(
linear
,
0
0
,
0
100%
,
from
(
#08c
),
to
(
#04c
));
background-image
:
-webkit-linear-gradient
(
top
,
#08c
,
#04c
);
background-image
:
-o-linear-gradient
(
top
,
#08c
,
#04c
);
background-image
:
linear-gradient
(
to
bottom
,
#08c
,
#04c
);
background-repeat
:
repeat-x
;
filter
:
progid
:
DXImageTransform
.
Microsoft
.
gradient
(
startColorstr
=
'#0088cc'
,
endColorstr
=
'#0044cc'
,
GradientType
=
0
);
border-color
:
#04c
#04c
#002a80
;
border-color
:
rgba
(
0
,
0
,
0
,
0.1
)
rgba
(
0
,
0
,
0
,
0.1
)
rgba
(
0
,
0
,
0
,
0.25
);
filter
:
progid
:
DXImageTransform
.
Microsoft
.
gradient
(
enabled
=
false
);
color
:
#fff
;
text-shadow
:
0
-1px
0
rgba
(
0
,
0
,
0
,
0.25
)}
.datetimepicker
table
tr
td
span
.active
:hover
,
.datetimepicker
table
tr
td
span
.active
:hover:hover
,
.datetimepicker
table
tr
td
span
.active.disabled
:hover
,
.datetimepicker
table
tr
td
span
.active.disabled
:hover:hover
,
.datetimepicker
table
tr
td
span
.active
:active
,
.datetimepicker
table
tr
td
span
.active
:hover:active
,
.datetimepicker
table
tr
td
span
.active.disabled
:active
,
.datetimepicker
table
tr
td
span
.active.disabled
:hover:active
,
.datetimepicker
table
tr
td
span
.active.active
,
.datetimepicker
table
tr
td
span
.active
:hover
.active
,
.datetimepicker
table
tr
td
span
.active.disabled.active
,
.datetimepicker
table
tr
td
span
.active.disabled
:hover
.active
,
.datetimepicker
table
tr
td
span
.active.disabled
,
.datetimepicker
table
tr
td
span
.active
:hover
.disabled
,
.datetimepicker
table
tr
td
span
.active.disabled.disabled
,
.datetimepicker
table
tr
td
span
.active.disabled
:hover
.disabled
,
.datetimepicker
table
tr
td
span
.active
[
disabled
],
.datetimepicker
table
tr
td
span
.active
:hover
[
disabled
],
.datetimepicker
table
tr
td
span
.active.disabled
[
disabled
],
.datetimepicker
table
tr
td
span
.active.disabled
:hover
[
disabled
]
{
background-color
:
#04c
}
.datetimepicker
table
tr
td
span
.active
:active
,
.datetimepicker
table
tr
td
span
.active
:hover:active
,
.datetimepicker
table
tr
td
span
.active.disabled
:active
,
.datetimepicker
table
tr
td
span
.active.disabled
:hover:active
,
.datetimepicker
table
tr
td
span
.active.active
,
.datetimepicker
table
tr
td
span
.active
:hover
.active
,
.datetimepicker
table
tr
td
span
.active.disabled.active
,
.datetimepicker
table
tr
td
span
.active.disabled
:hover
.active
{
background-color
:
#039
}
.datetimepicker
table
tr
td
span
.old
{
color
:
#999
}
.datetimepicker
th
.switch
{
width
:
145px
}
.datetimepicker
th
span
.glyphicon
{
pointer-events
:
none
}
.datetimepicker
thead
tr
:first-child
th
,
.datetimepicker
tfoot
th
{
cursor
:
pointer
}
.datetimepicker
thead
tr
:first-child
th
:hover
,
.datetimepicker
tfoot
th
:hover
{
background
:
#eee
}
.input-append.date
.add-on
i
,
.input-prepend.date
.add-on
i
,
.input-group.date
.input-group-addon
span
{
cursor
:
pointer
;
width
:
14px
;
height
:
14px
}
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment