add datetime input
This commit is contained in:
parent
6b557bbb9f
commit
11df3481c6
9
grunt.js
9
grunt.js
@ -15,9 +15,15 @@ function getFiles() {
|
|||||||
inputs+'date/date.js',
|
inputs+'date/date.js',
|
||||||
inputs+'date/datefield.js',
|
inputs+'date/datefield.js',
|
||||||
inputs+'date/bootstrap-datepicker/js/bootstrap-datepicker.js',
|
inputs+'date/bootstrap-datepicker/js/bootstrap-datepicker.js',
|
||||||
|
inputs+'datetime/datetime.js',
|
||||||
|
inputs+'datetime/datetimefield.js',
|
||||||
|
inputs+'datetime/bootstrap-datetimepicker/js/bootstrap-datetimepicker.js',
|
||||||
inputs+'typeahead.js'
|
inputs+'typeahead.js'
|
||||||
],
|
],
|
||||||
css: [inputs+'date/bootstrap-datepicker/css/datepicker.css']
|
css: [
|
||||||
|
inputs+'date/bootstrap-datepicker/css/datepicker.css',
|
||||||
|
inputs+'datetime/bootstrap-datetimepicker/css/datetimepicker.css'
|
||||||
|
]
|
||||||
},
|
},
|
||||||
jqueryui: {
|
jqueryui: {
|
||||||
form: [forms+'editable-form-jqueryui.js'],
|
form: [forms+'editable-form-jqueryui.js'],
|
||||||
@ -165,6 +171,7 @@ module.exports = function(grunt) {
|
|||||||
'src/inputs/*.js',
|
'src/inputs/*.js',
|
||||||
'src/inputs/date/*.js',
|
'src/inputs/date/*.js',
|
||||||
'src/inputs/dateui/*.js',
|
'src/inputs/dateui/*.js',
|
||||||
|
'src/inputs/datetime/*.js',
|
||||||
'src/inputs/combodate/*.js',
|
'src/inputs/combodate/*.js',
|
||||||
'src/inputs/select2/*.js',
|
'src/inputs/select2/*.js',
|
||||||
|
|
||||||
|
@ -0,0 +1,342 @@
|
|||||||
|
/*!
|
||||||
|
* 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;
|
||||||
|
/*.dow {
|
||||||
|
border-top: 1px solid #ddd !important;
|
||||||
|
}*/
|
||||||
|
|
||||||
|
}
|
||||||
|
.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;
|
||||||
|
}
|
||||||
|
.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;
|
||||||
|
top: -7px;
|
||||||
|
left: 6px;
|
||||||
|
}
|
||||||
|
.datetimepicker-dropdown:after {
|
||||||
|
content: '';
|
||||||
|
display: inline-block;
|
||||||
|
border-left: 6px solid transparent;
|
||||||
|
border-right: 6px solid transparent;
|
||||||
|
border-bottom: 6px solid #ffffff;
|
||||||
|
position: absolute;
|
||||||
|
top: -6px;
|
||||||
|
left: 7px;
|
||||||
|
}
|
||||||
|
.datetimepicker-dropdown-left: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;
|
||||||
|
top: -7px;
|
||||||
|
right: 6px;
|
||||||
|
}
|
||||||
|
.datetimepicker-dropdown-left:after {
|
||||||
|
content: '';
|
||||||
|
display: inline-block;
|
||||||
|
border-left: 6px solid transparent;
|
||||||
|
border-right: 6px solid transparent;
|
||||||
|
border-bottom: 6px solid #ffffff;
|
||||||
|
position: absolute;
|
||||||
|
top: -6px;
|
||||||
|
right: 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: none;
|
||||||
|
}
|
||||||
|
.table-striped .datetimepicker table tr td,
|
||||||
|
.table-striped .datetimepicker table tr th {
|
||||||
|
background-color: transparent;
|
||||||
|
}
|
||||||
|
.datetimepicker table tr td.minute:hover {
|
||||||
|
background: #eeeeee;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
.datetimepicker table tr td.hour:hover {
|
||||||
|
background: #eeeeee;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
.datetimepicker table tr td.day:hover {
|
||||||
|
background: #eeeeee;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
.datetimepicker table tr td.old,
|
||||||
|
.datetimepicker table tr td.new {
|
||||||
|
color: #999999;
|
||||||
|
}
|
||||||
|
.datetimepicker table tr td.disabled,
|
||||||
|
.datetimepicker table tr td.disabled:hover {
|
||||||
|
background: none;
|
||||||
|
color: #999999;
|
||||||
|
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(top, #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 \9;
|
||||||
|
}
|
||||||
|
.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, #0088cc, #0044cc);
|
||||||
|
background-image: -ms-linear-gradient(top, #0088cc, #0044cc);
|
||||||
|
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc));
|
||||||
|
background-image: -webkit-linear-gradient(top, #0088cc, #0044cc);
|
||||||
|
background-image: -o-linear-gradient(top, #0088cc, #0044cc);
|
||||||
|
background-image: linear-gradient(top, #0088cc, #0044cc);
|
||||||
|
background-repeat: repeat-x;
|
||||||
|
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc', endColorstr='#0044cc', GradientType=0);
|
||||||
|
border-color: #0044cc #0044cc #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: #0044cc;
|
||||||
|
}
|
||||||
|
.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: #003399 \9;
|
||||||
|
}
|
||||||
|
.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: #eeeeee;
|
||||||
|
}
|
||||||
|
.datetimepicker table tr td span.disabled,
|
||||||
|
.datetimepicker table tr td span.disabled:hover {
|
||||||
|
background: none;
|
||||||
|
color: #999999;
|
||||||
|
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, #0088cc, #0044cc);
|
||||||
|
background-image: -ms-linear-gradient(top, #0088cc, #0044cc);
|
||||||
|
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc));
|
||||||
|
background-image: -webkit-linear-gradient(top, #0088cc, #0044cc);
|
||||||
|
background-image: -o-linear-gradient(top, #0088cc, #0044cc);
|
||||||
|
background-image: linear-gradient(top, #0088cc, #0044cc);
|
||||||
|
background-repeat: repeat-x;
|
||||||
|
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc', endColorstr='#0044cc', GradientType=0);
|
||||||
|
border-color: #0044cc #0044cc #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: #0044cc;
|
||||||
|
}
|
||||||
|
.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: #003399 \9;
|
||||||
|
}
|
||||||
|
.datetimepicker table tr td span.old {
|
||||||
|
color: #999999;
|
||||||
|
}
|
||||||
|
.datetimepicker th.switch {
|
||||||
|
width: 145px;
|
||||||
|
}
|
||||||
|
.datetimepicker thead tr:first-child th,
|
||||||
|
.datetimepicker tfoot tr:first-child th {
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
.datetimepicker thead tr:first-child th:hover,
|
||||||
|
.datetimepicker tfoot tr:first-child th:hover {
|
||||||
|
background: #eeeeee;
|
||||||
|
}
|
||||||
|
.input-append.date .add-on i,
|
||||||
|
.input-prepend.date .add-on i {
|
||||||
|
cursor: pointer;
|
||||||
|
width: 14px;
|
||||||
|
height: 14px;
|
||||||
|
}
|
1453
src/inputs/datetime/bootstrap-datetimepicker/js/bootstrap-datetimepicker.js
vendored
Normal file
1453
src/inputs/datetime/bootstrap-datetimepicker/js/bootstrap-datetimepicker.js
vendored
Normal file
File diff suppressed because it is too large
Load Diff
204
src/inputs/datetime/datetime.js
Normal file
204
src/inputs/datetime/datetime.js
Normal file
@ -0,0 +1,204 @@
|
|||||||
|
/**
|
||||||
|
Bootstrap-datetimepicker.
|
||||||
|
Description and examples: https://github.com/smalot/bootstrap-datetimepicker.
|
||||||
|
For **i18n** you should include js file from here: https://github.com/smalot/bootstrap-datetimepicker/tree/master/js/locales
|
||||||
|
and set `language` option.
|
||||||
|
|
||||||
|
@class datetime
|
||||||
|
@extends abstractinput
|
||||||
|
@final
|
||||||
|
@example
|
||||||
|
<a href="#" id="last_seen" data-type="datetime" data-pk="1" data-url="/post" data-original-title="Select date & time">15/03/2013 12:45</a>
|
||||||
|
<script>
|
||||||
|
$(function(){
|
||||||
|
$('#last_seen').editable({
|
||||||
|
format: 'yyyy-mm-dd hh:ii:ss',
|
||||||
|
viewformat: 'dd/mm/yyyy hh:ii:ss',
|
||||||
|
datetimepicker: {
|
||||||
|
weekStart: 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
**/
|
||||||
|
(function ($) {
|
||||||
|
|
||||||
|
var DateTime = function (options) {
|
||||||
|
this.init('datetime', options, DateTime.defaults);
|
||||||
|
this.initPicker(options, DateTime.defaults);
|
||||||
|
};
|
||||||
|
|
||||||
|
$.fn.editableutils.inherit(DateTime, $.fn.editabletypes.abstractinput);
|
||||||
|
|
||||||
|
$.extend(DateTime.prototype, {
|
||||||
|
initPicker: function(options, defaults) {
|
||||||
|
//'format' is set directly from settings or data-* attributes
|
||||||
|
|
||||||
|
//by default viewformat equals to format
|
||||||
|
if(!this.options.viewformat) {
|
||||||
|
this.options.viewformat = this.options.format;
|
||||||
|
}
|
||||||
|
|
||||||
|
//overriding datetimepicker config (as by default jQuery extend() is not recursive)
|
||||||
|
//since 1.4 datetimepicker internally uses viewformat instead of format. Format is for submit only
|
||||||
|
this.options.datetimepicker = $.extend({}, defaults.datetimepicker, options.datetimepicker, {
|
||||||
|
format: this.options.viewformat
|
||||||
|
});
|
||||||
|
|
||||||
|
//language
|
||||||
|
this.options.datetimepicker.language = this.options.datetimepicker.language || 'en';
|
||||||
|
|
||||||
|
//store DPglobal
|
||||||
|
this.dpg = $.fn.datetimepicker.DPGlobal;
|
||||||
|
|
||||||
|
//store parsed formats
|
||||||
|
this.parsedFormat = this.dpg.parseFormat(this.options.format, this.options.formatType);
|
||||||
|
this.parsedViewFormat = this.dpg.parseFormat(this.options.viewformat, this.options.formatType);
|
||||||
|
|
||||||
|
//
|
||||||
|
this.options.datetimepicker.startView = this.options.startView;
|
||||||
|
this.options.datetimepicker.minView = this.options.minView;
|
||||||
|
this.options.datetimepicker.maxView = this.options.maxView;
|
||||||
|
},
|
||||||
|
|
||||||
|
render: function () {
|
||||||
|
this.$input.datetimepicker(this.options.datetimepicker);
|
||||||
|
|
||||||
|
//"clear" link
|
||||||
|
if(this.options.clear) {
|
||||||
|
this.$clear = $('<a href="#"></a>').html(this.options.clear).click($.proxy(function(e){
|
||||||
|
e.preventDefault();
|
||||||
|
e.stopPropagation();
|
||||||
|
this.clear();
|
||||||
|
}, this));
|
||||||
|
|
||||||
|
this.$tpl.parent().append($('<div class="editable-clear">').append(this.$clear));
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
value2html: function(value, element) {
|
||||||
|
var text = value ? this.dpg.formatDate(value, this.parsedViewFormat, this.options.datetimepicker.language, this.options.formatType) : '';
|
||||||
|
DateTime.superclass.value2html(text, element);
|
||||||
|
},
|
||||||
|
|
||||||
|
html2value: function(html) {
|
||||||
|
return html ? this.dpg.parseDate(html, this.parsedViewFormat, this.options.datetimepicker.language, this.options.formatType) : null;
|
||||||
|
},
|
||||||
|
|
||||||
|
value2str: function(value) {
|
||||||
|
return value ? this.dpg.formatDate(value, this.parsedFormat, this.options.datetimepicker.language, this.options.formatType) : '';
|
||||||
|
},
|
||||||
|
|
||||||
|
str2value: function(str) {
|
||||||
|
return str ? this.dpg.parseDate(str, this.parsedFormat, this.options.datetimepicker.language, this.options.formatType) : null;
|
||||||
|
},
|
||||||
|
|
||||||
|
value2submit: function(value) {
|
||||||
|
return this.value2str(value);
|
||||||
|
},
|
||||||
|
|
||||||
|
value2input: function(value) {
|
||||||
|
this.$input.datetimepicker('update', value);
|
||||||
|
},
|
||||||
|
|
||||||
|
input2value: function() {
|
||||||
|
return this.$input.data('datetimepicker').date;
|
||||||
|
},
|
||||||
|
|
||||||
|
activate: function() {
|
||||||
|
},
|
||||||
|
|
||||||
|
clear: function() {
|
||||||
|
this.$input.data('datetimepicker').date = null;
|
||||||
|
this.$input.find('.active').removeClass('active');
|
||||||
|
},
|
||||||
|
|
||||||
|
autosubmit: function() {
|
||||||
|
this.$input.on('mouseup', '.day', function(e){
|
||||||
|
if($(e.currentTarget).is('.old') || $(e.currentTarget).is('.new')) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
var $form = $(this).closest('form');
|
||||||
|
setTimeout(function() {
|
||||||
|
$form.submit();
|
||||||
|
}, 200);
|
||||||
|
});
|
||||||
|
//changedate is not suitable as it triggered when showing datetimepicker. see #149
|
||||||
|
/*
|
||||||
|
this.$input.on('changeDate', function(e){
|
||||||
|
var $form = $(this).closest('form');
|
||||||
|
setTimeout(function() {
|
||||||
|
$form.submit();
|
||||||
|
}, 200);
|
||||||
|
});
|
||||||
|
*/
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
DateTime.defaults = $.extend({}, $.fn.editabletypes.abstractinput.defaults, {
|
||||||
|
/**
|
||||||
|
@property tpl
|
||||||
|
@default <div></div>
|
||||||
|
**/
|
||||||
|
tpl:'<div class="editable-date well"></div>',
|
||||||
|
/**
|
||||||
|
@property inputclass
|
||||||
|
@default null
|
||||||
|
**/
|
||||||
|
inputclass: null,
|
||||||
|
/**
|
||||||
|
Format used for sending value to server. Also applied when converting date from <code>data-value</code> attribute.<br>
|
||||||
|
Possible tokens are: <code>d, dd, m, mm, yy, yyyy</code>
|
||||||
|
|
||||||
|
@property format
|
||||||
|
@type string
|
||||||
|
@default yyyy-mm-dd hh:ii
|
||||||
|
**/
|
||||||
|
format:'yyyy-mm-dd hh:ii',
|
||||||
|
formatType:'standard',
|
||||||
|
/**
|
||||||
|
Format used for displaying date. Also applied when converting date from element's text on init.
|
||||||
|
If not specified equals to <code>format</code>
|
||||||
|
|
||||||
|
@property viewformat
|
||||||
|
@type string
|
||||||
|
@default null
|
||||||
|
**/
|
||||||
|
viewformat: null,
|
||||||
|
/**
|
||||||
|
Configuration of datetimepicker.
|
||||||
|
Full list of options: https://github.com/smalot/bootstrap-datetimepicker
|
||||||
|
|
||||||
|
@property datetimepicker
|
||||||
|
@type object
|
||||||
|
@default {
|
||||||
|
weekStart: 0,
|
||||||
|
startView: 0,
|
||||||
|
minView: 0,
|
||||||
|
autoclose: false
|
||||||
|
}
|
||||||
|
**/
|
||||||
|
datetimepicker:{
|
||||||
|
weekStart: 0,
|
||||||
|
startView: 2, // month
|
||||||
|
maxView: 4, // decade
|
||||||
|
minView: 0,
|
||||||
|
todayHighlight: false,
|
||||||
|
autoclose: false
|
||||||
|
},
|
||||||
|
/**
|
||||||
|
Text shown as clear date button.
|
||||||
|
If <code>false</code> clear button will not be rendered.
|
||||||
|
|
||||||
|
@property clear
|
||||||
|
@type boolean|string
|
||||||
|
@default 'x clear'
|
||||||
|
**/
|
||||||
|
clear: '× clear'
|
||||||
|
});
|
||||||
|
|
||||||
|
$.fn.editabletypes.datetime = DateTime;
|
||||||
|
|
||||||
|
}(window.jQuery));
|
80
src/inputs/datetime/datetimefield.js
Normal file
80
src/inputs/datetime/datetimefield.js
Normal file
@ -0,0 +1,80 @@
|
|||||||
|
/**
|
||||||
|
Bootstrap datetimefield input - modification for inline mode.
|
||||||
|
Shows normal <input type="text"> and binds popup datetimepicker.
|
||||||
|
Automatically shown in inline mode.
|
||||||
|
|
||||||
|
@class datetimefield
|
||||||
|
@extends datetime
|
||||||
|
|
||||||
|
**/
|
||||||
|
(function ($) {
|
||||||
|
|
||||||
|
var DateTimeField = function (options) {
|
||||||
|
this.init('datetimefield', options, DateTimeField.defaults);
|
||||||
|
this.initPicker(options, DateTimeField.defaults);
|
||||||
|
};
|
||||||
|
|
||||||
|
$.fn.editableutils.inherit(DateTimeField, $.fn.editabletypes.datetime);
|
||||||
|
|
||||||
|
$.extend(DateTimeField.prototype, {
|
||||||
|
render: function () {
|
||||||
|
this.$input = this.$tpl.find('input');
|
||||||
|
this.setClass();
|
||||||
|
this.setAttr('placeholder');
|
||||||
|
|
||||||
|
this.$tpl.datetimepicker(this.options.datetimepicker);
|
||||||
|
|
||||||
|
//need to disable original event handlers
|
||||||
|
this.$input.off('focus keydown');
|
||||||
|
|
||||||
|
//update value of datepicker
|
||||||
|
this.$input.keyup($.proxy(function(){
|
||||||
|
this.$tpl.removeData('date');
|
||||||
|
this.$tpl.datetimepicker('update');
|
||||||
|
}, this));
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
|
value2input: function(value) {
|
||||||
|
this.$input.val(value ? this.dpg.formatDate(value, this.parsedViewFormat, this.options.datepicker.language) : '');
|
||||||
|
this.$tpl.datepicker('update');
|
||||||
|
},
|
||||||
|
|
||||||
|
input2value: function() {
|
||||||
|
return this.html2value(this.$input.val());
|
||||||
|
},
|
||||||
|
|
||||||
|
activate: function() {
|
||||||
|
$.fn.editabletypes.text.prototype.activate.call(this);
|
||||||
|
},
|
||||||
|
|
||||||
|
autosubmit: function() {
|
||||||
|
//reset autosubmit to empty
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
DateTimeField.defaults = $.extend({}, $.fn.editabletypes.datetime.defaults, {
|
||||||
|
/**
|
||||||
|
@property tpl
|
||||||
|
**/
|
||||||
|
tpl:'<div class="input-append date"><input type="text"/><span class="add-on"><i class="icon-th"></i></span></div>',
|
||||||
|
/**
|
||||||
|
@property inputclass
|
||||||
|
@default 'input-small'
|
||||||
|
**/
|
||||||
|
inputclass: 'input-small',
|
||||||
|
|
||||||
|
/* datetimepicker config */
|
||||||
|
datetimepicker:{
|
||||||
|
weekStart: 0,
|
||||||
|
startView: 2, // month
|
||||||
|
maxView: 4, // decade
|
||||||
|
minView: 0,
|
||||||
|
todayHighlight: false,
|
||||||
|
autoclose: true
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
$.fn.editabletypes.datetimefield = DateTimeField;
|
||||||
|
|
||||||
|
}(window.jQuery));
|
@ -104,6 +104,15 @@ define(function () {
|
|||||||
loadCss(require.toUrl("./bootstrap-datepicker/css/datepicker.css"));
|
loadCss(require.toUrl("./bootstrap-datepicker/css/datepicker.css"));
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
'inputs/datetime/datetime': {
|
||||||
|
deps: ['require',
|
||||||
|
'bootstrap/js/bootstrap',
|
||||||
|
'inputs/abstract',
|
||||||
|
'inputs/datetime/bootstrap-datetimepicker/js/bootstrap-datetimepicker'],
|
||||||
|
init: function(require) {
|
||||||
|
loadCss(require.toUrl("./bootstrap-datetimepicker/css/datetimepicker.css"));
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
//wysihtml5
|
//wysihtml5
|
||||||
// 'inputs-ext/wysihtml5/bootstrap-wysihtml5-0.0.2/bootstrap-wysihtml5-0.0.2.min': ['inputs-ext/wysihtml5/bootstrap-wysihtml5-0.0.2/wysihtml5-0.3.0.min'],
|
// 'inputs-ext/wysihtml5/bootstrap-wysihtml5-0.0.2/bootstrap-wysihtml5-0.0.2.min': ['inputs-ext/wysihtml5/bootstrap-wysihtml5-0.0.2/wysihtml5-0.3.0.min'],
|
||||||
@ -133,6 +142,9 @@ define(function () {
|
|||||||
//datefield
|
//datefield
|
||||||
'inputs/date/datefield': ['inputs/date/date'],
|
'inputs/date/datefield': ['inputs/date/date'],
|
||||||
|
|
||||||
|
//datetimefield
|
||||||
|
'inputs/datetime/datetimefield': ['inputs/datetime/datetime'],
|
||||||
|
|
||||||
/* ------------------------------
|
/* ------------------------------
|
||||||
jqueryui
|
jqueryui
|
||||||
------------------------------ */
|
------------------------------ */
|
||||||
@ -195,6 +207,7 @@ define(function () {
|
|||||||
if(f === 'bootstrap') {
|
if(f === 'bootstrap') {
|
||||||
//bootstrap
|
//bootstrap
|
||||||
shim['editable-form/editable-form'].deps.push('inputs/date/datefield');
|
shim['editable-form/editable-form'].deps.push('inputs/date/datefield');
|
||||||
|
shim['editable-form/editable-form'].deps.push('inputs/datetime/datetimefield');
|
||||||
shim['editable-form/editable-form'].deps.push('inputs-ext/wysihtml5/wysihtml5');
|
shim['editable-form/editable-form'].deps.push('inputs-ext/wysihtml5/wysihtml5');
|
||||||
shim['editable-form/editable-form'].deps.push('inputs/typeahead');
|
shim['editable-form/editable-form'].deps.push('inputs/typeahead');
|
||||||
shim['element/editable-element'].deps.push('editable-form/editable-form-bootstrap');
|
shim['element/editable-element'].deps.push('editable-form/editable-form-bootstrap');
|
||||||
|
Loading…
x
Reference in New Issue
Block a user