diff --git a/app/Filament/Dashboard/Resources/OrganismResource.php b/app/Filament/Dashboard/Resources/OrganismResource.php index e0f448c1..f682996e 100644 --- a/app/Filament/Dashboard/Resources/OrganismResource.php +++ b/app/Filament/Dashboard/Resources/OrganismResource.php @@ -9,6 +9,7 @@ use Filament\Resources\Resource; use Filament\Tables; use Filament\Tables\Table; +use App\Filament\Dashboard\Resources\OrganismResource\Widgets\OrganismStats; class OrganismResource extends Resource { @@ -53,6 +54,7 @@ public static function table(Table $table): Table // ]) ->actions([ + Tables\Actions\ViewAction::make(), Tables\Actions\EditAction::make(), ]) ->bulkActions([ @@ -75,6 +77,14 @@ public static function getPages(): array 'index' => Pages\ListOrganisms::route('/'), 'create' => Pages\CreateOrganism::route('/create'), 'edit' => Pages\EditOrganism::route('/{record}/edit'), + 'view' => Pages\ViewOrganism::route('/{record}'), + ]; + } + + public static function getWidgets(): array + { + return [ + OrganismStats::class, ]; } } diff --git a/app/Filament/Dashboard/Resources/OrganismResource/Pages/ViewOrganism.php b/app/Filament/Dashboard/Resources/OrganismResource/Pages/ViewOrganism.php new file mode 100644 index 00000000..62eb5b5c --- /dev/null +++ b/app/Filament/Dashboard/Resources/OrganismResource/Pages/ViewOrganism.php @@ -0,0 +1,20 @@ +record->id.'molecules.count', function () { + return $this->record->molecules->count(); + })), + Stat::make('Total Geo Locations', Cache::rememberForever('stats.organisms'.$this->record->id.'geo_locations.count', function () { + // refactor the below with eloquent relations if possible + $molecules = $this->record->molecules; + $count = 0; + foreach($molecules as $molecule) { + $count += $molecule->geoLocations()->count(); + } + return $count; + })), + ]; + } +}