diff options
| author | David Beguin <dbe@odoo.com> | 2018-11-26 13:51:41 +0000 |
|---|---|---|
| committer | David Beguin <dbe@odoo.com> | 2019-01-23 13:28:30 +0000 |
| commit | d2ed4ba93d0a6c2e9e6982acb45b761f9f89e7a9 (patch) | |
| tree | af0741f15eea33b669e9ff69ce6b5a5ae16479e9 /addons/survey/static/src | |
| parent | f2e2b6260b3436cf894a9ea8343fb888844ed632 (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.js | 44 |
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', |
