Skip to content

Commit 16b239d

Browse files
authored
Merge pull request #47 from Orphail/bugfix/formats-dates-to-datetime-format
Fixes dates format for issue #46
2 parents 8a5d18a + 765b09e commit 16b239d

File tree

2 files changed

+40
-3
lines changed

2 files changed

+40
-3
lines changed

src/Actions/Concerns/ActionContent.php

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
namespace Rmsramos\Activitylog\Actions\Concerns;
44

5+
use Carbon\Carbon;
6+
use Carbon\Exceptions\InvalidFormatException;
57
use Closure;
68
use Filament\Actions\StaticAction;
79
use Filament\Infolists\Components\TextEntry;
@@ -251,10 +253,26 @@ protected function formatActivityData($activity): array
251253
'subject' => $activity->subject,
252254
'event' => $activity->event,
253255
'causer' => $activity->causer,
254-
'properties' => json_decode($activity->properties, true),
256+
'properties' => $this->formatDateValues(json_decode($activity->properties, true)),
255257
'batch_uuid' => $activity->batch_uuid,
256258
'update' => $activity->updated_at,
257259
];
258260
}
259261

262+
private static function formatDateValues(array|string $value): array|string
263+
{
264+
if (is_array($value)) {
265+
foreach ($value as &$item) {
266+
$item = self::formatDateValues($item);
267+
}
268+
return $value;
269+
}
270+
271+
try {
272+
return Carbon::parse($value)
273+
->format(config('filament-activitylog.datetime_format', 'd/m/Y H:i:s'));
274+
} catch (InvalidFormatException $e) {
275+
return $value;
276+
}
277+
}
260278
}

src/Resources/ActivitylogResource.php

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
namespace Rmsramos\Activitylog\Resources;
44

5+
use Carbon\Exceptions\InvalidFormatException;
6+
use Filament\Facades\Filament;
57
use Filament\Forms\Components\DatePicker;
68
use Filament\Forms\Components\KeyValue;
79
use Filament\Forms\Components\Placeholder;
@@ -139,13 +141,13 @@ public static function form(Form $form): Form
139141

140142
if ($old = $record->properties->get('old')) {
141143
$schema[] = KeyValue::make('old')
142-
->afterStateHydrated(fn (KeyValue $component) => $component->state($old))
144+
->formatStateUsing(fn () => self::formatDateValues($old))
143145
->label(__('activitylog::forms.fields.old.label'));
144146
}
145147

146148
if ($attributes = $record->properties->get('attributes')) {
147149
$schema[] = KeyValue::make('attributes')
148-
->afterStateHydrated(fn (KeyValue $component) => $component->state($attributes))
150+
->formatStateUsing(fn () => self::formatDateValues($attributes))
149151
->label(__('activitylog::forms.fields.attributes.label'));
150152
}
151153

@@ -304,4 +306,21 @@ public static function canAccess(): bool
304306
return ActivitylogPlugin::get()->isAuthorized();
305307
}
306308
}
309+
310+
private static function formatDateValues(array|string $value): array|string
311+
{
312+
if (is_array($value)) {
313+
foreach ($value as &$item) {
314+
$item = self::formatDateValues($item);
315+
}
316+
return $value;
317+
}
318+
319+
try {
320+
return Carbon::parse($value)
321+
->format(config('filament-activitylog.datetime_format', 'd/m/Y H:i:s'));
322+
} catch (InvalidFormatException $e) {
323+
return $value;
324+
}
325+
}
307326
}

0 commit comments

Comments
 (0)