From 3486d9f169b371308613213557ac33370c978822 Mon Sep 17 00:00:00 2001 From: Dr Masroor Ehsan Date: Mon, 20 Jan 2025 22:20:43 +0600 Subject: [PATCH] partial sorting FIX --- app/DataTables/WorklistDataTable.php | 44 ++++++++++++++++++---------- 1 file changed, 28 insertions(+), 16 deletions(-) diff --git a/app/DataTables/WorklistDataTable.php b/app/DataTables/WorklistDataTable.php index 2f69df3..2252b78 100644 --- a/app/DataTables/WorklistDataTable.php +++ b/app/DataTables/WorklistDataTable.php @@ -55,9 +55,12 @@ public function dataTable(QueryBuilder $query): EloquentDataTable $this->applyFilters($dataTable); - $dataTable - ->orderColumn(WorklistColumn::PatientName->value, sprintf('%s $1', WorklistColumn::PatientName->value)) + $dataTable = $dataTable ->rawColumns($rawColumns) + ->orderColumns([ + WorklistColumn::Priority->value, + WorklistColumn::StudyDate->value, + ], ':column $1') ->setRowId('id'); return $dataTable; @@ -77,7 +80,8 @@ public function query(Study $model): QueryBuilder */ public function html(): HtmlBuilder { - return $this->builder() + return $this + ->builder() ->setTableId('worklist-table') ->columns($this->getColumns()) ->minifiedAjax() @@ -88,7 +92,7 @@ public function html(): HtmlBuilder // 'dom' => 'Bfrtip', 'buttons' => [ 'searchPanes', - 'excel', + // 'excel', // 'csv', // 'pdf', // 'print', @@ -100,7 +104,6 @@ public function html(): HtmlBuilder [8, 'desc'], ], ]) - // ->selectStyleSingle() ->pageLength(15) ->lengthMenu([15, 25, 50, 100, 250]); } @@ -155,15 +158,24 @@ public function getColumns(): array break; case WorklistColumn::StudyDate: - $columns[] = Column::make($col->value)->searchable(false)->title('Scanned'); + $columns[] = Column::make($col->value) + ->orderable(true) + ->searchable(false) + ->title('Scanned'); break; case WorklistColumn::ReceiveDate: - $columns[] = Column::make($col->value)->searchable(false)->title('Received'); + $columns[] = Column::make($col->value) + ->orderable(true) + ->searchable(false) + ->title('Received'); break; case WorklistColumn::ReportDate: - $columns[] = Column::make($col->value)->searchable(false)->title('Read At'); + $columns[] = Column::make($col->value) + ->orderable(true) + ->searchable(false) + ->title('Read At'); break; case WorklistColumn::AssignedPhysician: @@ -175,7 +187,7 @@ public function getColumns(): array case WorklistColumn::ReadingPhysician: $columns[] = Column::make($col->value) ->searchable(false) - ->title('Read By'); + ->title('Rad'); break; case WorklistColumn::ActionButtons: @@ -187,7 +199,7 @@ public function getColumns(): array ->exportable(false) ->printable(false) // ->width(60) - ->addClass('p-0 ps-2') + // ->addClass('p-0 ps-2') ->title(''); break; @@ -242,7 +254,7 @@ private function applyFilters(QueryDataTable $dataTable) $modality = $this->request()->get('modality'); $dataTable->filter( - function ($query) use ($status, $studyFrom, $studyTo, $receiveFrom, $receiveTo, $modality, $assignFrom, $assignTo, $readFrom, $readTo, $readBy) { + function (QueryBuilder $query) use ($status, $studyFrom, $studyTo, $receiveFrom, $receiveTo, $modality, $assignFrom, $assignTo, $readFrom, $readTo, $readBy) { $this->filterStatus($query, $status); $this->filterDateRange($query, 'study_date', $studyFrom, $studyTo); $this->filterDateRange($query, 'received_at', $receiveFrom, $receiveTo); @@ -254,7 +266,7 @@ function ($query) use ($status, $studyFrom, $studyTo, $receiveFrom, $receiveTo, ); } - private function filterStatus($query, ?string $status): void + private function filterStatus(QueryBuilder $query, ?string $status): void { if (blank($status)) { return; @@ -273,7 +285,7 @@ private function filterStatus($query, ?string $status): void } } - private function filterModalities($query, ?string $request): void + private function filterModalities(QueryBuilder $query, ?string $request): void { if (blank($request)) { return; @@ -288,7 +300,7 @@ private function filterModalities($query, ?string $request): void $query->whereIn('modality', $modalities); } - private function filterDateRange($query, string $column, ?string $from, ?string $to): void + private function filterDateRange(QueryBuilder $query, string $column, ?string $from, ?string $to): void { if (blank($from)) { return; @@ -540,9 +552,9 @@ private function generateActionButtons(Study $study): string return implode("\r", $btns); } - private function filterReadBy($query, ?int $readBy): void + private function filterReadBy(QueryBuilder $query, ?int $readBy): void { - if (is_null($readBy) || $readBy == 0) { + if (is_null($readBy) || $readBy <= 0) { return; }