partial sorting FIX

This commit is contained in:
Dr Masroor Ehsan 2025-01-20 22:20:43 +06:00
parent bbef766d50
commit 3486d9f169

View File

@ -55,9 +55,12 @@ public function dataTable(QueryBuilder $query): EloquentDataTable
$this->applyFilters($dataTable); $this->applyFilters($dataTable);
$dataTable $dataTable = $dataTable
->orderColumn(WorklistColumn::PatientName->value, sprintf('%s $1', WorklistColumn::PatientName->value))
->rawColumns($rawColumns) ->rawColumns($rawColumns)
->orderColumns([
WorklistColumn::Priority->value,
WorklistColumn::StudyDate->value,
], ':column $1')
->setRowId('id'); ->setRowId('id');
return $dataTable; return $dataTable;
@ -77,7 +80,8 @@ public function query(Study $model): QueryBuilder
*/ */
public function html(): HtmlBuilder public function html(): HtmlBuilder
{ {
return $this->builder() return $this
->builder()
->setTableId('worklist-table') ->setTableId('worklist-table')
->columns($this->getColumns()) ->columns($this->getColumns())
->minifiedAjax() ->minifiedAjax()
@ -88,7 +92,7 @@ public function html(): HtmlBuilder
// 'dom' => 'Bfrtip', // 'dom' => 'Bfrtip',
'buttons' => [ 'buttons' => [
'searchPanes', 'searchPanes',
'excel', // 'excel',
// 'csv', // 'csv',
// 'pdf', // 'pdf',
// 'print', // 'print',
@ -100,7 +104,6 @@ public function html(): HtmlBuilder
[8, 'desc'], [8, 'desc'],
], ],
]) ])
// ->selectStyleSingle()
->pageLength(15) ->pageLength(15)
->lengthMenu([15, 25, 50, 100, 250]); ->lengthMenu([15, 25, 50, 100, 250]);
} }
@ -155,15 +158,24 @@ public function getColumns(): array
break; break;
case WorklistColumn::StudyDate: case WorklistColumn::StudyDate:
$columns[] = Column::make($col->value)->searchable(false)->title('Scanned'); $columns[] = Column::make($col->value)
->orderable(true)
->searchable(false)
->title('Scanned');
break; break;
case WorklistColumn::ReceiveDate: case WorklistColumn::ReceiveDate:
$columns[] = Column::make($col->value)->searchable(false)->title('Received'); $columns[] = Column::make($col->value)
->orderable(true)
->searchable(false)
->title('Received');
break; break;
case WorklistColumn::ReportDate: 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; break;
case WorklistColumn::AssignedPhysician: case WorklistColumn::AssignedPhysician:
@ -175,7 +187,7 @@ public function getColumns(): array
case WorklistColumn::ReadingPhysician: case WorklistColumn::ReadingPhysician:
$columns[] = Column::make($col->value) $columns[] = Column::make($col->value)
->searchable(false) ->searchable(false)
->title('Read By'); ->title('Rad');
break; break;
case WorklistColumn::ActionButtons: case WorklistColumn::ActionButtons:
@ -187,7 +199,7 @@ public function getColumns(): array
->exportable(false) ->exportable(false)
->printable(false) ->printable(false)
// ->width(60) // ->width(60)
->addClass('p-0 ps-2') // ->addClass('p-0 ps-2')
->title(''); ->title('');
break; break;
@ -242,7 +254,7 @@ private function applyFilters(QueryDataTable $dataTable)
$modality = $this->request()->get('modality'); $modality = $this->request()->get('modality');
$dataTable->filter( $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->filterStatus($query, $status);
$this->filterDateRange($query, 'study_date', $studyFrom, $studyTo); $this->filterDateRange($query, 'study_date', $studyFrom, $studyTo);
$this->filterDateRange($query, 'received_at', $receiveFrom, $receiveTo); $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)) { if (blank($status)) {
return; 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)) { if (blank($request)) {
return; return;
@ -288,7 +300,7 @@ private function filterModalities($query, ?string $request): void
$query->whereIn('modality', $modalities); $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)) { if (blank($from)) {
return; return;
@ -540,9 +552,9 @@ private function generateActionButtons(Study $study): string
return implode("\r", $btns); 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; return;
} }