{"id":6187,"date":"2025-03-14T10:14:56","date_gmt":"2025-03-14T03:14:56","guid":{"rendered":"https:\/\/s2pbio.fkip.uns.ac.id\/?page_id=6187"},"modified":"2025-03-14T10:37:07","modified_gmt":"2025-03-14T03:37:07","slug":"pengabdian","status":"publish","type":"page","link":"https:\/\/s2pbio.fkip.uns.ac.id\/?page_id=6187","title":{"rendered":"Pengabdian"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"6187\" class=\"elementor elementor-6187\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-daa607d e-flex e-con-boxed e-con e-parent\" data-id=\"daa607d\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-f6b9736 elementor-widget elementor-widget-html\" data-id=\"f6b9736\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\r\n<script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/xlsx\/0.18.5\/xlsx.full.min.js\"><\/script>\r\n\r\n<div class=\"top-bar\">\r\n    <div class=\"search-container\">\r\n        <input type=\"text\" id=\"searchBar\" placeholder=\"Cari data...\">\r\n        <button class=\"search-button\" onclick=\"searchTable()\">Cari<\/button>\r\n        <button class=\"reset-button\" onclick=\"resetSearch()\">Reset<\/button>\r\n    <\/div>\r\n    <div id=\"rowsPerPageContainer\">\r\n        <label for=\"rowsPerPage\">Baris:<\/label>\r\n        <select id=\"rowsPerPage\" onchange=\"changeRowsPerPage()\">\r\n            <option value=\"10\">10<\/option>\r\n            <option value=\"25\">25<\/option>\r\n            <option value=\"all\">All<\/option>\r\n        <\/select>\r\n\r\n    <\/div>\r\n<\/div>\r\n\r\n<div id=\"output\">Memuat data...<\/div>\r\n<div id=\"pagination\"><\/div>\r\n\r\n<script>\r\n    let currentPage = 1;\r\n    let rowsPerPage = 10;\r\n    let tableData = [];\r\n    let originalTableData = [];\r\n    let worksheetData = {};\r\n    let sortColumn = null;\r\n    let sortOrder = \"asc\";\r\n\r\n    async function fetchAndDisplayData() {\r\n        const url = \"https:\/\/docs.google.com\/spreadsheets\/d\/e\/2PACX-1vTvCFRwtpM5MONKglGMi2SwVA7YQ-ZM1bxZ9ocSdsEHLFEL2cvX3RM5V6AgEHDEUA_W4Fi0aMuVeehP\/pub?output=xlsx\";\r\n\r\n        try {\r\n            const response = await fetch(url);\r\n            const arrayBuffer = await response.arrayBuffer();\r\n            const workbook = XLSX.read(arrayBuffer, { type: \"array\" });\r\n            \/\/ const sheetName = workbook.SheetNames[0];\r\n            const sheetName = \"PENGABDIAN\";\r\n            const worksheet = workbook.Sheets[sheetName];\r\n            tableData = XLSX.utils.sheet_to_json(worksheet, { raw: true });\r\n            originalTableData = [...tableData];\r\n            worksheetData = worksheet;\r\n            \r\n            tableData.reverse();\r\n            originalTableData = [...tableData];\r\n\r\n            displayTable();\r\n        } catch (error) {\r\n            console.error(\"Error fetching data:\", error);\r\n            document.getElementById(\"output\").innerHTML = \"<p>Gagal mengambil data.<\/p>\";\r\n        }\r\n    }\r\n\r\n    function getHyperlink(cellRef) {\r\n        const cell = worksheetData[cellRef];\r\n        return cell && cell.l ? cell.l.Target : null;\r\n    }\r\n\r\n    function sortTable(column) {\r\n        if (sortColumn === column) {\r\n            sortOrder = sortOrder === \"asc\" ? \"desc\" : \"asc\";\r\n        } else {\r\n            sortColumn = column;\r\n            sortOrder = \"asc\";\r\n        }\r\n\r\n        tableData.sort((a, b) => {\r\n            let valA = a[column] ? a[column].toString().toLowerCase() : \"\";\r\n            let valB = b[column] ? b[column].toString().toLowerCase() : \"\";\r\n            \r\n            if (!isNaN(valA) && !isNaN(valB)) {\r\n                valA = Number(valA);\r\n                valB = Number(valB);\r\n            }\r\n\r\n            return sortOrder === \"asc\" ? (valA > valB ? 1 : -1) : (valA < valB ? 1 : -1);\r\n        });\r\n\r\n        displayTable();\r\n    }\r\n\r\n    function displayTable() {\r\n        let output = document.getElementById(\"output\");\r\n        if (tableData.length === 0) {\r\n            output.innerHTML = \"<p>Tidak ada data yang tersedia.<\/p>\";\r\n            return;\r\n        }\r\n\r\n        let table = \"<table id='dataTable'><thead><tr>\";\r\n        table += `<th>No<\/th>`;\r\n\r\n        let headers = Object.keys(tableData[0]).filter(key => key.toLowerCase() !== \"no\");\r\n        headers.forEach(key => {\r\n            \/\/ Kolom yg mau ditambah sortTable\r\n            if ([\"Tahun\",\t\"Ketua\",\t\"Anggota\",\t\"Mahasiswa\",\t\"Judul\",\t\"Lokasi\"].includes(key)) {\r\n                table += `<th onclick=\"sortTable('${key}')\" style=\"cursor:pointer;\">${key} \u25b2\u25bc<\/th>`;\r\n            } else {\r\n                table += `<th>${key}<\/th>`;\r\n            }\r\n        });\r\n        table += \"<\/tr><\/thead><tbody>\";\r\n\r\n        \/\/ let start = (currentPage - 1) * rowsPerPage;\r\n        \/\/ let end = rowsPerPage === \"all\" ? tableData.length : start + rowsPerPage;\r\n        let start = rowsPerPage === \"all\" ? 0 : (currentPage - 1) * rowsPerPage;\r\n        let end = rowsPerPage === \"all\" ? tableData.length : start + rowsPerPage;\r\n\r\n        let paginatedData = tableData.slice(start, end);\r\n\r\n        paginatedData.forEach((row, index) => {\r\n            let reversedIndex = originalTableData.length - 1 - originalTableData.indexOf(row);\r\n\r\n            table += \"<tr>\";\r\n            \/\/ table += `<td>${start + index + 1}<\/td>`;\r\n            table += `<td>${index + 1}<\/td>`;\r\n\r\n            \r\n            headers.forEach(key => {\r\n                let colIndex = Object.keys(originalTableData[0]).indexOf(key);\r\n                let cellRef = XLSX.utils.encode_cell({ r: reversedIndex + 1, c: colIndex });\r\n                let link = getHyperlink(cellRef);\r\n                \r\n                if (link) {\r\n                    table += `<td><a href=\"${link}\" target=\"_blank\">${row[key]}<\/a><\/td>`;\r\n                } else {\r\n                    table += `<td>${row[key]}<\/td>`;\r\n                }\r\n            });\r\n            table += \"<\/tr>\";\r\n        });\r\n\r\n        table += \"<\/tbody><\/table>\";\r\n        output.innerHTML = table;\r\n        setupPagination();\r\n    }\r\n\r\n    function setupPagination() {\r\n        let pagination = document.getElementById(\"pagination\");\r\n        pagination.innerHTML = \"\";\r\n        if (rowsPerPage === \"all\") return;\r\n\r\n        let pageCount = Math.ceil(tableData.length \/ rowsPerPage);\r\n\r\n        for (let i = 1; i <= pageCount; i++) {\r\n            let button = document.createElement(\"button\");\r\n            button.innerText = i;\r\n            button.classList.add(\"pagination-button\");\r\n            if (i === currentPage) button.classList.add(\"active\");\r\n            button.addEventListener(\"click\", function () {\r\n                currentPage = i;\r\n                displayTable();\r\n            });\r\n            pagination.appendChild(button);\r\n        }\r\n    }\r\n\r\n    \/\/ function changeRowsPerPage() {\r\n    \/\/     rowsPerPage = parseInt(document.getElementById(\"rowsPerPage\").value);\r\n    \/\/     currentPage = 1;\r\n    \/\/     displayTable();\r\n    \/\/ }\r\n    function changeRowsPerPage() {\r\n        let value = document.getElementById(\"rowsPerPage\").value;\r\n        rowsPerPage = value === \"all\" ? \"all\" : parseInt(value);\r\n        currentPage = 1;\r\n        displayTable();\r\n    }\r\n\r\n\r\n    function searchTable() {\r\n        let input = document.getElementById(\"searchBar\").value.toLowerCase();\r\n        tableData = originalTableData.filter(row => Object.values(row).some(value => value.toString().toLowerCase().includes(input)));\r\n        currentPage = 1;\r\n        displayTable();\r\n    }\r\n\r\n    function resetSearch() {\r\n        document.getElementById(\"searchBar\").value = \"\";\r\n        tableData = [...originalTableData];\r\n        currentPage = 1;\r\n        displayTable();\r\n    }\r\n\r\n    fetchAndDisplayData();\r\n<\/script>\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\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Cari Reset Baris: 1025All Memuat data&#8230;<\/p>\n","protected":false},"author":1,"featured_media":5218,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-6187","page","type-page","status-publish","has-post-thumbnail","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.9 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Pengabdian - S2 Pendidikan Biologi<\/title>\n<meta name=\"description\" content=\"Temukan informasi lengkap tentang kegiatan Pengabdian Masyarakat Program Magister Pendidikan Biologi UNS. Kunjungi halaman ini\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/s2pbio.fkip.uns.ac.id\/?page_id=6187\" \/>\n<meta property=\"og:locale\" content=\"id_ID\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Pengabdian - S2 Pendidikan Biologi\" \/>\n<meta property=\"og:description\" content=\"Temukan informasi lengkap tentang kegiatan Pengabdian Masyarakat Program Magister Pendidikan Biologi UNS. Kunjungi halaman ini\" \/>\n<meta property=\"og:url\" content=\"https:\/\/s2pbio.fkip.uns.ac.id\/?page_id=6187\" \/>\n<meta property=\"og:site_name\" content=\"S2 Pendidikan Biologi\" \/>\n<meta property=\"article:modified_time\" content=\"2025-03-14T03:37:07+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/s2pbio.fkip.uns.ac.id\/wp-content\/uploads\/2025\/02\/gerbang-depan-uns.webp\" \/>\n\t<meta property=\"og:image:width\" content=\"1024\" \/>\n\t<meta property=\"og:image:height\" content=\"682\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/webp\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Estimasi waktu membaca\" \/>\n\t<meta name=\"twitter:data1\" content=\"1 menit\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/s2pbio.fkip.uns.ac.id\\\/?page_id=6187\",\"url\":\"https:\\\/\\\/s2pbio.fkip.uns.ac.id\\\/?page_id=6187\",\"name\":\"Pengabdian - S2 Pendidikan Biologi\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/s2pbio.fkip.uns.ac.id\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/s2pbio.fkip.uns.ac.id\\\/?page_id=6187#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/s2pbio.fkip.uns.ac.id\\\/?page_id=6187#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/s2pbio.fkip.uns.ac.id\\\/wp-content\\\/uploads\\\/2025\\\/02\\\/gerbang-depan-uns.webp\",\"datePublished\":\"2025-03-14T03:14:56+00:00\",\"dateModified\":\"2025-03-14T03:37:07+00:00\",\"description\":\"Temukan informasi lengkap tentang kegiatan Pengabdian Masyarakat Program Magister Pendidikan Biologi UNS. Kunjungi halaman ini\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/s2pbio.fkip.uns.ac.id\\\/?page_id=6187#breadcrumb\"},\"inLanguage\":\"id\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/s2pbio.fkip.uns.ac.id\\\/?page_id=6187\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"id\",\"@id\":\"https:\\\/\\\/s2pbio.fkip.uns.ac.id\\\/?page_id=6187#primaryimage\",\"url\":\"https:\\\/\\\/s2pbio.fkip.uns.ac.id\\\/wp-content\\\/uploads\\\/2025\\\/02\\\/gerbang-depan-uns.webp\",\"contentUrl\":\"https:\\\/\\\/s2pbio.fkip.uns.ac.id\\\/wp-content\\\/uploads\\\/2025\\\/02\\\/gerbang-depan-uns.webp\",\"width\":1024,\"height\":682,\"caption\":\"berita-terbaru\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/s2pbio.fkip.uns.ac.id\\\/?page_id=6187#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/s2pbio.fkip.uns.ac.id\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Pengabdian\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/s2pbio.fkip.uns.ac.id\\\/#website\",\"url\":\"https:\\\/\\\/s2pbio.fkip.uns.ac.id\\\/\",\"name\":\"S2 Pendidikan Biologi\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/s2pbio.fkip.uns.ac.id\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/s2pbio.fkip.uns.ac.id\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"id\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/s2pbio.fkip.uns.ac.id\\\/#organization\",\"name\":\"S2 Pendidikan Biologi\",\"url\":\"https:\\\/\\\/s2pbio.fkip.uns.ac.id\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"id\",\"@id\":\"https:\\\/\\\/s2pbio.fkip.uns.ac.id\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"\",\"contentUrl\":\"\",\"caption\":\"S2 Pendidikan Biologi\"},\"image\":{\"@id\":\"https:\\\/\\\/s2pbio.fkip.uns.ac.id\\\/#\\\/schema\\\/logo\\\/image\\\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Pengabdian - S2 Pendidikan Biologi","description":"Temukan informasi lengkap tentang kegiatan Pengabdian Masyarakat Program Magister Pendidikan Biologi UNS. Kunjungi halaman ini","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/s2pbio.fkip.uns.ac.id\/?page_id=6187","og_locale":"id_ID","og_type":"article","og_title":"Pengabdian - S2 Pendidikan Biologi","og_description":"Temukan informasi lengkap tentang kegiatan Pengabdian Masyarakat Program Magister Pendidikan Biologi UNS. Kunjungi halaman ini","og_url":"https:\/\/s2pbio.fkip.uns.ac.id\/?page_id=6187","og_site_name":"S2 Pendidikan Biologi","article_modified_time":"2025-03-14T03:37:07+00:00","og_image":[{"width":1024,"height":682,"url":"https:\/\/s2pbio.fkip.uns.ac.id\/wp-content\/uploads\/2025\/02\/gerbang-depan-uns.webp","type":"image\/webp"}],"twitter_card":"summary_large_image","twitter_misc":{"Estimasi waktu membaca":"1 menit"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/s2pbio.fkip.uns.ac.id\/?page_id=6187","url":"https:\/\/s2pbio.fkip.uns.ac.id\/?page_id=6187","name":"Pengabdian - S2 Pendidikan Biologi","isPartOf":{"@id":"https:\/\/s2pbio.fkip.uns.ac.id\/#website"},"primaryImageOfPage":{"@id":"https:\/\/s2pbio.fkip.uns.ac.id\/?page_id=6187#primaryimage"},"image":{"@id":"https:\/\/s2pbio.fkip.uns.ac.id\/?page_id=6187#primaryimage"},"thumbnailUrl":"https:\/\/s2pbio.fkip.uns.ac.id\/wp-content\/uploads\/2025\/02\/gerbang-depan-uns.webp","datePublished":"2025-03-14T03:14:56+00:00","dateModified":"2025-03-14T03:37:07+00:00","description":"Temukan informasi lengkap tentang kegiatan Pengabdian Masyarakat Program Magister Pendidikan Biologi UNS. Kunjungi halaman ini","breadcrumb":{"@id":"https:\/\/s2pbio.fkip.uns.ac.id\/?page_id=6187#breadcrumb"},"inLanguage":"id","potentialAction":[{"@type":"ReadAction","target":["https:\/\/s2pbio.fkip.uns.ac.id\/?page_id=6187"]}]},{"@type":"ImageObject","inLanguage":"id","@id":"https:\/\/s2pbio.fkip.uns.ac.id\/?page_id=6187#primaryimage","url":"https:\/\/s2pbio.fkip.uns.ac.id\/wp-content\/uploads\/2025\/02\/gerbang-depan-uns.webp","contentUrl":"https:\/\/s2pbio.fkip.uns.ac.id\/wp-content\/uploads\/2025\/02\/gerbang-depan-uns.webp","width":1024,"height":682,"caption":"berita-terbaru"},{"@type":"BreadcrumbList","@id":"https:\/\/s2pbio.fkip.uns.ac.id\/?page_id=6187#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/s2pbio.fkip.uns.ac.id\/"},{"@type":"ListItem","position":2,"name":"Pengabdian"}]},{"@type":"WebSite","@id":"https:\/\/s2pbio.fkip.uns.ac.id\/#website","url":"https:\/\/s2pbio.fkip.uns.ac.id\/","name":"S2 Pendidikan Biologi","description":"","publisher":{"@id":"https:\/\/s2pbio.fkip.uns.ac.id\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/s2pbio.fkip.uns.ac.id\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"id"},{"@type":"Organization","@id":"https:\/\/s2pbio.fkip.uns.ac.id\/#organization","name":"S2 Pendidikan Biologi","url":"https:\/\/s2pbio.fkip.uns.ac.id\/","logo":{"@type":"ImageObject","inLanguage":"id","@id":"https:\/\/s2pbio.fkip.uns.ac.id\/#\/schema\/logo\/image\/","url":"","contentUrl":"","caption":"S2 Pendidikan Biologi"},"image":{"@id":"https:\/\/s2pbio.fkip.uns.ac.id\/#\/schema\/logo\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/s2pbio.fkip.uns.ac.id\/index.php?rest_route=\/wp\/v2\/pages\/6187","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/s2pbio.fkip.uns.ac.id\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/s2pbio.fkip.uns.ac.id\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/s2pbio.fkip.uns.ac.id\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/s2pbio.fkip.uns.ac.id\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=6187"}],"version-history":[{"count":28,"href":"https:\/\/s2pbio.fkip.uns.ac.id\/index.php?rest_route=\/wp\/v2\/pages\/6187\/revisions"}],"predecessor-version":[{"id":6217,"href":"https:\/\/s2pbio.fkip.uns.ac.id\/index.php?rest_route=\/wp\/v2\/pages\/6187\/revisions\/6217"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/s2pbio.fkip.uns.ac.id\/index.php?rest_route=\/wp\/v2\/media\/5218"}],"wp:attachment":[{"href":"https:\/\/s2pbio.fkip.uns.ac.id\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=6187"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}