diff options
| author | Christophe Simonis <chs@odoo.com> | 2019-08-21 10:10:11 +0200 |
|---|---|---|
| committer | Christophe Simonis <chs@odoo.com> | 2019-08-21 10:10:11 +0200 |
| commit | 3faea8fbf810224ad4e03cfa1dc36f186800c501 (patch) | |
| tree | 5e05c40d62dacc5951c70b3686f30a7bbb86f399 /addons/web/static/src/js/views | |
| parent | cc2d78beeaf61fa0b8c9543196d1b4fce5cd5da6 (diff) | |
| parent | f26de445e5579913e27ea6a630bcee6d40eefc7d (diff) | |
[MERGE] forward port branch saas-12.4 up to f26de445e55
Diffstat (limited to 'addons/web/static/src/js/views')
3 files changed, 46 insertions, 18 deletions
diff --git a/addons/web/static/src/js/views/basic/basic_model.js b/addons/web/static/src/js/views/basic/basic_model.js index 13ea270870f..289e8a3a0c2 100644 --- a/addons/web/static/src/js/views/basic/basic_model.js +++ b/addons/web/static/src/js/views/basic/basic_model.js @@ -1434,9 +1434,9 @@ var BasicModel = AbstractModel.extend({ // apply changes to local data for (var fieldName in changes) { field = record.fields[fieldName]; - if (field.type === 'one2many' || field.type === 'many2many') { + if (field && (field.type === 'one2many' || field.type === 'many2many')) { defs.push(this._applyX2ManyChange(record, fieldName, changes[fieldName], options)); - } else if (field.type === 'many2one' || field.type === 'reference') { + } else if (field && (field.type === 'many2one' || field.type === 'reference')) { defs.push(this._applyX2OneChange(record, fieldName, changes[fieldName])); } else { record._changes[fieldName] = changes[fieldName]; @@ -1451,7 +1451,7 @@ var BasicModel = AbstractModel.extend({ var onChangeFields = []; // the fields that have changed and that have an on_change for (var fieldName in changes) { field = record.fields[fieldName]; - if (field.onChange) { + if (field && field.onChange) { var isX2Many = field.type === 'one2many' || field.type === 'many2many'; if (!isX2Many || (self._isX2ManyValid(record._changes[fieldName] || record.data[fieldName]))) { onChangeFields.push(fieldName); diff --git a/addons/web/static/src/js/views/kanban/kanban_renderer_mobile.js b/addons/web/static/src/js/views/kanban/kanban_renderer_mobile.js index eae16968833..dfc86042aca 100644 --- a/addons/web/static/src/js/views/kanban/kanban_renderer_mobile.js +++ b/addons/web/static/src/js/views/kanban/kanban_renderer_mobile.js @@ -91,10 +91,15 @@ KanbanRenderer.include({ var index = _.findIndex(this.widgets, {db_id: localID}); var $column = this.widgets[index].$el; var left = $column.css('left'); + var right = $column.css('right'); var scrollTop = $column.scrollTop(); return this._super.apply(this, arguments).then(function () { $column = self.widgets[index].$el; - $column.css({left: left}); + if (_t.database.parameters.direction === 'rtl') { + $column.css({right: right}); + } else { + $column.css({left: left}); + } $column.scrollTop(scrollTop); // required when clicking on 'Load More' self._enableSwipe(); }); @@ -115,19 +120,40 @@ KanbanRenderer.include({ var self = this; var moveToIndex = this.activeColumnIndex; var updateFunc = animate ? 'animate' : 'css'; + var rtl = _t.database.parameters.direction === 'rtl'; _.each(this.widgets, function (column, index) { var columnID = column.id || column.db_id; var $column = self.$('.o_kanban_group[data-id="' + columnID + '"]'); if (index === moveToIndex - 1) { - $column[updateFunc]({left: '-100%'}); + if (rtl) { + $column[updateFunc]({right: '-100%'}); + } else { + $column[updateFunc]({left: '-100%'}); + } } else if (index === moveToIndex + 1) { - $column[updateFunc]({left: '100%'}); + if (rtl) { + $column[updateFunc]({right: '100%'}); + } else { + $column[updateFunc]({left: '100%'}); + } } else if (index === moveToIndex) { - $column[updateFunc]({left: '0%'}); + if (rtl) { + $column[updateFunc]({right: '0%'}); + } else { + $column[updateFunc]({left: '0%'}); + } } else if (index < moveToIndex) { - $column.css({left: '-100%'}); + if (rtl) { + $column.css({right: '-100%'}); + } else { + $column.css({left: '-100%'}); + } } else if (index > moveToIndex) { - $column.css({left: '100%'}); + if (rtl) { + $column.css({right: '100%'}); + } else { + $column.css({left: '100%'}); + } } }); } @@ -184,6 +210,7 @@ KanbanRenderer.include({ } } // Apply the scroll x on the tabs + // XXX in case of RTL, should we use scrollRight? this.$('.o_kanban_mobile_tabs').scrollLeft(scrollToLeft); } }, @@ -213,16 +240,17 @@ KanbanRenderer.include({ */ _enableSwipe: function () { var self = this; + var step = _t.database.parameters.direction === 'rtl' ? -1 : 1; this.$el.swipe({ excludedElements: ".o_kanban_mobile_tabs", swipeLeft: function () { - var moveToIndex = self.activeColumnIndex + 1; + var moveToIndex = self.activeColumnIndex + step; if (moveToIndex < self.widgets.length) { self._moveToGroup(moveToIndex, self.ANIMATE); } }, swipeRight: function () { - var moveToIndex = self.activeColumnIndex - 1; + var moveToIndex = self.activeColumnIndex - step; if (moveToIndex > -1) { self._moveToGroup(moveToIndex, self.ANIMATE); } diff --git a/addons/web/static/src/js/views/list/list_editable_renderer.js b/addons/web/static/src/js/views/list/list_editable_renderer.js index df0ad782b60..e4dd682ed51 100644 --- a/addons/web/static/src/js/views/list/list_editable_renderer.js +++ b/addons/web/static/src/js/views/list/list_editable_renderer.js @@ -516,16 +516,16 @@ ListRenderer.include({ switch (field.type) { case 'binary': return 1; case 'boolean': return '40px'; - case 'char': return 1; - case 'date': return '100px'; - case 'datetime': return '150px'; - case 'float': return '100px'; + case 'char': return 2; + case 'date': return '92px'; + case 'datetime': return '146px'; + case 'float': return '92px'; case 'html': return 3; - case 'integer': return '80px'; + case 'integer': return '74px'; case 'many2many': return 2; case 'many2one': return 2; - case 'monetary': return 1.2; - case 'one2many': return 2.5; + case 'monetary': return '104px'; + case 'one2many': return 2; case 'reference': return 1.5; case 'selection': return 1.5; case 'text': return 2.5; |
