summaryrefslogtreecommitdiff
path: root/addons/web/static/src/js
diff options
context:
space:
mode:
authorAaron Bohy <aab@odoo.com>2018-10-17 10:07:41 +0200
committerAaron Bohy <aab@odoo.com>2018-10-19 13:15:31 +0200
commitd82a9077289ea21bf10717d829e0853418cf09eb (patch)
tree2596e7289655f253bbefc0315af562a8358f427b /addons/web/static/src/js
parent120709f807bef910ecf29d058a603da4dbcd8d82 (diff)
[FIX] web: kanban quick create when grouped by selection
Rev. 42e1efded5 aimed to disable the quick create feature when grouped by date(time) fields, by only enabling it for char, boolean and many2one fields. However, the selection case is quite important and must be handled as well. This is what this rev. does. Task 1878254
Diffstat (limited to 'addons/web/static/src/js')
-rw-r--r--addons/web/static/src/js/views/abstract_view.js22
-rw-r--r--addons/web/static/src/js/views/kanban/kanban_column.js3
-rw-r--r--addons/web/static/src/js/views/kanban/kanban_controller.js3
-rw-r--r--addons/web/static/src/js/views/kanban/kanban_model.js7
4 files changed, 28 insertions, 7 deletions
diff --git a/addons/web/static/src/js/views/abstract_view.js b/addons/web/static/src/js/views/abstract_view.js
index a8e4ebbd8f0..9b6e5a5d192 100644
--- a/addons/web/static/src/js/views/abstract_view.js
+++ b/addons/web/static/src/js/views/abstract_view.js
@@ -283,6 +283,26 @@ odoo.define('web.viewUtils', function () {
var utils = {
/**
+ * Returns the value of a group dataPoint, i.e. the value of the groupBy
+ * field for the records in that group.
+ *
+ * @param {Object} group dataPoint of type list, corresponding to a group
+ * @param {string} groupByField the name of the groupBy field
+ * @returns {string | integer | false}
+ */
+ getGroupValue: function (group, groupByField) {
+ var groupedByField = group.fields[groupByField];
+ switch (groupedByField.type) {
+ case 'many2one':
+ return group.res_id || false;
+ case 'selection':
+ var descriptor = _.findWhere(groupedByField.selection, group.value);
+ return descriptor && descriptor[0];
+ default:
+ return group.value;
+ }
+ },
+ /**
* States whether or not the quick create feature is available for the given
* datapoint, depending on its groupBy field.
*
@@ -294,7 +314,7 @@ var utils = {
if (!groupByField) {
return false;
}
- var availableTypes = ['char', 'boolean', 'many2one'];
+ var availableTypes = ['char', 'boolean', 'many2one', 'selection'];
if (!_.contains(availableTypes, list.fields[groupByField].type)) {
return false;
}
diff --git a/addons/web/static/src/js/views/kanban/kanban_column.js b/addons/web/static/src/js/views/kanban/kanban_column.js
index 15f37551188..8cc33aa32d0 100644
--- a/addons/web/static/src/js/views/kanban/kanban_column.js
+++ b/addons/web/static/src/js/views/kanban/kanban_column.js
@@ -7,6 +7,7 @@ var Dialog = require('web.Dialog');
var KanbanRecord = require('web.KanbanRecord');
var RecordQuickCreate = require('web.kanban_record_quick_create');
var view_dialogs = require('web.view_dialogs');
+var viewUtils = require('web.viewUtils');
var Widget = require('web.Widget');
var KanbanColumnProgressBar = require('web.KanbanColumnProgressBar');
@@ -194,7 +195,7 @@ var KanbanColumn = Widget.extend({
this.trigger_up('close_quick_create'); // close other quick create widgets
this.trigger_up('start_quick_create');
var context = this.data.getContext();
- context['default_' + this.groupedBy] = this.grouped_by_m2o ? this.id : this.data.value;
+ context['default_' + this.groupedBy] = viewUtils.getGroupValue(this.data, this.groupedBy);
this.quickCreateWidget = new RecordQuickCreate(this, {
context: context,
formViewRef: this.quickCreateView,
diff --git a/addons/web/static/src/js/views/kanban/kanban_controller.js b/addons/web/static/src/js/views/kanban/kanban_controller.js
index 025cbc79247..7f44dceb2ef 100644
--- a/addons/web/static/src/js/views/kanban/kanban_controller.js
+++ b/addons/web/static/src/js/views/kanban/kanban_controller.js
@@ -389,8 +389,7 @@ var KanbanController = BasicController.extend({
var context = columnState.getContext();
var state = self.model.get(self.handle, {raw: true});
var groupedBy = state.groupedBy[0];
- var groupedByM2O = state.fields[groupedBy].type === 'many2one';
- context['default_' + groupedBy] = groupedByM2O ? columnState.res_id : columnState.value;
+ context['default_' + groupedBy] = viewUtils.getGroupValue(columnState, groupedBy);
new view_dialogs.FormViewDialog(self, {
res_model: state.model,
context: _.extend({default_name: values.name || values.display_name}, context),
diff --git a/addons/web/static/src/js/views/kanban/kanban_model.js b/addons/web/static/src/js/views/kanban/kanban_model.js
index b71a11f08ec..5dfa0b8a75d 100644
--- a/addons/web/static/src/js/views/kanban/kanban_model.js
+++ b/addons/web/static/src/js/views/kanban/kanban_model.js
@@ -7,6 +7,7 @@ odoo.define('web.KanbanModel', function (require) {
*/
var BasicModel = require('web.BasicModel');
+var viewUtils = require('web.viewUtils');
var KanbanModel = BasicModel.extend({
@@ -105,8 +106,8 @@ var KanbanModel = BasicModel.extend({
var group = this.localData[groupID];
var context = this._getContext(group);
var parent = this.localData[group.parentID];
- var groupedByM2O = parent.fields[parent.groupedBy].type === 'many2one';
- context['default_' + parent.groupedBy[0]] = groupedByM2O ? group.res_id : group.value;
+ var groupedBy = parent.groupedBy;
+ context['default_' + groupedBy] = viewUtils.getGroupValue(group, groupedBy);
var def;
if (Object.keys(values).length === 1 && 'display_name' in values) {
// only 'display_name is given, perform a 'name_create'
@@ -133,7 +134,7 @@ var KanbanModel = BasicModel.extend({
},
/**
* Add the following (kanban specific) keys when performing a `get`:
- *
+ *
* - tooltipData
* - progressBarValues
* - isGroupedByM2ONoColumn