diff options
author | Frederic Guillot <fred@kanboard.net> | 2016-08-28 22:30:48 -0400 |
---|---|---|
committer | Frederic Guillot <fred@kanboard.net> | 2016-08-28 22:30:48 -0400 |
commit | 08bdb708e7698c21b0e6fc9f21d19996fc3d593d (patch) | |
tree | b7ab229dfd1568bb9435e40b20c77aa783eefcc2 /assets/js/components | |
parent | b51c693cda1cfbda115e315de58b15c0ef275972 (diff) |
Add the possibility to move tasks without drag and drop
Diffstat (limited to 'assets/js/components')
-rw-r--r-- | assets/js/components/task-move-position.js | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/assets/js/components/task-move-position.js b/assets/js/components/task-move-position.js new file mode 100644 index 00000000..e1f1a059 --- /dev/null +++ b/assets/js/components/task-move-position.js @@ -0,0 +1,70 @@ +Vue.component('task-move-position', { + props: ['board', 'saveUrl'], + template: '#template-task-move-position', + data: function () { + return { + swimlaneId: 0, + columnId: 0, + position: 1, + columns: [], + tasks: [], + positionChoice: 'before' + } + }, + ready: function () { + this.columns = this.board[0].columns; + this.columnId = this.columns[0].id; + this.tasks = this.columns[0].tasks; + }, + methods: { + onChangeSwimlane: function () { + var self = this; + this.columnId = 0; + this.position = 1; + this.columns = []; + this.tasks = []; + this.positionChoice = 'before'; + + this.board.forEach(function(swimlane) { + if (swimlane.id === self.swimlaneId) { + self.columns = swimlane.columns; + self.tasks = self.columns[0].tasks; + self.columnId = self.columns[0].id; + } + }); + }, + onChangeColumn: function () { + var self = this; + this.position = 1; + this.tasks = []; + this.positionChoice = 'before'; + + this.columns.forEach(function(column) { + if (column.id == self.columnId) { + self.tasks = column.tasks; + } + }); + }, + onSubmit: function () { + if (this.positionChoice == 'after') { + this.position++; + } + + $.ajax({ + cache: false, + url: this.saveUrl, + contentType: "application/json", + type: "POST", + processData: false, + data: JSON.stringify({ + "column_id": this.columnId, + "swimlane_id": this.swimlaneId, + "position": this.position + }), + complete: function() { + window.location.reload(true); + } + }); + } + } +}); |