_dashboard_stats.blade.php 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. {{--
  2. Partial: ряд 1 дашборда — stat-карточки (заявки, посетители, авто, время ответа)
  3. Переменные: $leadsToday, $leadsUnread, $leadsYesterday, $leadsTotal,
  4. $visitsToday, $visitYesterday, $uniqueToday,
  5. $carsTotal, $servicesTotal, $reviewsTotal,
  6. $responseTime, $systemInfo
  7. --}}
  8. <div class="row">
  9. {{-- Заявки сегодня --}}
  10. <div class="col-6 col-md-3">
  11. <div class="info-box shadow-sm mb-3">
  12. <span class="info-box-icon {{ $leadsUnread > 0 ? 'bg-danger' : 'bg-success' }} elevation-1">
  13. <i class="fas fa-paper-plane"></i>
  14. </span>
  15. <div class="info-box-content">
  16. <span class="info-box-text">Заявки сегодня</span>
  17. <span class="info-box-number">
  18. {{ $leadsToday }}
  19. @if($leadsUnread > 0)
  20. <span class="badge badge-danger ml-1">{{ $leadsUnread }} новых</span>
  21. @endif
  22. </span>
  23. <div class="progress" style="height:3px">
  24. @php $pct = $leadsYesterday > 0 ? min(100, round($leadsToday/$leadsYesterday*100)) : ($leadsToday > 0 ? 100 : 0); @endphp
  25. <div class="progress-bar {{ $leadsToday >= $leadsYesterday ? 'bg-success' : 'bg-warning' }}"
  26. style="width:{{ $pct }}%"></div>
  27. </div>
  28. <span class="progress-description">
  29. Вчера: {{ $leadsYesterday }} | Всего: {{ $leadsTotal }}
  30. </span>
  31. </div>
  32. </div>
  33. </div>
  34. {{-- Посетители сегодня --}}
  35. <div class="col-6 col-md-3">
  36. <div class="info-box shadow-sm mb-3">
  37. <span class="info-box-icon bg-info elevation-1">
  38. <i class="fas fa-eye"></i>
  39. </span>
  40. <div class="info-box-content">
  41. <span class="info-box-text">Просмотры сегодня</span>
  42. <span class="info-box-number">
  43. {{ number_format($visitsToday) }}
  44. </span>
  45. <div class="progress" style="height:3px">
  46. @php $vPct = ($visitYesterday?->views ?? 0) > 0 ? min(100, round($visitsToday/($visitYesterday->views)*100)) : ($visitsToday > 0 ? 100 : 0); @endphp
  47. <div class="progress-bar bg-info" style="width:{{ $vPct }}%"></div>
  48. </div>
  49. <span class="progress-description">
  50. Уник. IP: {{ $uniqueToday }} | Вчера: {{ $visitYesterday?->views ?? 0 }}
  51. </span>
  52. </div>
  53. </div>
  54. </div>
  55. {{-- Авто в каталоге --}}
  56. <div class="col-6 col-md-3">
  57. <div class="info-box shadow-sm mb-3">
  58. <span class="info-box-icon bg-warning elevation-1">
  59. <i class="fas fa-car"></i>
  60. </span>
  61. <div class="info-box-content">
  62. <span class="info-box-text">Автомобилей</span>
  63. <span class="info-box-number">{{ $carsTotal }}</span>
  64. <div class="progress" style="height:3px">
  65. <div class="progress-bar bg-warning" style="width:100%"></div>
  66. </div>
  67. <span class="progress-description">
  68. Услуг: {{ $servicesTotal }} | Отзывов: {{ $reviewsTotal }}
  69. </span>
  70. </div>
  71. </div>
  72. </div>
  73. {{-- Скорость ответа --}}
  74. <div class="col-6 col-md-3">
  75. <div class="info-box shadow-sm mb-3">
  76. <span class="info-box-icon {{ ($responseTime ?? 999) < 200 ? 'bg-success' : (($responseTime ?? 999) < 500 ? 'bg-warning' : 'bg-danger') }} elevation-1">
  77. <i class="fas fa-tachometer-alt"></i>
  78. </span>
  79. <div class="info-box-content">
  80. <span class="info-box-text">Время ответа</span>
  81. <span class="info-box-number">
  82. @if($responseTime !== null)
  83. {{ $responseTime }} <small>мс</small>
  84. @else
  85. @endif
  86. </span>
  87. <div class="progress" style="height:3px">
  88. @php $rPct = $responseTime ? min(100, round($responseTime / 10)) : 0; @endphp
  89. <div class="progress-bar {{ $responseTime < 200 ? 'bg-success' : ($responseTime < 500 ? 'bg-warning' : 'bg-danger') }}"
  90. style="width:{{ $rPct }}%"></div>
  91. </div>
  92. <span class="progress-description">
  93. PHP {{ $systemInfo['php'] }} | OPcache {{ $systemInfo['opcache'] ? '✓' : '✗' }}
  94. </span>
  95. </div>
  96. </div>
  97. </div>
  98. </div>