@extends('layouts.app') @section('title', 'Saved reports') @section('content')

Saved reports

Filter presets you can reopen in one click, and schedules that email a report to you.

All reports

Save the current view

@csrf
@error('name'){{ $message }}@enderror
@error('report_key'){{ $message }}@enderror
The query string of the report you want to reopen. Leave blank for defaults.

Schedule a delivery

@csrf
CSV exports can only be sent as attachments; dashboards only as links.
@error('email'){{ $message }}@enderror

My saved reports

{{ $mine->count() }}
@if ($mine->isEmpty()) @include('components.empty-state', [ 'icon' => '💾', 'title' => 'Nothing saved yet', 'message' => 'Save a filter preset above to reopen the same view later.', ]) @else @foreach ($mine as $report) @endforeach
NameReportShared
{{ $report->name }} @if ($report->filters)
{{ \Illuminate\Support\Str::limit(http_build_query($report->filters), 40) }}
@endif
{{ $reports[$report->report_key] ?? $report->report_key }} {{ $report->is_shared ? 'shared' : 'private' }}
@csrf @method('DELETE')
@endif

Shared with me

{{ $shared->count() }}
@if ($shared->isEmpty()) @include('components.empty-state', [ 'icon' => '👥', 'title' => 'Nothing shared', 'message' => 'Reports your colleagues share appear here.', ]) @else @foreach ($shared as $report) @endforeach
NameReportBy
{{ $report->name }} {{ $reports[$report->report_key] ?? $report->report_key }} {{ $report->owner?->name ?: '—' }}
@endif

My subscriptions

{{ $subscriptions->count() }}
@if ($subscriptions->isEmpty()) @include('components.empty-state', [ 'icon' => '📧', 'title' => 'No subscriptions', 'message' => 'Schedule a report above and it will be emailed to you on the chosen cycle.', ]) @else @foreach ($subscriptions as $subscription) @endforeach
ReportFrequencyFormatSend toLast sentStatus
{{ $reports[$subscription->report_key] ?? $subscription->report_key }} {{ title_case_words($subscription->frequency) }} {{ $subscription->format === 'csv' ? 'CSV attachment' : 'Link' }} {{ $subscription->email }} {{ $subscription->last_sent_at?->diffForHumans() ?: 'never' }} {{ $subscription->is_active ? 'Active' : 'Paused' }}
@csrf
@csrf
@csrf @method('DELETE')
@endif
Due subscriptions are sent by nowills:send-reports, which the scheduler runs on a cron entry.
@endsection