{"id":4338,"date":"2023-05-30T07:30:29","date_gmt":"2023-05-30T07:30:29","guid":{"rendered":"https:\/\/s2pbio.fkip.uns.ac.id\/?page_id=4338"},"modified":"2025-03-15T09:48:20","modified_gmt":"2025-03-15T02:48:20","slug":"haki-sivitas","status":"publish","type":"page","link":"https:\/\/s2pbio.fkip.uns.ac.id\/?page_id=4338","title":{"rendered":"HAKI Sivitas"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"4338\" class=\"elementor elementor-4338\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-1dac1de3 e-flex e-con-boxed e-con e-parent\" data-id=\"1dac1de3\" 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-ff58f04 elementor-widget elementor-widget-heading\" data-id=\"ff58f04\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Berikut merupakan hasil karya dosen dan mahasiswa S2 Pendidikan Biologi UNS yang telah mendapatkan sertifikasi HAKI.<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-831a67c elementor-widget elementor-widget-html\" data-id=\"831a67c\" 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<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 = \"HAKI CIVITAS\";\r\n            \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 ([\"Nama Sivitas\", \"Identitas Produk\/Jasa\", \"Tahun\"].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        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>Berikut merupakan hasil karya dosen dan mahasiswa S2 Pendidikan Biologi UNS yang telah mendapatkan sertifikasi HAKI. Cari Reset Baris: 1025All Memuat data&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-4338","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.9 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>HAKI Sivitas - S2 Pendidikan Biologi<\/title>\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=4338\" \/>\n<meta property=\"og:locale\" content=\"id_ID\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"HAKI Sivitas - S2 Pendidikan Biologi\" \/>\n<meta property=\"og:description\" content=\"Berikut merupakan hasil karya dosen dan mahasiswa S2 Pendidikan Biologi UNS yang telah mendapatkan sertifikasi HAKI. Cari Reset Baris: 1025All Memuat data&#8230;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/s2pbio.fkip.uns.ac.id\/?page_id=4338\" \/>\n<meta property=\"og:site_name\" content=\"S2 Pendidikan Biologi\" \/>\n<meta property=\"article:modified_time\" content=\"2025-03-15T02:48:20+00:00\" \/>\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=4338\",\"url\":\"https:\\\/\\\/s2pbio.fkip.uns.ac.id\\\/?page_id=4338\",\"name\":\"HAKI Sivitas - S2 Pendidikan Biologi\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/s2pbio.fkip.uns.ac.id\\\/#website\"},\"datePublished\":\"2023-05-30T07:30:29+00:00\",\"dateModified\":\"2025-03-15T02:48:20+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/s2pbio.fkip.uns.ac.id\\\/?page_id=4338#breadcrumb\"},\"inLanguage\":\"id\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/s2pbio.fkip.uns.ac.id\\\/?page_id=4338\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/s2pbio.fkip.uns.ac.id\\\/?page_id=4338#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/s2pbio.fkip.uns.ac.id\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"HAKI Sivitas\"}]},{\"@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":"HAKI Sivitas - S2 Pendidikan Biologi","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=4338","og_locale":"id_ID","og_type":"article","og_title":"HAKI Sivitas - S2 Pendidikan Biologi","og_description":"Berikut merupakan hasil karya dosen dan mahasiswa S2 Pendidikan Biologi UNS yang telah mendapatkan sertifikasi HAKI. Cari Reset Baris: 1025All Memuat data&#8230;","og_url":"https:\/\/s2pbio.fkip.uns.ac.id\/?page_id=4338","og_site_name":"S2 Pendidikan Biologi","article_modified_time":"2025-03-15T02:48:20+00:00","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=4338","url":"https:\/\/s2pbio.fkip.uns.ac.id\/?page_id=4338","name":"HAKI Sivitas - S2 Pendidikan Biologi","isPartOf":{"@id":"https:\/\/s2pbio.fkip.uns.ac.id\/#website"},"datePublished":"2023-05-30T07:30:29+00:00","dateModified":"2025-03-15T02:48:20+00:00","breadcrumb":{"@id":"https:\/\/s2pbio.fkip.uns.ac.id\/?page_id=4338#breadcrumb"},"inLanguage":"id","potentialAction":[{"@type":"ReadAction","target":["https:\/\/s2pbio.fkip.uns.ac.id\/?page_id=4338"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/s2pbio.fkip.uns.ac.id\/?page_id=4338#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/s2pbio.fkip.uns.ac.id\/"},{"@type":"ListItem","position":2,"name":"HAKI Sivitas"}]},{"@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\/4338","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=4338"}],"version-history":[{"count":324,"href":"https:\/\/s2pbio.fkip.uns.ac.id\/index.php?rest_route=\/wp\/v2\/pages\/4338\/revisions"}],"predecessor-version":[{"id":6228,"href":"https:\/\/s2pbio.fkip.uns.ac.id\/index.php?rest_route=\/wp\/v2\/pages\/4338\/revisions\/6228"}],"wp:attachment":[{"href":"https:\/\/s2pbio.fkip.uns.ac.id\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=4338"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}