date formatting

This commit is contained in:
Dr Masroor Ehsan 2025-01-07 12:42:06 +06:00
parent f6261bec1b
commit 97564b6274
2 changed files with 43 additions and 16 deletions

View File

@ -24,9 +24,19 @@ class WorklistDataTable extends DataTable
{ {
const DATE_FORMAT = 'd.m.Y H:i'; const DATE_FORMAT = 'd.m.Y H:i';
private static function dtFormat(Carbon|CarbonImmutable|null $dt): ?string private static function renderDateColumn(Carbon|CarbonImmutable|null $dt): ?string
{ {
return $dt?->format(self::DATE_FORMAT); if ($dt === null) {
return null;
}
return Blade::render(
'staff.worklist.partials._multi-value-cell',
[
'title' => $dt->format(self::DATE_FORMAT),
'subtitle' => $dt->diffForHumans(),
]
);
} }
public function dataTable(QueryBuilder $query): EloquentDataTable public function dataTable(QueryBuilder $query): EloquentDataTable
@ -94,12 +104,11 @@ public function html(): HtmlBuilder
*/ */
public function getColumns(): array public function getColumns(): array
{ {
$cols_allowed = AccessControl::worklistColumns();
$columns = []; $columns = [];
foreach ($cols_allowed as $allowed) { foreach (AccessControl::worklistColumns() as $col) {
switch ($allowed) { switch ($col) {
case WorklistColumn::Priority: case WorklistColumn::Priority:
$columns[] = Column::make($allowed->value) $columns[] = Column::make($col->value)
->searchable(false) ->searchable(false)
->hidden(); ->hidden();
$columns[] = Column::make('priority_icon') $columns[] = Column::make('priority_icon')
@ -111,7 +120,7 @@ public function getColumns(): array
break; break;
case WorklistColumn::ReportStatus: case WorklistColumn::ReportStatus:
case WorklistColumn::History: case WorklistColumn::History:
$columns[] = Column::make($allowed->value) $columns[] = Column::make($col->value)
->searchable(false) ->searchable(false)
->orderable(false) ->orderable(false)
->addClass('text-center') ->addClass('text-center')
@ -119,28 +128,28 @@ public function getColumns(): array
->title(''); ->title('');
break; break;
case WorklistColumn::PatientSexAge: case WorklistColumn::PatientSexAge:
$columns[] = Column::make($allowed->value) $columns[] = Column::make($col->value)
->searchable(false) ->searchable(false)
->orderable(false) ->orderable(false)
->addClass('text-center') ->addClass('text-center')
->title('Age'); ->title('Age');
break; break;
case WorklistColumn::StudyDate: case WorklistColumn::StudyDate:
$columns[] = Column::make($allowed->value)->searchable(false)->title('Scan Dt'); $columns[] = Column::make($col->value)->searchable(false)->title('Scan Dt');
break; break;
case WorklistColumn::ReceiveDate: case WorklistColumn::ReceiveDate:
$columns[] = Column::make($allowed->value)->searchable(false)->title('Received'); $columns[] = Column::make($col->value)->searchable(false)->title('Received');
break; break;
case WorklistColumn::ReportDate: case WorklistColumn::ReportDate:
$columns[] = Column::make($allowed->value)->searchable(false)->title('Read At'); $columns[] = Column::make($col->value)->searchable(false)->title('Read At');
break; break;
case WorklistColumn::AssignedPhysician: case WorklistColumn::AssignedPhysician:
$columns[] = Column::make($allowed->value) $columns[] = Column::make($col->value)
->searchable(false) ->searchable(false)
->title('Assigned'); ->title('Assigned');
break; break;
case WorklistColumn::ReadingPhysician: case WorklistColumn::ReadingPhysician:
$columns[] = Column::make($allowed->value) $columns[] = Column::make($col->value)
->searchable(false) ->searchable(false)
->title('Read By'); ->title('Read By');
break; break;
@ -153,7 +162,7 @@ public function getColumns(): array
->title(''); ->title('');
break; break;
default: default:
$columns[] = Column::make($allowed->value)->title(Str::title($allowed->value)); $columns[] = Column::make($col->value)->title(Str::title($col->value));
break; break;
} }
} }
@ -212,7 +221,13 @@ private function customColumns(): array
$columns[$col->value] = fn (Study $study) => $this->physicianColumn($study->readingPhysician, $study->reported_at); $columns[$col->value] = fn (Study $study) => $this->physicianColumn($study->readingPhysician, $study->reported_at);
break; break;
case WorklistColumn::Series: case WorklistColumn::Series:
$columns[$col->value] = fn (Study $study) => $study->numInstances() . '<small class="text-muted ms-2 fw-lighter fs-xsmall">' . human_filesize($study->disk_size) . '</small>'; $columns[$col->value] = fn (Study $study) => Blade::render(
'staff.worklist.partials._multi-value-cell',
[
'title' => $study->numInstances(),
'subtitle' => human_filesize($study->disk_size),
]
);
break; break;
case WorklistColumn::StudyDate: case WorklistColumn::StudyDate:
case WorklistColumn::ReceiveDate: case WorklistColumn::ReceiveDate:
@ -220,7 +235,7 @@ private function customColumns(): array
case WorklistColumn::AssignDate: case WorklistColumn::AssignDate:
case WorklistColumn::AuthorizeDate: case WorklistColumn::AuthorizeDate:
case WorklistColumn::ArchiveDate: case WorklistColumn::ArchiveDate:
$columns[$col->value] = fn (Study $study) => $study->{$col->value}?->format(self::DATE_FORMAT); $columns[$col->value] = fn (Study $study) => self::renderDateColumn($study->{$col->value});
break; break;
case WorklistColumn::History: case WorklistColumn::History:
$columns[$col->value] = fn (Study $study) => sprintf(' $columns[$col->value] = fn (Study $study) => sprintf('

View File

@ -0,0 +1,12 @@
<div class="d-flex">
<div class="d-flex flex-column">
<span class="text-truncate mb-1">
{{ $title }}
</span>
@if (!blank($subtitle))
<small class="text-truncate fw-lighter text-muted fs-xsmall">
{{ $subtitle }}
</small>
@endif
</div>
</div>