diff options
| author | Robot Odoo <xmo+roboto@odoo.com> | 2019-01-17 11:23:11 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2019-01-17 11:23:11 +0100 |
| commit | 188ca66dbce8794d0130a975cd7f808d49e4fc8f (patch) | |
| tree | df416ad29ec5257b1ee811ef70815985670b05ce /addons/web/static/src/js | |
| parent | 1bb6d739496754647f18e8b224ec9ed4d1d6170a (diff) | |
| parent | 958342bf165bb9b6982e2eaa49d0c8daec7bbb7a (diff) | |
[MERGE] project,hr_timesheet: simplify the user onboarding
This merge provides many little changes to improve the usability
and the onboarding of users in project and timesheet
applications.
This mostly contains labels renaming, restruration of views, ...
but some new mecanism appears like the "ghost kanban examples",
and improvements of the kanban examples modal.
Task-1893021
closes odoo/odoo#28461
Diffstat (limited to 'addons/web/static/src/js')
| -rw-r--r-- | addons/web/static/src/js/views/kanban/kanban_controller.js | 27 | ||||
| -rw-r--r-- | addons/web/static/src/js/views/kanban/kanban_renderer.js | 37 |
2 files changed, 48 insertions, 16 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 2383a0ac730..15c804f5a8e 100644 --- a/addons/web/static/src/js/views/kanban/kanban_controller.js +++ b/addons/web/static/src/js/views/kanban/kanban_controller.js @@ -33,6 +33,9 @@ var KanbanController = BasicController.extend({ column_toggle_fold: '_onToggleColumn', kanban_column_records_toggle_active: '_onToggleActiveRecords', }), + events: _.extend({}, BasicController.prototype.events, { + click: '_onClick', + }), /** * @override * @param {Object} params @@ -303,6 +306,23 @@ var KanbanController = BasicController.extend({ } }, /** + * Bounce the 'Create' button. + * + * @private + * @param {MouseEvent} ev + **/ + _onClick: function (ev) { + var state = this.model.get(this.handle, {raw: true}); + if (!state.count && this.buttons) { + var classesList = ['o_kanban_view', 'o_kanban_group', 'o_column_quick_create', 'o_view_nocontent_smiling_face']; + var $target = $(ev.target); + var hasClassList = _.map(classesList, function(klass){ return $target.hasClass(klass) }); + if (_.some(hasClassList)) { + this.$buttons.find('.o-kanban-button-new').odooBounce(); + } + } + }, + /** * @private * @param {OdooEvent} ev */ @@ -321,12 +341,7 @@ var KanbanController = BasicController.extend({ this.model .deleteRecords([column.db_id], relatedModelName) .done(function () { - if (column.isEmpty()) { - self.renderer.removeWidget(column); - self._updateButtons(); - } else { - self.reload(); - } + self.update({}, {reload: !column.isEmpty()}); }); }, /** diff --git a/addons/web/static/src/js/views/kanban/kanban_renderer.js b/addons/web/static/src/js/views/kanban/kanban_renderer.js index 316fb9114cd..51d75a167c7 100644 --- a/addons/web/static/src/js/views/kanban/kanban_renderer.js +++ b/addons/web/static/src/js/views/kanban/kanban_renderer.js @@ -167,15 +167,6 @@ var KanbanRenderer = BasicRenderer.extend({ this._toggleNoContentHelper(); }, /** - * Removes a widget (record if ungrouped, column if grouped) from the view. - * - * @param {Widget} widget the instance of the widget to remove - */ - removeWidget: function (widget) { - this.widgets.splice(this.widgets.indexOf(widget), 1); - widget.destroy(); - }, - /** * Updates a given column with its new state. * * @param {string} localID the column id @@ -276,6 +267,16 @@ var KanbanRenderer = BasicRenderer.extend({ } }, /** + * Render the Example Ghost Kanban card on the background + * + * @private + * @param {DocumentFragment} fragment + */ + _renderExampleBackground: function (fragment) { + var $background = $(qweb.render('KanbanView.ExamplesBackground')); + $background.appendTo(fragment); + }, + /** * Renders empty invisible divs in a document fragment. * * @private @@ -351,9 +352,9 @@ var KanbanRenderer = BasicRenderer.extend({ // Open it directly if there is no column yet if (!self.state.data.length) { self.quickCreate.toggleFold(); + self._renderExampleBackground(fragment); } }); - } } }, @@ -546,6 +547,7 @@ var KanbanRenderer = BasicRenderer.extend({ _onQuickCreateColumnUpdated: function (ev) { ev.stopPropagation(); this._toggleNoContentHelper(); + this._updateExampleBackground(); }, /** * @private @@ -596,6 +598,21 @@ var KanbanRenderer = BasicRenderer.extend({ _onStartQuickCreate: function () { this._toggleNoContentHelper(true); }, + /** + * Hide or display the background example: + * - displayed when quick create column is display and there is no column else + * - hidden otherwise + * + * @private + **/ + _updateExampleBackground: function () { + var $elem = this.$('.o_kanban_example_background_container'); + if (!this.state.data.length && !$elem.length) { + this._renderExampleBackground(this.$el); + } else { + $elem.remove(); + } + }, }); return KanbanRenderer; |
