summaryrefslogtreecommitdiff
path: root/assets/js/components
diff options
context:
space:
mode:
Diffstat (limited to 'assets/js/components')
-rw-r--r--assets/js/components/subtask-drag-and-drop.js44
-rw-r--r--assets/js/components/subtask-toggle-status.js35
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);
+ }
+ });
+ });
+});