[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.
This commit is contained in:
Khoi Nguyen
2017-07-20 09:14:46 +02:00
parent 6fa9ea14fa
commit 104dfe3c07
4 changed files with 57 additions and 17 deletions
@@ -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();
});
},
/**
@@ -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',
}),
@@ -180,6 +180,22 @@ var ColumnQuickCreate = AbstractQuickCreate.extend({
return this._super.apply(this, arguments);
},
//--------------------------------------------------------------------------
// 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
//--------------------------------------------------------------------------
@@ -208,18 +224,6 @@ var ColumnQuickCreate = AbstractQuickCreate.extend({
// Handlers
//--------------------------------------------------------------------------
/**
* @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
*/
@@ -112,6 +112,12 @@ var KanbanRenderer = BasicRenderer.extend({
addQuickCreate: function () {
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.
*
@@ -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);
}
}
@@ -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();
});
});
});