diff --git a/src/content/mytinytodo.js b/src/content/mytinytodo.js index 2111e2f..3e65907 100644 --- a/src/content/mytinytodo.js +++ b/src/content/mytinytodo.js @@ -1363,9 +1363,9 @@ function changeTaskOrder(id) return 0; } // sortByHand - if (curList.sort == 0) { + if (curList.sort == 0 || curList.sort == 100) { taskOrder.sort( (a, b) => firstNonZero( - 0, + curList.sort, taskList[a].compl - taskList[b].compl, taskList[a].ow - taskList[b].ow )) @@ -1472,13 +1472,13 @@ function setTaskPrio(id, prio) taskList[id].prio = prio; var $t = $('#taskrow_'+id); $t.find('.task-prio').replaceWith(preparePrio(prio, id)); - if(curList.sort != 0) changeTaskOrder(id); + if (curList.sort != 0 && curList.sort != 100) changeTaskOrder(id); $t.effect("highlight", {color:_mtt.theme.editTaskFlashColor}, 'normal'); }; function setSort(v, init) { - if (v < 0 || (v > 5 && v < 101) || v > 105) { + if (v < 0 || (v > 5 && v < 100) || v > 105) { return; } curList.sort = v; @@ -1489,7 +1489,7 @@ function setSort(v, init) function updateSortUI(v) { $('#listmenucontainer .sort-item').removeClass('mtt-item-checked').children('.mtt-sort-direction').text(''); - if (v == 0) $('#sortByHand').addClass('mtt-item-checked'); + if (v == 0 || v == 100) $('#sortByHand').addClass('mtt-item-checked').children('.mtt-sort-direction').text(v==0 ? '↓' : '↑'); else if(v==1 || v==101) $('#sortByPrio').addClass('mtt-item-checked').children('.mtt-sort-direction').text(v==1 ? '↑' : '↓'); else if(v==2 || v==102) $('#sortByDueDate').addClass('mtt-item-checked').children('.mtt-sort-direction').text(v==2 ? '↑' : '↓'); else if(v==3 || v==103) $('#sortByDateCreated').addClass('mtt-item-checked').children('.mtt-sort-direction').text(v==3 ? '↓' : '↑'); @@ -1498,7 +1498,7 @@ function updateSortUI(v) else return; curList.sort = v; - if (v == 0 && !flag.readOnly) $("#tasklist").sortable('enable'); + if ( (v == 0 || v == 100) && !flag.readOnly) $("#tasklist").sortable('enable'); else $("#tasklist").sortable('disable'); }; @@ -1668,7 +1668,7 @@ function listMenuClick(el, menu) case 'btnRssFeed': return true; case 'btnShowCompleted': showCompletedToggle(); break; case 'btnClearCompleted': clearCompleted(); break; - case 'sortByHand': setSort(0); break; + case 'sortByHand': setSort(curList.sort==0 ? 100 : 0); break; case 'sortByPrio': setSort(curList.sort==1 ? 101 : 1); break; case 'sortByDueDate': setSort(curList.sort==2 ? 102 : 2); break; case 'sortByDateCreated': setSort(curList.sort==3 ? 103 : 3); break; @@ -1903,8 +1903,9 @@ function saveTask(form) taskList[item.id] = item; const noteExpanded = (item.note != '' && $('#taskrow_'+item.id).is('.task-expanded')) ? 1 : 0; $('#taskrow_'+item.id).replaceWith(_mtt.prepareTaskStr(item, noteExpanded)); - if (curList.sort != 0) + if (curList.sort != 0 && curList.sort != 100) { changeTaskOrder(item.id); + } refreshTaskCnt(); _mtt.pageBack(); //back to list or viewer if (_mtt.pages.current.page == 'taskviewer') { @@ -2072,39 +2073,50 @@ function tasklistSortStart(event, ui) function tasklistSortUpdated(event, ui) { - if(!ui.item[0]) return; - var itemId = ui.item[0].id; - var n = $(this).sortable('toArray'); + if (!ui.item[0]) { + return; + } + const itemId = ui.item[0].id; + const n = $(this).sortable('toArray'); // remove possible empty id's - for(var i=0; iposition - var h0 = {}; //before - for(var j=0; j 5 && $sort < 101) || $sort > 105) { + if ($sort < 0 || ($sort > 5 && $sort < 100) || $sort > 105) { $sort = 0; } if ($listId == -1) { diff --git a/src/includes/api/TasksController.php b/src/includes/api/TasksController.php index 446300a..5cd9aaa 100644 --- a/src/includes/api/TasksController.php +++ b/src/includes/api/TasksController.php @@ -84,7 +84,10 @@ class TasksController extends ApiController { $sort = (int)_get('sort'); $sqlSort = "ORDER BY compl ASC, "; - if ($sort == 1) $sqlSort .= "prio DESC, ddn ASC, duedate ASC, ow ASC"; // byPrio + // sortings are same as in DBCore::getTasksByListId + if ($sort == 0) $sqlSort .= "ow ASC"; // byHand + elseif ($sort == 100) $sqlSort .= "ow DESC"; // byHand (reverse) + elseif ($sort == 1) $sqlSort .= "prio DESC, ddn ASC, duedate ASC, ow ASC"; // byPrio elseif ($sort == 101) $sqlSort .= "prio ASC, ddn DESC, duedate DESC, ow DESC"; // byPrio (reverse) elseif ($sort == 2) $sqlSort .= "ddn ASC, duedate ASC, prio DESC, ow ASC"; // byDueDate elseif ($sort == 102) $sqlSort .= "ddn DESC, duedate DESC, prio ASC, ow DESC"; // byDueDate (reverse) diff --git a/src/includes/class.dbcore.php b/src/includes/class.dbcore.php index 8179f46..eafd8f1 100644 --- a/src/includes/class.dbcore.php +++ b/src/includes/class.dbcore.php @@ -131,7 +131,9 @@ class DBCore $sqlSort = ''; if (is_int($sort)) { $sqlSort = "ORDER BY compl ASC, "; - if ($sort == 1) $sqlSort .= "prio DESC, ddn ASC, duedate ASC, ow ASC"; // byPrio + if ($sort == 0) $sqlSort .= "ow ASC"; // byHand + elseif ($sort == 100) $sqlSort .= "ow DESC"; // byHand (reverse) + elseif ($sort == 1) $sqlSort .= "prio DESC, ddn ASC, duedate ASC, ow ASC"; // byPrio elseif ($sort == 101) $sqlSort .= "prio ASC, ddn DESC, duedate DESC, ow DESC"; // byPrio (reverse) elseif ($sort == 2) $sqlSort .= "ddn ASC, duedate ASC, prio DESC, ow ASC"; // byDueDate elseif ($sort == 102) $sqlSort .= "ddn DESC, duedate DESC, prio ASC, ow DESC"; // byDueDate (reverse)