diff options
Diffstat (limited to 'assets/js/components')
-rw-r--r-- | assets/js/components/subtask-drag-and-drop.js | 44 | ||||
-rw-r--r-- | assets/js/components/subtask-toggle-status.js | 35 |
2 files changed, 79 insertions, 0 deletions
diff --git a/assets/js/components/subtask-drag-and-drop.js b/assets/js/components/subtask-drag-and-drop.js new file mode 100644 index 00000000..f704376a --- /dev/null +++ b/assets/js/components/subtask-drag-and-drop.js @@ -0,0 +1,44 @@ +KB.on('dom.ready', function() { + + function savePosition(subtaskId, position) { + var url = $(".subtasks-table").data("save-position-url"); + + $.ajax({ + cache: false, + url: url, + contentType: "application/json", + type: "POST", + processData: false, + data: JSON.stringify({ + "subtask_id": subtaskId, + "position": position + }) + }); + } + + $(".draggable-row-handle").mouseenter(function() { + $(this).parent().parent().addClass("draggable-item-hover"); + }).mouseleave(function() { + $(this).parent().parent().removeClass("draggable-item-hover"); + }); + + $(".subtasks-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 subtask = ui.item; + subtask.removeClass("draggable-item-selected"); + savePosition(subtask.data("subtask-id"), subtask.index() + 1); + }, + start: function(event, ui) { + ui.item.addClass("draggable-item-selected"); + } + }).disableSelection(); +}); diff --git a/assets/js/components/subtask-toggle-status.js b/assets/js/components/subtask-toggle-status.js new file mode 100644 index 00000000..3014adfa --- /dev/null +++ b/assets/js/components/subtask-toggle-status.js @@ -0,0 +1,35 @@ +KB.on('dom.ready', function () { + $(document).on('click', '.js-subtask-toggle-status', function(e) { + var el = $(this); + var url = el.attr('href'); + + e.preventDefault(); + + $.ajax({ + cache: false, + url: url, + success: function(data) { + if (url.indexOf('fragment=table') != -1) { + $('.subtasks-table').replaceWith(data); + } else if (url.indexOf('fragment=rows') != -1) { + $(el).closest('.task-list-subtasks').replaceWith(data); + } else { + $(el).closest('.subtask-title').replaceWith(data); + } + } + }); + }); + + $(document).on('click', '.js-subtask-toggle-timer', function(e) { + var el = $(this); + e.preventDefault(); + + $.ajax({ + cache: false, + url: el.attr('href'), + success: function(data) { + $(el).closest('.subtask-time-tracking').replaceWith(data); + } + }); + }); +}); |