summaryrefslogtreecommitdiff
path: root/addons/project/static/src/js/project_kanban.js
diff options
context:
space:
mode:
authorstephanchrst <stephanchrst@gmail.com>2022-05-10 21:51:50 +0700
committerstephanchrst <stephanchrst@gmail.com>2022-05-10 21:51:50 +0700
commit3751379f1e9a4c215fb6eb898b4ccc67659b9ace (patch)
treea44932296ef4a9b71d5f010906253d8c53727726 /addons/project/static/src/js/project_kanban.js
parent0a15094050bfde69a06d6eff798e9a8ddf2b8c21 (diff)
initial commit 2
Diffstat (limited to 'addons/project/static/src/js/project_kanban.js')
-rw-r--r--addons/project/static/src/js/project_kanban.js71
1 files changed, 71 insertions, 0 deletions
diff --git a/addons/project/static/src/js/project_kanban.js b/addons/project/static/src/js/project_kanban.js
new file mode 100644
index 00000000..41aa7e7b
--- /dev/null
+++ b/addons/project/static/src/js/project_kanban.js
@@ -0,0 +1,71 @@
+odoo.define('project.project_kanban', function (require) {
+'use strict';
+
+var KanbanController = require('web.KanbanController');
+var KanbanView = require('web.KanbanView');
+var KanbanColumn = require('web.KanbanColumn');
+var view_registry = require('web.view_registry');
+var KanbanRecord = require('web.KanbanRecord');
+
+KanbanRecord.include({
+ //--------------------------------------------------------------------------
+ // Private
+ //--------------------------------------------------------------------------
+
+ /**
+ * @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();
+ } else {
+ this._super.apply(this, arguments);
+ }
+ },
+});
+
+var ProjectKanbanController = KanbanController.extend({
+ custom_events: _.extend({}, KanbanController.prototype.custom_events, {
+ 'kanban_column_delete_wizard': '_onDeleteColumnWizard',
+ }),
+
+ _onDeleteColumnWizard: function (ev) {
+ ev.stopPropagation();
+ const self = this;
+ const column_id = ev.target.id;
+ var state = this.model.get(this.handle, {raw: true});
+ this._rpc({
+ model: 'project.task.type',
+ method: 'unlink_wizard',
+ args: [column_id],
+ context: state.getContext(),
+ }).then(function (res) {
+ self.do_action(res);
+ });
+ }
+});
+
+var ProjectKanbanView = KanbanView.extend({
+ config: _.extend({}, KanbanView.prototype.config, {
+ Controller: ProjectKanbanController
+ }),
+});
+
+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);
+ }
+});
+
+view_registry.add('project_kanban', ProjectKanbanView);
+
+return ProjectKanbanController;
+});