summaryrefslogtreecommitdiff
path: root/addons/web/static/src
diff options
context:
space:
mode:
authorAaron Bohy <aab@odoo.com>2018-01-25 08:52:54 +0100
committerAaron Bohy <aab@odoo.com>2018-01-26 19:26:03 +0100
commit563c31fe4947f84898e4a4213bde6af5fabed3da (patch)
tree024d71cd98ee22c78cf4a807b74d224a859353a6 /addons/web/static/src
parent6ea347a4907fdc276951b319845e28be9758446f (diff)
[IMP] web: Kanban: hide Create button if no column yet
Onboarding process: the user has to create a column first. Part of task #38740
Diffstat (limited to 'addons/web/static/src')
-rw-r--r--addons/web/static/src/js/views/kanban/kanban_controller.js36
1 files changed, 16 insertions, 20 deletions
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 ca2999b05b0..3fe6046ea82 100644
--- a/addons/web/static/src/js/views/kanban/kanban_controller.js
+++ b/addons/web/static/src/js/views/kanban/kanban_controller.js
@@ -39,8 +39,6 @@ var KanbanController = BasicController.extend({
this.on_create = params.on_create;
this.hasButtons = params.hasButtons;
-
- this.createColumnEnabled = this._isCreateColumnEnabled();
},
//--------------------------------------------------------------------------
@@ -58,15 +56,6 @@ var KanbanController = BasicController.extend({
this.$buttons.appendTo($node);
}
},
- /**
- * Override update method to recompute createColumnEnabled.
- *
- * @returns {Deferred}
- */
- update: function () {
- this.createColumnEnabled = this._isCreateColumnEnabled();
- return this._super.apply(this, arguments);
- },
//--------------------------------------------------------------------------
// Private
@@ -92,18 +81,18 @@ var KanbanController = BasicController.extend({
* m2o field and group_create action enabled.
*
* @private
+ * @param {Object} state the current state
* @returns {boolean}
*/
- _isCreateColumnEnabled: function () {
+ _isCreateColumnEnabled: function (state) {
var groupCreate = this.is_action_enabled('group_create');
if (!groupCreate) {
// pre-return to avoid a lot of the following processing
return false;
}
- var state = this.model.get(this.handle, {raw: true});
var groupByField = state.fields[state.groupedBy[0]];
var groupedByM2o = groupByField && (groupByField.type === 'many2one');
- return groupedByM2o;
+ return !!groupedByM2o;
},
/**
* This method calls the server to ask for a resequence. Note that this
@@ -122,6 +111,16 @@ var KanbanController = BasicController.extend({
});
},
/**
+ * Overrides to update the control panel buttons when the state is updated.
+ *
+ * @override
+ * @private
+ */
+ _update: function () {
+ this._updateButtons();
+ return this._super.apply(this, arguments);
+ },
+ /**
* In grouped mode, set 'Create' button as btn-default if there is no column
* (except if we can't create new columns)
*
@@ -130,12 +129,9 @@ var KanbanController = BasicController.extend({
*/
_updateButtons: function () {
if (this.$buttons) {
- var data = this.model.get(this.handle, {raw: true});
- var grouped = data.groupedBy.length;
- var createMuted = grouped && data.data.length === 0 && this.createColumnEnabled;
- this.$buttons.find('.o-kanban-button-new')
- .toggleClass('btn-primary', !createMuted)
- .toggleClass('btn-default', createMuted);
+ var state = this.model.get(this.handle, {raw: true});
+ var createHidden = state.data.length === 0 && this._isCreateColumnEnabled(state);
+ this.$buttons.find('.o-kanban-button-new').toggleClass('o_hidden', createHidden);
}
},