From 28f3ffca07ab8a7490535dc0b75105cdfe01b72a Mon Sep 17 00:00:00 2001 From: Dr Masroor Ehsan Date: Mon, 20 Jan 2025 22:49:30 +0600 Subject: [PATCH] FIXED sorting --- app/DataTables/WorklistDataTable.php | 57 ++++++++++++++++++++++------ 1 file changed, 46 insertions(+), 11 deletions(-) diff --git a/app/DataTables/WorklistDataTable.php b/app/DataTables/WorklistDataTable.php index 2252b78..3cf06f4 100644 --- a/app/DataTables/WorklistDataTable.php +++ b/app/DataTables/WorklistDataTable.php @@ -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'));