feat: default request sorting by status

This commit is contained in:
mahdahar 2026-04-07 11:03:54 +07:00
parent cd05a93047
commit f968b0c5e2
3 changed files with 35 additions and 8 deletions

View File

@ -22,7 +22,7 @@ class RequestsController extends BaseController
$pageSize = max(1, min(self::MAX_PAGE_SIZE, $pageSize));
$offset = ($page - 1) * $pageSize;
$sortCol = (string) ($this->request->getGet('sortCol') ?? 'REQDATE');
$sortCol = (string) ($this->request->getGet('sortCol') ?? 'STATS');
$sortDirRaw = strtoupper((string) ($this->request->getGet('sortDir') ?? 'DESC'));
$sortDir = $sortDirRaw === 'ASC' ? 'ASC' : 'DESC';
$sortSql = $this->resolveSortColumn($sortCol);
@ -164,10 +164,19 @@ class RequestsController extends BaseController
'HOSTORDERNUMBER' => 'd.HOSTORDERNUMBER',
'REFF' => 'd.REFF',
'DOC' => 'd.DOC',
'STATS' => 'd.STATS',
'STATS' => "CASE d.STATS
WHEN 'Pend' THEN 1
WHEN 'PartColl' THEN 2
WHEN 'Coll' THEN 3
WHEN 'PartRecv' THEN 4
WHEN 'Recv' THEN 5
WHEN 'Inc' THEN 6
WHEN 'Fin' THEN 7
ELSE 99
END",
];
return $map[$sortCol] ?? 'd.REQDATE';
return $map[$sortCol] ?? $map['STATS'];
}

View File

@ -97,6 +97,9 @@ $canUnval = $userLevel <= 1;
<th style='width:9%;'>
<div class="skeleton h-4 w-20"></div>
</th>
<th style='width:7%;'>
<div class="skeleton h-4 w-16"></div>
</th>
<th style='width:18%;'>
<div class="skeleton h-4 w-32"></div>
</th>
@ -124,12 +127,18 @@ $canUnval = $userLevel <= 1;
<th style='width:5%;'>
<div class="skeleton h-4 w-12"></div>
</th>
<th style='width:5%;'>
<div class="skeleton h-4 w-12"></div>
</th>
<th style='width:5%;'>
<div class="skeleton h-4 w-12"></div>
</th>
</tr>
</thead>
<tbody>
<template x-for="i in 5" :key="i">
<tr>
<td colspan="10">
<td colspan="13">
<div class="skeleton h-4 w-full"></div>
</td>
</tr>
@ -155,6 +164,14 @@ $canUnval = $userLevel <= 1;
:class="sortCol === 'REQDATE' ? (sortAsc ? 'fa-sort-up' : 'fa-sort-down') : 'fa-sort opacity-20'"></i>
</div>
</th>
<th style='width:7%;' @click="sort('STATS')"
class="cursor-pointer hover:bg-base-200 transition-colors select-none">
<div class="flex items-center gap-1">
Status
<i class="fa text-xs"
:class="sortCol === 'STATS' ? (sortAsc ? 'fa-sort-up' : 'fa-sort-down') : 'fa-sort opacity-20'"></i>
</div>
</th>
<th style='width:18%;' @click="sort('Name')"
class="cursor-pointer hover:bg-base-200 transition-colors select-none">
<div class="flex items-center gap-1">
@ -207,6 +224,7 @@ $canUnval = $userLevel <= 1;
<template x-for="req in filteredRows" :key="req.SP_ACCESSNUMBER">
<tr class="hover:bg-base-300">
<td x-text="req.REQDATE" :class="statusRowBg[req.STATS]"></td>
<td x-text="req.STATS" :class="statusRowBg[req.STATS]"></td>
<td x-text="req.Name" :class="statusRowBg[req.STATS]"></td>
<td x-text="req.SP_ACCESSNUMBER" class="font-bold" :class="statusRowBg[req.STATS]"></td>
<td x-text="req.HOSTORDERNUMBER" class="font-bold" :class="statusRowBg[req.STATS]"></td>

View File

@ -48,8 +48,8 @@ document.addEventListener('alpine:init', () => {
filterKey: 'Total',
// Sorting & Pagination
sortCol: 'REQDATE',
sortAsc: false,
sortCol: 'STATS',
sortAsc: true,
currentPage: 1,
pageSize: 50,
totalPages: 1,
@ -166,8 +166,8 @@ document.addEventListener('alpine:init', () => {
this.filterTable = '';
this.filterKey = 'Total';
this.currentPage = 1;
this.sortCol = 'REQDATE';
this.sortAsc = false;
this.sortCol = 'STATS';
this.sortAsc = true;
this.fetchList();
},