summaryrefslogtreecommitdiff
path: root/addons/survey/static/src
diff options
context:
space:
mode:
authorDavid Beguin <dbe@odoo.com>2018-11-26 13:51:41 +0000
committerDavid Beguin <dbe@odoo.com>2019-01-23 13:28:30 +0000
commitd2ed4ba93d0a6c2e9e6982acb45b761f9f89e7a9 (patch)
treeaf0741f15eea33b669e9ff69ce6b5a5ae16479e9 /addons/survey/static/src
parentf2e2b6260b3436cf894a9ea8343fb888844ed632 (diff)
[IMP] survey : add datetime question type
to be able to choose between asking for a date or a date with time, a datetime question type is now added. Task ID : 1911291 Closes PR #29054
Diffstat (limited to 'addons/survey/static/src')
-rw-r--r--addons/survey/static/src/js/survey.js44
1 files changed, 37 insertions, 7 deletions
diff --git a/addons/survey/static/src/js/survey.js b/addons/survey/static/src/js/survey.js
index 2b9094e37b1..9cae86adefd 100644
--- a/addons/survey/static/src/js/survey.js
+++ b/addons/survey/static/src/js/survey.js
@@ -79,10 +79,15 @@ if(!the_form.length) {
// prefill of text/number/date boxes
var input = the_form.find(".form-control[name=" + key + "]");
- if (input.attr('date')) {
+ if (input.hasClass('datetimepicker-input')) {
// display dates in user timezone
var moment_date = field_utils.parse.date(value[0]);
- value = field_utils.format.date(moment_date, null, {timezone: true});
+ if ($(input).closest('.input-group.date').data('questiontype') === 'datetime') {
+ value = field_utils.format.datetime(moment_date, null, {timezone: true});
+ }
+ else {
+ value = field_utils.format.date(moment_date, null, {timezone: true});
+ }
}
input.val(value);
@@ -133,7 +138,12 @@ if(!the_form.length) {
var moment_date = moment(el.value);
if (moment_date) {
moment_date.toJSON = function () {
- return this.clone().locale('en').format('YYYY-MM-DD');
+ if ($(el).closest('.input-group.date').data('questiontype') === 'datetime') {
+ return this.clone().utc().format('YYYY-MM-DD hh:mm:ss');
+ }
+ else {
+ return this.clone().format('YYYY-MM-DD');
+ }
};
}
var field_obj = _.findWhere(formData, {'name': el.name});
@@ -177,13 +187,33 @@ if(!the_form.length) {
// frontend does not load moment locale at all.
// so wait until DOM ready with locale then init datetimepicker
load_locale().then(function(){
- _.each($('.input-group.date'), function(date_field){
- var minDate = $(date_field).data('mindate') || moment({ y: 1900 });
- var maxDate = $(date_field).data('maxdate') || moment().add(200, "y");
+ _.each($('.input-group.date'), function(date_field){
+ var disabledDates = []
+ if ($(date_field).data('mindate')) {
+ var minDate = field_utils.format.datetime(moment($(date_field).data('mindate')), null, {timezone: true});
+ }
+ if ($(date_field).data('maxdate')) {
+ var maxDate = field_utils.format.datetime(moment($(date_field).data('maxdate')), null, {timezone: true});
+ }
+ else {
+ var minDate = $(date_field).data('mindate') || moment({ y: 1900 });
+ var maxDate = $(date_field).data('maxdate') || moment().add(200, "y");
+ }
+ var datetimepickerFormat = time.getLangDateFormat()
+ if ($(date_field).data('questiontype') === 'datetime') {
+ datetimepickerFormat = time.getLangDatetimeFormat()
+ }
+ else{
+ maxDate = moment(maxDate).add(1, "d");
+ disabledDates = [maxDate]
+ }
$('#' + date_field.id).datetimepicker({
- format : time.getLangDateFormat(),
+ format : datetimepickerFormat,
minDate: minDate,
maxDate: maxDate,
+ disabledDates: disabledDates,
+ useCurrent: false,
+ viewDate: moment(new Date()).hours(0).minutes(0).seconds(0).milliseconds(0),
calendarWeeks: true,
icons: {
time: 'fa fa-clock-o',