Created
January 8, 2026 06:56
-
-
Save dandyraka/eaa112069d423b4895c989b3b1331674 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| (function() { | |
| const teams = { | |
| "TEAM LOVE": ["Alya Amanda", "Anindya Ramadhani", "Aurellia", "Aurhel Alana", "Cathleen Nixie", "Celline Thefani", "Cynthia Yaputera", "Fiony Alveria", "Fritzy Rosmerian", "Grace Octaviani", "Hillary Abigail", "Indah Cahya", "Jazzlyn Trisha", "Michelle Alexandra", "Nayla Suji"], | |
| "TEAM DREAM": ["Adeline Wijaya", "Amanda Sukma", "Chelsea Davina", "Febriola Sinambela", "Freya Jayawardana", "Gabriela Abigail", "Gendis Mayrannisa", "Gita Sekar", "Greesella Adhalia", "Helisma Putri", "Jesslyn Elly", "Marsha Lenathe", "Nina Tutachia", "Oline Manuel", "Shabilqis Naila"], | |
| "TEAM PASSION": ["Abigail Rachel", "Angelina Christy", "Catherina Vallencia", "Cornelia Vanisa", "Dena Natalia", "Desy Natalia", "Feni Fitriyanti", "Jessica Chandra", "Kathrina Irene", "Lulu Salsabila", "Michelle Levia", "Mutiara Azzahra", "Raisha Syifa", "Ribka Budiman", "Victoria Kimberly"] | |
| }; | |
| // 1. Ambil semua elemen member yang ada di halaman (baik Anggota Inti maupun Trainee) | |
| const allMemberNodes = Array.from(document.querySelectorAll('.col-4')); | |
| const mainArea = document.querySelector('.entry-contents__main-area'); | |
| // 2. Kosongkan area utama agar kita bisa susun ulang | |
| //mainArea.innerHTML = '<h2 class="section-title">JKT48 Team Sort</h2>'; | |
| while (mainArea.firstChild) { | |
| mainArea.removeChild(mainArea.firstChild); | |
| } | |
| // Fungsi untuk mencari elemen berdasarkan nama (lebih fleksibel) | |
| const findMemberElement = (name) => { | |
| return allMemberNodes.find(node => { | |
| const nodeText = node.innerText.toLowerCase().replace(/\s+/g, ''); | |
| const targetName = name.toLowerCase().replace(/\s+/g, ''); | |
| return nodeText.includes(targetName) || targetName.includes(nodeText); | |
| }); | |
| }; | |
| // 3. Susun berdasarkan Team | |
| Object.keys(teams).forEach(teamName => { | |
| // Buat Label Team | |
| const header = document.createElement('h2'); | |
| header.className = 'section-title'; | |
| header.style.padding = '10px'; | |
| header.innerText = teamName; | |
| mainArea.appendChild(header); | |
| // Buat Row Container | |
| const row = document.createElement('div'); | |
| row.className = 'row row-all-10'; | |
| teams[teamName].forEach(memberName => { | |
| const element = findMemberElement(memberName); | |
| if (element) { | |
| const clone = element.cloneNode(true); | |
| row.appendChild(clone); | |
| } | |
| }); | |
| mainArea.appendChild(row); | |
| }); | |
| // 4. Masukkan sisanya (Trainee/Member yang tidak masuk list) ke paling bawah | |
| const footerHeader = document.createElement('h2'); | |
| footerHeader.className = 'section-title mt-5'; | |
| footerHeader.innerText = 'Trainee JKT48'; | |
| mainArea.appendChild(footerHeader); | |
| const footerRow = document.createElement('div'); | |
| footerRow.className = 'row row-all-10'; | |
| // Cari member yang belum masuk ke team manapun | |
| allMemberNodes.forEach(node => { | |
| const isAlreadyAssigned = Object.values(teams).flat().some(name => { | |
| const nodeText = node.innerText.toLowerCase().replace(/\s+/g, ''); | |
| const targetName = name.toLowerCase().replace(/\s+/g, ''); | |
| return nodeText.includes(targetName) || targetName.includes(nodeText); | |
| }); | |
| if (!isAlreadyAssigned) { | |
| footerRow.appendChild(node.cloneNode(true)); | |
| } | |
| }); | |
| mainArea.appendChild(footerRow); | |
| window.scrollTo(0,0); | |
| console.log("Selesai! Member telah disusun ulang."); | |
| })(); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment