Skip to content
This repository was archived by the owner on Oct 16, 2023. It is now read-only.

Commit 6d75f41

Browse files
authored
Merge pull request #37 from alexjustesen/simplified-resource-table
Simplified resource table
2 parents 90c6557 + 0377b0d commit 6d75f41

File tree

8 files changed

+69
-59
lines changed

8 files changed

+69
-59
lines changed

.github/workflows/phpstan.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ jobs:
2020
coverage: none
2121

2222
- name: Install composer dependencies
23-
uses: ramsey/composer-install@v1
23+
uses: ramsey/composer-install@v2
2424

2525
- name: Run PHPStan
2626
run: ./vendor/bin/phpstan --error-format=github

composer.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,10 @@
5151
"test-coverage": "vendor/bin/pest coverage"
5252
},
5353
"config": {
54+
"allow-plugins": {
55+
"pestphp/pest-plugin": true,
56+
"phpstan/extension-installer": true
57+
},
5458
"sort-packages": true
5559
},
5660
"extra": {

resources/lang/de/activity.php

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,11 @@
88
'description' => 'Beschreibung',
99
'attributes' => 'Neue Werte',
1010
'old' => 'Alte Werte',
11-
'subject' => "Subjekt",
12-
'logged_at' => "Änderungszeit",
13-
'has_subject' => "besitzt Subjekt",
11+
'subject' => 'Subjekt',
12+
'logged_at' => 'Änderungszeit',
13+
'log' => 'Log',
14+
'plural_log' => 'Logs',
15+
'has_subject' => 'besitzt Subjekt',
1416
'label' => 'Aktivität',
1517
'plural_label' => 'Aktivitäten',
1618
];

resources/lang/en/activity.php

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,11 @@
88
'description' => 'Description',
99
'attributes' => 'Attributes',
1010
'old' => 'Old',
11-
'subject' => "Subject",
12-
'logged_at' => "Logged at",
13-
'has_subject' => "Has Subject",
11+
'subject' => 'Subject',
12+
'logged_at' => 'Logged at',
13+
'log' => 'Log',
14+
'plural_log' => 'Logs',
15+
'has_subject' => 'Has Subject',
1416
'label' => 'Activity',
15-
'plural_label' => 'Activity'
17+
'plural_label' => 'Activity',
1618
];

resources/lang/es/activity.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@
1010
'old' => 'Valor(es) anterior(es)',
1111
'subject' => 'Asunto',
1212
'logged_at' => 'Registrado el',
13+
'log' => 'Log',
14+
'plural_log' => 'Logs',
1315
'has_subject' => 'Tiene objeto sometido',
1416
'label' => 'Actividad',
1517
'plural_label' => 'Registros de actividad'

src/RelationManagers/ActivitiesRelationManager.php

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,9 @@
33
namespace AlexJustesen\FilamentSpatieLaravelActivitylog\RelationManagers;
44

55
use AlexJustesen\FilamentSpatieLaravelActivitylog\Resources\ActivityResource;
6-
use Filament\Facades\Filament;
76
use Filament\Resources\Form;
87
use Filament\Resources\RelationManagers\RelationManager;
98
use Filament\Resources\Table;
10-
use Filament\Tables;
119
use Illuminate\Database\Eloquent\Model;
1210

1311
class ActivitiesRelationManager extends RelationManager

src/Resources/ActivityResource.php

Lines changed: 50 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,14 @@
22

33
namespace AlexJustesen\FilamentSpatieLaravelActivitylog\Resources;
44

5-
use AlexJustesen\FilamentSpatieLaravelActivitylog\Contracts\IsActivitySubject;
6-
use AlexJustesen\FilamentSpatieLaravelActivitylog\RelationManagers\ActivitiesRelationManager;
7-
use AlexJustesen\FilamentSpatieLaravelActivitylog\ResourceFinder;
85
use AlexJustesen\FilamentSpatieLaravelActivitylog\Resources\ActivityResource\Pages;
6+
use Carbon\Carbon;
97
use Filament\Forms;
108
use Filament\Resources\Form;
119
use Filament\Resources\Resource;
1210
use Filament\Resources\Table;
1311
use Filament\Tables;
1412
use Illuminate\Database\Eloquent\Builder;
15-
use Illuminate\Support\HtmlString;
16-
use Livewire\Component;
1713
use Spatie\Activitylog\Models\Activity;
1814

1915
class ActivityResource extends Resource
@@ -40,39 +36,39 @@ public static function form(Form $form): Form
4036
->label(__('filament-spatie-activitylog::activity.causer_type'))
4137
->columnSpan([
4238
'default' => 2,
43-
'sm' => 1
39+
'sm' => 1,
4440
]),
4541
Forms\Components\TextInput::make('causer_id')
4642
->label(__('filament-spatie-activitylog::activity.causer_id'))
4743
->columnSpan([
4844
'default' => 2,
49-
'sm' => 1
45+
'sm' => 1,
5046
]),
5147
Forms\Components\TextInput::make('subject_type')
5248
->label(__('filament-spatie-activitylog::activity.subject_type'))
5349
->columnSpan([
5450
'default' => 2,
55-
'sm' => 1
51+
'sm' => 1,
5652
]),
5753
Forms\Components\TextInput::make('subject_id')
5854
->label(__('filament-spatie-activitylog::activity.subject_id'))
5955
->columnSpan([
6056
'default' => 2,
61-
'sm' => 1
57+
'sm' => 1,
6258
]),
6359
Forms\Components\TextInput::make('description')
6460
->label(__('filament-spatie-activitylog::activity.description'))->columnSpan(2),
6561
Forms\Components\KeyValue::make('properties.attributes')
6662
->label(__('filament-spatie-activitylog::activity.attributes'))
6763
->columnSpan([
6864
'default' => 2,
69-
'sm' => 1
65+
'sm' => 1,
7066
]),
7167
Forms\Components\KeyValue::make('properties.old')
7268
->label(__('filament-spatie-activitylog::activity.old'))
7369
->columnSpan([
7470
'default' => 2,
75-
'sm' => 1
71+
'sm' => 1,
7672
]),
7773
]);
7874
}
@@ -84,55 +80,60 @@ public static function table(Table $table): Table
8480
Tables\Columns\TextColumn::make('id')
8581
->label('ID')
8682
->sortable(),
83+
Tables\Columns\TextColumn::make('subject_type')
84+
->label(__('filament-spatie-activitylog::activity.subject'))
85+
->searchable(),
8786
Tables\Columns\TextColumn::make('description')
8887
->label(__('filament-spatie-activitylog::activity.description'))
8988
->searchable(),
90-
Tables\Columns\TextColumn::make('subject.name')
91-
->label(__('filament-spatie-activitylog::activity.subject'))
92-
->hidden(function (Component $livewire) {
93-
return method_exists($livewire, 'hideSubjectColumn')
94-
? call_user_func([$livewire, 'hideSubjectColumn'])
95-
: $livewire instanceof ActivitiesRelationManager;
96-
})
97-
->getStateUsing(function (Activity $record) {
98-
if (! $record->subject || ! $record->subject instanceof IsActivitySubject) {
99-
return new HtmlString('—');
100-
}
101-
102-
/** @var \AlexJustesen\FilamentSpatieLaravelActivitylog\Contracts\IsActivitySubject */
103-
$subject = $record->subject;
104-
105-
return $subject->getActivitySubjectDescription($record);
89+
Tables\Columns\TextColumn::make('log_name')
90+
->label(__('filament-spatie-activitylog::activity.log')),
91+
Tables\Columns\TextColumn::make('created_at')
92+
->label(__('filament-spatie-activitylog::activity.logged_at'))
93+
->dateTime(),
94+
])
95+
->filters([
96+
Tables\Filters\SelectFilter::make('event')
97+
->multiple()
98+
->options([
99+
'created' => 'Created',
100+
'updated' => 'Updated',
101+
'deleted' => 'Deleted',
102+
]),
103+
Tables\Filters\Filter::make('created_at')
104+
->form([
105+
Forms\Components\DatePicker::make('logged_from')
106+
->label('Logged from'),
107+
Forms\Components\DatePicker::make('logged_until')
108+
->label('Logged until'),
109+
])
110+
->query(function (Builder $query, array $data): Builder {
111+
return $query
112+
->when(
113+
$data['logged_from'],
114+
fn (Builder $query, $date): Builder => $query->whereDate('created_at', '>=', $date),
115+
)
116+
->when(
117+
$data['logged_until'],
118+
fn (Builder $query, $date): Builder => $query->whereDate('created_at', '<=', $date),
119+
);
106120
})
107-
->url(function (Activity $record) {
108-
if (! $record->subject || ! $record->subject instanceof IsActivitySubject) {
109-
return;
110-
}
121+
->indicateUsing(function (array $data): array {
122+
$indicators = [];
111123

112-
/** @var class-string<\Filament\Resources\Resource> */
113-
$resource = ResourceFinder::find($record->subject::class);
114-
115-
if (! $resource) {
116-
return;
124+
if ($data['from'] ?? null) {
125+
$indicators['from'] = 'Created from ' . Carbon::parse($data['from'])->toFormattedDateString();
117126
}
118127

119-
if (! $resource::hasPage('edit')) {
120-
return;
128+
if ($data['until'] ?? null) {
129+
$indicators['until'] = 'Created until ' . Carbon::parse($data['until'])->toFormattedDateString();
121130
}
122131

123-
return $resource::getUrl('edit', ['record' => $record->subject]) ?? null;
124-
}, shouldOpenInNewTab: true),
125-
Tables\Columns\TextColumn::make('created_at')
126-
->label(__('filament-spatie-activitylog::activity.logged_at'))
127-
->dateTime()
128-
->sortable(),
129-
])
130-
->filters([
131-
Tables\Filters\Filter::make('has_subject') ->label(__('filament-spatie-activitylog::activity.has_subject'))
132-
->query(fn (Builder $query) => $query->has('subject')),
132+
return $indicators;
133+
}),
133134
])
134135
->bulkActions([])
135-
->defaultSort('created_at', 'DESC');
136+
->defaultSort('id', 'DESC');
136137
}
137138

138139
protected static function getNavigationGroup(): ?string

src/Resources/ActivityResource/Pages/ListActivities.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
class ListActivities extends ListRecords
99
{
1010
protected static string $resource = ActivityResource::class;
11+
1112
protected function getTableRecordsPerPageSelectOptions(): array
1213
{
1314
return config('filament-spatie-laravel-activitylog.paginate') ?? parent::getTableRecordsPerPageSelectOptions();

0 commit comments

Comments
 (0)