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); $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 $dataTable = $dataTable
->rawColumns($rawColumns) ->rawColumns($rawColumns)
->orderColumns([ ->orderColumns($orderColumns, ':column $1')
WorklistColumn::Priority->value,
WorklistColumn::StudyDate->value,
], ':column $1')
->setRowId('id'); ->setRowId('id');
return $dataTable; return $dataTable;
@ -80,6 +100,8 @@ public function query(Study $model): QueryBuilder
*/ */
public function html(): HtmlBuilder public function html(): HtmlBuilder
{ {
$order = $this->getSortColumns();
return $this return $this
->builder() ->builder()
->setTableId('worklist-table') ->setTableId('worklist-table')
@ -99,10 +121,7 @@ public function html(): HtmlBuilder
// 'reset', // 'reset',
// 'reload', // 'reload',
], ],
'order' => [ 'order' => $order,
[0, 'desc'],
[8, 'desc'],
],
]) ])
->pageLength(15) ->pageLength(15)
->lengthMenu([15, 25, 50, 100, 250]); ->lengthMenu([15, 25, 50, 100, 250]);
@ -159,33 +178,32 @@ public function getColumns(): array
case WorklistColumn::StudyDate: case WorklistColumn::StudyDate:
$columns[] = Column::make($col->value) $columns[] = Column::make($col->value)
->orderable(true)
->searchable(false) ->searchable(false)
->title('Scanned'); ->title('Scanned');
break; break;
case WorklistColumn::ReceiveDate: case WorklistColumn::ReceiveDate:
$columns[] = Column::make($col->value) $columns[] = Column::make($col->value)
->orderable(true)
->searchable(false) ->searchable(false)
->title('Received'); ->title('Received');
break; break;
case WorklistColumn::ReportDate: case WorklistColumn::ReportDate:
$columns[] = Column::make($col->value) $columns[] = Column::make($col->value)
->orderable(true)
->searchable(false) ->searchable(false)
->title('Read At'); ->title('Read At');
break; break;
case WorklistColumn::AssignedPhysician: case WorklistColumn::AssignedPhysician:
$columns[] = Column::make($col->value) $columns[] = Column::make($col->value)
->orderable(false)
->searchable(false) ->searchable(false)
->title('Rad'); ->title('Rad');
break; break;
case WorklistColumn::ReadingPhysician: case WorklistColumn::ReadingPhysician:
$columns[] = Column::make($col->value) $columns[] = Column::make($col->value)
->orderable(false)
->searchable(false) ->searchable(false)
->title('Rad'); ->title('Rad');
break; break;
@ -215,6 +233,10 @@ public function getColumns(): array
$columns[] = Column::make($col->value)->title('Study'); $columns[] = Column::make($col->value)->title('Study');
break; break;
case WorklistColumn::Series:
$columns[] = Column::make($col->value)->orderable(false);
break;
default: default:
// dd(Str::slug($col->value, '-')); // dd(Str::slug($col->value, '-'));
$columns[] = Column::make($col->value)->title($this->columTitle($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), '_'); 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) private function applyFilters(QueryDataTable $dataTable)
{ {
$status = strtolower($this->request()->get('status')); $status = strtolower($this->request()->get('status'));