diff options
Diffstat (limited to 'addons/web/static/src/js/fields/basic_fields.js')
| -rw-r--r-- | addons/web/static/src/js/fields/basic_fields.js | 49 |
1 files changed, 46 insertions, 3 deletions
diff --git a/addons/web/static/src/js/fields/basic_fields.js b/addons/web/static/src/js/fields/basic_fields.js index af5d9bcf233..69fd7c5b791 100644 --- a/addons/web/static/src/js/fields/basic_fields.js +++ b/addons/web/static/src/js/fields/basic_fields.js @@ -267,8 +267,9 @@ var FieldDate = InputField.extend({ if (this.mode === 'edit') { this.datewidget = this._makeDatePicker(); this.datewidget.on('datetime_changed', this, function () { - if (!this.datewidget.get_value().isSame(this.value)) { - this._setValue(this.datewidget.get_value()); + var value = this._getDateWidgetValue(); + if (!value.isSame(this.value)) { + this._setValue(value); } }); def = this.datewidget.appendTo('<div>').done(function () { @@ -286,6 +287,15 @@ var FieldDate = InputField.extend({ //-------------------------------------------------------------------------- /** + * return the datepicker value + * + * @private + */ + _getDateWidgetValue: function () { + return this.datewidget.get_value(); + }, + + /** * Instantiates a new DateWidget datepicker. * * @private @@ -315,13 +325,46 @@ var FieldDateTime = FieldDate.extend({ //-------------------------------------------------------------------------- /** + * return the datepicker value + * + * @private + */ + _getDateWidgetValue: function () { + return this.datewidget.get_value().add(-this.getSession().tzOffset, 'minutes'); + }, + + /** * Instantiates a new DateTimeWidget datepicker rather than DateWidget. * * @override * @private */ _makeDatePicker: function () { - return new datepicker.DateTimeWidget(this, {defaultDate: this.value}); + var value = this.value && this.value.clone().add(this.getSession().tzOffset, 'minutes'); + return new datepicker.DateTimeWidget(this, {defaultDate: value}); + }, + + /** + * Set the datepicker to the right value rather than the default one. + * + * @override + * @private + */ + _renderEdit: function () { + var value = this.value && this.value.clone().add(this.getSession().tzOffset, 'minutes'); + this.datewidget.set_value(value); + this.$input = this.datewidget.$input; + }, + + /** + * FieldDateTime overrides _formatValue to use the session timezone + * + * @override + * @private + * @param {Moment} value + */ + _formatValue: function (value) { + return field_utils.format.datetime(value, {timezone: true}); }, }); |
