experimental sort by title (disabled yet)

This commit is contained in:
maxpozdeev 2022-11-12 15:22:59 +03:00
parent e41429c174
commit 86c02990c1
6 changed files with 22 additions and 2 deletions

View file

@ -1297,6 +1297,10 @@ function changeTaskOrder(id)
if (taskOrder.length < 2) {
return;
}
if (id && (curList.sort == 5 || curList.sort == 105)) {
// re-sort the whole list in case of database sorting is not the same due to collation
changeTaskOrder();
}
const oldOrder = taskOrder.slice();
function firstNonZero(order, compl, ...args) {
const m = (order < 100) ? 1 : -1;
@ -1354,6 +1358,16 @@ function changeTaskOrder(id)
taskList[a].ow - taskList[b].ow
))
}
// sortByTitle and reverse
else if (curList.sort == 5 || curList.sort == 105) {
taskOrder.sort( (a, b) => firstNonZero(
curList.sort,
taskList[a].compl - taskList[b].compl,
taskList[a].title.localeCompare(taskList[b].title, 'en', {sensitivity: 'base'}),
taskList[b].prio - taskList[a].prio,
taskList[a].ow - taskList[b].ow
))
}
else {
return;
}

View file

@ -234,8 +234,9 @@ class ListsController extends ApiController {
static function setListSortingById(int $listId, int $sort)
{
$db = DBConnection::instance();
if ($sort < 0 || $sort > 104) $sort = 0;
elseif ($sort < 101 && $sort > 4) $sort = 0;
if ($sort < 0 || ($sort > 5 && $sort < 101) || $sort > 105) {
$sort = 0;
}
if ($listId == -1) {
$opts = Config::requestDomain('alltasks.json');
$opts['sort'] = $sort;

View file

@ -91,6 +91,8 @@ class TasksController extends ApiController {
elseif ($sort == 103) $sqlSort .= "d_created DESC, prio ASC, ow DESC"; // byDateCreated (reverse)
elseif ($sort == 4) $sqlSort .= "d_edited ASC, prio DESC, ow ASC"; // byDateModified
elseif ($sort == 104) $sqlSort .= "d_edited DESC, prio ASC, ow DESC"; // byDateModified (reverse)
elseif ($sort == 5) $sqlSort .= "title ASC, prio DESC, ow ASC"; // byTitle
elseif ($sort == 105) $sqlSort .= "title DESC, prio ASC, ow DESC"; // byTitle (reverse)
else $sqlSort .= "ow ASC";
$t = array();

View file

@ -40,6 +40,7 @@
"tagfilter_cancel": "cancel filter",
"showTagsFromAllLists": "Show tags from all lists",
"sortByHand": "Sort by hand",
"sortByTitle": "Sort by title",
"sortByPriority": "Sort by priority",
"sortByDueDate": "Sort by due date",
"sortByDateCreated": "Sort by date created",

View file

@ -40,6 +40,7 @@
"tagfilter_cancel": "отменить фильтр по тегу",
"showTagsFromAllLists": "Показать теги из всех списков",
"sortByHand": "Сортировка вручную",
"sortByTitle": "Сортировка по алфавиту",
"sortByPriority": "Сортировка по приоритету",
"sortByDueDate": "Сортировка по сроку",
"sortByDateCreated": "Сортировка по дате добавления",

View file

@ -237,6 +237,7 @@ $().ready(function(){
<li class="mtt-need-list sort-item" id="sortByPrio"><div class="menu-icon"></div><?php _e('sortByPriority');?> <span class="mtt-sort-direction"></span></li>
<li class="mtt-need-list sort-item" id="sortByDueDate"><div class="menu-icon"></div><?php _e('sortByDueDate');?> <span class="mtt-sort-direction"></span></li>
<li class="mtt-need-list sort-item" id="sortByDateModified"><div class="menu-icon"></div><?php _e('sortByDateModified');?> <span class="mtt-sort-direction"></span></li>
<!--<li class="mtt-need-list sort-item" id="sortByTitle"><div class="menu-icon"></div><?php _e('sortByTitle');?> <span class="mtt-sort-direction"></span></li>-->
<li class="mtt-menu-delimiter"></li>
<li class="mtt-need-list" id="btnShowCompleted"><div class="menu-icon"></div><?php _e('list_showcompleted');?></li>
</ul>