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';
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
@ -94,12 +104,11 @@ public function html(): HtmlBuilder
*/
public function getColumns(): array
{
$cols_allowed = AccessControl::worklistColumns();
$columns = [];
foreach ($cols_allowed as $allowed) {
switch ($allowed) {
foreach (AccessControl::worklistColumns() as $col) {
switch ($col) {
case WorklistColumn::Priority:
$columns[] = Column::make($allowed->value)
$columns[] = Column::make($col->value)
->searchable(false)
->hidden();
$columns[] = Column::make('priority_icon')
@ -111,7 +120,7 @@ public function getColumns(): array
break;
case WorklistColumn::ReportStatus:
case WorklistColumn::History:
$columns[] = Column::make($allowed->value)
$columns[] = Column::make($col->value)
->searchable(false)
->orderable(false)
->addClass('text-center')
@ -119,28 +128,28 @@ public function getColumns(): array
->title('');
break;
case WorklistColumn::PatientSexAge:
$columns[] = Column::make($allowed->value)
$columns[] = Column::make($col->value)
->searchable(false)
->orderable(false)
->addClass('text-center')
->title('Age');
break;
case WorklistColumn::StudyDate:
$columns[] = Column::make($allowed->value)->searchable(false)->title('Scan Dt');
$columns[] = Column::make($col->value)->searchable(false)->title('Scan Dt');
break;
case WorklistColumn::ReceiveDate:
$columns[] = Column::make($allowed->value)->searchable(false)->title('Received');
$columns[] = Column::make($col->value)->searchable(false)->title('Received');
break;
case WorklistColumn::ReportDate:
$columns[] = Column::make($allowed->value)->searchable(false)->title('Read At');
$columns[] = Column::make($col->value)->searchable(false)->title('Read At');
break;
case WorklistColumn::AssignedPhysician:
$columns[] = Column::make($allowed->value)
$columns[] = Column::make($col->value)
->searchable(false)
->title('Assigned');
break;
case WorklistColumn::ReadingPhysician:
$columns[] = Column::make($allowed->value)
$columns[] = Column::make($col->value)
->searchable(false)
->title('Read By');
break;
@ -153,7 +162,7 @@ public function getColumns(): array
->title('');
break;
default:
$columns[] = Column::make($allowed->value)->title(Str::title($allowed->value));
$columns[] = Column::make($col->value)->title(Str::title($col->value));
break;
}
}
@ -212,7 +221,13 @@ private function customColumns(): array
$columns[$col->value] = fn (Study $study) => $this->physicianColumn($study->readingPhysician, $study->reported_at);
break;
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;
case WorklistColumn::StudyDate:
case WorklistColumn::ReceiveDate:
@ -220,7 +235,7 @@ private function customColumns(): array
case WorklistColumn::AssignDate:
case WorklistColumn::AuthorizeDate:
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;
case WorklistColumn::History:
$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>