You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

project.blade.php 16KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299
  1. @extends('layouts.main')
  2. @php
  3. $hasNotification = true;
  4. $FDI_amt = 100000000;
  5. @endphp
  6. @section('content')
  7. <div class="flex flex-col gap-4 bg-white rounded p-10 min-h-screen">
  8. <div class="flex justify-between items-center">
  9. <p class="flex items-center text-xs">
  10. <i class="fa-solid fa-house text-[#BD8736] mr-1"></i>
  11. <span>Dashboard <i class="fa-solid fa-chevron-right"></i> Lihat Projek</span>
  12. </p>
  13. <div class="relative cursor-pointer">
  14. @if ($hasNotification)
  15. <div class="absolute top-[2px] left-0 w-2 h-2 bg-[#E50A0A] rounded-full"></div>
  16. @endif
  17. <i class="fa-regular fa-bell text-md hover:text-[#BD8736]"></i>
  18. </div>
  19. </div>
  20. <div class="flex" style="gap:10px">
  21. <div class="relative w-fit">
  22. <input type="text" placeholder="Carian"
  23. class="w-full pl-4 pr-10 py-1 px-5 border border-gray-300 rounded-lg text-sm text-gray-700 bg-white hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-blue-500" />
  24. <div class="pointer-events-none absolute text-gray-500 text-xs"
  25. style="top: 50%; transform: translateY(-50%); right:10px">
  26. <i class="fas fa-search"></i>
  27. </div>
  28. </div>
  29. <div class="relative w-fit">
  30. <select id="selectProjectType"
  31. class="appearance-none w-full pl-4 pr-10 py-1 px-5 border border-gray-300 rounded-lg text-sm text-gray-700 cursor-pointer bg-white hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-blue-500"
  32. onchange="fetchAndRenderProjects()">
  33. <option value="commited" selected>Komited</option>
  34. <option value="potential">Pontential</option>
  35. </select>
  36. </div>
  37. <div class="relative w-fit">
  38. <select
  39. class="appearance-none w-full pl-4 pr-10 py-1 px-5 border border-gray-300 rounded-lg text-sm text-gray-700 cursor-pointer bg-white hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-blue-500">
  40. <option value="all" selected>Status</option>
  41. <option value="final">Perjanjian Muktamad</option>
  42. <option value="draft">Deraf Perjanjian</option>
  43. </select>
  44. </div>
  45. <div class="relative w-fit">
  46. <select
  47. class="appearance-none w-full pl-4 pr-10 py-1 px-5 border border-gray-300 rounded-lg text-sm text-gray-700 cursor-pointer bg-white hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-blue-500">
  48. <option value="all" selected>Daerah</option>
  49. <option value="1">Gambang</option>
  50. <option value="2">Pekan</option>
  51. </select>
  52. </div>
  53. <div class="relative w-fit">
  54. <select
  55. class="appearance-none w-full pl-4 pr-10 py-1 px-5 border border-gray-300 rounded-lg text-sm text-gray-700 cursor-pointer bg-white hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-blue-500">
  56. <option value="all" selected>Tahun</option>
  57. <option value="2026">2026</option>
  58. <option value="2025">2025</option>
  59. </select>
  60. </div>
  61. <button
  62. class="bg-[#012961] hover:bg-blue-700 text-white font-semibold w-fit text-xs py-2 px-4 rounded-lg shadow-md transition duration-200 ml-auto">
  63. <span><i class="fa-solid fa-file-excel text-white text-xs pe-3"></i> Eksport</span>
  64. </button>
  65. </div>
  66. <div class="border rounded">
  67. <h5 class="font-semibold m-5">Senarai Pelaburan Komited Perbadanan Kemajuan Negeri Pahang (PKNP) 2025</h5>
  68. <div class="bg-[#012961] text-white p-5">
  69. <h3 class="text-xs font-bold">FOREIGN DIRECT INVESTMENT (FDI)</h3>
  70. </div>
  71. <div class="overflow-x-scroll overflow-hidden rounded-[10px]">
  72. <table class="min-w-[2000px] text-sm text-left text-gray-700 border-collapse">
  73. <thead>
  74. <tr>
  75. <th class="text-xs px-4 py-5">Bil</th>
  76. <th class="text-xs px-4 py-5">Nama Syarikat</th>
  77. <th class="text-xs px-4 py-5">Jenis Projek</th>
  78. <th class="text-xs px-4 py-5">Status</th>
  79. <th class="text-xs px-4 py-5">Catatan</th>
  80. <th class="text-xs px-4 py-5">Tarikh MOA Ditandatangani</th>
  81. <th class="text-xs px-4 py-5">Daerah</th>
  82. <th class="text-xs px-4 py-5">Anggaran Nilai Pelaburan (RM)</th>
  83. <th class="text-xs px-4 py-5">Anggaran Peluang Pekerjaan</th>
  84. <th class="text-xs px-4 py-5">Keluasan (Ekar)</th>
  85. </tr>
  86. </thead>
  87. <tbody id="FDItableBody">
  88. @foreach ($commitedFDIProject as $index => $project)
  89. <tr>
  90. <td class="px-4 py-2">{{ $index + 1 }}</td>
  91. <td class="px-4 py-2">{{ $project['company_name'] }}</td>
  92. <td class="px-4 py-2">{{ $project['type'] }}
  93. </td>
  94. <td class="px-4 py-2 text-center">
  95. @switch($project['status'])
  96. @case(1)
  97. <div class="px-3 py-1 text-xs rounded-lg border inline-block"
  98. style="color:#E5A20A; background-color:#FFFBF4; border-color:#E5A20A;width:100%">
  99. Perjanjian Muktamad
  100. </div>
  101. @break
  102. @case(0)
  103. <div class="px-3 py-1 text-xs rounded-lg border inline-block"
  104. style="color:#49B452; background-color:#F7FFF7; border-color:#49B452; width:100%">
  105. Deraf Perjanjian
  106. </div>
  107. @break
  108. <div></div>
  109. @default
  110. @endswitch
  111. </td>
  112. <td class="px-4 py-2 text-xs">{{ $project['note'] }}</td>
  113. <td class="px-4 py-2 text-xs">{{ $project['moa_date'] }}</td>
  114. <td class="px-4 py-2 text-xs">{{ $project['area'] }}</td>
  115. <td class="px-4 py-2 text-xs">{{ number_format($project['invesment_approx'], 2) }}</td>
  116. <td class="px-4 py-2 text-xs">{{ $project['labour_approx'] }}</td>
  117. @if ($project['land_area'])
  118. <td class="px-4 py-2 text-xs">{{ number_format($project['land_area']) }}</td>
  119. @else
  120. <td class="px-4 py-2 text-xs"><span class="text-md font-bold">TBC</span></td>
  121. @endif
  122. </tr>
  123. @endforeach
  124. </tbody>
  125. </table>
  126. </div>
  127. <div class="bg-[#F8F8F8] p-5">
  128. <h3 class="text-xs font-bold">JUMLAH FDI: <span class="ms-4">{{ number_format($FDI_amt, 2) }}</span></h3>
  129. </div>
  130. </div>
  131. <div class="border rounded overflow-hidden">
  132. <div class="bg-[#012961] text-white p-5">
  133. <h3 class="text-xs font-bold">Domestic Direct Investment (DDI)</h3>
  134. </div>
  135. <div class="overflow-x-scroll overflow-hidden rounded-[10px]">
  136. <table class="min-w-[2000px] text-sm text-left text-gray-700 border-collapse">
  137. <thead>
  138. <tr>
  139. <th class="text-xs px-4 py-5">Bil</th>
  140. <th class="text-xs px-4 py-5">Nama Syarikat</th>
  141. <th class="text-xs px-4 py-5">Jenis Projek</th>
  142. <th class="text-xs px-4 py-5">Status</th>
  143. <th class="text-xs px-4 py-5">Catatan</th>
  144. <th class="text-xs px-4 py-5">Tarikh MOA Ditandatangani</th>
  145. <th class="text-xs px-4 py-5">Daerah</th>
  146. <th class="text-xs px-4 py-5">Anggaran Nilai Pelaburan (RM)</th>
  147. <th class="text-xs px-4 py-5">Anggaran Peluang Pekerjaan</th>
  148. <th class="text-xs px-4 py-5">Keluasan (Ekar)</th>
  149. </tr>
  150. </thead>
  151. <tbody>
  152. @foreach ($commitedDDIProject as $index => $project)
  153. <tr>
  154. <td class="px-4 py-2">{{ $index + 1 }}</td>
  155. <td class="px-4 py-2">{{ $project['company_name'] }}</td>
  156. <td class="px-4 py-2">{{ $project['type'] }}
  157. </td>
  158. <td class="px-4 py-2 text-center">
  159. @switch($project['status'])
  160. @case(1)
  161. <div class="px-3 py-1 text-xs rounded-lg border inline-block"
  162. style="color:#E5A20A; background-color:#FFFBF4; border-color:#E5A20A;width:100%">
  163. Perjanjian Muktamad
  164. </div>
  165. @break
  166. @case(0)
  167. <div class="px-3 py-1 text-xs rounded-lg border inline-block"
  168. style="color:#49B452; background-color:#F7FFF7; border-color:#49B452; width:100%">
  169. Deraf Perjanjian
  170. </div>
  171. @break
  172. <div></div>
  173. @default
  174. @endswitch
  175. </td>
  176. <td class="px-4 py-2 text-xs">{{ $project['note'] }}</td>
  177. <td class="px-4 py-2 text-xs">{{ $project['moa_date'] }}</td>
  178. <td class="px-4 py-2 text-xs">{{ $project['area'] }}</td>
  179. <td class="px-4 py-2 text-xs">{{ number_format($project['invesment_approx'], 2) }}</td>
  180. <td class="px-4 py-2 text-xs">{{ $project['labour_approx'] }}</td>
  181. @if ($project['land_area'])
  182. <td class="px-4 py-2 text-xs">{{ number_format($project['land_area'], 2) }}</td>
  183. @else
  184. <td class="px-4 py-2 text-xs"><span class="text-md font-bold">TBC</span></td>
  185. @endif
  186. </tr>
  187. @endforeach
  188. </tbody>
  189. </table>
  190. </div>
  191. <div class="bg-[#F8F8F8] p-5">
  192. <h3 class="text-xs font-bold">JUMLAH DDI: <span class="ms-4">{{ number_format($FDI_amt, 2) }}</span>
  193. </h3>
  194. </div>
  195. </div>
  196. <button
  197. class="bg-[#012961] hover:bg-blue-700 text-white font-semibold w-fit text-xs py-2 px-4 rounded-lg shadow-md transition duration-200 ml-auto">
  198. <i class="fa-solid fa-download text-white text-xs"></i>
  199. <span>Simpan</span>
  200. </button>
  201. <div class="border rounded p-5">
  202. <h5 class="font-semibold mb-4">Rekod Penetapan KPI Pelaburan</h5>
  203. <p class="text-xs font-bold">YB Dato’ Pengerusi memohon agar sasaran adalah melebihi sasaran tahun 2024: <span
  204. class="text-[#BD8736]">DEADLINE, 2 WEEK from JPPP MEETING.</span></p>
  205. <p class="text-xs font-bold">15-04-2025 | Jumlah Pelaburan Komited telah dikemaskini berdasarkan data yang
  206. diisi
  207. oleh S-GLC. Jumlah pelaburan komited berjumlah RM 2,000,333.00.</p>
  208. </div>
  209. </div>
  210. @endsection
  211. @section('scripts')
  212. <script>
  213. async function fetchAndRenderProjects() {
  214. const selectedType = document.getElementById('selectProjectType').value;
  215. try {
  216. const response = await fetch(`/api/project/${selectedType}`); // Adjust to your real endpoint
  217. const data = await response.json();
  218. if (!data.FDIProject || !data.DDIProject) return
  219. renderFDITable(data.FDIProject)
  220. } catch (error) {
  221. console.error('Error fetching projects:', error);
  222. }
  223. }
  224. function renderFDITable(data) {
  225. const tbody = document.getElementById('FDItableBody');
  226. tbody.innerHTML = ''; // Clear existing content
  227. data.forEach((project, index) => {
  228. const statusHTML = (() => {
  229. switch (project.status) {
  230. case 1:
  231. return `<div class="px-3 py-1 text-xs rounded-lg border inline-block"
  232. style="color:#E5A20A; background-color:#FFFBF4; border-color:#E5A20A;width:100%">
  233. Perjanjian Muktamad</div>`;
  234. case 0:
  235. return `<div class="px-3 py-1 text-xs rounded-lg border inline-block"
  236. style="color:#49B452; background-color:#F7FFF7; border-color:#49B452;width:100%">
  237. Deraf Perjanjian</div>`;
  238. default:
  239. return `<div>-</div>`;
  240. }
  241. })();
  242. const row = `
  243. <tr>
  244. <td class="px-4 py-2">${index + 1}</td>
  245. <td class="px-4 py-2">${project.company_name}</td>
  246. <td class="px-4 py-2">${project.type}</td>
  247. <td class="px-4 py-2 text-center">${statusHTML}</td>
  248. <td class="px-4 py-2 text-xs">${project.note}</td>
  249. <td class="px-4 py-2 text-xs">${project.moa_date}</td>
  250. <td class="px-4 py-2 text-xs">${project.area}</td>
  251. <td class="px-4 py-2 text-xs">${Number(project.invesment_approx).toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2})}</td>
  252. <td class="px-4 py-2 text-xs">${project.labour_approx}</td>
  253. <td class="px-4 py-2 text-xs">${project.land_area ? Number(project.land_area).toLocaleString() : '<span class="text-md font-bold">TBC</span>'}</td>
  254. </tr>
  255. `;
  256. tbody.insertAdjacentHTML('beforeend', row);
  257. });
  258. }
  259. document.addEventListener('DOMContentLoaded', fetchAndRenderProjects);
  260. </script>
  261. @endsection