dashboard.blade.php 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. {{--
  2. Вьюха: Дашборд административной панели
  3. Контроллер: Admin\DashboardController::index()
  4. Partials (в admin/partials/):
  5. _dashboard_stats — ряд 1: stat-карточки
  6. _dashboard_charts — ряд 2: графики + последние заявки
  7. _dashboard_actions — ряд 3: быстрые действия, система, контент
  8. --}}
  9. @extends('admin.layout')
  10. @section('title', 'Дашборд')
  11. @section('content_header')
  12. <div class="d-flex justify-content-between align-items-center">
  13. <h1 class="m-0">Панель управления</h1>
  14. <span class="text-muted small">{{ now()->format('d F Y, H:i') }}</span>
  15. </div>
  16. @stop
  17. @section('breadcrumb')
  18. <li class="breadcrumb-item active">Главная</li>
  19. @stop
  20. @section('content')
  21. @include('admin.partials._dashboard_stats')
  22. @include('admin.partials._dashboard_charts')
  23. @include('admin.partials._dashboard_actions')
  24. @stop
  25. @section('footer')
  26. <form action="{{ route('admin.logout') }}" method="post" class="d-inline">
  27. @csrf
  28. <button type="submit" class="btn btn-sm btn-flat btn-danger">
  29. <span class="fas fa-sign-out-alt"></span> Выйти
  30. </button>
  31. </form>
  32. @stop
  33. @push('js')
  34. <script src="https://cdn.jsdelivr.net/npm/chart.js@4.4.2/dist/chart.umd.min.js"></script>
  35. <script>
  36. (function () {
  37. Chart.defaults.font.family = "'Manrope', sans-serif";
  38. Chart.defaults.color = '#6c757d';
  39. var leadsData = @json($leadsChart);
  40. var visitsData = @json($visitsChart);
  41. // ── График заявок (line) ────────────────────────────────────────────
  42. new Chart(document.getElementById('chartLeads'), {
  43. type: 'line',
  44. data: {
  45. labels: leadsData.labels,
  46. datasets: [{
  47. label: 'Заявки',
  48. data: leadsData.data,
  49. borderColor: '#dc3545',
  50. backgroundColor: 'rgba(220,53,69,.08)',
  51. borderWidth: 2,
  52. pointRadius: 3,
  53. pointHoverRadius: 5,
  54. tension: .35,
  55. fill: true,
  56. }]
  57. },
  58. options: {
  59. responsive: true,
  60. plugins: { legend: { display: false } },
  61. scales: {
  62. y: {
  63. beginAtZero: true,
  64. ticks: { precision: 0, stepSize: 1 },
  65. grid: { color: 'rgba(0,0,0,.05)' }
  66. },
  67. x: { grid: { display: false } }
  68. }
  69. }
  70. });
  71. // ── График посещаемости (bar) ────────────────────────────────────────
  72. new Chart(document.getElementById('chartVisits'), {
  73. type: 'bar',
  74. data: {
  75. labels: visitsData.labels,
  76. datasets: [{
  77. label: 'Просмотры',
  78. data: visitsData.data,
  79. backgroundColor: 'rgba(23,162,184,.55)',
  80. borderColor: '#17a2b8',
  81. borderWidth: 1,
  82. borderRadius: 3,
  83. }]
  84. },
  85. options: {
  86. responsive: true,
  87. plugins: { legend: { display: false } },
  88. scales: {
  89. y: {
  90. beginAtZero: true,
  91. ticks: { precision: 0 },
  92. grid: { color: 'rgba(0,0,0,.05)' }
  93. },
  94. x: { grid: { display: false } }
  95. }
  96. }
  97. });
  98. })();
  99. </script>
  100. @endpush