* change of list sorting is produced on backend with tasklist reload

This commit is contained in:
maxpozdeev 2022-08-01 21:57:10 +03:00
parent 8e90422ac8
commit 9f918c0663
4 changed files with 26 additions and 12 deletions

View file

@ -1022,7 +1022,7 @@ function publishCurList()
function loadTasks(opts)
{
if(!curList) return false;
setSort(curList.sort, 1);
updateSortUI(curList.sort);
opts = opts || {};
if(opts.clearTasklist) {
$('#tasklist').html('');
@ -1035,7 +1035,8 @@ function loadTasks(opts)
sort: curList.sort,
search: filter.search,
tag: _mtt.filter.getTags(true),
setCompl: opts.setCompl
setCompl: opts.setCompl,
saveSort: opts.saveSort
}, function(json){
taskList.length = 0;
taskOrder.length = 0;
@ -1327,9 +1328,19 @@ function setTaskPrio(id, prio)
};
function setSort(v, init)
{
if (v < 0 || (v > 4 && v < 101) || v > 104) {
return;
}
curList.sort = v;
loadTasks({saveSort:1});
};
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) $('#sortByHand').addClass('mtt-item-checked');
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 ? '↓' : '↑');
@ -1337,14 +1348,8 @@ function setSort(v, init)
else return;
curList.sort = v;
if(v == 0 && !flag.readOnly) $("#tasklist").sortable('enable');
if (v == 0 && !flag.readOnly) $("#tasklist").sortable('enable');
else $("#tasklist").sortable('disable');
if(!init)
{
changeTaskOrder();
if(!flag.readOnly) _mtt.db.request('setSort', {list:curList.id, sort:curList.sort});
}
};

View file

@ -37,6 +37,7 @@ MytinytodoAjaxApi.prototype =
if (params.search && params.search != '') q += '&s=' + encodeURIComponent(params.search);
if (params.tag && params.tag != '') q += '&t=' + encodeURIComponent(params.tag);
if (params.setCompl && params.setCompl != 0) q += '&setCompl=1';
if (params.saveSort && params.saveSort != 0) q += '&saveSort=1';
$.getJSON(mtt.apiUrl + 'tasks?list='+params.list+'&compl='+params.compl+'&sort='+params.sort+q, callback);
},

View file

@ -206,8 +206,14 @@ class ListsController extends ApiController {
private function sortList(int $listId)
{
$db = DBConnection::instance();
$sort = (int)($this->req->jsonBody['sort'] ?? 0);
self::setListSortingById($listId, $sort);
return ['total'=>1];
}
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 ($listId == -1) {
@ -218,7 +224,6 @@ class ListsController extends ApiController {
else {
$db->ex("UPDATE {$db->prefix}lists SET sorting=$sort,d_edited=? WHERE id=$listId", array(time()));
}
return ['total'=>1];
}
private function publishList(int $listId)

View file

@ -102,6 +102,9 @@ class TasksController extends ApiController {
$bitwise = (_get('compl') == 0) ? 'taskview & ~1' : 'taskview | 1';
$db->dq("UPDATE {$db->prefix}lists SET taskview=$bitwise WHERE id=$listId");
}
if (_get('saveSort') == 1 && haveWriteAccess($listId)) {
ListsController::setListSortingById($listId, $sort);
}
return $t;
}