{"id":17640,"date":"2026-08-31T22:32:49","date_gmt":"2026-08-31T17:02:49","guid":{"rendered":"https:\/\/ddugdcsaidabad.ac.in\/?page_id=17640"},"modified":"2026-09-03T07:24:09","modified_gmt":"2026-09-03T01:54:09","slug":"admission-list-2026-27","status":"publish","type":"page","link":"https:\/\/ddugdcsaidabad.ac.in\/index.php\/admission-list-2026-27\/","title":{"rendered":"Admission list 2026-27"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"17640\" class=\"elementor elementor-17640\" data-elementor-post-type=\"page\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-1f09b24 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"1f09b24\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-632fc63\" data-id=\"632fc63\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-433b028 elementor-widget elementor-widget-html\" data-id=\"433b028\" 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<!DOCTYPE html>\r\n<html lang=\"en\">\r\n<head>\r\n<meta charset=\"UTF-8\">\r\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\r\n<title>Semester 1, 3 & 5 Admissions & Rosters 2026-27 | DDU Govt PG College<\/title>\r\n\r\n<!-- PapaParse Engine for Live Google Sheet Parsing -->\r\n<script src=\"https:\/\/cdn.jsdelivr.net\/npm\/papaparse@5.4.1\/papaparse.min.js\"><\/script>\r\n<!-- SheetJS (xlsx) for Excel Export -->\r\n<script src=\"https:\/\/cdn.jsdelivr.net\/npm\/xlsx@0.18.5\/dist\/xlsx.full.min.js\"><\/script>\r\n<!-- html2pdf for Direct PDF Generation -->\r\n<script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/html2pdf.js\/0.10.1\/html2pdf.bundle.min.js\"><\/script>\r\n\r\n<style>\r\nbody {\r\n    margin: 0;\r\n    font-family: 'Segoe UI', sans-serif;\r\n    background: #f4f7fb;\r\n    color: #333;\r\n}\r\n\r\n\/* HEADER *\/\r\n.header {\r\n    background: linear-gradient(135deg, #004aad, #007bff);\r\n    color: white;\r\n    text-align: center;\r\n    padding: 35px 20px;\r\n}\r\n.header h1 {\r\n    margin: 0;\r\n    font-size: 28px;\r\n}\r\n.header p {\r\n    margin: 8px 0 0 0;\r\n    font-size: 15px;\r\n    opacity: 0.95;\r\n}\r\n\r\n\/* CONTAINER & CARDS *\/\r\n.container {\r\n    max-width: 1320px;\r\n    margin: auto;\r\n    padding: 20px;\r\n}\r\n.card {\r\n    background: white;\r\n    padding: 25px;\r\n    border-radius: 12px;\r\n    margin-bottom: 25px;\r\n    box-shadow: 0 4px 12px rgba(0,0,0,0.08);\r\n}\r\nh2 {\r\n    color: #004aad;\r\n    margin-top: 0;\r\n}\r\n\r\n\/* MAIN NAVIGATION TABS *\/\r\n.nav-buttons {\r\n    display: flex;\r\n    justify-content: center;\r\n    gap: 15px;\r\n    margin: 20px 0;\r\n}\r\n.nav-btn {\r\n    flex: 1;\r\n    max-width: 340px;\r\n    padding: 13px 20px;\r\n    font-size: 15px;\r\n    font-weight: bold;\r\n    border: 2px solid #004aad;\r\n    border-radius: 8px;\r\n    cursor: pointer;\r\n    background-color: white;\r\n    color: #004aad;\r\n    transition: all 0.3s ease;\r\n    display: flex;\r\n    align-items: center;\r\n    justify-content: center;\r\n    gap: 8px;\r\n}\r\n.nav-btn.active {\r\n    background-color: #004aad;\r\n    color: white;\r\n    box-shadow: 0 4px 10px rgba(0,74,173,0.25);\r\n}\r\n.nav-btn:hover {\r\n    transform: translateY(-2px);\r\n    box-shadow: 0 4px 8px rgba(0,0,0,0.1);\r\n}\r\n\r\n.view-panel { display: none; }\r\n.view-panel.active { display: block; animation: fadeIn 0.3s ease; }\r\n\r\n@keyframes fadeIn {\r\n    from { opacity: 0; transform: translateY(4px); }\r\n    to { opacity: 1; transform: translateY(0); }\r\n}\r\n\r\n\/* EXPORT ACTION BUTTONS *\/\r\n.export-toolbar {\r\n    display: flex;\r\n    flex-wrap: wrap;\r\n    gap: 10px;\r\n    margin: 15px 0 20px 0;\r\n    align-items: center;\r\n}\r\n.btn-export {\r\n    display: inline-flex;\r\n    align-items: center;\r\n    gap: 6px;\r\n    padding: 9px 16px;\r\n    font-size: 13.5px;\r\n    font-weight: 600;\r\n    border: none;\r\n    border-radius: 6px;\r\n    cursor: pointer;\r\n    transition: all 0.2s ease;\r\n    color: white;\r\n    text-decoration: none;\r\n}\r\n.btn-export:hover {\r\n    opacity: 0.9;\r\n    transform: translateY(-1px);\r\n}\r\n.btn-excel { background-color: #107c41; }\r\n.btn-pdf { background-color: #d93025; }\r\n.btn-print { background-color: #495057; }\r\n\r\n\/* SEMESTER-SPECIFIC SUMMARY CARD BLOCKS *\/\r\n.sem-summary-block {\r\n    background: #ffffff;\r\n    border: 1px solid #dbe3eb;\r\n    border-left: 6px solid #004aad;\r\n    border-radius: 8px;\r\n    padding: 18px 20px;\r\n    margin-bottom: 20px;\r\n    box-shadow: 0 2px 6px rgba(0,0,0,0.03);\r\n}\r\n.sem-summary-block.sem-1 { border-left-color: #004aad; }\r\n.sem-summary-block.sem-3 { border-left-color: #0284c7; }\r\n.sem-summary-block.sem-5 { border-left-color: #4f46e5; }\r\n.sem-summary-block.overall { border-left-color: #0b3d91; background: #fafcff; }\r\n\r\n.sem-summary-title {\r\n    font-size: 16px;\r\n    font-weight: bold;\r\n    color: #004aad;\r\n    margin-bottom: 12px;\r\n    display: flex;\r\n    justify-content: space-between;\r\n    align-items: center;\r\n}\r\n\r\n.row { display: flex; flex-wrap: wrap; gap: 12px; }\r\n.col-md-3 { flex: 1; min-width: 170px; }\r\n.metric-card { padding: 12px; border-radius: 8px; text-align: center; color: white; font-weight: bold; box-shadow: 0 2px 5px rgba(0,0,0,0.05); }\r\n.bg-primary { background-color: #0b3d91; }\r\n.bg-success { background-color: #28a745; }\r\n.bg-danger { background-color: #dc3545; }\r\n.bg-warning { background-color: #f59e0b; color: #ffffff; }\r\n.metric-card h3 { margin: 4px 0; color: inherit; font-size: 22px; }\r\n.metric-card p { margin: 0; font-size: 11px; opacity: 0.95; text-transform: uppercase; letter-spacing: 0.5px; }\r\n\r\n\/* MULTI-COLUMN SUMMARY TABLES GRID *\/\r\n.analytics-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 20px; margin-bottom: 25px; }\r\n.analytics-card { background: #ffffff; border: 1px solid #e2e8f0; border-radius: 8px; padding: 18px; box-shadow: 0 2px 8px rgba(0,0,0,0.04); }\r\n.analytics-card h4 { margin-top: 0; margin-bottom: 12px; padding-bottom: 8px; border-bottom: 2px solid #004aad; color: #004aad; font-size: 15px; }\r\n\r\n\/* SEMESTER SPECIFIC ROSTER SECTION STYLING *\/\r\n.semester-block {\r\n    border: 1px solid #dbe3eb;\r\n    border-radius: 10px;\r\n    margin-bottom: 35px;\r\n    background: #ffffff;\r\n    overflow: hidden;\r\n    box-shadow: 0 2px 8px rgba(0,0,0,0.04);\r\n}\r\n.semester-header {\r\n    background: #eef4fc;\r\n    border-bottom: 2px solid #004aad;\r\n    padding: 14px 20px;\r\n    display: flex;\r\n    justify-content: space-between;\r\n    align-items: center;\r\n    flex-wrap: wrap;\r\n    gap: 10px;\r\n}\r\n.semester-header h3 {\r\n    margin: 0;\r\n    color: #004aad;\r\n    font-size: 18px;\r\n    display: flex;\r\n    align-items: center;\r\n    gap: 8px;\r\n}\r\n.sem-badge {\r\n    background: #004aad;\r\n    color: white;\r\n    padding: 4px 12px;\r\n    border-radius: 14px;\r\n    font-size: 12px;\r\n    font-weight: bold;\r\n}\r\n\r\n\/* DATA TABLES *\/\r\n.table-responsive { width: 100%; overflow-x: auto; }\r\ntable { width: 100%; border-collapse: collapse; background: #fff; font-size: 13.5px; }\r\nth { background: #0b3d91; color: #fff; padding: 11px 8px; font-weight: 600; white-space: nowrap; }\r\ntd { padding: 10px 8px; text-align: center; border-bottom: 1px solid #e2e8f0; white-space: nowrap; }\r\ntr:hover { background: #f7faff; }\r\n\r\n.analytics-table th { background-color: #f1f5f9; color: #334155; border: 1px solid #e2e8f0; font-size: 12px; padding: 7px 8px; text-align: left; }\r\n.analytics-table td { border: 1px solid #e2e8f0; padding: 7px 8px; text-align: left; white-space: normal; word-break: break-word; }\r\n\r\n\/* SEARCH & CONTROLS UI *\/\r\n.search-box { background: #f5f7ff; padding: 18px; border-radius: 8px; border: 1px solid #e0e6ed; margin-bottom: 20px; }\r\n.search-box h3 { text-align: left; margin-top: 0; margin-bottom: 12px; font-size: 17px; color: #004aad; }\r\n.input-group { display: flex; gap: 10px; }\r\n#searchInputStatus, #searchInputList { width: 100%; padding: 11px; border: 1px solid #ccc; border-radius: 6px; font-size: 15px; outline: none; }\r\n#searchInputStatus:focus, #searchInputList:focus { border-color: #004aad; }\r\n.btn-action { background: #004aad; color: white; padding: 11px 22px; border: none; border-radius: 6px; cursor: pointer; font-weight: bold; font-size: 15px; white-space: nowrap; }\r\n.btn-action:hover { background: #003680; }\r\n\r\n.filters { display: flex; flex-wrap: wrap; gap: 10px; margin-bottom: 15px; align-items: center; }\r\nselect { padding: 9px 12px; border-radius: 5px; border: 1px solid #ccc; background: white; font-size: 14px; outline: none; }\r\nselect:focus { border-color: #004aad; }\r\n\r\n.sem-pills { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 10px; }\r\n.sem-pill-btn {\r\n    padding: 7px 16px;\r\n    background: #e2e8f0;\r\n    color: #334155;\r\n    border: none;\r\n    border-radius: 20px;\r\n    font-size: 13px;\r\n    cursor: pointer;\r\n    font-weight: 600;\r\n    transition: all 0.2s;\r\n}\r\n.sem-pill-btn:hover, .sem-pill-btn.active {\r\n    background: #004aad;\r\n    color: #fff;\r\n}\r\n\r\n.badge { padding: 4px 8px; border-radius: 12px; font-size: 11px; font-weight: bold; color: white; display: inline-block; }\r\n.badge-approved { background-color: #28a745; }\r\n.badge-pending { background-color: #dc3545; }\r\n.counter-text { font-size: 13.5px; color: #555; margin-bottom: 12px; font-weight: 600; }\r\n.alert { padding: 15px; border-radius: 6px; margin-top: 15px; text-align: center; font-weight: bold; }\r\n.alert-warning { background: #fff3cd; color: #856404; border: 1px solid #ffeeba; }\r\n\r\n\/* PRINT MEDIA FORMATTING *\/\r\n@media print {\r\n    body * { visibility: hidden; }\r\n    #slipPrintArea, #slipPrintArea * { visibility: visible; }\r\n    #slipPrintArea { position: absolute; left: 0; top: 0; width: 100%; border: none !important; }\r\n}\r\n<\/style>\r\n<\/head>\r\n<body>\r\n\r\n<div class=\"header\">\r\n    <h1>Deen Dayal Upadhyay Govt PG College<\/h1>\r\n    <p>Saidabad, Prayagraj | Odd Semesters (Sem 1st, 3rd, 5th) Admission & Roster Portal 2026-27<\/p>\r\n<\/div>\r\n\r\n<div class=\"container\">\r\n    <!-- NAVIGATION BUTTONS -->\r\n    <div class=\"nav-buttons\">\r\n        <button id=\"btnStatus\" class=\"nav-btn active\" onclick=\"switchView('statusView')\">\ud83d\udc64 Admission Status & Slip<\/button>\r\n        <button id=\"btnList\" class=\"nav-btn\" onclick=\"switchView('listView')\">\ud83d\udcca Sem-1, 3, 5 Analytics & Rosters<\/button>\r\n    <\/div>\r\n\r\n    <!-- ================= ROUTE 1: SLIP VERIFICATION PANEL ================= -->\r\n    <div id=\"statusView\" class=\"view-panel active card\">\r\n        <div class=\"search-box\" style=\"max-width: 650px; margin: auto; background: transparent; border: none; padding: 0;\">\r\n            <h3 style=\"text-align: center;\">Verify Registration & Download Admission Slip<\/h3>\r\n            <div class=\"input-group\">\r\n                <input id=\"searchInputStatus\" type=\"text\" placeholder=\"Enter Registration No. or Mobile No.\">\r\n                <button class=\"btn-action\" onclick=\"searchIndividualStudent()\">Check Status<\/button>\r\n            <\/div>\r\n        <\/div>\r\n\r\n        <div id=\"statusResult\" style=\"max-width: 650px; margin: auto; margin-top: 20px;\"><\/div>\r\n\r\n        <!-- Slip Download \/ Print Buttons -->\r\n        <div id=\"slipActionToolbar\" style=\"display:none; text-align:center; margin-top: 20px; gap: 10px; justify-content: center; flex-wrap: wrap;\">\r\n            <button class=\"btn-export btn-print\" onclick=\"printAdmissionSlip()\">\ud83d\udda8\ufe0f Print Slip<\/button>\r\n            <button class=\"btn-export btn-pdf\" onclick=\"downloadSlipPDF()\">\ud83d\udcc4 Download Slip (PDF)<\/button>\r\n        <\/div>\r\n    <\/div>\r\n\r\n    <!-- ================= ROUTE 2: SEMESTER 1, 3, 5 ANALYTICS & ROSTERS ================= -->\r\n    <div id=\"listView\" class=\"view-panel card\">\r\n        <h2>\ud83d\udcca Semester-Wise Enrollment Summary Indicators (Sem 1st, 3rd, 5th)<\/h2>\r\n        \r\n        <!-- SEMESTER 1, 3, 5 SUMMARY KPI CARDS -->\r\n        <div id=\"semesterKpiContainer\" style=\"margin-bottom: 25px;\"><\/div>\r\n\r\n        <!-- Demographic Breakdowns Grid -->\r\n        <div class=\"analytics-grid\">\r\n            <div class=\"analytics-card\">\r\n                <h4>\ud83d\udccb Programme Breakdown (Sem 1, 3, 5)<\/h4>\r\n                <table class=\"analytics-table\">\r\n                    <thead><tr><th>Course<\/th><th>Total<\/th><th style=\"color:#28a745;\">Appr.<\/th><th style=\"color:#dc3545;\">Pend.<\/th><\/tr><\/thead>\r\n                    <tbody id=\"programmeStatsBody\"><\/tbody>\r\n                <\/table>\r\n            <\/div>\r\n            <div class=\"analytics-card\">\r\n                <h4>\u23f1 Semester Distribution (1st, 3rd, 5th)<\/h4>\r\n                <table class=\"analytics-table\">\r\n                    <thead><tr><th>Semester<\/th><th>Count<\/th><th>Share<\/th><\/tr><\/thead>\r\n                    <tbody id=\"semesterStatsBody\"><\/tbody>\r\n                <\/table>\r\n            <\/div>\r\n            <div class=\"analytics-card\">\r\n                <h4>\ud83d\udc68\u200d\ud83c\udf93 Category Classification<\/h4>\r\n                <table class=\"analytics-table\">\r\n                    <thead><tr><th>Category<\/th><th>Count<\/th><th>Share<\/th><\/tr><\/thead>\r\n                    <tbody id=\"categoryStatsBody\"><\/tbody>\r\n                <\/table>\r\n            <\/div>\r\n            <div class=\"analytics-card\">\r\n                <h4>\ud83d\udeb9 Gender Balance<\/h4>\r\n                <table class=\"analytics-table\">\r\n                    <thead><tr><th>Gender<\/th><th>Count<\/th><th>Share<\/th><\/tr><\/thead>\r\n                    <tbody id=\"genderStatsBody\"><\/tbody>\r\n                <\/table>\r\n            <\/div>\r\n        <\/div>\r\n\r\n        <!-- Filter and Search Controls -->\r\n        <div class=\"search-box\">\r\n            <h3>\ud83d\udd0d Multi-Filter Semester Rosters<\/h3>\r\n            <div class=\"filters\">\r\n                <input id=\"searchInputList\" type=\"text\" onkeyup=\"filterAdmissionList()\" placeholder=\"Type student name, father's name, reg. no., or subject...\" style=\"flex: 1; min-width: 260px; padding: 10px; border: 1px solid #ccc; border-radius: 5px;\">\r\n                \r\n                <select id=\"filterSemesterSelect\" onchange=\"filterAdmissionList()\">\r\n                    <option value=\"\">All Odd Semesters (1, 3, 5)<\/option>\r\n                    <option value=\"1\">Semester 1st<\/option>\r\n                    <option value=\"3\">Semester 3rd<\/option>\r\n                    <option value=\"5\">Semester 5th<\/option>\r\n                <\/select>\r\n\r\n                <select id=\"filterCourse\" onchange=\"filterAdmissionList()\">\r\n                    <option value=\"\">All Programmes<\/option>\r\n                    <option value=\"B.A\">B.A<\/option>\r\n                    <option value=\"B.Sc\">B.Sc<\/option>\r\n                    <option value=\"B.Com\">B.Com<\/option>\r\n                    <option value=\"M.A\">M.A<\/option>\r\n                    <option value=\"M.Sc\">M.Sc<\/option>\r\n                <\/select>\r\n\r\n                <select id=\"filterStatus\" onchange=\"filterAdmissionList()\">\r\n                    <option value=\"\">All Statuses<\/option>\r\n                    <option value=\"approved\">Approved<\/option>\r\n                    <option value=\"pending\">Pending<\/option>\r\n                <\/select>\r\n            <\/div>\r\n\r\n            <!-- Quick Navigation Jump Pills -->\r\n            <div style=\"margin-top: 10px;\">\r\n                <span style=\"font-size: 13px; font-weight: bold; color: #555;\">Quick Jump to Semester Table:<\/span>\r\n                <div class=\"sem-pills\">\r\n                    <button class=\"sem-pill-btn active\" onclick=\"scrollToSemester('all')\">View All (1, 3, 5)<\/button>\r\n                    <button class=\"sem-pill-btn\" onclick=\"scrollToSemester('sem-section-1')\">Semester 1st Roster<\/button>\r\n                    <button class=\"sem-pill-btn\" onclick=\"scrollToSemester('sem-section-3')\">Semester 3rd Roster<\/button>\r\n                    <button class=\"sem-pill-btn\" onclick=\"scrollToSemester('sem-section-5')\">Semester 5th Roster<\/button>\r\n                <\/div>\r\n            <\/div>\r\n        <\/div>\r\n\r\n        <!-- Global Roster Export Toolbar -->\r\n        <div class=\"export-toolbar\">\r\n            <span style=\"font-size: 14px; font-weight: bold; color: #333;\">Export Filtered Data:<\/span>\r\n            <button class=\"btn-export btn-excel\" onclick=\"exportFilteredToExcel()\">\ud83d\udcca Export to Excel (.xlsx)<\/button>\r\n            <button class=\"btn-export btn-print\" onclick=\"window.print()\">\ud83d\udda8\ufe0f Print Full Page<\/button>\r\n        <\/div>\r\n\r\n        <div class=\"counter-text\" id=\"visibleCounter\">Loading data records...<\/div>\r\n        \r\n        <!-- SEPARATE ROSTER TABLES CONTAINER -->\r\n        <div id=\"semesterTablesContainer\"><\/div>\r\n    <\/div>\r\n<\/div>\r\n\r\n<script>\r\nconst sheetURL = \"https:\/\/docs.google.com\/spreadsheets\/d\/e\/2PACX-1vQpHDtnl-FbyxBm0qn7KHLy9uR3YLDVYjCOeCvr37ZAkcRkmuVouxhWQ8QbVVVNqJU-v8ppli-f7Lpy\/pub?output=csv\";\r\nconst paymentLink = \"https:\/\/formbuilder.ccavenue.com\/live\/bank-of-baroda\/deen-dayal-upadhyay-government-pg-college-saidabad-prayagraj\";\r\n\r\nlet students = []; \r\nlet oddSemesterStudents = [];\r\nlet currentFilteredList = [];\r\nlet selectedStudentForSlip = null;\r\n\r\nfunction getNormalizedSemester(rawSem) {\r\n    if (!rawSem) return \"Other \/ Unassigned\";\r\n    let s = rawSem.toString().toLowerCase().trim();\r\n    if (s.includes(\"1\") || s.includes(\"ist\") || s.includes(\"first\") || s.includes(\"i\") && !s.includes(\"iii\") && !s.includes(\"iv\") && !s.includes(\"v\")) {\r\n        return \"Semester 1st\";\r\n    }\r\n    if (s.includes(\"3\") || s.includes(\"3rd\") || s.includes(\"third\") || s.includes(\"iii\")) {\r\n        return \"Semester 3rd\";\r\n    }\r\n    if (s.includes(\"5\") || s.includes(\"5th\") || s.includes(\"fifth\") || s.includes(\"v\")) {\r\n        return \"Semester 5th\";\r\n    }\r\n    return rawSem.trim();\r\n}\r\n\r\nfunction switchView(viewId) {\r\n    document.querySelectorAll('.view-panel').forEach(panel => panel.classList.remove('active'));\r\n    document.querySelectorAll('.nav-btn').forEach(btn => btn.classList.remove('active'));\r\n    \r\n    document.getElementById(viewId).classList.add('active');\r\n    if(viewId === 'statusView') document.getElementById('btnStatus').classList.add('active');\r\n    if(viewId === 'listView') document.getElementById('btnList').classList.add('active');\r\n}\r\n\r\nwindow.onload = function() {\r\n    Papa.parse(sheetURL, {\r\n        download: true,\r\n        header: true,\r\n        skipEmptyLines: true,\r\n        complete: function(results) {\r\n            students = results.data;\r\n            \r\n            oddSemesterStudents = students.map(s => {\r\n                let norm = getNormalizedSemester(s[\"Semester\"]);\r\n                return { ...s, NormalizedSemester: norm };\r\n            });\r\n\r\n            currentFilteredList = oddSemesterStudents;\r\n\r\n            renderSemesterWiseKPIs(oddSemesterStudents);\r\n            generateAdvancedAnalytics(oddSemesterStudents);\r\n            renderSemesterWiseTables(oddSemesterStudents);\r\n        }\r\n    });\r\n};\r\n\r\ndocument.getElementById(\"searchInputStatus\").addEventListener(\"keypress\", function(e){\r\n    if(e.key === \"Enter\") { searchIndividualStudent(); }\r\n});\r\n\r\nfunction renderSemesterWiseKPIs(dataList) {\r\n    const kpiContainer = document.getElementById(\"semesterKpiContainer\");\r\n    \r\n    let targetSemesters = [\"Semester 1st\", \"Semester 3rd\", \"Semester 5th\"];\r\n    let semStats = {\r\n        \"Semester 1st\": { total: 0, paid: 0, pending: 0, collection: 0, cls: \"sem-1\", label: \"Semester 1st (First Year)\" },\r\n        \"Semester 3rd\": { total: 0, paid: 0, pending: 0, collection: 0, cls: \"sem-3\", label: \"Semester 3rd (Second Year)\" },\r\n        \"Semester 5th\": { total: 0, paid: 0, pending: 0, collection: 0, cls: \"sem-5\", label: \"Semester 5th (Third Year)\" }\r\n    };\r\n\r\n    let totalAll = dataList.length;\r\n    let paidAll = 0;\r\n    let pendingAll = 0;\r\n    let collectionAll = 0;\r\n\r\n    dataList.forEach(s => {\r\n        let sem = s.NormalizedSemester;\r\n        let paidAmt = Number(s[\"Paid Amount\"] || 0);\r\n        let outstanding = parseFloat(s[\"Outstanding Amount\"] || 0);\r\n\r\n        collectionAll += paidAmt;\r\n        if (outstanding <= 0) { paidAll++; } else { pendingAll++; }\r\n\r\n        if (semStats[sem]) {\r\n            semStats[sem].total++;\r\n            semStats[sem].collection += paidAmt;\r\n            if (outstanding <= 0) {\r\n                semStats[sem].paid++;\r\n            } else {\r\n                semStats[sem].pending++;\r\n            }\r\n        }\r\n    });\r\n\r\n    let html = `\r\n    <div class=\"sem-summary-block overall\">\r\n        <div class=\"sem-summary-title\">\r\n            <span>\ud83c\udfdb\ufe0f Odd Semesters Aggregate Overview (1st + 3rd + 5th Semesters)<\/span>\r\n            <span class=\"sem-badge\">${totalAll} Students Enrolled<\/span>\r\n        <\/div>\r\n        <div class=\"row\">\r\n            <div class=\"col-md-3\"><div class=\"metric-card bg-primary\"><h3>${totalAll}<\/h3><p>Total Registered<\/p><\/div><\/div>\r\n            <div class=\"col-md-3\"><div class=\"metric-card bg-success\"><h3>${paidAll}<\/h3><p>Confirmed (Paid)<\/p><\/div><\/div>\r\n            <div class=\"col-md-3\"><div class=\"metric-card bg-danger\"><h3>${pendingAll}<\/h3><p>Pending Payment<\/p><\/div><\/div>\r\n            <div class=\"col-md-3\"><div class=\"metric-card bg-warning\"><h3>\u20b9${collectionAll.toLocaleString(\"en-IN\")}<\/h3><p>Total Collection<\/p><\/div><\/div>\r\n        <\/div>\r\n    <\/div>`;\r\n\r\n    targetSemesters.forEach(semKey => {\r\n        const item = semStats[semKey];\r\n        html += `\r\n        <div class=\"sem-summary-block ${item.cls}\">\r\n            <div class=\"sem-summary-title\">\r\n                <span>\u23f1\ufe0f ${item.label} Indicators<\/span>\r\n                <span class=\"sem-badge\">${item.total} Students<\/span>\r\n            <\/div>\r\n            <div class=\"row\">\r\n                <div class=\"col-md-3\"><div class=\"metric-card bg-primary\"><h3>${item.total}<\/h3><p>Registered in ${semKey}<\/p><\/div><\/div>\r\n                <div class=\"col-md-3\"><div class=\"metric-card bg-success\"><h3>${item.paid}<\/h3><p>Confirmed (Paid)<\/p><\/div><\/div>\r\n                <div class=\"col-md-3\"><div class=\"metric-card bg-danger\"><h3>${item.pending}<\/h3><p>Pending Payment<\/p><\/div><\/div>\r\n                <div class=\"col-md-3\"><div class=\"metric-card bg-warning\"><h3>\u20b9${item.collection.toLocaleString(\"en-IN\")}<\/h3><p>Collection (${semKey})<\/p><\/div><\/div>\r\n            <\/div>\r\n        <\/div>`;\r\n    });\r\n\r\n    kpiContainer.innerHTML = html;\r\n}\r\n\r\nfunction generateAdvancedAnalytics(dataList) {\r\n    let progMap = {}; let semMap = {}; let catMap = {}; let genMap = {}; let grandTotal = dataList.length || 1;\r\n    \r\n    dataList.forEach(s => {\r\n        let rawCourse = (s[\"Course\"] || \"Unspecified\").trim();\r\n        if(!progMap[rawCourse]) progMap[rawCourse] = { total: 0, approved: 0, pending: 0 };\r\n        progMap[rawCourse].total++;\r\n        if(Number(s[\"Outstanding Amount\"] || 0) <= 0) { progMap[rawCourse].approved++; } else { progMap[rawCourse].pending++; }\r\n\r\n        let sem = s.NormalizedSemester || \"Unspecified\";\r\n        semMap[sem] = (semMap[sem] || 0) + 1;\r\n\r\n        let rawCat = (s[\"Category\"] || s[\"Caste\"] || \"General\").trim();\r\n        if(rawCat === \"\") rawCat = \"General\";\r\n        catMap[rawCat] = (catMap[rawCat] || 0) + 1;\r\n\r\n        let rawGen = (s[\"Gender\"] || \"Unspecified\").trim();\r\n        if(rawGen.toLowerCase().startsWith(\"m\")) rawGen = \"Male\";\r\n        else if(rawGen.toLowerCase().startsWith(\"f\")) rawGen = \"Female\";\r\n        genMap[rawGen] = (genMap[rawGen] || 0) + 1;\r\n    });\r\n\r\n    let progHTML = \"\";\r\n    Object.keys(progMap).sort((a, b) => a.localeCompare(b)).forEach(p => {\r\n        progHTML += `<tr><td><b>${p}<\/b><\/td><td>${progMap[p].total}<\/td><td style=\"color:#28a745;font-weight:bold;\">${progMap[p].approved}<\/td><td style=\"color:#dc3545;font-weight:bold;\">${progMap[p].pending}<\/td><\/tr>`;\r\n    });\r\n    document.getElementById(\"programmeStatsBody\").innerHTML = progHTML || \"<tr><td colspan='4'>No Data<\/td><\/tr>\";\r\n\r\n    let semHTML = \"\";\r\n    [\"Semester 1st\", \"Semester 3rd\", \"Semester 5th\"].forEach(sem => {\r\n        let count = semMap[sem] || 0;\r\n        semHTML += `<tr><td><b>${sem}<\/b><\/td><td>${count}<\/td><td style=\"color:#666;\">${((count\/grandTotal)*100).toFixed(1)}%<\/td><\/tr>`;\r\n    });\r\n    document.getElementById(\"semesterStatsBody\").innerHTML = semHTML;\r\n\r\n    let catHTML = \"\";\r\n    Object.keys(catMap).sort().forEach(c => {\r\n        catHTML += `<tr><td><b>${c}<\/b><\/td><td>${catMap[c]}<\/td><td style=\"color:#666;\">${((catMap[c]\/grandTotal)*100).toFixed(1)}%<\/td><\/tr>`;\r\n    });\r\n    document.getElementById(\"categoryStatsBody\").innerHTML = catHTML || \"<tr><td colspan='3'>No Data<\/td><\/tr>\";\r\n\r\n    let genHTML = \"\";\r\n    Object.keys(genMap).sort().forEach(g => {\r\n        genHTML += `<tr><td><b>${g}<\/b><\/td><td>${genMap[g]}<\/td><td style=\"color:#666;\">${((genMap[g]\/grandTotal)*100).toFixed(1)}%<\/td><\/tr>`;\r\n    });\r\n    document.getElementById(\"genderStatsBody\").innerHTML = genHTML || \"<tr><td colspan='3'>No Data<\/td><\/tr>\";\r\n}\r\n\r\nfunction scrollToSemester(targetId) {\r\n    if(targetId === 'all') {\r\n        window.scrollTo({ top: document.getElementById('listView').offsetTop - 20, behavior: 'smooth' });\r\n    } else {\r\n        const el = document.getElementById(targetId);\r\n        if(el) {\r\n            el.scrollIntoView({ behavior: 'smooth', block: 'start' });\r\n        }\r\n    }\r\n}\r\n\r\nfunction renderSemesterWiseTables(dataList) {\r\n    const container = document.getElementById(\"semesterTablesContainer\");\r\n    if (dataList.length === 0) {\r\n        container.innerHTML = `<div class=\"alert alert-warning\">No records found matching your filter parameters.<\/div>`;\r\n        document.getElementById(\"visibleCounter\").innerHTML = \"Showing 0 records\";\r\n        return;\r\n    }\r\n\r\n    const targetSemesters = [\r\n        { key: \"Semester 1st\", id: \"sem-section-1\", title: \"Semester 1st (First Year Master Roster)\" },\r\n        { key: \"Semester 3rd\", id: \"sem-section-3\", title: \"Semester 3rd (Second Year Master Roster)\" },\r\n        { key: \"Semester 5th\", id: \"sem-section-5\", title: \"Semester 5th (Third Year Master Roster)\" }\r\n    ];\r\n\r\n    let fullHTML = \"\";\r\n\r\n    targetSemesters.forEach(semInfo => {\r\n        const groupList = dataList.filter(s => s.NormalizedSemester === semInfo.key);\r\n        \r\n        let approvedCount = groupList.filter(s => (parseFloat(s[\"Outstanding Amount\"]) || 0) <= 0).length;\r\n        let pendingCount = groupList.length - approvedCount;\r\n\r\n        fullHTML += `\r\n        <div class=\"semester-block\" id=\"${semInfo.id}\">\r\n            <div class=\"semester-header\">\r\n                <h3>\ud83d\udcd6 ${semInfo.title} <span class=\"sem-badge\">${groupList.length} Students<\/span><\/h3>\r\n                <div style=\"display:flex; align-items:center; gap:12px; flex-wrap:wrap;\">\r\n                    <span style=\"color:#28a745; font-weight:bold;\">\u2705 Approved: ${approvedCount}<\/span>\r\n                    <span style=\"color:#dc3545; font-weight:bold;\">\ud83d\udd34 Pending: ${pendingCount}<\/span>\r\n                    <button class=\"btn-export btn-excel\" style=\"padding: 5px 12px; font-size: 12px;\" onclick=\"exportSemesterTableToExcel('${semInfo.key}')\">\ud83d\udcca Excel<\/button>\r\n                <\/div>\r\n            <\/div>\r\n            <div class=\"table-responsive\">\r\n                <table>\r\n                    <thead>\r\n                        <tr>\r\n                            <th>S.No.<\/th>\r\n                            <th>Registration No.<\/th>\r\n                            <th>Student Name<\/th>\r\n                            <th>Father's Name<\/th>\r\n                            <th>Course<\/th>\r\n                            <th>Subject Combination<\/th>\r\n                            <th>Category<\/th>\r\n                            <th>Gender<\/th>\r\n                            <th>Mobile No.<\/th>\r\n                            <th>Fee Status<\/th>\r\n                        <\/tr>\r\n                    <\/thead>\r\n                    <tbody>`;\r\n\r\n        if(groupList.length === 0) {\r\n            fullHTML += `<tr><td colspan=\"10\" style=\"text-align: center; padding: 18px; color: #856404; background:#fffdf5;\">No student applications found under ${semInfo.key} for the selected filter.<\/td><\/tr>`;\r\n        } else {\r\n            groupList.forEach((student, index) => {\r\n                let outstanding = parseFloat(student[\"Outstanding Amount\"]) || 0;\r\n                let statusBadge = outstanding <= 0 ? `<span class=\"badge badge-approved\">Approved<\/span>` : `<span class=\"badge badge-pending\">Pending<\/span>`;\r\n                \r\n                fullHTML += `\r\n                    <tr>\r\n                        <td>${index + 1}<\/td>\r\n                        <td><b>${student[\"Registration Number\"] || 'N\/A'}<\/b><\/td>\r\n                        <td>${student[\"Students Name\"] || 'N\/A'}<\/td>\r\n                        <td>${student[\"Fathers Name\"] || 'N\/A'}<\/td>\r\n                        <td>${student[\"Course\"] || 'N\/A'}<\/td>\r\n                        <td style=\"text-align:left;\">${student[\"Subject\"] || 'N\/A'}<\/td>\r\n                        <td>${student[\"Category\"] || student[\"Caste\"] || 'General'}<\/td>\r\n                        <td>${student[\"Gender\"] || 'N\/A'}<\/td>\r\n                        <td>${student[\"Mobile Number\"] || 'N\/A'}<\/td>\r\n                        <td>${statusBadge}<\/td>\r\n                    <\/tr>`;\r\n            });\r\n        }\r\n\r\n        fullHTML += `\r\n                    <\/tbody>\r\n                <\/table>\r\n            <\/div>\r\n        <\/div>`;\r\n    });\r\n\r\n    container.innerHTML = fullHTML;\r\n    document.getElementById(\"visibleCounter\").innerHTML = `Showing ${dataList.length} total students across Semesters 1, 3, and 5`;\r\n}\r\n\r\nfunction filterAdmissionList() {\r\n    let textQuery = document.getElementById(\"searchInputList\").value.trim().toLowerCase();\r\n    let semFilter = document.getElementById(\"filterSemesterSelect\").value;\r\n    let courseFilter = document.getElementById(\"filterCourse\").value.toLowerCase();\r\n    let statusFilter = document.getElementById(\"filterStatus\").value;\r\n\r\n    let filtered = oddSemesterStudents.filter(s => {\r\n        let matchText = (s[\"Registration Number\"] || \"\").toLowerCase().includes(textQuery) ||\r\n                          (s[\"Students Name\"] || \"\").toLowerCase().includes(textQuery) ||\r\n                          (s[\"Fathers Name\"] || \"\").toLowerCase().includes(textQuery) ||\r\n                          (s[\"Subject\"] || \"\").toLowerCase().includes(textQuery) ||\r\n                          (s[\"Mobile Number\"] || \"\").toLowerCase().includes(textQuery);\r\n        \r\n        let matchSem = true;\r\n        if (semFilter === \"1\") matchSem = s.NormalizedSemester === \"Semester 1st\";\r\n        else if (semFilter === \"3\") matchSem = s.NormalizedSemester === \"Semester 3rd\";\r\n        else if (semFilter === \"5\") matchSem = s.NormalizedSemester === \"Semester 5th\";\r\n\r\n        let matchCourse = courseFilter === \"\" || (s[\"Course\"] || \"\").toLowerCase().includes(courseFilter);\r\n        \r\n        let outstanding = parseFloat(s[\"Outstanding Amount\"]) || 0;\r\n        let matchStatus = statusFilter === \"\" || \r\n                           (statusFilter === \"approved\" && outstanding <= 0) || \r\n                           (statusFilter === \"pending\" && outstanding > 0);\r\n                           \r\n        return matchText && matchSem && matchCourse && matchStatus;\r\n    });\r\n\r\n    currentFilteredList = filtered;\r\n    renderSemesterWiseKPIs(filtered);\r\n    generateAdvancedAnalytics(filtered);\r\n    renderSemesterWiseTables(filtered);\r\n}\r\n\r\nfunction searchIndividualStudent(){\r\n    let input = document.getElementById(\"searchInputStatus\").value.trim().toLowerCase();\r\n    if(input === \"\"){ alert(\"Please enter your Registration Number or Mobile Number.\"); return; }\r\n\r\n    const student = students.find(s => \r\n        (s[\"Registration Number\"] || \"\").toLowerCase() === input ||\r\n        (s[\"Mobile Number\"] || \"\").toLowerCase() === input\r\n    );\r\n\r\n    if(!student){\r\n        document.getElementById(\"statusResult\").innerHTML = \"<div class='alert alert-warning'>\u274c No match found. Please verify fields and re-try.<\/div>\";\r\n        document.getElementById(\"slipActionToolbar\").style.display = \"none\";\r\n        selectedStudentForSlip = null;\r\n        return;\r\n    }\r\n\r\n    selectedStudentForSlip = student;\r\n    let outstanding = parseFloat(student[\"Outstanding Amount\"]) || 0;\r\n    let statusText = outstanding <= 0 ? \"\u2705 Admission Approved\" : \"\ud83d\udd34 Payment Pending\";\r\n    let statusColor = outstanding <= 0 ? \"#28a745\" : \"#dc3545\";\r\n\r\n    let paymentButton = outstanding <= 0 ? \"\" : `\r\n        <div style=\"text-align:center;margin-top:20px;\">\r\n            <a href=\"${paymentLink}\" target=\"_blank\" style=\"background:#dc3545;color:white;padding:12px 24px;text-decoration:none;border-radius:6px;font-weight:bold;display:inline-block;\">\r\n                \ud83d\udcb3 Pay Admission Fee Online\r\n            <\/a>\r\n        <\/div>`;\r\n\r\n    let html = `\r\n    <div id=\"slipPrintArea\" style=\"border:2px solid #004aad;padding:25px;background:white;border-radius:6px;text-align:left;\">\r\n        <div style=\"text-align:center;border-bottom:2px solid #004aad;padding-bottom:15px;\">\r\n            <img decoding=\"async\" src=\"https:\/\/ddugdcsaidabad.ac.in\/wp-content\/uploads\/2025\/05\/cropped-cropped-U9hIxxAIEMRI-WhatsApp-Image-2024-09-13-at-23.58.14_ea4bd1c7-removebg-preview.png\" width=\"80\" alt=\"College Seal\">\r\n            <h2 style=\"margin:10px 0 5px 0;color:#004aad; font-size: 20px;\">Deen Dayal Upadhyay Government PG College<\/h2>\r\n            <p style=\"margin:0; font-size:13px; color:#555; font-weight:normal;\">Saidabad, Prayagraj, Uttar Pradesh<br><b>Admission Provisional Slip (Session 2026-27)<\/b><\/p>\r\n        <\/div>\r\n        <table style=\"width:100%; margin-top:15px;\">\r\n            <tr><td style=\"text-align:left; font-weight:bold; width:40%;\">Registration Number<\/td><td style=\"text-align:left;\"><b>${student[\"Registration Number\"] || 'N\/A'}<\/b><\/td><\/tr>\r\n            <tr><td style=\"text-align:left; font-weight:bold;\">Student Name<\/td><td style=\"text-align:left;\">${student[\"Students Name\"] || 'N\/A'}<\/td><\/tr>\r\n            <tr><td style=\"text-align:left; font-weight:bold;\">Father's Name<\/td><td style=\"text-align:left;\">${student[\"Fathers Name\"] || 'N\/A'}<\/td><\/tr>\r\n            <tr><td style=\"text-align:left; font-weight:bold;\">Course Enrolled<\/td><td style=\"text-align:left;\">${student[\"Course\"] || 'N\/A'}<\/td><\/tr>\r\n            <tr><td style=\"text-align:left; font-weight:bold;\">Semester \/ Year<\/td><td style=\"text-align:left;\">${student[\"Semester\"] || 'N\/A'}<\/td><\/tr>\r\n            <tr><td style=\"text-align:left; font-weight:bold;\">Subject Combination<\/td><td style=\"text-align:left;\">${student[\"Subject\"] || 'N\/A'}<\/td><\/tr>\r\n        <\/table>\r\n        <table style=\"width:100%; margin-top:15px;\">\r\n            <tr><td style=\"text-align:left; font-weight:bold; width:40%;\">Total Prescribed Fee<\/td><td style=\"text-align:left;\">\u20b9 ${student[\"Amount\"] || '0'}<\/td><\/tr>\r\n            <tr><td style=\"text-align:left; font-weight:bold;\">Fee Amount Paid<\/td><td style=\"text-align:left; color:#28a745; font-weight:bold;\">\u20b9 ${student[\"Paid Amount\"] || '0'}<\/td><\/tr>\r\n            <tr><td style=\"text-align:left; font-weight:bold;\">Outstanding Balance<\/td><td style=\"text-align:left; color:${statusColor}; font-weight:bold;\">\u20b9 ${student[\"Outstanding Amount\"] || '0'}<\/td><\/tr>\r\n        <\/table>\r\n        <div style=\"text-align:center;margin-top:20px;\"><span style=\"background:${statusColor};color:white;padding:8px 25px;border-radius:25px;font-weight:bold;\">${statusText}<\/span><\/div>\r\n        ${paymentButton}\r\n    <\/div>`;\r\n\r\n    document.getElementById(\"statusResult\").innerHTML = html;\r\n    document.getElementById(\"slipActionToolbar\").style.display = \"flex\";\r\n}\r\n\r\n\/* ================= EXPORT & PRINT HANDLERS ================= *\/\r\n\r\n\/\/ 1. Print Individual Slip\r\nfunction printAdmissionSlip() {\r\n    const slipArea = document.getElementById(\"slipPrintArea\");\r\n    if (!slipArea) return;\r\n    let printWindow = window.open('', '', 'width=850,height=750');\r\n    printWindow.document.write(`\r\n        <html>\r\n            <head>\r\n                <title>Admission Slip<\/title>\r\n                <style>\r\n                    body { font-family: 'Segoe UI', Tahoma, sans-serif; padding: 25px; }\r\n                    table { width: 100%; border-collapse: collapse; margin-top: 10px; }\r\n                    td { border: 1px solid #dcdcdc; padding: 8px 10px; font-size: 14px; }\r\n                <\/style>\r\n            <\/head>\r\n            <body>${slipArea.innerHTML}<\/body>\r\n        <\/html>\r\n    `);\r\n    printWindow.document.close();\r\n    printWindow.focus();\r\n    setTimeout(() => { printWindow.print(); }, 400);\r\n}\r\n\r\n\/\/ 2. Download Individual Slip as PDF\r\nfunction downloadSlipPDF() {\r\n    const slipElement = document.getElementById(\"slipPrintArea\");\r\n    if (!slipElement) return;\r\n\r\n    let regNo = (selectedStudentForSlip && selectedStudentForSlip[\"Registration Number\"]) ? selectedStudentForSlip[\"Registration Number\"].replace(\/[^a-zA-Z0-9]\/g, \"_\") : \"Admission\";\r\n    \r\n    const opt = {\r\n        margin:       10,\r\n        filename:     `Admission_Slip_${regNo}.pdf`,\r\n        image:        { type: 'jpeg', quality: 0.98 },\r\n        html2canvas:  { scale: 2, useCORS: true },\r\n        jsPDF:        { unit: 'mm', format: 'a4', orientation: 'portrait' }\r\n    };\r\n    html2pdf().set(opt).from(slipElement).save();\r\n}\r\n\r\n\/\/ 3. Export Filtered Data to Excel\r\nfunction exportFilteredToExcel() {\r\n    if (!currentFilteredList || currentFilteredList.length === 0) {\r\n        alert(\"No records available to export.\");\r\n        return;\r\n    }\r\n\r\n    const exportRows = currentFilteredList.map((s, index) => ({\r\n        \"S.No.\": index + 1,\r\n        \"Semester\": s.NormalizedSemester || s[\"Semester\"] || \"\",\r\n        \"Registration No.\": s[\"Registration Number\"] || \"\",\r\n        \"Student Name\": s[\"Students Name\"] || \"\",\r\n        \"Father's Name\": s[\"Fathers Name\"] || \"\",\r\n        \"Course\": s[\"Course\"] || \"\",\r\n        \"Subject Combination\": s[\"Subject\"] || \"\",\r\n        \"Category\": s[\"Category\"] || s[\"Caste\"] || \"General\",\r\n        \"Gender\": s[\"Gender\"] || \"\",\r\n        \"Mobile Number\": s[\"Mobile Number\"] || \"\",\r\n        \"Prescribed Fee\": s[\"Amount\"] || \"0\",\r\n        \"Paid Fee\": s[\"Paid Amount\"] || \"0\",\r\n        \"Outstanding Balance\": s[\"Outstanding Amount\"] || \"0\",\r\n        \"Status\": (parseFloat(s[\"Outstanding Amount\"]) || 0) <= 0 ? \"Approved\" : \"Pending\"\r\n    }));\r\n\r\n    const worksheet = XLSX.utils.json_to_sheet(exportRows);\r\n    const workbook = XLSX.utils.book_new();\r\n    XLSX.utils.book_append_sheet(workbook, worksheet, \"Admissions_Roster\");\r\n    XLSX.writeFile(workbook, \"DDU_Admissions_Odd_Semesters_2026_27.xlsx\");\r\n}\r\n\r\n\/\/ 4. Export a Specific Semester Roster to Excel\r\nfunction exportSemesterTableToExcel(semesterKey) {\r\n    const semData = currentFilteredList.filter(s => s.NormalizedSemester === semesterKey);\r\n    if(semData.length === 0) {\r\n        alert(\"No student records found in \" + semesterKey);\r\n        return;\r\n    }\r\n\r\n    const rows = semData.map((s, idx) => ({\r\n        \"S.No.\": idx + 1,\r\n        \"Registration No.\": s[\"Registration Number\"] || \"\",\r\n        \"Student Name\": s[\"Students Name\"] || \"\",\r\n        \"Father's Name\": s[\"Fathers Name\"] || \"\",\r\n        \"Course\": s[\"Course\"] || \"\",\r\n        \"Subject Combination\": s[\"Subject\"] || \"\",\r\n        \"Category\": s[\"Category\"] || s[\"Caste\"] || \"General\",\r\n        \"Gender\": s[\"Gender\"] || \"\",\r\n        \"Mobile Number\": s[\"Mobile Number\"] || \"\",\r\n        \"Fee Status\": (parseFloat(s[\"Outstanding Amount\"]) || 0) <= 0 ? \"Approved\" : \"Pending\"\r\n    }));\r\n\r\n    const ws = XLSX.utils.json_to_sheet(rows);\r\n    const wb = XLSX.utils.book_new();\r\n    XLSX.utils.book_append_sheet(wb, ws, semesterKey);\r\n    XLSX.writeFile(wb, `Roster_${semesterKey.replace(\/\\s+\/g, '_')}.xlsx`);\r\n}\r\n<\/script>\r\n<\/body>\r\n<\/html>\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<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-a09b98a elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"a09b98a\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-f7ed225\" data-id=\"f7ed225\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-177529d elementor-align-center elementor-widget elementor-widget-button\" data-id=\"177529d\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-button-wrapper\">\n\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"https:\/\/ddugdcsaidabad.ac.in\/index.php\/samarth-form-status\/\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Click here Samarth Form Status<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t<\/div>\n\t\t\t\t\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<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Semester 1, 3 &#038; 5 Admissions &#038; Rosters 2026-27 | DDU Govt PG College Deen Dayal Upadhyay Govt PG College Saidabad, Prayagraj | Odd Semesters (Sem 1st, 3rd, 5th) Admission &#038; Roster Portal 2026-27 \ud83d\udc64 Admission Status &#038; Slip \ud83d\udcca Sem-1, 3, 5 Analytics &#038; Rosters Verify Registration &#038; Download Admission Slip Check Status \ud83d\udda8\ufe0f [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"site-sidebar-layout":"no-sidebar","site-content-layout":"page-builder","ast-site-content-layout":"full-width-container","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"disabled","ast-main-header-display":"disabled","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"disabled","ast-hfb-mobile-header-display":"disabled","site-post-title":"disabled","ast-breadcrumbs-content":"disabled","ast-featured-img":"","footer-sml-layout":"disabled","ast-disable-related-posts":"","theme-transparent-header-meta":"default","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"set","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"class_list":["post-17640","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/ddugdcsaidabad.ac.in\/index.php\/wp-json\/wp\/v2\/pages\/17640","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ddugdcsaidabad.ac.in\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/ddugdcsaidabad.ac.in\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/ddugdcsaidabad.ac.in\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/ddugdcsaidabad.ac.in\/index.php\/wp-json\/wp\/v2\/comments?post=17640"}],"version-history":[{"count":12,"href":"https:\/\/ddugdcsaidabad.ac.in\/index.php\/wp-json\/wp\/v2\/pages\/17640\/revisions"}],"predecessor-version":[{"id":17753,"href":"https:\/\/ddugdcsaidabad.ac.in\/index.php\/wp-json\/wp\/v2\/pages\/17640\/revisions\/17753"}],"wp:attachment":[{"href":"https:\/\/ddugdcsaidabad.ac.in\/index.php\/wp-json\/wp\/v2\/media?parent=17640"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}