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 17KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330
  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. id="selectProjectStatus"
  40. 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"
  41. onchange="renderFDITable()">
  42. <option value="all" selected>Status</option>
  43. <option value="1">Perjanjian Muktamad</option>
  44. <option value="0">Deraf Perjanjian</option>
  45. </select>
  46. </div>
  47. <div class="relative w-fit">
  48. <select
  49. id="selectProjectArea"
  50. 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"
  51. onchange="renderFDITable()">
  52. <option value="all" selected>Daerah</option>
  53. <option value="Gambang">Gambang</option>
  54. <option value="Pekan">Pekan</option>
  55. </select>
  56. </div>
  57. <div class="relative w-fit">
  58. <select
  59. id="selectProjectYear"
  60. 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"
  61. onchange="renderFDITable()">
  62. <option value="all" selected>Tahun</option>
  63. <option value="2026">2026</option>
  64. <option value="2025">2025</option>
  65. </select>
  66. </div>
  67. <button
  68. 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">
  69. <span><i class="fa-solid fa-file-excel text-white text-xs pe-3"></i> Eksport</span>
  70. </button>
  71. </div>
  72. <div class="border rounded">
  73. <h5 class="font-semibold m-5">Senarai Pelaburan Komited Perbadanan Kemajuan Negeri Pahang (PKNP) 2025</h5>
  74. <div class="bg-[#012961] text-white p-5">
  75. <h3 class="text-xs font-bold">FOREIGN DIRECT INVESTMENT (FDI)</h3>
  76. </div>
  77. <div class="overflow-x-scroll overflow-hidden rounded-[10px]">
  78. <table class="min-w-[2000px] text-sm text-left text-gray-700 border-collapse">
  79. <thead>
  80. <tr>
  81. <th class="text-xs px-4 py-5">Bil</th>
  82. <th class="text-xs px-4 py-5">Nama Syarikat</th>
  83. <th class="text-xs px-4 py-5">Jenis Projek</th>
  84. <th class="text-xs px-4 py-5">Status</th>
  85. <th class="text-xs px-4 py-5">Catatan</th>
  86. <th class="text-xs px-4 py-5">Tarikh MOA Ditandatangani</th>
  87. <th class="text-xs px-4 py-5">Daerah</th>
  88. <th class="text-xs px-4 py-5">Anggaran Nilai Pelaburan (RM)</th>
  89. <th class="text-xs px-4 py-5">Anggaran Peluang Pekerjaan</th>
  90. <th class="text-xs px-4 py-5">Keluasan (Ekar)</th>
  91. </tr>
  92. </thead>
  93. <tbody id="FDItableBody">
  94. @foreach ($commitedFDIProject as $index => $project)
  95. <tr>
  96. <td class="px-4 py-2">{{ $index + 1 }}</td>
  97. <td class="px-4 py-2">{{ $project['company_name'] }}</td>
  98. <td class="px-4 py-2">{{ $project['type'] }}
  99. </td>
  100. <td class="px-4 py-2 text-center">
  101. @switch($project['status'])
  102. @case(1)
  103. <div class="px-3 py-1 text-xs rounded-lg border inline-block"
  104. style="color:#E5A20A; background-color:#FFFBF4; border-color:#E5A20A;width:100%">
  105. Perjanjian Muktamad
  106. </div>
  107. @break
  108. @case(0)
  109. <div class="px-3 py-1 text-xs rounded-lg border inline-block"
  110. style="color:#49B452; background-color:#F7FFF7; border-color:#49B452; width:100%">
  111. Deraf Perjanjian
  112. </div>
  113. @break
  114. <div></div>
  115. @default
  116. @endswitch
  117. </td>
  118. <td class="px-4 py-2 text-xs">{{ $project['note'] }}</td>
  119. <td class="px-4 py-2 text-xs">{{ $project['moa_date'] }}</td>
  120. <td class="px-4 py-2 text-xs">{{ $project['area'] }}</td>
  121. <td class="px-4 py-2 text-xs">{{ number_format($project['invesment_approx'], 2) }}</td>
  122. <td class="px-4 py-2 text-xs">{{ $project['labour_approx'] }}</td>
  123. @if ($project['land_area'])
  124. <td class="px-4 py-2 text-xs">{{ number_format($project['land_area']) }}</td>
  125. @else
  126. <td class="px-4 py-2 text-xs"><span class="text-md font-bold">TBC</span></td>
  127. @endif
  128. </tr>
  129. @endforeach
  130. </tbody>
  131. </table>
  132. </div>
  133. <div class="bg-[#F8F8F8] p-5">
  134. <h3 class="text-xs font-bold">JUMLAH FDI: <span class="ms-4">{{ number_format($FDI_amt, 2) }}</span></h3>
  135. </div>
  136. </div>
  137. <div class="border rounded overflow-hidden">
  138. <div class="bg-[#012961] text-white p-5">
  139. <h3 class="text-xs font-bold">Domestic Direct Investment (DDI)</h3>
  140. </div>
  141. <div class="overflow-x-scroll overflow-hidden rounded-[10px]">
  142. <table class="min-w-[2000px] text-sm text-left text-gray-700 border-collapse">
  143. <thead>
  144. <tr>
  145. <th class="text-xs px-4 py-5">Bil</th>
  146. <th class="text-xs px-4 py-5">Nama Syarikat</th>
  147. <th class="text-xs px-4 py-5">Jenis Projek</th>
  148. <th class="text-xs px-4 py-5">Status</th>
  149. <th class="text-xs px-4 py-5">Catatan</th>
  150. <th class="text-xs px-4 py-5">Tarikh MOA Ditandatangani</th>
  151. <th class="text-xs px-4 py-5">Daerah</th>
  152. <th class="text-xs px-4 py-5">Anggaran Nilai Pelaburan (RM)</th>
  153. <th class="text-xs px-4 py-5">Anggaran Peluang Pekerjaan</th>
  154. <th class="text-xs px-4 py-5">Keluasan (Ekar)</th>
  155. </tr>
  156. </thead>
  157. <tbody>
  158. @foreach ($commitedDDIProject as $index => $project)
  159. <tr>
  160. <td class="px-4 py-2">{{ $index + 1 }}</td>
  161. <td class="px-4 py-2">{{ $project['company_name'] }}</td>
  162. <td class="px-4 py-2">{{ $project['type'] }}
  163. </td>
  164. <td class="px-4 py-2 text-center">
  165. @switch($project['status'])
  166. @case(1)
  167. <div class="px-3 py-1 text-xs rounded-lg border inline-block"
  168. style="color:#E5A20A; background-color:#FFFBF4; border-color:#E5A20A;width:100%">
  169. Perjanjian Muktamad
  170. </div>
  171. @break
  172. @case(0)
  173. <div class="px-3 py-1 text-xs rounded-lg border inline-block"
  174. style="color:#49B452; background-color:#F7FFF7; border-color:#49B452; width:100%">
  175. Deraf Perjanjian
  176. </div>
  177. @break
  178. <div></div>
  179. @default
  180. @endswitch
  181. </td>
  182. <td class="px-4 py-2 text-xs">{{ $project['note'] }}</td>
  183. <td class="px-4 py-2 text-xs">{{ $project['moa_date'] }}</td>
  184. <td class="px-4 py-2 text-xs">{{ $project['area'] }}</td>
  185. <td class="px-4 py-2 text-xs">{{ number_format($project['invesment_approx'], 2) }}</td>
  186. <td class="px-4 py-2 text-xs">{{ $project['labour_approx'] }}</td>
  187. @if ($project['land_area'])
  188. <td class="px-4 py-2 text-xs">{{ number_format($project['land_area'], 2) }}</td>
  189. @else
  190. <td class="px-4 py-2 text-xs"><span class="text-md font-bold">TBC</span></td>
  191. @endif
  192. </tr>
  193. @endforeach
  194. </tbody>
  195. </table>
  196. </div>
  197. <div class="bg-[#F8F8F8] p-5">
  198. <h3 class="text-xs font-bold">JUMLAH DDI: <span class="ms-4">{{ number_format($FDI_amt, 2) }}</span>
  199. </h3>
  200. </div>
  201. </div>
  202. <button
  203. 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">
  204. <i class="fa-solid fa-download text-white text-xs"></i>
  205. <span>Simpan</span>
  206. </button>
  207. <div class="border rounded p-5">
  208. <h5 class="font-semibold mb-4">Rekod Penetapan KPI Pelaburan</h5>
  209. <p class="text-xs font-bold">YB Dato’ Pengerusi memohon agar sasaran adalah melebihi sasaran tahun 2024: <span
  210. class="text-[#BD8736]">DEADLINE, 2 WEEK from JPPP MEETING.</span></p>
  211. <p class="text-xs font-bold">15-04-2025 | Jumlah Pelaburan Komited telah dikemaskini berdasarkan data yang
  212. diisi
  213. oleh S-GLC. Jumlah pelaburan komited berjumlah RM 2,000,333.00.</p>
  214. </div>
  215. </div>
  216. @endsection
  217. @section('scripts')
  218. <script>
  219. var FDIProject = [];
  220. var DDIProject = [];
  221. async function fetchAndRenderProjects() {
  222. const selectedType = document.getElementById('selectProjectType').value;
  223. try {
  224. const response = await fetch(`/api/project/${selectedType}`); // Adjust to your real endpoint
  225. const data = await response.json();
  226. if (!data.FDIProject || !data.DDIProject) return
  227. FDIProject = data.FDIProject
  228. renderFDITable()
  229. } catch (error) {
  230. console.error('Error fetching projects:', error);
  231. }
  232. }
  233. function renderFDITable() {
  234. const tbody = document.getElementById('FDItableBody');
  235. tbody.innerHTML = ''; // Clear existing content
  236. data = filterData(FDIProject)
  237. data.forEach((project, index) => {
  238. const statusHTML = (() => {
  239. switch (project.status) {
  240. case 1:
  241. return `<div class="px-3 py-1 text-xs rounded-lg border inline-block"
  242. style="color:#E5A20A; background-color:#FFFBF4; border-color:#E5A20A;width:100%">
  243. Perjanjian Muktamad</div>`;
  244. case 0:
  245. return `<div class="px-3 py-1 text-xs rounded-lg border inline-block"
  246. style="color:#49B452; background-color:#F7FFF7; border-color:#49B452;width:100%">
  247. Deraf Perjanjian</div>`;
  248. default:
  249. return `<div>-</div>`;
  250. }
  251. })();
  252. const row = `
  253. <tr>
  254. <td class="px-4 py-2">${index + 1}</td>
  255. <td class="px-4 py-2">${project.company_name}</td>
  256. <td class="px-4 py-2">${project.type}</td>
  257. <td class="px-4 py-2 text-center">${statusHTML}</td>
  258. <td class="px-4 py-2 text-xs">${project.note}</td>
  259. <td class="px-4 py-2 text-xs">${project.moa_date}</td>
  260. <td class="px-4 py-2 text-xs">${project.area}</td>
  261. <td class="px-4 py-2 text-xs">${Number(project.invesment_approx).toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2})}</td>
  262. <td class="px-4 py-2 text-xs">${project.labour_approx}</td>
  263. <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>
  264. </tr>
  265. `;
  266. tbody.insertAdjacentHTML('beforeend', row);
  267. });
  268. }
  269. function filterData(data){
  270. const status = document.getElementById("selectProjectStatus").value
  271. const area = document.getElementById("selectProjectArea").value
  272. const year = document.getElementById("selectProjectYear").value
  273. // filter by status
  274. data = data.filter(project => (status === "all" || parseInt(status) === parseInt(project.status)))
  275. // filter by area
  276. data = data.filter(project => (area === "all" || area === project.area))
  277. // filter by year
  278. data = data.filter(project => (year === "all" || parseInt(year) === parseInt(project.year)))
  279. return data
  280. }
  281. document.addEventListener('DOMContentLoaded', fetchAndRenderProjects);
  282. </script>
  283. @endsection