FIXED sorting

This commit is contained in:
Dr Masroor Ehsan 2025-01-20 22:49:30 +06:00
parent 3486d9f169
commit 28f3ffca07

View File

@ -55,12 +55,32 @@ public function dataTable(QueryBuilder $query): EloquentDataTable
$this->applyFilters($dataTable);
$orderColumns = [];
$sorted = $this->getSortColumns();
$columns = $this->getColumns();
foreach ($sorted as $item) {
$orderColumns[] = $columns[(int) $item['column']]['data'];
/*
switch ((int) $item['column']) {
case 0:
$orderColumns[] = WorklistColumn::Priority->value;
break;
case 8:
$orderColumns[] = WorklistColumn::StudyDate->value;
break;
case 9:
$orderColumns[] = WorklistColumn::ReceiveDate->value;
break;
case 10:
$orderColumns[] = WorklistColumn::StudyDescription->value;
break;
}
*/
}
$dataTable = $dataTable
->rawColumns($rawColumns)
->orderColumns([
WorklistColumn::Priority->value,
WorklistColumn::StudyDate->value,
], ':column $1')
->orderColumns($orderColumns, ':column $1')
->setRowId('id');
return $dataTable;
@ -80,6 +100,8 @@ public function query(Study $model): QueryBuilder
*/
public function html(): HtmlBuilder
{
$order = $this->getSortColumns();
return $this
->builder()
->setTableId('worklist-table')
@ -99,10 +121,7 @@ public function html(): HtmlBuilder
// 'reset',
// 'reload',
],
'order' => [
[0, 'desc'],
[8, 'desc'],
],
'order' => $order,
])
->pageLength(15)
->lengthMenu([15, 25, 50, 100, 250]);
@ -159,33 +178,32 @@ public function getColumns(): array
case WorklistColumn::StudyDate:
$columns[] = Column::make($col->value)
->orderable(true)
->searchable(false)
->title('Scanned');
break;
case WorklistColumn::ReceiveDate:
$columns[] = Column::make($col->value)
->orderable(true)
->searchable(false)
->title('Received');
break;
case WorklistColumn::ReportDate:
$columns[] = Column::make($col->value)
->orderable(true)
->searchable(false)
->title('Read At');
break;
case WorklistColumn::AssignedPhysician:
$columns[] = Column::make($col->value)
->orderable(false)
->searchable(false)
->title('Rad');
break;
case WorklistColumn::ReadingPhysician:
$columns[] = Column::make($col->value)
->orderable(false)
->searchable(false)
->title('Rad');
break;
@ -215,6 +233,10 @@ public function getColumns(): array
$columns[] = Column::make($col->value)->title('Study');
break;
case WorklistColumn::Series:
$columns[] = Column::make($col->value)->orderable(false);
break;
default:
// dd(Str::slug($col->value, '-'));
$columns[] = Column::make($col->value)->title($this->columTitle($col->value));
@ -239,6 +261,19 @@ protected function filename(): string
return Str::slug(implode(' ', $parts), '_');
}
private function getSortColumns(): array
{
$order = $this->request()->query('order', []);
if (empty($order)) {
$order = [
[0, 'desc'],
[8, 'desc'],
];
}
return $order;
}
private function applyFilters(QueryDataTable $dataTable)
{
$status = strtolower($this->request()->get('status'));