diff --git a/addons/project/static/src/js/project_kanban.js b/addons/project/static/src/js/project_kanban.js
index f6c910428c4..8a96dff78d8 100644
--- a/addons/project/static/src/js/project_kanban.js
+++ b/addons/project/static/src/js/project_kanban.js
@@ -1,32 +1,63 @@
/** @odoo-module **/
import KanbanController from 'web.KanbanController';
+import KanbanRenderer from 'web.KanbanRenderer';
import KanbanView from 'web.KanbanView';
import KanbanColumn from 'web.KanbanColumn';
import viewRegistry from 'web.view_registry';
import KanbanRecord from 'web.KanbanRecord';
import { ProjectControlPanel } from '@project/js/project_control_panel';
-KanbanRecord.include({
- //--------------------------------------------------------------------------
- // Private
- //--------------------------------------------------------------------------
+// PROJECTS
+const ProjectProjectKanbanRecord = KanbanRecord.extend({
/**
* @override
* @private
*/
- // YTI TODO: Should be transformed into a extend and specific to project
_openRecord: function () {
- if (this.selectionMode !== true && this.modelName === 'project.project' &&
- this.$(".o_project_kanban_boxes a").length) {
- this.$('.o_project_kanban_boxes a').first().click();
+ const kanbanBoxesElement = this.el.querySelectorAll('.o_project_kanban_boxes a');
+ if (this.selectionMode !== true && kanbanBoxesElement.length) {
+ kanbanBoxesElement[0].click();
} else {
this._super.apply(this, arguments);
}
},
});
+const ProjectProjectKanbanRenderer = KanbanRenderer.extend({
+ config: _.extend({}, KanbanRenderer.prototype.config, {
+ KanbanRecord: ProjectProjectKanbanRecord,
+ }),
+});
+
+const ProjectProjectKanbanView = KanbanView.extend({
+ config: Object.assign({}, KanbanView.prototype.config, {
+ Renderer: ProjectProjectKanbanRenderer,
+ })
+});
+
+viewRegistry.add('project_project_kanban', ProjectProjectKanbanView);
+
+// TASKS
+
+const ProjectTaskKanbanColumn = KanbanColumn.extend({
+ /**
+ * @override
+ * @private
+ */
+ _onDeleteColumn: function (event) {
+ event.preventDefault();
+ this.trigger_up('kanban_column_delete_wizard');
+ },
+});
+
+const ProjectTaskKanbanRenderer = KanbanRenderer.extend({
+ config: Object.assign({}, KanbanRenderer.prototype.config, {
+ KanbanColumn: ProjectTaskKanbanColumn,
+ }),
+});
+
export const ProjectKanbanController = KanbanController.extend({
custom_events: Object.assign({}, KanbanController.prototype.custom_events, {
'kanban_column_delete_wizard': '_onDeleteColumnWizard',
@@ -45,25 +76,15 @@ export const ProjectKanbanController = KanbanController.extend({
}).then(function (res) {
self.do_action(res);
});
- }
+ },
});
const ProjectKanbanView = KanbanView.extend({
- config: Object.assign({}, KanbanView.prototype.config, {
+ config: _.extend({}, KanbanView.prototype.config, {
Controller: ProjectKanbanController,
+ Renderer: ProjectTaskKanbanRenderer,
ControlPanel: ProjectControlPanel,
}),
});
-KanbanColumn.include({
- _onDeleteColumn: function (event) {
- event.preventDefault();
- if (this.modelName === 'project.task') {
- this.trigger_up('kanban_column_delete_wizard');
- return;
- }
- this._super.apply(this, arguments);
- }
-});
-
-viewRegistry.add('project_kanban', ProjectKanbanView);
+viewRegistry.add('project_task_kanban', ProjectKanbanView);
diff --git a/addons/project/views/project_views.xml b/addons/project/views/project_views.xml
index 2257eecc413..2eb7a975964 100644
--- a/addons/project/views/project_views.xml
+++ b/addons/project/views/project_views.xml
@@ -543,7 +543,7 @@
project.project.kanban
project.project
-
+
@@ -918,7 +918,7 @@
project.task.kanban
project.task
-
+