diff --git a/groups/C4A/index.html b/groups/C4A/index.html index 0092051..ac38de3 100644 --- a/groups/C4A/index.html +++ b/groups/C4A/index.html @@ -1,4 +1,4 @@ - + @@ -1163,7 +1163,7 @@
LAYANAN AKADEMIK • INFORMATIKA UNTAN

- Staf Pendukung &
+ Staf Pendukung &
Standar Operasional Prosedur (SOP)

Halaman ini menampilkan informasi petugas diff --git a/groups/C4A/js/ui.js b/groups/C4A/js/ui.js index 14ea1a2..8f9f26e 100644 --- a/groups/C4A/js/ui.js +++ b/groups/C4A/js/ui.js @@ -32,7 +32,7 @@ function loc(field) { const lang = getLang(); return field[lang] || field['id'] || ''; } - return field; + return String(field); } /** @@ -127,7 +127,7 @@ export function renderStaffCards(staffs) { const scheduleHTML = schedule.map(sched => `

` + `${loc(sched.day)}` + - `${sched.time} | ${loc(sched.break)}` + + `${loc(sched.time)} | ${loc(sched.break)}` + `
` ).join(''); @@ -149,7 +149,7 @@ export function renderStaffCards(staffs) { ${name}
-
${name}
+
${loc(name)}
${roleText}
@@ -283,14 +283,13 @@ function buildSopModalContent(sop) { const catLabel = getCatLabel(category); const catClass = CATEGORY_COLORS[category] || ''; - const reqsHTML = requirements.map(req => `
  • ${loc(req)}
  • `).join(''); const procsHTML = procedures.map(proc => `
  • ${loc(proc)}
  • `).join(''); // staffResponsible bersifat opsional — sembunyikan blok jika tidak ada const hasStaff = Array.isArray(staffResponsible) && staffResponsible.length > 0; const staffHTML = hasStaff - ? staffResponsible.map(staffName => `${staffName}`).join('') + ? staffResponsible.map(staffName => `${loc(staffName)}`).join('') : ''; const staffBlockHTML = hasStaff ? `
    @@ -353,15 +352,19 @@ export function renderSopCards(sops) { // simpan data global di element agar bisa diakses filter/search container._sopData = sops; + const emptyState = document.getElementById('sop-empty-state'); + // Tampilkan pesan jika data SOP kosong atau gagal dimuat if (!sops || sops.length === 0) { container.innerHTML = `

    ${t('grp_c4a_empty_sop', 'Data SOP tidak tersedia saat ini.')}

    `; updateResultInfo(0, 0); + if (emptyState) emptyState.style.display = 'none'; return; } container.innerHTML = sops.map(buildSopCard).join(''); updateResultInfo(sops.length, sops.length); + if (emptyState) emptyState.style.display = 'none'; } /** Update teks info jumlah hasil */ @@ -405,7 +408,12 @@ export function applySopFilter() { }); const emptyState = document.getElementById('sop-empty-state'); - if (emptyState) emptyState.style.display = visibleCount === 0 ? 'flex' : 'none'; + if (emptyState) { + // Tampilkan "SOP tidak ditemukan" HANYA jika memang ada data SOP tetapi hasil filter 0. + // Jika data SOP memang kosong (tidak ada card sama sekali di data source), sembunyikan. + const hasData = container._sopData && container._sopData.length > 0; + emptyState.style.display = (hasData && visibleCount === 0) ? 'flex' : 'none'; + } updateResultInfo(visibleCount, cards.length); }