index.blade.php 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234
  1. @extends('layouts.app')
  2. @php
  3. $labels_manager = $notDone = $labels = '';
  4. $la = [];
  5. foreach ($mountMafsType as $id => $count) {
  6. $la[] = $objectTypes[$id] . ' ' . $mountMafsType[$id] .'/'. $notMountMafsType[$id];
  7. $labels .= '"' . $objectTypes[$id] . ' (' . $mountMafsType[$id] .'/'. $notMountMafsType[$id] . ')",';
  8. $notDone .= '[' . $totalMafsType[$id] . ', ' . $mountMafsType[$id] . '],';
  9. }
  10. foreach ($doneMafsManager as $id => $count) {
  11. $labels_manager .= '"' . $managers[$id] . ' (' . $doneMafsManager[$id] .'/'. $notDoneMafsManager[$id] . ')",';
  12. }
  13. @endphp
  14. @section('content')
  15. <div class="row">
  16. <div class="col-12 text-center">
  17. <h1 class="text-success">Выполнение плана по монтажу МАФ</h1>
  18. </div>
  19. </div>
  20. <hr>
  21. <div class="row">
  22. <div class="col-xl-4 mb-2">
  23. <div class="text-center text-success fs-4 fw-bold" >
  24. {{ $totalMafs }} / {{ $totalOrders }}
  25. </div>
  26. <div class="text-center">
  27. Всего МАФ / Площадок
  28. </div>
  29. </div>
  30. <div class="col-xl-4 mb-2">
  31. <div class="text-center text-success fs-4 fw-bold" >
  32. {{ $mountMafs }} / {{ $mountOrders }}
  33. </div>
  34. <div class="text-center">
  35. Установлено МАФ / Площадок
  36. </div>
  37. </div>
  38. <div class="col-xl-4 mb-2">
  39. <div class="text-center text-success fs-6 fw-bold" >
  40. {{ implode('; ', $la) }}
  41. </div>
  42. <div class="text-center">
  43. Установлено по типам объекта
  44. </div>
  45. </div>
  46. </div>
  47. <hr>
  48. <div class="row align-items-center">
  49. <div class="col-xl-6">
  50. <div class="mx-5 px-5 mb-3">
  51. <canvas id="total_orders" class="mx-4"></canvas>
  52. </div>
  53. </div>
  54. <div class="col-xl-6 ">
  55. <div class=" mb-3">
  56. <canvas id="order_types" class="mx-4"></canvas>
  57. </div>
  58. </div>
  59. </div>
  60. <hr>
  61. <div class="row">
  62. <div class="col-12 text-center">
  63. <h1 class="text-success">Выполнение плана по сдаче МАФ</h1>
  64. </div>
  65. </div>
  66. <hr>
  67. <div class="row">
  68. <div class="col-xl-4">
  69. <div class="text-center text-success fs-4 fw-bold" >
  70. {{ $totalMafs }} / {{ $totalOrders }}
  71. </div>
  72. <div class="text-center">
  73. Всего МАФ / Площадок
  74. </div>
  75. </div>
  76. <div class="col-xl-4">
  77. <div class="text-center text-success fs-4 fw-bold" >
  78. {{ $doneMafs }} / {{ $doneOrders }}
  79. </div>
  80. <div class="text-center">
  81. Сдано МАФ / Площадок
  82. </div>
  83. </div>
  84. <div class="col-xl-4">
  85. <div class="text-center text-success fs-4 fw-bold" >
  86. {!! $totalSum !!}
  87. </div>
  88. <div class="text-center">
  89. Сдано на сумму
  90. </div>
  91. </div>
  92. </div>
  93. <hr>
  94. <div class="row align-items-center">
  95. <div class="col-xl-6 align-middle">
  96. <div class="mx-5 px-5 mb-3">
  97. <canvas id="done_orders" class="mx-4"></canvas>
  98. </div>
  99. </div>
  100. <div class="col-xl-6 align-middle">
  101. <div class=" mb-3">
  102. <canvas id="done_users" class="mx-4"></canvas>
  103. </div>
  104. </div>
  105. </div>
  106. @endsection
  107. @push('scripts')
  108. <script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
  109. <script>
  110. const ctx = document.getElementById('order_types');
  111. new Chart(ctx, {
  112. type: 'bar',
  113. data: {
  114. labels: [{!! $labels !!}],
  115. datasets: [
  116. {
  117. label: 'Установлено',
  118. data: [{{ implode(',', $mountMafsType) }}],
  119. borderWidth: 1,
  120. backgroundColor: [
  121. 'rgb(114,180,150)',
  122. ],
  123. grouped: false,
  124. },
  125. {
  126. label: 'Осталось установить',
  127. data: [{{ $notDone }}],
  128. borderWidth: 1,
  129. backgroundColor: [
  130. 'rgb(251,215,105)',
  131. ],
  132. grouped: false,
  133. }
  134. ]
  135. },
  136. options: {
  137. scales: {
  138. y: {
  139. beginAtZero: true
  140. }
  141. },
  142. }
  143. });
  144. // by users
  145. const ctx1 = document.getElementById('done_users');
  146. new Chart(ctx1, {
  147. type: 'bar',
  148. data: {
  149. labels: [{!! $labels_manager !!}],
  150. datasets: [
  151. {
  152. label: 'Сдано',
  153. data: [{{ implode(',', $doneMafsManager) }}],
  154. borderWidth: 1,
  155. backgroundColor: [
  156. 'rgb(114,180,150)',
  157. ],
  158. grouped: false,
  159. },
  160. {
  161. label: 'Осталось сдать',
  162. data: [{{ implode(',', $notDoneMafsManager) }}],
  163. borderWidth: 1,
  164. backgroundColor: [
  165. 'rgb(251,215,105)',
  166. ],
  167. grouped: false,
  168. }
  169. ]
  170. },
  171. options: {
  172. scales: {
  173. y: {
  174. beginAtZero: true
  175. }
  176. },
  177. }
  178. });
  179. // круговая диаграмма 1
  180. let circleDiag = document.getElementById('total_orders');
  181. new Chart(circleDiag, {
  182. type: 'doughnut',
  183. data: {
  184. labels: ['Установлено', 'Осталось установить'],
  185. datasets: [{
  186. data: [{{ $doneMafs }}, {{ $totalMafs - $doneMafs }}],
  187. backgroundColor: [
  188. 'rgb(114,180,150)',
  189. 'rgb(251,215,105)',
  190. ]
  191. }],
  192. },
  193. });
  194. // круговая диаграмма 2
  195. let circleDiag2 = document.getElementById('done_orders');
  196. new Chart(circleDiag2, {
  197. type: 'doughnut',
  198. data: {
  199. labels: ['Установлено', 'Осталось установить'],
  200. datasets: [{
  201. data: [{{ $doneMafs }}, {{ $totalMafs - $doneMafs }}],
  202. backgroundColor: [
  203. 'rgb(114,180,150)',
  204. 'rgb(251,215,105)',
  205. ]
  206. }],
  207. },
  208. });
  209. </script>
  210. @endpush