Add drag and drop to change column positions

This commit is contained in:
Frederic Guillot
2016-02-20 11:24:43 -05:00
parent 2d27c36a71
commit c8c1242c26
13 changed files with 226 additions and 64 deletions

View File

@@ -9,6 +9,7 @@ function App() {
this.task = new Task();
this.project = new Project();
this.subtask = new Subtask(this);
this.column = new Column(this);
this.file = new FileUpload(this);
this.keyboardShortcuts();
this.chosen();
@@ -40,6 +41,7 @@ App.prototype.listen = function() {
this.task.listen();
this.swimlane.listen();
this.subtask.listen();
this.column.listen();
this.file.listen();
this.search.focus();
this.autoComplete();

59
assets/js/src/Column.js Normal file
View File

@@ -0,0 +1,59 @@
function Column(app) {
this.app = app;
}
Column.prototype.listen = function() {
this.dragAndDrop();
};
Column.prototype.dragAndDrop = function() {
var self = this;
$(".draggable-row-handle").mouseenter(function() {
$(this).parent().parent().addClass("draggable-item-hover");
}).mouseleave(function() {
$(this).parent().parent().removeClass("draggable-item-hover");
});
$(".columns-table tbody").sortable({
forcePlaceholderSize: true,
handle: "td:first i",
helper: function(e, ui) {
ui.children().each(function() {
$(this).width($(this).width());
});
return ui;
},
stop: function(event, ui) {
var column = ui.item;
column.removeClass("draggable-item-selected");
self.savePosition(column.data("column-id"), column.index() + 1);
},
start: function(event, ui) {
ui.item.addClass("draggable-item-selected");
}
}).disableSelection();
};
Column.prototype.savePosition = function(columnId, position) {
var url = $(".columns-table").data("save-position-url");
var self = this;
this.app.showLoadingIcon();
$.ajax({
cache: false,
url: url,
contentType: "application/json",
type: "POST",
processData: false,
data: JSON.stringify({
"column_id": columnId,
"position": position
}),
complete: function() {
self.app.hideLoadingIcon();
}
});
};