{"id":1420,"date":"2025-07-27T11:21:47","date_gmt":"2025-07-27T11:21:47","guid":{"rendered":"https:\/\/bpsjembrana.online\/jelita\/?page_id=1420"},"modified":"2025-08-21T23:09:39","modified_gmt":"2025-08-22T03:09:39","slug":"tim-distribusi","status":"publish","type":"page","link":"https:\/\/bpsjembrana.online\/jelita\/tim-distribusi\/","title":{"rendered":"Tim Distribusi"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"1420\" class=\"elementor elementor-1420\">\n\t\t\t\t<div class=\"elementor-element elementor-element-304b451 e-flex e-con-boxed e-con e-parent\" data-id=\"304b451\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-c5279ae e-con-full e-flex e-con e-child\" data-id=\"c5279ae\" data-element_type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-57c2d34 elementor-widget elementor-widget-heading\" data-id=\"57c2d34\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Distribusi<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-9719d40 e-flex e-con-boxed e-con e-parent\" data-id=\"9719d40\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-e531756 e-con-full e-flex e-con e-child\" data-id=\"e531756\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-36c3e28 elementor-widget elementor-widget-text-editor\" data-id=\"36c3e28\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>CTRL + F untuk pencarian<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-8adb58b e-con-full e-flex e-con e-child\" data-id=\"8adb58b\" data-element_type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-a63bd63 e-grid e-con-full e-con e-child\" data-id=\"a63bd63\" data-element_type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-9928416 e-con-full e-flex e-con e-child\" data-id=\"9928416\" data-element_type=\"container\" data-settings=\"{&quot;animation&quot;:&quot;none&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-9011175 elementor-position-top elementor-widget elementor-widget-image-box\" data-id=\"9011175\" data-element_type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;none&quot;}\" data-widget_type=\"image-box.default\">\n\t\t\t\t\t<div class=\"elementor-image-box-wrapper\"><figure class=\"elementor-image-box-img\"><a href=\"https:\/\/s.bps.go.id\/cafehargajembrana\" target=\"_blank\" tabindex=\"-1\"><img fetchpriority=\"high\" decoding=\"async\" width=\"327\" height=\"329\" src=\"https:\/\/bpsjembrana.online\/jelita\/wp-content\/uploads\/2025\/08\/Screenshot-2025-08-14-225008.png\" class=\"elementor-animation-grow attachment-full size-full wp-image-2155\" alt=\"\" srcset=\"https:\/\/bpsjembrana.online\/jelita\/wp-content\/uploads\/2025\/08\/Screenshot-2025-08-14-225008.png 327w, https:\/\/bpsjembrana.online\/jelita\/wp-content\/uploads\/2025\/08\/Screenshot-2025-08-14-225008-298x300.png 298w, https:\/\/bpsjembrana.online\/jelita\/wp-content\/uploads\/2025\/08\/Screenshot-2025-08-14-225008-150x150.png 150w\" sizes=\"(max-width: 327px) 100vw, 327px\" \/><\/a><\/figure><div class=\"elementor-image-box-content\"><h3 class=\"elementor-image-box-title\"><a href=\"https:\/\/s.bps.go.id\/cafehargajembrana\" target=\"_blank\">Cafe Harga<\/a><\/h3><p class=\"elementor-image-box-description\">Inovasi BPS Jembrana untuk mencatat fenomena fluktuasi harga Survei Harga Pedesaan<\/p><\/div><\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-9079553 e-con-full e-flex e-con e-child\" data-id=\"9079553\" data-element_type=\"container\" data-settings=\"{&quot;animation&quot;:&quot;none&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-f2a4afe elementor-position-top elementor-widget elementor-widget-image-box\" data-id=\"f2a4afe\" data-element_type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;none&quot;}\" data-widget_type=\"image-box.default\">\n\t\t\t\t\t<div class=\"elementor-image-box-wrapper\"><figure class=\"elementor-image-box-img\"><a href=\"https:\/\/drive.bps.go.id\/apps\/files\/files\/75604952?dir=\/%5B02.%20Share%20-%20BPS%20Kabupaten%20Jembrana%5D\/DIstribusi\" target=\"_blank\" tabindex=\"-1\"><img decoding=\"async\" width=\"850\" height=\"602\" src=\"https:\/\/bpsjembrana.online\/jelita\/wp-content\/uploads\/2025\/08\/Desain-tanpa-judul-6-e1755447743544.png\" class=\"elementor-animation-grow attachment-full size-full wp-image-2535\" alt=\"\" srcset=\"https:\/\/bpsjembrana.online\/jelita\/wp-content\/uploads\/2025\/08\/Desain-tanpa-judul-6-e1755447743544.png 850w, https:\/\/bpsjembrana.online\/jelita\/wp-content\/uploads\/2025\/08\/Desain-tanpa-judul-6-e1755447743544-300x212.png 300w, https:\/\/bpsjembrana.online\/jelita\/wp-content\/uploads\/2025\/08\/Desain-tanpa-judul-6-e1755447743544-768x544.png 768w\" sizes=\"(max-width: 850px) 100vw, 850px\" \/><\/a><\/figure><div class=\"elementor-image-box-content\"><h3 class=\"elementor-image-box-title\"><a href=\"https:\/\/drive.bps.go.id\/apps\/files\/files\/75604952?dir=\/%5B02.%20Share%20-%20BPS%20Kabupaten%20Jembrana%5D\/DIstribusi\" target=\"_blank\">Drive Distribusi<\/a><\/h3><p class=\"elementor-image-box-description\">Tempat penyimpanan bersama file tim Distribusi<\/p><\/div><\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-e6ac199 e-flex e-con-boxed e-con e-parent\" data-id=\"e6ac199\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-fe64a5c e-con-full e-flex e-con e-child\" data-id=\"fe64a5c\" data-element_type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-16a3881 elementor-widget elementor-widget-heading\" data-id=\"16a3881\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Dokumen Kegiatan<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-74e8493 e-con-full e-flex e-con e-parent\" data-id=\"74e8493\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-181d9f2 e-n-tabs-mobile elementor-widget elementor-widget-n-tabs\" data-id=\"181d9f2\" data-element_type=\"widget\" data-settings=\"{&quot;tabs_justify_horizontal&quot;:&quot;stretch&quot;,&quot;horizontal_scroll&quot;:&quot;disable&quot;}\" data-widget_type=\"nested-tabs.default\">\n\t\t\t\t\t\t\t<div class=\"e-n-tabs\" data-widget-number=\"25287154\" aria-label=\"Tabs. Open items with Enter or Space, close with Escape and navigate using the Arrow keys.\">\n\t\t\t<div class=\"e-n-tabs-heading\" role=\"tablist\">\n\t\t\t\t\t<button id=\"e-n-tab-title-252871541\" data-tab-title-id=\"e-n-tab-title-252871541\" class=\"e-n-tab-title\" aria-selected=\"true\" data-tab-index=\"1\" role=\"tab\" tabindex=\"0\" aria-controls=\"e-n-tab-content-252871541\" style=\"--n-tabs-title-order: 1;\">\n\t\t\t\t\t\t<span class=\"e-n-tab-title-text\">\n\t\t\t\tDokumentasi\t\t\t<\/span>\n\t\t<\/button>\n\t\t\t\t<button id=\"e-n-tab-title-252871542\" data-tab-title-id=\"e-n-tab-title-252871542\" class=\"e-n-tab-title\" aria-selected=\"false\" data-tab-index=\"2\" role=\"tab\" tabindex=\"-1\" aria-controls=\"e-n-tab-content-252871542\" style=\"--n-tabs-title-order: 2;\">\n\t\t\t\t\t\t<span class=\"e-n-tab-title-text\">\n\t\t\t\tNotula\t\t\t<\/span>\n\t\t<\/button>\n\t\t\t\t<button id=\"e-n-tab-title-252871543\" data-tab-title-id=\"e-n-tab-title-252871543\" class=\"e-n-tab-title\" aria-selected=\"false\" data-tab-index=\"3\" role=\"tab\" tabindex=\"-1\" aria-controls=\"e-n-tab-content-252871543\" style=\"--n-tabs-title-order: 3;\">\n\t\t\t\t\t\t<span class=\"e-n-tab-title-text\">\n\t\t\t\tDaftar Hadir\t\t\t<\/span>\n\t\t<\/button>\n\t\t\t\t\t<\/div>\n\t\t\t<div class=\"e-n-tabs-content\">\n\t\t\t\t<div id=\"e-n-tab-content-252871541\" role=\"tabpanel\" aria-labelledby=\"e-n-tab-title-252871541\" data-tab-index=\"1\" style=\"--n-tabs-title-order: 1;\" class=\"e-active elementor-element elementor-element-864e6dd e-con-full e-flex e-con e-child\" data-id=\"864e6dd\" data-element_type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-d3deb69 e-con-full e-flex e-con e-child\" data-id=\"d3deb69\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-d4f88d0 elementor-widget elementor-widget-heading\" data-id=\"d4f88d0\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Dokumentasi Kegiatan<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-da6591b elementor-widget elementor-widget-heading\" data-id=\"da6591b\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><i>Format Nama: Tanggal Kegiatan(YYYYMMDD)_[Nama Kegiatan]<br>Contoh: 20250505_Rapat Rutin<\/i><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-67df8cd elementor-widget elementor-widget-button\" data-id=\"67df8cd\" data-element_type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t\t\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"https:\/\/drive.google.com\/drive\/folders\/1bSTNqrwiz21B5056KCfy32Bq0cvlalZO?usp=sharing\" target=\"_blank\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t<span class=\"elementor-button-icon\">\n\t\t\t\t<svg aria-hidden=\"true\" class=\"e-font-icon-svg e-fas-file-upload\" viewBox=\"0 0 384 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm65.18 216.01H224v80c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16v-80H94.82c-14.28 0-21.41-17.29-11.27-27.36l96.42-95.7c6.65-6.61 17.39-6.61 24.04 0l96.42 95.7c10.15 10.07 3.03 27.36-11.25 27.36zM377 105L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9z\"><\/path><\/svg>\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Upload Foto<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-77a5e79 elementor-widget elementor-widget-html\" data-id=\"77a5e79\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!DOCTYPE html>\r\n<html>\r\n<head>\r\n<meta charset=\"UTF-8\">\r\n<style>\r\n  body {\r\n    font-family: Poppins, sans-serif;\r\n  }\r\n\r\n  \/* ===== Search box ===== *\/\r\n  .search-box {\r\n    margin: 10px 0;\r\n    padding: 8px 10px;\r\n    width: 300px;\r\n    border: 1px solid #ccc;\r\n    border-radius: 3px;\r\n    color: #000;\r\n  }\r\n  .search-box::placeholder {\r\n    color: #000 !important;\r\n    opacity: 1;\r\n  }\r\n\r\n  \/* ===== Sort Button ===== *\/\r\n  .sort-btn {\r\n    margin-bottom: 10px;\r\n    padding: 6px 12px;\r\n    background-color: #344660;\r\n    color: #f9f0df;\r\n    border: none;\r\n    border-radius: 3px;\r\n    cursor: pointer;\r\n    transition: background-color 0.2s, transform 0.2s;\r\n  }\r\n  .sort-btn:hover {\r\n    background-color: #C95D43;\r\n    transform: translateY(-2px);\r\n  }\r\n\r\n  \/* ===== Grid container ===== *\/\r\n  #fileGridDokumentasi {\r\n    display: grid;\r\n    grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));\r\n    gap: 15px;\r\n    margin-top: 10px;\r\n  }\r\n\r\n  \/* ===== Card styling ===== *\/\r\n  .file-card {\r\n    background-color: #ffffff;\r\n    border: 1px solid #ddd;\r\n    border-radius: 5px;\r\n    padding: 8px;\r\n    text-align: center;\r\n    display: flex;\r\n    flex-direction: column;\r\n    justify-content: space-between;\r\n    transition: transform 0.2s, box-shadow 0.2s;\r\n  }\r\n\r\n  .file-card:nth-child(even) {\r\n    background-color: #fdf6f0;\r\n  }\r\n\r\n  .file-card:hover {\r\n    transform: translateY(-5px);\r\n    box-shadow: 0 4px 15px rgba(0,0,0,0.2);\r\n  }\r\n\r\n  .file-card img {\r\n    width: 100%;\r\n    height: 120px;\r\n    object-fit: contain;\r\n    cursor: pointer;\r\n    border: 1px solid #ccc;\r\n    border-radius: 3px;\r\n    margin-bottom: 8px;\r\n    transition: transform 0.2s;\r\n  }\r\n\r\n  .file-card img:hover {\r\n    transform: scale(1.05);\r\n  }\r\n\r\n  .file-name {\r\n    white-space: nowrap;\r\n    overflow: hidden;\r\n    text-overflow: ellipsis;\r\n    font-size: 10px;\r\n    margin-bottom: 6px;\r\n    color: #344660;\r\n    transition: color 0.2s;\r\n  }\r\n\r\n  .file-card:hover .file-name {\r\n    color: #C95D43;\r\n  }\r\n\r\n  .file-card a.btn {\r\n    padding: 6px 12px;\r\n    font-size:12px;\r\n    text-decoration: none;\r\n    border-radius: 3px;\r\n    color: #fff;\r\n    background-color: #344660;\r\n    transition: background-color 0.2s;\r\n  }\r\n\r\n  .file-card a.btn:hover {\r\n    background-color: #C95D43;\r\n  }\r\n\r\n  \/* ===== Pagination ===== *\/\r\n  .pagination {\r\n    display: flex;\r\n    justify-content: center;\r\n    gap: 6px;\r\n    margin-top: 15px;\r\n  }\r\n  .pagination button {\r\n    padding: 8px 12px;\r\n    border: none;\r\n    background-color: #344660;\r\n    color: #f9f0df;\r\n    cursor: pointer;\r\n    border-radius: 3px;\r\n  }\r\n  .pagination button:disabled {\r\n    background-color: #ccc;\r\n    cursor: not-allowed;\r\n  }\r\n\r\n  \/* ===== Modal Preview ===== *\/\r\n  .modal {\r\n    display: none;\r\n    position: fixed;\r\n    z-index: 999;\r\n    left: 0; top: 0;\r\n    width: 100%; height: 100%;\r\n    background: rgba(0,0,0,0.6);\r\n  }\r\n  .modal-content {\r\n    background: #fff;\r\n    margin: 50px auto;\r\n    padding: 20px 10px 10px 10px;\r\n    border-radius: 5px;\r\n    width: 80%;\r\n    max-width: 800px;\r\n    position: relative;\r\n    box-sizing: border-box;\r\n  }\r\n  .modal iframe {\r\n    width: 100%;\r\n    height: 500px;\r\n    border: none;\r\n    margin-top: 5px;\r\n  }\r\n  .close-btn {\r\n    font-size: 14px;\r\n    background-color: #C95D43;\r\n    color: #fff;\r\n    border: none;\r\n    padding: 4px 8px;\r\n    border-radius: 3px;\r\n    cursor: pointer;\r\n    position: absolute;\r\n    top: 10px;\r\n    right: 10px;\r\n    z-index: 9999;\r\n  }\r\n  #previewModal a.btn {\r\n    font-size: 12px;\r\n    background-color: #344660; \r\n    color: #fff;\r\n    padding: 6px 12px;\r\n    border-radius: 3px;\r\n    text-decoration: none;\r\n    transition: background-color 0.2s;\r\n  }\r\n  #previewModal a.btn:hover {\r\n    background-color: #C95D43;\r\n  }\r\n<\/style>\r\n<\/head>\r\n<body>\r\n\r\n  <!-- \ud83d\udd39 Search -->\r\n  <input type=\"text\" class=\"search-box\" placeholder=\"Cari Foto...\" onkeyup=\"searchGridDokumentasi(this.value)\">\r\n\r\n  <!-- \ud83d\udd39 Sort Button Modern -->\r\n  <button class=\"sort-btn\" onclick=\"sortGridDokumentasi()\">Urutkan A-Z \/ Z-A<\/button>\r\n\r\n  <!-- \ud83d\udd39 Grid container -->\r\n  <div id=\"fileGridDokumentasi\"><\/div>\r\n\r\n  <!-- \ud83d\udd39 Pagination -->\r\n  <div class=\"pagination\">\r\n    <button onclick=\"prevPageDokumentasi()\" id=\"prevBtnDokumentasi\">Prev<\/button>\r\n    <span id=\"pageInfoDokumentasi\"><\/span>\r\n    <button onclick=\"nextPageDokumentasi()\" id=\"nextBtnDokumentasi\">Next<\/button>\r\n  <\/div>\r\n\r\n  <!-- ===== Modal Preview ===== -->\r\n  <div class=\"modal\" id=\"previewModal\">\r\n    <div class=\"modal-content\">\r\n      <button class=\"close-btn\" onclick=\"closeModal()\">X<\/button>\r\n      <iframe id=\"previewFrame\"><\/iframe>\r\n      <a id=\"downloadLink\" class=\"btn\" href=\"#\" target=\"_blank\">Download<\/a>\r\n    <\/div>\r\n  <\/div>\r\n\r\n<script>\r\n  const apiKey = \"AIzaSyB26Kiy9vYp7d1Z0Z6mllbUaC4rY0pjcKg\";\r\n  const folderIdDokumentasi = \"1bSTNqrwiz21B5056KCfy32Bq0cvlalZO\";\r\n\r\n  let filesDokumentasi = [];\r\n  let currentPageDokumentasi = 1;\r\n  const rowsPerPageDokumentasi = 12;\r\n  let sortAscDokumentasi = true;\r\n\r\n  function loadFilesDokumentasi(folderId) {\r\n    fetch(`https:\/\/www.googleapis.com\/drive\/v3\/files?q='${folderId}'+in+parents&key=${apiKey}&fields=files(id,name,thumbnailLink,mimeType)&pageSize=1000`)\r\n      .then(res => res.json())\r\n      .then(data => {\r\n        filesDokumentasi = data.files || [];\r\n        renderGridDokumentasi();\r\n      })\r\n      .catch(err => console.error(err));\r\n  }\r\n\r\n  function renderGridDokumentasi() {\r\n    const container = document.getElementById(\"fileGridDokumentasi\");\r\n    container.innerHTML = '';\r\n    let start = (currentPageDokumentasi - 1) * rowsPerPageDokumentasi;\r\n    let end = start + rowsPerPageDokumentasi;\r\n    let paginated = filesDokumentasi.slice(start, end);\r\n\r\n    paginated.forEach(file => {\r\n      let thumb = file.thumbnailLink || (file.mimeType.startsWith('image\/') ? \r\n                  `https:\/\/drive.google.com\/thumbnail?id=${file.id}&sz=w180-h120` : \r\n                  'https:\/\/via.placeholder.com\/180x120?text=Preview');\r\n\r\n      let card = document.createElement('div');\r\n      card.className = 'file-card';\r\n      card.innerHTML = `\r\n        <img decoding=\"async\" src=\"${thumb}\" onclick=\"openPreview('${file.id}')\">\r\n        <div class=\"file-name\" title=\"${file.name}\">${file.name}<\/div>\r\n        <a class=\"btn\" href=\"https:\/\/drive.google.com\/uc?export=download&id=${file.id}\">Download<\/a>\r\n      `;\r\n      container.appendChild(card);\r\n    });\r\n\r\n    document.getElementById(\"pageInfoDokumentasi\").innerText =\r\n      `Halaman ${currentPageDokumentasi} dari ${Math.ceil(filesDokumentasi.length \/ rowsPerPageDokumentasi)}`;\r\n    document.getElementById(\"prevBtnDokumentasi\").disabled = currentPageDokumentasi === 1;\r\n    document.getElementById(\"nextBtnDokumentasi\").disabled = currentPageDokumentasi === Math.ceil(filesDokumentasi.length \/ rowsPerPageDokumentasi);\r\n  }\r\n\r\n  function prevPageDokumentasi() {\r\n    if (currentPageDokumentasi > 1) { currentPageDokumentasi--; renderGridDokumentasi(); }\r\n  }\r\n  function nextPageDokumentasi() {\r\n    if (currentPageDokumentasi < Math.ceil(filesDokumentasi.length \/ rowsPerPageDokumentasi)) { currentPageDokumentasi++; renderGridDokumentasi(); }\r\n  }\r\n\r\n  function searchGridDokumentasi(val) {\r\n    let filter = val.toLowerCase();\r\n    let filtered = filesDokumentasi.filter(f => f.name.toLowerCase().includes(filter));\r\n    const container = document.getElementById(\"fileGridDokumentasi\");\r\n    container.innerHTML = '';\r\n    filtered.forEach(file => {\r\n      let thumb = file.thumbnailLink || (file.mimeType.startsWith('image\/') ? \r\n                  `https:\/\/drive.google.com\/thumbnail?id=${file.id}&sz=w180-h120` : \r\n                  'https:\/\/via.placeholder.com\/180x120?text=Preview');\r\n\r\n      let card = document.createElement('div');\r\n      card.className = 'file-card';\r\n      card.innerHTML = `\r\n        <img decoding=\"async\" src=\"${thumb}\" onclick=\"openPreview('${file.id}')\">\r\n        <div class=\"file-name\" title=\"${file.name}\">${file.name}<\/div>\r\n        <a class=\"btn\" href=\"https:\/\/drive.google.com\/uc?export=download&id=${file.id}\">Download<\/a>\r\n      `;\r\n      container.appendChild(card);\r\n    });\r\n    document.getElementById(\"pageInfoDokumentasi\").innerText = `Ditemukan ${filtered.length} dokumen`;\r\n    document.getElementById(\"prevBtnDokumentasi\").disabled = true;\r\n    document.getElementById(\"nextBtnDokumentasi\").disabled = true;\r\n  }\r\n\r\n  function sortGridDokumentasi() {\r\n    filesDokumentasi.sort((a,b) => sortAscDokumentasi ? a.name.localeCompare(b.name) : b.name.localeCompare(a.name));\r\n    sortAscDokumentasi = !sortAscDokumentasi;\r\n    currentPageDokumentasi = 1;\r\n    renderGridDokumentasi();\r\n  }\r\n\r\n  \/\/ ===== Modal Functions =====\r\n  function openPreview(fileId) {\r\n    document.getElementById(\"previewFrame\").src = `https:\/\/drive.google.com\/file\/d\/${fileId}\/preview`;\r\n    document.getElementById(\"downloadLink\").href = `https:\/\/drive.google.com\/uc?export=download&id=${fileId}`;\r\n    document.getElementById(\"previewModal\").style.display = \"block\";\r\n  }\r\n  function closeModal() {\r\n    document.getElementById(\"previewModal\").style.display = \"none\";\r\n    document.getElementById(\"previewFrame\").src = \"\";\r\n  }\r\n  window.onclick = function(event) {\r\n    if (event.target === document.getElementById(\"previewModal\")) { closeModal(); }\r\n  }\r\n\r\n  \/\/ \ud83d\udd39 load awal\r\n  loadFilesDokumentasi(folderIdDokumentasi);\r\n<\/script>\r\n<\/body>\r\n<\/html>\r\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div id=\"e-n-tab-content-252871542\" role=\"tabpanel\" aria-labelledby=\"e-n-tab-title-252871542\" data-tab-index=\"2\" style=\"--n-tabs-title-order: 2;\" class=\" elementor-element elementor-element-834bf52 e-con-full e-flex e-con e-child\" data-id=\"834bf52\" data-element_type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-5f7d1d5 e-con-full e-flex e-con e-child\" data-id=\"5f7d1d5\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-75d1195 elementor-widget elementor-widget-heading\" data-id=\"75d1195\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Notula Rapat\/Kegiatan<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-a4b98b1 elementor-widget elementor-widget-heading\" data-id=\"a4b98b1\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><i>Format Nama: Tanggal Kegiatan(YYYYMMDD)_[Nama Kegiatan]<\/i><br><i>Contoh: 20250505_Notula Rapat Rutin<\/i><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-e1c5ba6 elementor-widget elementor-widget-button\" data-id=\"e1c5ba6\" data-element_type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t\t\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"https:\/\/docs.google.com\/document\/d\/1u-eLgFqc6xdqT3S5NAnQ7UvvHR9ceLWU\/export?format=docx\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t<span class=\"elementor-button-icon\">\n\t\t\t\t<svg aria-hidden=\"true\" class=\"e-font-icon-svg e-fas-file-download\" viewBox=\"0 0 384 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm76.45 211.36l-96.42 95.7c-6.65 6.61-17.39 6.61-24.04 0l-96.42-95.7C73.42 337.29 80.54 320 94.82 320H160v-80c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v80h65.18c14.28 0 21.4 17.29 11.27 27.36zM377 105L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9z\"><\/path><\/svg>\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Download Template<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-0fe0009 elementor-widget elementor-widget-button\" data-id=\"0fe0009\" data-element_type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t\t\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"https:\/\/drive.google.com\/drive\/folders\/117mSWgD2BDONJYTbX-v913BZXTj1OJCw?usp=sharing\" target=\"_blank\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t<span class=\"elementor-button-icon\">\n\t\t\t\t<svg aria-hidden=\"true\" class=\"e-font-icon-svg e-fas-file-upload\" viewBox=\"0 0 384 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm65.18 216.01H224v80c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16v-80H94.82c-14.28 0-21.41-17.29-11.27-27.36l96.42-95.7c6.65-6.61 17.39-6.61 24.04 0l96.42 95.7c10.15 10.07 3.03 27.36-11.25 27.36zM377 105L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9z\"><\/path><\/svg>\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Upload Notula<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-54aca77 elementor-widget elementor-widget-html\" data-id=\"54aca77\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!DOCTYPE html>\r\n<html>\r\n<head>\r\n<meta charset=\"UTF-8\">\r\n<style>\r\n  table {\r\n    width: 100%;\r\n    border-collapse: collapse;\r\n    font-family: Poppins, sans-serif;\r\n    margin-bottom: 20px;\r\n  }\r\n  th {\r\n    background-color: #344660;\r\n    color: #f9f0df;\r\n    padding: 5px;\r\n    text-align: center;\r\n    cursor: pointer;\r\n  }\r\n  td {\r\n    padding: 6px;\r\n    border-bottom: 1px solid #ddd;\r\n    color: #344660;\r\n    text-align: left;\r\n  }\r\n  a.btn {\r\n    padding: 6px 12px;\r\n    text-decoration: none;\r\n    border-radius: 2px;\r\n    color: #f9f0df;\r\n    background-color: #c85c42;\r\n  }\r\n  .search-box {\r\n    margin: 10px 0;\r\n    padding: 6px;\r\n    width: 300px;\r\n    border: 1px solid #ccc;\r\n    border-radius: 3px;\r\n    color: #000000;\r\n  }\r\n  .search-box::placeholder {\r\n    color: #000000 !important;\r\n    opacity: 1;\r\n  }\r\n        input.search-box {\r\n      color: #000000 !important;\r\n      opacity: 0.9 !important;\r\n    }\r\n  .pagination {\r\n    display: flex;\r\n    justify-content: center;\r\n    gap: 6px;\r\n    margin-top: 15px;\r\n  }\r\n  .pagination button {\r\n    padding: 6px 12px;\r\n    border: none;\r\n    background-color: #344660;\r\n    color: #f9f0df;\r\n    cursor: pointer;\r\n    border-radius: 3px;\r\n  }\r\n  .pagination button:disabled {\r\n    background-color: #ccc;\r\n    cursor: not-allowed;\r\n  }\r\n<\/style>\r\n<\/head>\r\n<body>\r\n  <input type=\"text\" class=\"search-box\" placeholder=\"Cari Dokumen...\" onkeyup=\"searchTableGaleri(this.value)\">\r\n  <table id=\"fileTableGaleri\">\r\n    <tr>\r\n      <th onclick=\"sortTableGaleri()\">Nama Dokumen \u25b2\u25bc<\/th>\r\n      <th>Lihat<\/th>\r\n      <th>Download<\/th>\r\n    <\/tr>\r\n  <\/table>\r\n  <div class=\"pagination\">\r\n    <button onclick=\"prevPageGaleri()\" id=\"prevBtnGaleri\">Prev<\/button>\r\n    <span id=\"pageInfoGaleri\"><\/span>\r\n    <button onclick=\"nextPageGaleri()\" id=\"nextBtnGaleri\">Next<\/button>\r\n  <\/div>\r\n\r\n<script>\r\n  const folderIdGaleri = \"117mSWgD2BDONJYTbX-v913BZXTj1OJCw\"; \/\/ Ganti ID folder galeri\r\n\r\n  let filesGaleri = [];\r\n  let currentPageGaleri = 1;\r\n  const rowsPerPageGaleri = 10;\r\n  let sortAscGaleri = true;\r\n\r\n  function loadFilesGaleri(folderId) {\r\n    fetch(`https:\/\/www.googleapis.com\/drive\/v3\/files?q='${folderId}'+in+parents&key=${apiKey}&fields=files(id,name)&pageSize=1000`)\r\n      .then(res => res.json())\r\n      .then(data => {\r\n        filesGaleri = data.files || [];\r\n        renderTableGaleri();\r\n      })\r\n      .catch(err => console.error(err));\r\n  }\r\n\r\n  function renderTableGaleri() {\r\n    const table = document.getElementById(\"fileTableGaleri\");\r\n    table.innerHTML = `\r\n      <tr>\r\n        <th onclick=\"sortTableGaleri()\">Nama Dokumen \u25b2\u25bc<\/th>\r\n        <th>Lihat<\/th>\r\n        <th>Download<\/th>\r\n      <\/tr>`;\r\n    let start = (currentPageGaleri - 1) * rowsPerPageGaleri;\r\n    let end = start + rowsPerPageGaleri;\r\n    let paginated = filesGaleri.slice(start, end);\r\n\r\n    paginated.forEach(file => {\r\n      let row = table.insertRow();\r\n      row.insertCell(0).innerText = file.name;\r\n      row.insertCell(1).innerHTML = `<a class=\"btn\" href=\"https:\/\/drive.google.com\/file\/d\/${file.id}\/preview\" target=\"_blank\">Lihat<\/a>`;\r\n      row.insertCell(2).innerHTML = `<a class=\"btn\" href=\"https:\/\/drive.google.com\/uc?export=download&id=${file.id}\">Download<\/a>`;\r\n    });\r\n\r\n    document.getElementById(\"pageInfoGaleri\").innerText =\r\n      `Halaman ${currentPageGaleri} dari ${Math.ceil(filesGaleri.length \/ rowsPerPageGaleri)}`;\r\n    document.getElementById(\"prevBtnGaleri\").disabled = currentPageGaleri === 1;\r\n    document.getElementById(\"nextBtnGaleri\").disabled = currentPageGaleri === Math.ceil(filesGaleri.length \/ rowsPerPageGaleri);\r\n  }\r\n\r\n  function prevPageGaleri() {\r\n    if (currentPageGaleri > 1) {\r\n      currentPageGaleri--;\r\n      renderTableGaleri();\r\n    }\r\n  }\r\n  function nextPageGaleri() {\r\n    if (currentPageGaleri < Math.ceil(filesGaleri.length \/ rowsPerPageGaleri)) {\r\n      currentPageGaleri++;\r\n      renderTableGaleri();\r\n    }\r\n  }\r\n  function searchTableGaleri(val) {\r\n    let filter = val.toLowerCase();\r\n    let filtered = filesGaleri.filter(f => f.name.toLowerCase().includes(filter));\r\n    const table = document.getElementById(\"fileTableGaleri\");\r\n    table.innerHTML = `\r\n      <tr>\r\n        <th onclick=\"sortTableGaleri()\">Nama Dokumen \u25b2\u25bc<\/th>\r\n        <th>Lihat<\/th>\r\n        <th>Download<\/th>\r\n      <\/tr>`;\r\n    filtered.forEach(file => {\r\n      let row = table.insertRow();\r\n      row.insertCell(0).innerText = file.name;\r\n      row.insertCell(1).innerHTML = `<a class=\"btn\" href=\"https:\/\/drive.google.com\/file\/d\/${file.id}\/preview\" target=\"_blank\">Lihat<\/a>`;\r\n      row.insertCell(2).innerHTML = `<a class=\"btn\" href=\"https:\/\/drive.google.com\/uc?export=download&id=${file.id}\">Download<\/a>`;\r\n    });\r\n    document.getElementById(\"pageInfoGaleri\").innerText = `Ditemukan ${filtered.length} dokumen`;\r\n    document.getElementById(\"prevBtnGaleri\").disabled = true;\r\n    document.getElementById(\"nextBtnGaleri\").disabled = true;\r\n  }\r\n  function sortTableGaleri() {\r\n    filesGaleri.sort((a, b) => sortAscGaleri ? a.name.localeCompare(b.name) : b.name.localeCompare(a.name));\r\n    sortAscGaleri = !sortAscGaleri;\r\n    currentPageGaleri = 1;\r\n    renderTableGaleri();\r\n  }\r\n\r\n  loadFilesGaleri(folderIdGaleri);\r\n<\/script>\r\n<\/body>\r\n<\/html>\r\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div id=\"e-n-tab-content-252871543\" role=\"tabpanel\" aria-labelledby=\"e-n-tab-title-252871543\" data-tab-index=\"3\" style=\"--n-tabs-title-order: 3;\" class=\" elementor-element elementor-element-920e739 e-con-full e-flex e-con e-child\" data-id=\"920e739\" data-element_type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-d794ce2 e-con-full e-flex e-con e-child\" data-id=\"d794ce2\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-331e14e elementor-widget elementor-widget-heading\" data-id=\"331e14e\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Daftar Hadir Rapat\/Kegiatan<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-255fa6f elementor-widget elementor-widget-heading\" data-id=\"255fa6f\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><i>Format Nama: Tanggal Kegiatan(YYYYMMDD)_[Nama Kegiatan]<\/i><br><i>Contoh: 20250505_Daftar Hadir Rapat Rutin<\/i><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-f036163 elementor-widget elementor-widget-button\" data-id=\"f036163\" data-element_type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t\t\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"https:\/\/docs.google.com\/document\/d\/1bUnzW1Wz6yemh2q2RuRI5gABxwWBTolX\/export?format=docx\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t<span class=\"elementor-button-icon\">\n\t\t\t\t<svg aria-hidden=\"true\" class=\"e-font-icon-svg e-fas-file-download\" viewBox=\"0 0 384 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm76.45 211.36l-96.42 95.7c-6.65 6.61-17.39 6.61-24.04 0l-96.42-95.7C73.42 337.29 80.54 320 94.82 320H160v-80c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v80h65.18c14.28 0 21.4 17.29 11.27 27.36zM377 105L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9z\"><\/path><\/svg>\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Download Template (internal)<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-43477d2 elementor-widget elementor-widget-button\" data-id=\"43477d2\" data-element_type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t\t\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"https:\/\/docs.google.com\/document\/d\/1kPzpXarN2Z16JqXJ7-sx-_Yi5og8jkLB\/export?format=docx\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t<span class=\"elementor-button-icon\">\n\t\t\t\t<svg aria-hidden=\"true\" class=\"e-font-icon-svg e-fas-file-download\" viewBox=\"0 0 384 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm76.45 211.36l-96.42 95.7c-6.65 6.61-17.39 6.61-24.04 0l-96.42-95.7C73.42 337.29 80.54 320 94.82 320H160v-80c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v80h65.18c14.28 0 21.4 17.29 11.27 27.36zM377 105L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9z\"><\/path><\/svg>\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Download Template (Eksternal)<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-d511e2c elementor-widget elementor-widget-button\" data-id=\"d511e2c\" data-element_type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t\t\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"https:\/\/drive.google.com\/drive\/folders\/1dntGyQ5v6lOrtTDdk1z3D-5hxoOTzzNF?usp=sharing\" target=\"_blank\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t<span class=\"elementor-button-icon\">\n\t\t\t\t<svg aria-hidden=\"true\" class=\"e-font-icon-svg e-fas-file-upload\" viewBox=\"0 0 384 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm65.18 216.01H224v80c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16v-80H94.82c-14.28 0-21.41-17.29-11.27-27.36l96.42-95.7c6.65-6.61 17.39-6.61 24.04 0l96.42 95.7c10.15 10.07 3.03 27.36-11.25 27.36zM377 105L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9z\"><\/path><\/svg>\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Upload Daftar Hadir<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-9f3b601 elementor-widget elementor-widget-html\" data-id=\"9f3b601\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!DOCTYPE html>\r\n<html>\r\n<head>\r\n<meta charset=\"UTF-8\">\r\n<style>\r\n  table {\r\n    width: 100%;\r\n    border-collapse: collapse;\r\n    font-family: Poppins, sans-serif;\r\n    margin-bottom: 20px;\r\n  }\r\n  th {\r\n    background-color: #344660;\r\n    color: #f9f0df;\r\n    padding: 5px;\r\n    text-align: center;\r\n    cursor: pointer;\r\n  }\r\n  td {\r\n    padding: 6px;\r\n    border-bottom: 1px solid #ddd;\r\n    color: #344660;\r\n    text-align: left;\r\n  }\r\n  a.btn {\r\n    padding: 6px 12px;\r\n    text-decoration: none;\r\n    border-radius: 2px;\r\n    color: #f9f0df;\r\n    background-color: #c85c42;\r\n  }\r\n  .search-box {\r\n    margin: 10px 0;\r\n    padding: 6px;\r\n    width: 300px;\r\n    border: 1px solid #ccc;\r\n    border-radius: 3px;\r\n    color: #000000;\r\n  }\r\n  .search-box::placeholder {\r\n    color: #000000 !important;\r\n    opacity: 1;\r\n  }\r\n      input.search-box {\r\n      color: #000000 !important;\r\n      opacity: 0.9 !important;\r\n    }\r\n  .pagination {\r\n    display: flex;\r\n    justify-content: center;\r\n    gap: 6px;\r\n    margin-top: 15px;\r\n  }\r\n  .pagination button {\r\n    padding: 6px 12px;\r\n    border: none;\r\n    background-color: #344660;\r\n    color: #f9f0df;\r\n    cursor: pointer;\r\n    border-radius: 3px;\r\n  }\r\n  .pagination button:disabled {\r\n    background-color: #ccc;\r\n    cursor: not-allowed;\r\n  }\r\n<\/style>\r\n<\/head>\r\n<body>\r\n  <input type=\"text\" class=\"search-box\" placeholder=\"Cari Dokumen...\" onkeyup=\"searchTableHadir(this.value)\">\r\n  <table id=\"fileTableHadir\">\r\n    <tr>\r\n      <th onclick=\"sortTableHadir()\">Nama Dokumen \u25b2\u25bc<\/th>\r\n      <th>Lihat<\/th>\r\n      <th>Download<\/th>\r\n    <\/tr>\r\n  <\/table>\r\n  <div class=\"pagination\">\r\n    <button onclick=\"prevPageHadir()\" id=\"prevBtnHadir\">Prev<\/button>\r\n    <span id=\"pageInfoHadir\"><\/span>\r\n    <button onclick=\"nextPageHadir()\" id=\"nextBtnHadir\">Next<\/button>\r\n  <\/div>\r\n\r\n<script>\r\n  const folderIdHadir = \"\"; \/\/ Ganti dengan ID folder Daftar Hadir\r\n\r\n  let filesHadir = [];\r\n  let currentPageHadir = 1;\r\n  const rowsPerPageHadir = 10;\r\n  let sortAscHadir = true;\r\n\r\n  function loadFilesHadir(folderId) {\r\n    fetch(`https:\/\/www.googleapis.com\/drive\/v3\/files?q='${folderId}'+in+parents&key=${apiKey}&fields=files(id,name)&pageSize=1000`)\r\n      .then(res => res.json())\r\n      .then(data => {\r\n        filesHadir = data.files || [];\r\n        renderTableHadir();\r\n      })\r\n      .catch(err => console.error(err));\r\n  }\r\n\r\n  function renderTableHadir() {\r\n    const table = document.getElementById(\"fileTableHadir\");\r\n    table.innerHTML = `\r\n      <tr>\r\n        <th onclick=\"sortTableHadir()\">Nama Dokumen \u25b2\u25bc<\/th>\r\n        <th>Lihat<\/th>\r\n        <th>Download<\/th>\r\n      <\/tr>`;\r\n    let start = (currentPageHadir - 1) * rowsPerPageHadir;\r\n    let end = start + rowsPerPageHadir;\r\n    let paginated = filesHadir.slice(start, end);\r\n\r\n    paginated.forEach(file => {\r\n      let row = table.insertRow();\r\n      row.insertCell(0).innerText = file.name;\r\n      row.insertCell(1).innerHTML = `<a class=\"btn\" href=\"https:\/\/drive.google.com\/file\/d\/${file.id}\/preview\" target=\"_blank\">Lihat<\/a>`;\r\n      row.insertCell(2).innerHTML = `<a class=\"btn\" href=\"https:\/\/drive.google.com\/uc?export=download&id=${file.id}\">Download<\/a>`;\r\n    });\r\n\r\n    document.getElementById(\"pageInfoHadir\").innerText =\r\n      `Halaman ${currentPageHadir} dari ${Math.ceil(filesHadir.length \/ rowsPerPageHadir)}`;\r\n    document.getElementById(\"prevBtnHadir\").disabled = currentPageHadir === 1;\r\n    document.getElementById(\"nextBtnHadir\").disabled = currentPageHadir === Math.ceil(filesHadir.length \/ rowsPerPageHadir);\r\n  }\r\n\r\n  function prevPageHadir() {\r\n    if (currentPageHadir > 1) {\r\n      currentPageHadir--;\r\n      renderTableHadir();\r\n    }\r\n  }\r\n  function nextPageHadir() {\r\n    if (currentPageHadir < Math.ceil(filesHadir.length \/ rowsPerPageHadir)) {\r\n      currentPageHadir++;\r\n      renderTableHadir();\r\n    }\r\n  }\r\n  function searchTableHadir(val) {\r\n    let filter = val.toLowerCase();\r\n    let filtered = filesHadir.filter(f => f.name.toLowerCase().includes(filter));\r\n    const table = document.getElementById(\"fileTableHadir\");\r\n    table.innerHTML = `\r\n      <tr>\r\n        <th onclick=\"sortTableHadir()\">Nama Dokumen \u25b2\u25bc<\/th>\r\n        <th>Lihat<\/th>\r\n        <th>Download<\/th>\r\n      <\/tr>`;\r\n    filtered.forEach(file => {\r\n      let row = table.insertRow();\r\n      row.insertCell(0).innerText = file.name;\r\n      row.insertCell(1).innerHTML = `<a class=\"btn\" href=\"https:\/\/drive.google.com\/file\/d\/${file.id}\/preview\" target=\"_blank\">Lihat<\/a>`;\r\n      row.insertCell(2).innerHTML = `<a class=\"btn\" href=\"https:\/\/drive.google.com\/uc?export=download&id=${file.id}\">Download<\/a>`;\r\n    });\r\n    document.getElementById(\"pageInfoHadir\").innerText = `Ditemukan ${filtered.length} dokumen`;\r\n    document.getElementById(\"prevBtnHadir\").disabled = true;\r\n    document.getElementById(\"nextBtnHadir\").disabled = true;\r\n  }\r\n  function sortTableHadir() {\r\n    filesHadir.sort((a, b) => sortAscHadir ? a.name.localeCompare(b.name) : b.name.localeCompare(a.name));\r\n    sortAscHadir = !sortAscHadir;\r\n    currentPageHadir = 1;\r\n    renderTableHadir();\r\n  }\r\n\r\n  loadFilesHadir(folderIdHadir);\r\n<\/script>\r\n<\/body>\r\n<\/html>\r\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Distribusi CTRL + F untuk pencarian Cafe Harga Inovasi BPS Jembrana untuk mencatat fenomena fluktuasi harga Survei Harga Pedesaan Drive Distribusi Tempat penyimpanan bersama file tim Distribusi Dokumen Kegiatan Dokumentasi Notula Daftar Hadir Dokumentasi Kegiatan Format Nama: Tanggal Kegiatan(YYYYMMDD)_[Nama Kegiatan]Contoh: 20250505_Rapat Rutin Upload Foto Urutkan A-Z \/ Z-A Prev Next X Download Notula Rapat\/Kegiatan Format [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_themeisle_gutenberg_block_has_review":false,"footnotes":""},"class_list":["post-1420","page","type-page","status-publish","hentry"],"blocksy_meta":[],"_links":{"self":[{"href":"https:\/\/bpsjembrana.online\/jelita\/wp-json\/wp\/v2\/pages\/1420","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/bpsjembrana.online\/jelita\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/bpsjembrana.online\/jelita\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/bpsjembrana.online\/jelita\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/bpsjembrana.online\/jelita\/wp-json\/wp\/v2\/comments?post=1420"}],"version-history":[{"count":22,"href":"https:\/\/bpsjembrana.online\/jelita\/wp-json\/wp\/v2\/pages\/1420\/revisions"}],"predecessor-version":[{"id":2967,"href":"https:\/\/bpsjembrana.online\/jelita\/wp-json\/wp\/v2\/pages\/1420\/revisions\/2967"}],"wp:attachment":[{"href":"https:\/\/bpsjembrana.online\/jelita\/wp-json\/wp\/v2\/media?parent=1420"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}