<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
laboiteacode / filament-activity-timeline example snippets
use LaBoiteACode\FilamentActivityTimeline\FilamentActivityTimelinePlugin;
public function panel(Panel $panel): Panel
{
return $panel->plugins([
FilamentActivityTimelinePlugin::make(),
]);
}
use Illuminate\Database\Eloquent\Model;
use Spatie\Activitylog\Models\Concerns\LogsActivity;
use Spatie\Activitylog\Support\LogOptions;
class Order extends Model
{
use LogsActivity;
public function getActivitylogOptions(): LogOptions
{
return LogOptions::defaults()
->logOnly(['status', 'total', 'customer_id', 'paid_at'])
->logOnlyDirty();
}
}
use App\Models\Order;
use LaBoiteACode\FilamentActivityTimeline\Timeline;
use LaBoiteACode\FilamentActivityTimeline\Widgets\ActivityTimelineWidget;
class OrderTimelineWidget extends ActivityTimelineWidget
{
protected function timeline(): Timeline
{
return Timeline::make()
->source('spatie')
->heading('History')
->description('Everything that happened to this order.')
->limit(15)
->loadMore()
->filters();
}
}
use LaBoiteACode\FilamentActivityTimeline\Contracts\HasActivityTimelinePresentation;
use LaBoiteACode\FilamentActivityTimeline\Presentation\ModelPresentation;
class Order extends Model implements HasActivityTimelinePresentation
{
public static function activityTimelinePresentation(): ModelPresentation
{
return ModelPresentation::make()
->label('order')
->recordTitleUsing(fn (Order $order): string => $order->number);
}
}
use LaBoiteACode\FilamentActivityTimeline\ActivityTimeline;
ActivityTimeline::event('invoice.sent')
->label('Invoice sent')
->sentence(':causer sent :subject to :recipient.')
->property('recipient', 'recipient_email')
->icon('heroicon-o-paper-airplane')
->color('info');
Timeline::make()->filters(); // tabs for every known event
Timeline::make()->filters(['created', 'updated']); // tabs for these events only
use Filament\Support\Colors\Color;
use Filament\Support\Facades\FilamentColor;
FilamentColor::register(['purple' => Color::Purple]);
ActivityTimeline::event('vip.upgraded')->color('purple');
use LaBoiteACode\FilamentActivityTimeline\ActivityTimeline;
ActivityTimeline::registerSource('audit', fn () => new AuditSource());