summaryrefslogtreecommitdiff
path: root/addons/web/static/src/js/fields/basic_fields.js
diff options
context:
space:
mode:
Diffstat (limited to 'addons/web/static/src/js/fields/basic_fields.js')
-rw-r--r--addons/web/static/src/js/fields/basic_fields.js49
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});
},
});