summaryrefslogtreecommitdiff
path: root/addons
diff options
context:
space:
mode:
authorKhoi Nguyen <bng@odoo.com>2017-07-19 16:20:49 +0200
committerKhoi Nguyen <bng@odoo.com>2017-07-20 09:14:46 +0200
commit104dfe3c07d36a6487f045f31d0999cc429cb5bb (patch)
treebf68fc8439183bd26d450b935e492494f5f5c3b3 /addons
parent6fa9ea14faf14cac5ad7962f3526c9b7b15e8da3 (diff)
[FIX] web: don't fold quickcreate after adding a column in Kanban view
This commit aims to replicate saas-15 behaviour when adding columns in a Kanban view by not folding the column quick create widget when creating a new column, thereby allowing users to add multiple columns in one go.
Diffstat (limited to 'addons')
-rw-r--r--addons/web/static/src/js/views/kanban/kanban_controller.js5
-rw-r--r--addons/web/static/src/js/views/kanban/kanban_quick_create.js30
-rw-r--r--addons/web/static/src/js/views/kanban/kanban_renderer.js10
-rw-r--r--addons/web/static/tests/views/kanban_tests.js29
4 files changed, 57 insertions, 17 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 b5c60fe9ab3..2592e3d96ec 100644
--- a/addons/web/static/src/js/views/kanban/kanban_controller.js
+++ b/addons/web/static/src/js/views/kanban/kanban_controller.js
@@ -164,9 +164,10 @@ var KanbanController = BasicController.extend({
_onAddColumn: function (event) {
var self = this;
this.model.createGroup(event.data.value, this.handle).then(function () {
- self.update({}, {reload: false});
+ return self.update({}, {reload: false});
+ }).then(function () {
self._updateButtons();
- self.trigger_up('scrollTo', {selector: '.o_column_quick_create'});
+ self.renderer.quickCreateToggleFold();
});
},
/**
diff --git a/addons/web/static/src/js/views/kanban/kanban_quick_create.js b/addons/web/static/src/js/views/kanban/kanban_quick_create.js
index a87ac76d53f..4761255f7a3 100644
--- a/addons/web/static/src/js/views/kanban/kanban_quick_create.js
+++ b/addons/web/static/src/js/views/kanban/kanban_quick_create.js
@@ -159,7 +159,7 @@ var RecordQuickCreate = AbstractQuickCreate.extend({
var ColumnQuickCreate = AbstractQuickCreate.extend({
template: 'KanbanView.ColumnQuickCreate',
events: _.extend({}, AbstractQuickCreate.prototype.events, {
- 'click': '_onClick',
+ 'click': 'toggleFold',
'click input': '_onInputClicked',
'focusout': '_onFocusout',
}),
@@ -181,6 +181,22 @@ var ColumnQuickCreate = AbstractQuickCreate.extend({
},
//--------------------------------------------------------------------------
+ // Public
+ //--------------------------------------------------------------------------
+
+ /**
+ * Toggle fold/unfold the Column quick create widget
+ */
+ toggleFold: function () {
+ this.folded = !this.folded;
+ this._update();
+ if (!this.folded) {
+ this.$input.focus();
+ this.trigger_up('scrollTo', {selector: '.o_column_quick_create'});
+ }
+ },
+
+ //--------------------------------------------------------------------------
// Private
//--------------------------------------------------------------------------
@@ -210,18 +226,6 @@ var ColumnQuickCreate = AbstractQuickCreate.extend({
/**
* @private
- * @param {MouseEvent} event
- */
- _onClick: function () {
- this.folded = !this.folded;
- this._update();
- if (!this.folded) {
- this.$input.focus();
- this.trigger_up('scrollTo', {selector: '.o_column_quick_create'});
- }
- },
- /**
- * @private
*/
_onFocusout: function () {
var hasFocus = this.$(':focus').length > 0;
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 87275260b01..ea2f0270017 100644
--- a/addons/web/static/src/js/views/kanban/kanban_renderer.js
+++ b/addons/web/static/src/js/views/kanban/kanban_renderer.js
@@ -113,6 +113,12 @@ var KanbanRenderer = BasicRenderer.extend({
this.widgets[0].addQuickCreate();
},
/**
+ * Toggle fold/unfold the Column quick create widget
+ */
+ quickCreateToggleFold: function () {
+ this.quickCreate.toggleFold();
+ },
+ /**
* Removes a widget (record if ungrouped, column if grouped) from the view.
*
* @param {Widget} widget the instance of the widget to remove
@@ -244,8 +250,8 @@ var KanbanRenderer = BasicRenderer.extend({
// Enable column quickcreate
if (this.columnOptions.group_creatable) {
- var quickCreate = new ColumnQuickCreate(this);
- quickCreate.appendTo(fragment);
+ this.quickCreate = new ColumnQuickCreate(this);
+ this.quickCreate.appendTo(fragment);
}
}
diff --git a/addons/web/static/tests/views/kanban_tests.js b/addons/web/static/tests/views/kanban_tests.js
index f3a653113ec..7aac83f26f8 100644
--- a/addons/web/static/tests/views/kanban_tests.js
+++ b/addons/web/static/tests/views/kanban_tests.js
@@ -1614,6 +1614,35 @@ QUnit.module('Views', {
"column should contain 1 records");
kanban.destroy();
});
+
+ QUnit.test('don\'t fold column quick create after creation', function (assert) {
+ assert.expect(2);
+
+ var kanban = createView({
+ View: KanbanView,
+ model: 'partner',
+ data: this.data,
+ arch: '<kanban on_create="quick_create">' +
+ '<field name="product_id"/>' +
+ '<templates><t t-name="kanban-box">' +
+ '<div><field name="foo"/></div>' +
+ '</t></templates>' +
+ '</kanban>',
+ groupBy: ['product_id'],
+ });
+
+ // add a new column
+ kanban.$('.o_kanban_group:first .o_kanban_quick_add').click();
+ var $quickCreate = kanban.$('.o_kanban_quick_create');
+ $quickCreate.find('input').val('new partner');
+ $quickCreate.find('button.o_kanban_add').click();
+ assert.strictEqual(this.data.partner.records.length, 5,
+ "should have created a 'new partner' column");
+
+ assert.strictEqual(kanban.$('.o_kanban_add:visible').length, 1,
+ "the add button should still be visible");
+ kanban.destroy();
+ });
});
});