function renderTree(units, katDok, klasifikasi_id) {
if (!Array.isArray(units) || !units.length) return '
Tidak ada data
';
return `
${units.map(u => `
-
๐ ${u.name}
${u.sub_unit_kerja.map(s => `
-
๐ ${s.name}
${katDok.map(k => `
-
๐ ${k.nama_kategori_directory}
`).join('')}
`).join('')}
`).join('')}
`;
}
async function loadFiles(e) {
const ul = e.nextElementSibling;
const unitId = $(e).data('unit')
const subId = $(e).data('sub')
const katId = $(e).data('kat')
const klas = $(e).data('klas')
const loaded = ul.getAttribute('data-loaded');
if (loaded === '1') { // toggle saja
ul.style.display = ul.style.display === 'none' ? 'block' : 'none';
return;
}
ul.innerHTML = 'memuat...';
ul.style.display = 'block';
try {
const r = await fetch(`/getFile/${unitId}/${subId}/${katId}?klasifikasi=${klas}`);
const res = await r.json(); // array kosong / ada isi
const files = res.data || [];
if (!Array.isArray(files) || !files.length) {
ul.innerHTML = 'kosong';
ul.setAttribute('data-loaded', '1');
return;
}
ul.innerHTML = files.map(f => {
const name = f.file.split('/').pop();
const by = f.pegawai_nama_entry || 'Unknown';
const at = new Date(f.entry_at).toLocaleString('id-ID', {
day:'2-digit', month:'short', year:'numeric',
hour:'2-digit', minute:'2-digit'
});
return `
๐
${name}
(${f.klasifikasi?.nama_klasifikasi_directory})
Upload by ${by} ยท ${at}
`;
}).join('');
ul.setAttribute('data-loaded', '1');
} catch (e) {
ul.innerHTML = 'gagal memuat';
console.error(e);
}
}
function index(kategori_dok = [], unitKerja = null, subUnitKerja = [], klasifikasi_id = []) {
const params = new URLSearchParams();
if (kategori_dok.length) params.append("kategori", kategori_dok);
if (unitKerja) params.append("unitKerja", unitKerja);
if (subUnitKerja.length) params.append("subUnit", subUnitKerja);
if (klasifikasi_id.length) params.append("klasifikasi", klasifikasi_id);
fetch(`/data-unit-kerja?${params.toString()}`)
.then(response => response.json())
.then(data => {
let file_tree = document.getElementById("file_tree");
file_tree.innerHTML = '';
if (Array.isArray(data?.data?.unitKerja)) {
file_tree.innerHTML = renderTree(data.data.unitKerja, data.data.katDok, klasifikasi_id);
// Toggle buka/tutup folder
file_tree.querySelectorAll(".folder > span").forEach(span => {
span.addEventListener("click", () => {
let li = span.parentElement;
li.classList.toggle("collapsed");
// Ganti ikon ๐ <-> ๐
if (li.classList.contains("collapsed")) {
span.textContent = span.textContent.replace("๐", "๐");
} else {
span.textContent = span.textContent.replace("๐", "๐");
}
});
});
} else {
file_tree.innerHTML = 'Silakan lakukan pencarian terlebih dahulu untuk menampilkan data
';
}
})
.catch(error => console.error('Error : ', error));
}
index();
function referesh(){
index()
}
function searchData(){
let klasifikasi_id = $("#klasifikasi_dok").val()
let kategori_dok = $("#kategori_dok").val()
let unitKerja = $("#unit_kerja").val()
let subUnitKerja = $("#sub_unit_kerja").val()
if( klasifikasi_id.length === 0 ||
kategori_dok.length === 0 ||
!unitKerja.length ||
subUnitKerja.length === 0){
Swal.fire({
text: 'Lengkapi Isi form pencarian',
icon: 'warning'
})
return
}
index(kategori_dok, unitKerja, subUnitKerja, klasifikasi_id);
}