- How do I convert an existing Filament Table into a timeline view?
- Replace your `->columns()` method with `TimelineEntry::make()` and add either `->asTimeline()` or `->asDoubleSidedTimeline()` at the end of your table definition. The package preserves all existing Filament query, grouping, and action logic. Example: `TimelineEntry::make('activity')->asTimeline()`.
- Does this package work with Filament v5.0+ only, or will it break in future Filament versions?
- The package is explicitly built for Filament Tables v5.0+ and may break if Filament introduces major changes to its table macros or column system. Pin `filament/tables` to `^5.0` in your `composer.json` to avoid compatibility risks during Filament updates.
- Can I use this for real-time data like live chat logs or stock tickers?
- No, this package is designed for server-rendered Eloquent queries. Real-time data requires additional layers like Laravel Echo or Livewire integration. The timeline relies on static or paginated query results, not WebSocket updates.
- Will this work with my custom Filament column types (e.g., custom Blade views or non-standard columns)?
- The `TimelineEntry` column supports standard Filament columns (e.g., TextColumn, AvatarColumn) out of the box. Custom Blade-based columns may not render correctly. Test thoroughly or extend the `TimelineEntry` class to support your specific column types.
- How do I handle large datasets (e.g., 10,000+ entries) without performance issues?
- Use the built-in `Load More` pagination or implement server-side cursors for infinite scrolling. Avoid loading all entries at once. For extreme cases, consider pre-aggregating data in the database or using database cursors with `->cursorPaginate()`.
- Can I customize the timeline’s styling or layout beyond the default Tailwind CSS?
- Yes, publish the package’s assets with `php artisan filament:assets` to access the CSS. Override styles using Tailwind’s utility classes or scoped CSS. For complex themes, extend the `TimelineEntry` class or use `!important` sparingly to avoid conflicts.
- Does this package support grouping entries by custom time periods (e.g., hourly, weekly) or only by day?
- The package groups entries by day by default, using Filament’s existing `Grouping` system. For custom periods (e.g., hourly), use Filament’s `Group::make()` with a custom closure to format your desired time range. Example: `Group::make('hour')->label(fn ($value) => Carbon::parse($value)->format('H:i'))`.
- How do I add actions (e.g., edit, delete) to timeline entries?
- Use Filament’s standard `->actions()` method within your `TimelineEntry::make()` definition. The package integrates seamlessly with Filament’s action system, including dropdown menus and kebab actions. Example: `TimelineEntry::make()->actions([EditAction::make(), DeleteAction::make()])`.
- Is there a way to export timeline data to CSV or PDF?
- The package doesn’t include built-in export functionality, but you can combine it with Filament’s `ExportTableAction` or Laravel’s `spatie/laravel-data-export` package. Wrap your timeline query in a custom action to generate exports while preserving the timeline’s structure.
- What are the alternatives to this package if I need more advanced timeline features?
- For real-time timelines, consider Laravel Livewire with custom components or libraries like `timelinejs`. For non-Filament solutions, explore `spatie/laravel-activitylog` (for audit trails) or build a custom Blade component with `laravel-breeze` or `inertiajs`. This package is optimized for Filament’s ecosystem and chronological data visualization.