diff options
| author | Aaron Bohy <aab@odoo.com> | 2018-01-25 08:52:54 +0100 |
|---|---|---|
| committer | Aaron Bohy <aab@odoo.com> | 2018-01-26 19:26:03 +0100 |
| commit | 563c31fe4947f84898e4a4213bde6af5fabed3da (patch) | |
| tree | 024d71cd98ee22c78cf4a807b74d224a859353a6 /addons/web/static/src | |
| parent | 6ea347a4907fdc276951b319845e28be9758446f (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.js | 36 |
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); } }, |
