@extends('admin.layouts.app') @section('title', 'İçerik İstatistikleri') @section('page-title', 'İçerik İstatistikleri') @push('styles') @endpush @section('content') {{-- Özet kartlar --}}
{{ number_format($totalAnimes) }}
Toplam Anime
{{ number_format($publishedAnimes) }} yayında
{{ number_format($totalEpisodes) }}
Toplam Bölüm
{{ number_format($publishedEps) }} yayında
{{ number_format($totalSeasons) }}
Toplam Sezon
@php $avgEpPerAnime = $totalAnimes > 0 ? round($totalEpisodes / $totalAnimes, 1) : 0; @endphp
{{ $avgEpPerAnime }}
Ort. Bölüm/Anime
@php $unpublished = $totalEpisodes - $publishedEps; @endphp
{{ number_format($unpublished) }}
Taslak Bölüm
Yayında değil
{{-- Yükleme Isı Haritası --}}
Bölüm Yükleme Yoğunluk Haritası (son 52 hafta)
@php // Ay etiketleri için hesaplama $heatMonths = []; foreach ($heatData as $wi => $week) { $firstDay = $week[0]['date']; $month = \Carbon\Carbon::parse($firstDay)->format('M'); $dayOfMonth = \Carbon\Carbon::parse($firstDay)->day; if ($dayOfMonth <= 7 && !isset($lastMonth) || (isset($lastMonth) && $lastMonth !== $month)) { $heatMonths[$wi] = $month; $lastMonth = $month; } else { $heatMonths[$wi] = ''; } } $heatMax = collect($heatData)->flatten(1)->max('cnt') ?: 1; @endphp
{{-- Gün etiketleri --}}
  Pzt   Çar   Cum  
{{-- Ay etiketleri --}}
@foreach($heatMonths as $wi => $mon) {{ $mon }} @endforeach
{{-- Hücreler --}}
@foreach($heatData as $week)
@foreach($week as $cell) @php $cnt = $cell['cnt']; if ($cnt === 0) $level = 0; elseif ($cnt <= 2) $level = 1; elseif ($cnt <= 5) $level = 2; elseif ($cnt <= 10) $level = 3; else $level = 4; $tip = $cell['date'] . ': ' . $cnt . ' bölüm'; @endphp
@endforeach
@endforeach
Az Çok
{{-- 90 gün trend + Aylık dağılım --}}
Son 90 Gün — Günlük Yükleme Trendi
Aylık Bölüm Dağılımı (24 Ay)
{{-- Saatlik + Haftalık dağılım --}}
Saatlik Yükleme Dağılımı (tüm zamanlar)
@php $peakHour = array_search(max($hourlyEpsData), $hourlyEpsData); $peakCount = max($hourlyEpsData); @endphp @if($peakCount > 0)
En yoğun saat: {{ str_pad($peakHour,2,'0',STR_PAD_LEFT) }}:00 ({{ number_format($peakCount) }} bölüm)
@endif
Haftanın Günlerine Göre (tüm zamanlar)
@php $peakDow = array_search(max($weekdayData), $weekdayData); $peakDowCount = max($weekdayData); @endphp @if($peakDowCount > 0)
En yoğun gün: {{ $weekdayLabels[$peakDow] }} ({{ number_format($peakDowCount) }} bölüm)
@endif
{{-- Top animeler + Tür dağılımı --}}
En Fazla Bölüm İçeren 10 Anime
@php $maxEpCount = $topByEpisodes->max('episodes_count') ?: 1; @endphp @foreach($topByEpisodes as $i => $a)
{{ $i+1 }} {{ $a->title }} @php $statusColor = match($a->status) { 'ongoing'=>'var(--success)','completed'=>'#79c0ff','upcoming'=>'#f0883e',default=>'var(--text2)' }; @endphp {{ match($a->status){'ongoing'=>'Devam','completed'=>'Bitti','upcoming'=>'Yakında',default=>$a->status} }}
{{ $a->episodes_count }}
@endforeach
Türe Göre Bölüm Sayısı
@php $maxGenreEp = $genreEpStats->max('ep_count') ?: 1; @endphp @foreach($genreEpStats as $g)
{{ $g->name }}
{{ number_format($g->ep_count) }}
@endforeach
{{-- Son eklenen bölümler --}}
Son Eklenen Bölümler
@foreach($recentEpisodes as $ep)
{{ $ep->anime?->title ?? '—' }}
S{{ $ep->season?->season_number ?? '?' }}E{{ $ep->episode_number }} @if($ep->title) · {{ $ep->title }} @endif
{{ $ep->is_published ? 'Yayında' : 'Taslak' }} {{ $ep->created_at->diffForHumans() }}
@endforeach
Son Eklenen Animeler
@foreach($recentAnimes as $a)
{{ strtoupper($a->type) }}
{{ $a->is_published ? 'Yayında' : 'Taslak' }} {{ $a->created_at->diffForHumans() }}
@endforeach
@endsection @push('scripts') @endpush