{"id":15212,"date":"2026-07-16T20:34:49","date_gmt":"2026-07-16T15:04:49","guid":{"rendered":"https:\/\/ddugdcsaidabad.ac.in\/?page_id=15212"},"modified":"2026-08-23T09:55:30","modified_gmt":"2026-08-23T04:25:30","slug":"ab","status":"publish","type":"page","link":"https:\/\/ddugdcsaidabad.ac.in\/index.php\/ab\/","title":{"rendered":"ADMISSION BOARD 2026-27"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"15212\" class=\"elementor elementor-15212\" data-elementor-post-type=\"page\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-d6c977c elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"d6c977c\" 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-e010c41\" data-id=\"e010c41\" 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-f5a629c elementor-widget elementor-widget-html\" data-id=\"f5a629c\" 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>Advanced QR Code Scanner Dashboard<\/title>\r\n\r\n    <!-- html5-qrcode Library -->\r\n    <script src=\"https:\/\/unpkg.com\/html5-qrcode@2.3.8\/html5-qrcode.min.js\"><\/script>\r\n\r\n    <!-- PDF.js Library -->\r\n    <script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/pdf.js\/3.4.120\/pdf.min.js\"><\/script>\r\n    <script>\r\n        pdfjsLib.GlobalWorkerOptions.workerSrc = 'https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/pdf.js\/3.4.120\/pdf.worker.min.js';\r\n    <\/script>\r\n\r\n    <style>\r\n        body {\r\n            font-family: Arial, sans-serif;\r\n            background: #f4f6f9;\r\n            margin: 0;\r\n            padding: 20px;\r\n        }\r\n\r\n        .container {\r\n            max-width: 750px;\r\n            margin: auto;\r\n            background: #fff;\r\n            padding: 25px;\r\n            border-radius: 10px;\r\n            box-shadow: 0 0 15px rgba(0,0,0,.1);\r\n        }\r\n\r\n        h2 {\r\n            text-align: center;\r\n            color: #0b3d91;\r\n            margin-bottom: 5px;\r\n        }\r\n\r\n        .subtitle {\r\n            text-align: center;\r\n            color: #666;\r\n            margin-bottom: 25px;\r\n            font-size: 14px;\r\n        }\r\n\r\n        \/* Tabs Navigation *\/\r\n        .tabs {\r\n            display: flex;\r\n            border-bottom: 2px solid #ddd;\r\n            margin-bottom: 20px;\r\n        }\r\n\r\n        .tab-btn {\r\n            flex: 1;\r\n            padding: 12px;\r\n            background: #eef1f6;\r\n            border: none;\r\n            cursor: pointer;\r\n            font-size: 16px;\r\n            font-weight: bold;\r\n            color: #555;\r\n            transition: 0.2s;\r\n            border-radius: 5px 5px 0 0;\r\n            outline: none;\r\n        }\r\n\r\n        .tab-btn.active {\r\n            background: #0b3d91;\r\n            color: white;\r\n        }\r\n\r\n        .tab-content {\r\n            display: none;\r\n        }\r\n\r\n        .tab-content.active {\r\n            display: block;\r\n        }\r\n\r\n        \/* Layout styles *\/\r\n        .upload-box {\r\n            border: 2px dashed #bbb;\r\n            padding: 40px 20px;\r\n            text-align: center;\r\n            border-radius: 10px;\r\n            background: #fafafa;\r\n        }\r\n\r\n        .camera-box {\r\n            display: flex;\r\n            flex-direction: column;\r\n            align-items: center;\r\n            background: #fafafa;\r\n            padding: 20px;\r\n            border-radius: 10px;\r\n            border: 1px solid #ddd;\r\n        }\r\n\r\n        #camera-reader {\r\n            width: 100%;\r\n            max-width: 400px;\r\n            border-radius: 8px;\r\n            overflow: hidden;\r\n        }\r\n\r\n        label {\r\n            font-weight: bold;\r\n            display: block;\r\n            margin-top: 25px;\r\n            color: #333;\r\n        }\r\n\r\n        .result-container {\r\n            position: relative;\r\n        }\r\n\r\n        input[type=text] {\r\n            width: 100%;\r\n            padding: 12px;\r\n            font-size: 16px;\r\n            margin-top: 8px;\r\n            box-sizing: border-box;\r\n            border: 2px solid #ccd1d9;\r\n            border-radius: 6px;\r\n            background: #f8f9fa;\r\n        }\r\n\r\n        #status {\r\n            margin-top: 15px;\r\n            font-weight: bold;\r\n            min-height: 20px;\r\n        }\r\n\r\n        #pdf-canvas {\r\n            display: none;\r\n        }\r\n\r\n        .success { color: #28a745; }\r\n        .error { color: #dc3545; }\r\n        .loading { color: #007bff; }\r\n    <\/style>\r\n<\/head>\r\n<body>\r\n\r\n<div class=\"container\">\r\n    <h2>Academic Digital Scanner<\/h2>\r\n    <div class=\"subtitle\">Scan Admission PDFs or use Live Camera Verification<\/div>\r\n\r\n    <!-- Navigation Tabs -->\r\n    <div class=\"tabs\">\r\n        <button class=\"tab-btn active\" onclick=\"switchTab('pdf-tab', this)\">\ud83d\udcc4 Upload Admission PDF<\/button>\r\n        <button class=\"tab-btn\" onclick=\"switchTab('camera-tab', this)\">\ud83d\udcf7 Live Camera Scanner<\/button>\r\n    <\/div>\r\n\r\n    <!-- Tab 1: PDF Scanner -->\r\n    <div id=\"pdf-tab\" class=\"tab-content active\">\r\n        <div class=\"upload-box\">\r\n            <p style=\"margin: 0 0 10px 0; font-size: 16px; color:#444;\">Select official student Document\/PDF containing a QR code<\/p>\r\n            <input type=\"file\" id=\"pdf-input\" accept=\"application\/pdf\">\r\n        <\/div>\r\n    <\/div>\r\n\r\n    <!-- Tab 2: Camera Scanner -->\r\n    <div id=\"camera-tab\" class=\"tab-content\">\r\n        <div class=\"camera-box\">\r\n            <div id=\"camera-reader\"><\/div>\r\n        <\/div>\r\n    <\/div>\r\n\r\n    <!-- Universal Output UI -->\r\n    <label for=\"result\">Scanned Data Output<\/label>\r\n    <div class=\"result-container\">\r\n        <input type=\"text\" id=\"result\" readonly placeholder=\"Awaiting valid source entry...\">\r\n    <\/div>\r\n    \r\n    <div id=\"status\"><\/div>\r\n\r\n    <!-- Hidden engine assets -->\r\n    <canvas id=\"pdf-canvas\"><\/canvas>\r\n<\/div>\r\n\r\n<script>\r\n    \/\/ Universal UI Selectors\r\n    const resultInput = document.getElementById(\"result\");\r\n    const statusDiv = document.getElementById(\"status\");\r\n    \r\n    \/\/ Scanner Instances\r\n    const pdfQrEngine = new Html5Qrcode(\"pdf-canvas\");\r\n    let cameraScannerEngine = null;\r\n\r\n    \/\/ UI Tab Switch Logic\r\n    function switchTab(tabId, btnElement) {\r\n        \/\/ Hide all tabs\r\n        document.querySelectorAll('.tab-content').forEach(tab => tab.classList.remove('active'));\r\n        document.querySelectorAll('.tab-btn').forEach(btn => btn.classList.remove('active'));\r\n        \r\n        \/\/ Show selected tab\r\n        document.getElementById(tabId).classList.add('active');\r\n        btnElement.classList.add('active');\r\n\r\n        \/\/ Clear results when switching contexts\r\n        resultInput.value = \"\";\r\n        statusDiv.innerHTML = \"\";\r\n        statusDiv.className = \"\";\r\n\r\n        \/\/ Actively manage execution threads depending on tab selection\r\n        if (tabId === 'camera-tab') {\r\n            initiateCameraScanner();\r\n        } else {\r\n            killCameraScanner();\r\n        }\r\n    }\r\n\r\n    \/* =====================================================================\r\n       SECTION 1: Multi-Page PDF Scan Core Engine\r\n       ===================================================================== *\/\r\n    document.getElementById(\"pdf-input\").addEventListener(\"change\", async function(e) {\r\n        const file = e.target.files[0];\r\n        if (!file) return;\r\n\r\n        if (file.type !== \"application\/pdf\") {\r\n            alert(\"System restriction: Selected file format must strictly be a PDF document.\");\r\n            return;\r\n        }\r\n\r\n        resultInput.value = \"\";\r\n        statusDiv.className = \"loading\";\r\n        statusDiv.innerHTML = \"Processing system file buffer...\";\r\n\r\n        try {\r\n            const buffer = await file.arrayBuffer();\r\n            const pdf = await pdfjsLib.getDocument({data: buffer}).promise;\r\n            const canvas = document.getElementById(\"pdf-canvas\");\r\n            const ctx = canvas.getContext(\"2d\");\r\n            let found = false;\r\n\r\n            for (let pageNo = 1; pageNo <= pdf.numPages; pageNo++) {\r\n                statusDiv.innerHTML = `Parsing & analyzing page ${pageNo} of ${pdf.numPages}...`;\r\n                \r\n                const page = await pdf.getPage(pageNo);\r\n                const viewport = page.getViewport({scale: 3.0}); \/\/ Sharp high-res multiplier\r\n                \r\n                canvas.width = viewport.width;\r\n                canvas.height = viewport.height;\r\n\r\n                await page.render({\r\n                    canvasContext: ctx,\r\n                    viewport: viewport\r\n                }).promise;\r\n\r\n                \/\/ Extract high density element payload\r\n                const blob = await new Promise(resolve => canvas.toBlob(resolve, \"image\/png\"));\r\n                const imageFile = new File([blob], \"extract.png\", {type: \"image\/png\"});\r\n\r\n                try {\r\n                    const decoded = await pdfQrEngine.scanFile(imageFile, true);\r\n                    resultInput.value = decoded;\r\n                    statusDiv.className = \"success\";\r\n                    statusDiv.innerHTML = `\u2705 QR Code successfully decoded from Page ${pageNo}`;\r\n                    found = true;\r\n                    break;\r\n                } catch(err) {\r\n                    \/\/ Continue scanning execution matrix on target pages\r\n                }\r\n            }\r\n\r\n            if (!found) {\r\n                statusDiv.className = \"error\";\r\n                statusDiv.innerHTML = \"\u274c Execution completed: No machine-readable QR code found.\";\r\n            }\r\n\r\n        } catch (error) {\r\n            console.error(\"PDF Processing Error: \", error);\r\n            statusDiv.className = \"error\";\r\n            statusDiv.innerHTML = \"System Error: Unable to read target document.\";\r\n        }\r\n    });\r\n\r\n    \/* =====================================================================\r\n       SECTION 2: Live Camera Video Stream Core Engine\r\n       ===================================================================== *\/\r\n    function initiateCameraScanner() {\r\n        if (!cameraScannerEngine) {\r\n            cameraScannerEngine = new Html5QrcodeScanner(\r\n                \"camera-reader\", \r\n                { fps: 10, qrbox: { width: 250, height: 250 } }, \r\n                \/* verbose= *\/ false\r\n            );\r\n        }\r\n        \r\n        cameraScannerEngine.render((decodedText) => {\r\n            resultInput.value = decodedText;\r\n            statusDiv.className = \"success\";\r\n            statusDiv.innerHTML = \"\u2705 Camera Capture Successful!\";\r\n            \r\n            \/\/ Gracefully halt engine capture matrix upon hit\r\n            cameraScannerEngine.clear().catch(err => console.error(\"Session clean fallback error:\", err));\r\n        });\r\n    }\r\n\r\n    function killCameraScanner() {\r\n        if (cameraScannerEngine) {\r\n            cameraScannerEngine.clear()\r\n                .then(() => console.log(\"Camera thread disposed cleanly.\"))\r\n                .catch(err => console.warn(\"Thread clear notice:\", err));\r\n        }\r\n    }\r\n<\/script>\r\n\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-1c4a026 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"1c4a026\" 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-fb6867f\" data-id=\"fb6867f\" 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-285c2e4 elementor-widget elementor-widget-shortcode\" data-id=\"285c2e4\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><iframe src=\"https:\/\/docs.google.com\/forms\/d\/e\/1FAIpQLSeYTq-_2TQcEMoQhmCDx1s15sy9wOHqcgGIVWJ5_Mfya_VxqA\/viewform?embedded=true\" width=\"640\" height=\"421\" frameborder=\"0\" marginheight=\"0\" marginwidth=\"0\">Loading\u2026<\/iframe><\/div>\n\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<section class=\"elementor-section elementor-top-section elementor-element elementor-element-0a1bbd5 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"0a1bbd5\" 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-ed442c5\" data-id=\"ed442c5\" 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-899399d elementor-align-center elementor-widget elementor-widget-button\" data-id=\"899399d\" 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:\/\/docs.google.com\/spreadsheets\/d\/e\/2PACX-1vRCLPsCHaLozN7YByPWyk1dDlqEf2aWND9kRy7x3-FIcpByl8NwhDKZ7tJIKVfVvDgNVJGw9_X4iKFl\/pub?gid=935057893&#038;single=true&#038;output=csv\">\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\">DOWNLOAD BANK UPLOAD CSV FILE<\/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<section class=\"elementor-section elementor-top-section elementor-element elementor-element-0c76603 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"0c76603\" 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-63103e4\" data-id=\"63103e4\" 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-d206ca5 elementor-widget elementor-widget-html\" data-id=\"d206ca5\" 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>Academic Fee Structure & Schedule | DDU Government PG College, Saidabad<\/title>\r\n    <style>\r\n        :root {\r\n            --primary-color: #1e3a8a;\r\n            --primary-light: #2563eb;\r\n            --accent-color: #0d9488;\r\n            --bg-color: #f8fafc;\r\n            --card-bg: #ffffff;\r\n            --text-dark: #0f172a;\r\n            --text-muted: #475569;\r\n            --border-color: #e2e8f0;\r\n            --row-hover: #f1f5f9;\r\n            --badge-sc-bg: #ecfdf5;\r\n            --badge-sc-text: #047857;\r\n            --badge-gen-bg: #eff6ff;\r\n            --badge-gen-text: #1d4ed8;\r\n        }\r\n\r\n        * {\r\n            box-sizing: border-box;\r\n            margin: 0;\r\n            padding: 0;\r\n            font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif;\r\n        }\r\n\r\n        body {\r\n            background-color: var(--bg-color);\r\n            color: var(--text-dark);\r\n            line-height: 1.6;\r\n            padding: 30px 20px;\r\n        }\r\n\r\n        .container {\r\n            max-width: 1200px;\r\n            margin: 0 auto;\r\n        }\r\n\r\n        header {\r\n            background: #ffffff;\r\n            color: var(--text-dark);\r\n            padding: 32px 28px;\r\n            border-radius: 16px;\r\n            border: 1px solid var(--border-color);\r\n            box-shadow: 0 4px 15px rgba(0, 0, 0, 0.03);\r\n            margin-bottom: 28px;\r\n        }\r\n\r\n        header h1 {\r\n            font-size: 28px;\r\n            font-weight: 700;\r\n            letter-spacing: -0.5px;\r\n            margin-bottom: 8px;\r\n            color: var(--primary-color);\r\n        }\r\n\r\n        header p {\r\n            color: var(--text-muted);\r\n            font-size: 15px;\r\n            max-width: 700px;\r\n        }\r\n\r\n        .stats-grid {\r\n            display: grid;\r\n            grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));\r\n            gap: 16px;\r\n            margin-bottom: 28px;\r\n        }\r\n\r\n        .stat-card {\r\n            background: var(--card-bg);\r\n            padding: 20px;\r\n            border-radius: 12px;\r\n            border: 1px solid var(--border-color);\r\n            box-shadow: 0 1px 3px rgba(0,0,0,0.05);\r\n        }\r\n\r\n        .stat-card .label {\r\n            font-size: 13px;\r\n            font-weight: 600;\r\n            color: var(--text-muted);\r\n            text-transform: uppercase;\r\n            letter-spacing: 0.5px;\r\n            margin-bottom: 6px;\r\n        }\r\n\r\n        .stat-card .value {\r\n            font-size: 24px;\r\n            font-weight: 700;\r\n            color: var(--primary-color);\r\n        }\r\n\r\n        .stat-card .subtext {\r\n            font-size: 12px;\r\n            color: #64748b;\r\n            margin-top: 4px;\r\n        }\r\n\r\n        .controls {\r\n            background: var(--card-bg);\r\n            padding: 20px;\r\n            border-radius: 12px;\r\n            border: 1px solid var(--border-color);\r\n            margin-bottom: 24px;\r\n            display: flex;\r\n            flex-wrap: wrap;\r\n            gap: 16px;\r\n            align-items: center;\r\n            justify-content: space-between;\r\n        }\r\n\r\n        .filter-group {\r\n            display: flex;\r\n            flex-wrap: wrap;\r\n            gap: 12px;\r\n            align-items: center;\r\n        }\r\n\r\n        .filter-item {\r\n            display: flex;\r\n            flex-direction: column;\r\n            gap: 4px;\r\n        }\r\n\r\n        .filter-item label {\r\n            font-weight: 600;\r\n            font-size: 12px;\r\n            color: var(--text-muted);\r\n            text-transform: uppercase;\r\n            letter-spacing: 0.5px;\r\n        }\r\n\r\n        select, input[type=\"text\"] {\r\n            padding: 8px 14px;\r\n            border-radius: 8px;\r\n            border: 1px solid var(--border-color);\r\n            background-color: white;\r\n            font-size: 14px;\r\n            color: var(--text-dark);\r\n            outline: none;\r\n            transition: border-color 0.2s;\r\n        }\r\n\r\n        select:focus, input[type=\"text\"]:focus {\r\n            border-color: var(--primary-light);\r\n            box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.1);\r\n        }\r\n\r\n        .search-box {\r\n            align-self: flex-end;\r\n        }\r\n\r\n        .table-card {\r\n            background: var(--card-bg);\r\n            border-radius: 12px;\r\n            border: 1px solid var(--border-color);\r\n            box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.05);\r\n            overflow: hidden;\r\n        }\r\n\r\n        .table-wrapper {\r\n            overflow-x: auto;\r\n        }\r\n\r\n        table {\r\n            width: 100%;\r\n            border-collapse: collapse;\r\n            text-align: left;\r\n            font-size: 14px;\r\n        }\r\n\r\n        thead {\r\n            background-color: #f8fafc;\r\n            border-bottom: 2px solid var(--border-color);\r\n        }\r\n\r\n        th {\r\n            padding: 14px 16px;\r\n            font-weight: 600;\r\n            color: #334155;\r\n            text-transform: uppercase;\r\n            font-size: 12px;\r\n            letter-spacing: 0.5px;\r\n        }\r\n\r\n        td {\r\n            padding: 14px 16px;\r\n            border-bottom: 1px solid var(--border-color);\r\n            color: var(--text-dark);\r\n        }\r\n\r\n        tbody tr:hover {\r\n            background-color: var(--row-hover);\r\n        }\r\n\r\n        tbody tr:last-child td {\r\n            border-bottom: none;\r\n        }\r\n\r\n        .badge {\r\n            display: inline-block;\r\n            padding: 4px 10px;\r\n            border-radius: 20px;\r\n            font-size: 12px;\r\n            font-weight: 600;\r\n        }\r\n\r\n        .badge-ug {\r\n            background-color: #fef3c7;\r\n            color: #92400e;\r\n        }\r\n\r\n        .badge-pg {\r\n            background-color: #e0e7ff;\r\n            color: #3730a3;\r\n        }\r\n\r\n        .badge-category-sc {\r\n            background-color: var(--badge-sc-bg);\r\n            color: var(--badge-sc-text);\r\n        }\r\n\r\n        .badge-category-gen {\r\n            background-color: var(--badge-gen-bg);\r\n            color: var(--badge-gen-text);\r\n        }\r\n\r\n        .price-cell {\r\n            font-weight: 700;\r\n            color: #0f172a;\r\n            font-size: 15px;\r\n        }\r\n\r\n        .footer-note {\r\n            margin-top: 24px;\r\n            padding: 16px;\r\n            background-color: #f1f5f9;\r\n            border-radius: 8px;\r\n            font-size: 13px;\r\n            color: var(--text-muted);\r\n        }\r\n\r\n        .footer-note ul {\r\n            margin-left: 20px;\r\n            margin-top: 6px;\r\n        }\r\n\r\n        .info-box {\r\n            margin-top: 16px;\r\n            padding: 20px;\r\n            background-color: var(--card-bg);\r\n            border-radius: 12px;\r\n            border: 1px solid var(--border-color);\r\n            display: grid;\r\n            grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));\r\n            gap: 20px;\r\n        }\r\n\r\n        .info-box h3 {\r\n            font-size: 15px;\r\n            color: var(--primary-color);\r\n            margin-bottom: 6px;\r\n        }\r\n\r\n        .info-box p {\r\n            font-size: 13.5px;\r\n            color: var(--text-muted);\r\n        }\r\n\r\n        .no-data {\r\n            text-align: center;\r\n            padding: 30px;\r\n            color: var(--text-muted);\r\n            font-weight: 500;\r\n        }\r\n\r\n        .export-btn {\r\n            border: 0; padding: 10px 16px; border-radius: 9px; cursor: pointer;\r\n            font-size: 13px; font-weight: 700; transition: .2s ease;\r\n            box-shadow: 0 2px 6px rgba(0,0,0,.06);\r\n        }\r\n        .export-btn:hover { transform: translateY(-1px); box-shadow: 0 5px 12px rgba(0,0,0,.10); }\r\n        .print-btn { background:#1e3a8a; color:#fff; }\r\n        .pdf-btn { background:#dc2626; color:#fff; }\r\n        .excel-btn { background:#15803d; color:#fff; }\r\n        .reset-btn { background:#e2e8f0; color:#334155; }\r\n\r\n        @media print {\r\n            .export-bar, .controls { display:none !important; }\r\n            body { background:#fff; padding:0; }\r\n            .container { max-width:none; }\r\n            header { box-shadow:none; border: none; }\r\n            .table-card, .stat-card, .info-box { box-shadow:none; }\r\n        }\r\n\r\n        @media (max-width: 768px) {\r\n            header {\r\n                padding: 24px 20px;\r\n            }\r\n            .controls {\r\n                flex-direction: column;\r\n                align-items: stretch;\r\n            }\r\n            .filter-group {\r\n                flex-direction: column;\r\n                align-items: stretch;\r\n            }\r\n            .search-box {\r\n                align-self: stretch;\r\n            }\r\n        }\r\n    <\/style>\r\n\r\n    <!-- PDF & Excel Export Libraries -->\r\n    <script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/jspdf\/2.5.1\/jspdf.umd.min.js\"><\/script>\r\n    <script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/jspdf-autotable\/3.8.2\/jspdf.plugin.autotable.min.js\"><\/script>\r\n    <script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/xlsx\/0.18.5\/xlsx.full.min.js\"><\/script>\r\n<\/head>\r\n<body>\r\n\r\n<div class=\"container\">\r\n    <header>\r\n        <h1>Academic Fee Schedule & Fee Details<\/h1>\r\n        <p>Comprehensive overview of Undergraduate (UG) and Postgraduate (PG) tuition and course fees categorized by course, academic year, category, and practical subjects.<\/p>\r\n    <\/header>\r\n\r\n    <div class=\"stats-grid\">\r\n        <div class=\"stat-card\">\r\n            <div class=\"label\">Total Entries Displayed<\/div>\r\n            <div class=\"value\" id=\"total-entries\">34<\/div>\r\n            <div class=\"subtext\">UG & PG Programs<\/div>\r\n        <\/div>\r\n        <div class=\"stat-card\">\r\n            <div class=\"label\">UG Fee Concession<\/div>\r\n            <div class=\"value\">\u20b9132<\/div>\r\n            <div class=\"subtext\">For Female & SC Male<\/div>\r\n        <\/div>\r\n        <div class=\"stat-card\">\r\n            <div class=\"label\">PG Fee Concession<\/div>\r\n            <div class=\"value\">\u20b9180<\/div>\r\n            <div class=\"subtext\">For Female & SC Male<\/div>\r\n        <\/div>\r\n        <div class=\"stat-card\">\r\n            <div class=\"label\">Fee Range<\/div>\r\n            <div class=\"value\">\u20b93,213 \u2013 \u20b94,720<\/div>\r\n            <div class=\"subtext\">Across all semesters<\/div>\r\n        <\/div>\r\n    <\/div>\r\n\r\n    <div class=\"controls\">\r\n        <div class=\"filter-group\">\r\n            <div class=\"filter-item\">\r\n                <label for=\"course-level\">Level<\/label>\r\n                <select id=\"course-level\" onchange=\"updateCourseOptions(); filterData();\">\r\n                    <option value=\"ALL\">All Levels<\/option>\r\n                    <option value=\"UG\">UG (Undergraduate)<\/option>\r\n                    <option value=\"PG\">PG (Postgraduate)<\/option>\r\n                <\/select>\r\n            <\/div>\r\n\r\n            <div class=\"filter-item\">\r\n                <label for=\"course-filter\">Course<\/label>\r\n                <select id=\"course-filter\" onchange=\"filterData()\">\r\n                    <option value=\"ALL\">All Courses<\/option>\r\n                <\/select>\r\n            <\/div>\r\n\r\n            <div class=\"filter-item\">\r\n                <label for=\"year-filter\">Year \/ Semesters<\/label>\r\n                <select id=\"year-filter\" onchange=\"filterData()\">\r\n                    <option value=\"ALL\">All Years<\/option>\r\n                    <option value=\"First\">First Year (1st & 2nd Sem.)<\/option>\r\n                    <option value=\"Second\">Second Year (3rd & 4th Sem.)<\/option>\r\n                    <option value=\"Third\">Third Year (5th & 6th Sem.)<\/option>\r\n                <\/select>\r\n            <\/div>\r\n\r\n            <div class=\"filter-item\">\r\n                <label for=\"category-filter\">Category<\/label>\r\n                <select id=\"category-filter\" onchange=\"filterData()\">\r\n                    <option value=\"ALL\">All Categories<\/option>\r\n                    <option value=\"SC_FEMALE\">ALL FEMALE \/ MALE SC<\/option>\r\n                    <option value=\"GEN_MALE\">ALL MALE EXCEPT SC MALE<\/option>\r\n                <\/select>\r\n            <\/div>\r\n        <\/div>\r\n\r\n        <div class=\"filter-item search-box\">\r\n            <label for=\"search-input\">Search Keywords<\/label>\r\n            <input type=\"text\" id=\"search-input\" placeholder=\"Search any keyword...\" onkeyup=\"filterData()\">\r\n        <\/div>\r\n    <\/div>\r\n\r\n    <div class=\"export-bar\" style=\"display:flex;flex-wrap:wrap;gap:10px;justify-content:flex-end;margin:-10px 0 24px;\">\r\n        <button type=\"button\" class=\"export-btn print-btn\" onclick=\"printFeeStructure()\">\ud83d\udda8\ufe0f Print<\/button>\r\n        <button type=\"button\" class=\"export-btn pdf-btn\" onclick=\"downloadPDF()\">\ud83d\udcc4 Download PDF<\/button>\r\n        <button type=\"button\" class=\"export-btn excel-btn\" onclick=\"exportExcel()\">\ud83d\udcca Export Excel<\/button>\r\n        <button type=\"button\" class=\"export-btn reset-btn\" onclick=\"resetFilters()\">\u21bb Reset Filters<\/button>\r\n    <\/div>\r\n\r\n    <div class=\"table-card\">\r\n        <div class=\"table-wrapper\">\r\n            <table id=\"fee-table\">\r\n                <thead>\r\n                    <tr>\r\n                        <th>Level<\/th>\r\n                        <th>Course \/ Program<\/th>\r\n                        <th>Year & Semester<\/th>\r\n                        <th>Category<\/th>\r\n                        <th>Graduated From<\/th>\r\n                        <th>Practicals<\/th>\r\n                        <th>Total Fee<\/th>\r\n                    <\/tr>\r\n                <\/thead>\r\n                <tbody id=\"table-body\">\r\n                    <!-- Populated by JavaScript -->\r\n                <\/tbody>\r\n            <\/table>\r\n        <\/div>\r\n    <\/div>\r\n\r\n    <div class=\"footer-note\">\r\n        <strong>Key Guidelines & Policy Notes:<\/strong>\r\n        <ul>\r\n            <li><strong>UG Discount:<\/strong> Female students and SC Male students receive a flat \u20b9132 concession on all UG courses.<\/li>\r\n            <li><strong>PG Discount:<\/strong> Female students and SC Male students receive a flat \u20b9180 concession on all PG courses.<\/li>\r\n            <li><strong>PG 1st Year Origin Surcharge:<\/strong> First-year PG candidates graduating from colleges other than DDU incur a nominal \u20b92 surcharge.<\/li>\r\n        <\/ul>\r\n    <\/div>\r\n\r\n    <div class=\"info-box\">\r\n        <div>\r\n            <h3>\ud83d\udd2c Practical Subjects<\/h3>\r\n            <p>Botany, Zoology, Chemistry, Physics, Physical Education<\/p>\r\n        <\/div>\r\n        <div>\r\n            <h3>\ud83d\udcd6 Non-Practical Subjects<\/h3>\r\n            <p>Mathematics, Hindi, English, Sanskrit, Sociology, Political Science, History, Commerce<\/p>\r\n        <\/div>\r\n    <\/div>\r\n<\/div>\r\n\r\n<script>\r\nconst feeData = [\r\n    { course: \"UG\", course2: \"B.A. \/ B.Com.\", year: \"First (1st & 2nd Sem.)\", yearSimple: \"First\", category: \"ALL FEMALE\/ MALE SC\", grad: \"-\", practicals: 0, fee: 3360 },\r\n    { course: \"UG\", course2: \"B.A. \/ B.Com.\", year: \"First (1st & 2nd Sem.)\", yearSimple: \"First\", category: \"ALL MALE EXCEPT SC MALE\", grad: \"-\", practicals: 0, fee: 3492 },\r\n    { course: \"UG\", course2: \"B.A. (With Physical Education)\", year: \"First (1st & 2nd Sem.)\", yearSimple: \"First\", category: \"ALL FEMALE\/ MALE SC\", grad: \"-\", practicals: 1, fee: 3620 },\r\n    { course: \"UG\", course2: \"B.A. (With Physical Education)\", year: \"First (1st & 2nd Sem.)\", yearSimple: \"First\", category: \"ALL MALE EXCEPT SC MALE\", grad: \"-\", practicals: 1, fee: 3752 },\r\n    { course: \"UG\", course2: \"B.Sc. (Bio.)\", year: \"First (1st & 2nd Sem.)\", yearSimple: \"First\", category: \"ALL FEMALE\/ MALE SC\", grad: \"-\", practicals: 3, fee: 4100 },\r\n    { course: \"UG\", course2: \"B.Sc. (Bio.)\", year: \"First (1st & 2nd Sem.)\", yearSimple: \"First\", category: \"ALL MALE EXCEPT SC MALE\", grad: \"-\", practicals: 3, fee: 4232 },\r\n    { course: \"UG\", course2: \"B.Sc. (Maths)\", year: \"First (1st & 2nd Sem.)\", yearSimple: \"First\", category: \"ALL FEMALE\/ MALE SC\", grad: \"-\", practicals: 2, fee: 3860 },\r\n    { course: \"UG\", course2: \"B.Sc. (Maths)\", year: \"First (1st & 2nd Sem.)\", yearSimple: \"First\", category: \"ALL MALE EXCEPT SC MALE\", grad: \"-\", practicals: 2, fee: 3992 },\r\n    { course: \"PG\", course2: \"M.A. \/ M.Sc. (Maths)\", year: \"First (1st & 2nd Sem.)\", yearSimple: \"First\", category: \"ALL FEMALE\/ MALE SC\", grad: \"DDU\", practicals: 0, fee: 3835 },\r\n    { course: \"PG\", course2: \"M.A. \/ M.Sc. (Maths)\", year: \"First (1st & 2nd Sem.)\", yearSimple: \"First\", category: \"ALL FEMALE\/ MALE SC\", grad: \"Other College\", practicals: 0, fee: 3837 },\r\n    { course: \"PG\", course2: \"M.A. \/ M.Sc. (Maths)\", year: \"First (1st & 2nd Sem.)\", yearSimple: \"First\", category: \"ALL MALE EXCEPT SC MALE\", grad: \"DDU\", practicals: 0, fee: 4015 },\r\n    { course: \"PG\", course2: \"M.A. \/ M.Sc. (Maths)\", year: \"First (1st & 2nd Sem.)\", yearSimple: \"First\", category: \"ALL MALE EXCEPT SC MALE\", grad: \"Other College\", practicals: 0, fee: 4017 },\r\n    { course: \"PG\", course2: \"M.Sc.\", year: \"First (1st & 2nd Sem.)\", yearSimple: \"First\", category: \"ALL FEMALE\/ MALE SC\", grad: \"DDU\", practicals: 1, fee: 4095 },\r\n    { course: \"PG\", course2: \"M.Sc.\", year: \"First (1st & 2nd Sem.)\", yearSimple: \"First\", category: \"ALL FEMALE\/ MALE SC\", grad: \"Other College\", practicals: 1, fee: 4097 },\r\n    { course: \"PG\", course2: \"M.Sc.\", year: \"First (1st & 2nd Sem.)\", yearSimple: \"First\", category: \"ALL MALE EXCEPT SC MALE\", grad: \"DDU\", practicals: 1, fee: 4275 },\r\n    { course: \"PG\", course2: \"M.Sc.\", year: \"First (1st & 2nd Sem.)\", yearSimple: \"First\", category: \"ALL MALE EXCEPT SC MALE\", grad: \"Other College\", practicals: 1, fee: 4277 },\r\n    { course: \"UG\", course2: \"B.A. \/ B.Com.\", year: \"Second (3rd & 4th Sem.)\", yearSimple: \"Second\", category: \"ALL FEMALE\/ MALE SC\", grad: \"-\", practicals: 0, fee: 3213 },\r\n    { course: \"UG\", course2: \"B.A. \/ B.Com.\", year: \"Second (3rd & 4th Sem.)\", yearSimple: \"Second\", category: \"ALL MALE EXCEPT SC MALE\", grad: \"-\", practicals: 0, fee: 3345 },\r\n    { course: \"UG\", course2: \"B.A. (With Physical Education)\", year: \"Second (3rd & 4th Sem.)\", yearSimple: \"Second\", category: \"ALL FEMALE\/ MALE SC\", grad: \"-\", practicals: 1, fee: 3453 },\r\n    { course: \"UG\", course2: \"B.A. (With Physical Education)\", year: \"Second (3rd & 4th Sem.)\", yearSimple: \"Second\", category: \"ALL MALE EXCEPT SC MALE\", grad: \"-\", practicals: 1, fee: 3585 },\r\n    { course: \"UG\", course2: \"B.Sc. (Bio.)\", year: \"Second (3rd & 4th Sem.)\", yearSimple: \"Second\", category: \"ALL FEMALE\/ MALE SC\", grad: \"-\", practicals: 3, fee: 3933 },\r\n    { course: \"UG\", course2: \"B.Sc. (Bio.)\", year: \"Second (3rd & 4th Sem.)\", yearSimple: \"Second\", category: \"ALL MALE EXCEPT SC MALE\", grad: \"-\", practicals: 3, fee: 4065 },\r\n    { course: \"UG\", course2: \"B.Sc. (Maths)\", year: \"Second (3rd & 4th Sem.)\", yearSimple: \"Second\", category: \"ALL FEMALE\/ MALE SC\", grad: \"-\", practicals: 2, fee: 3693 },\r\n    { course: \"UG\", course2: \"B.Sc. (Maths)\", year: \"Second (3rd & 4th Sem.)\", yearSimple: \"Second\", category: \"ALL MALE EXCEPT SC MALE\", grad: \"-\", practicals: 2, fee: 3825 },\r\n    { course: \"PG\", course2: \"M.A. \/ M.Sc. (Maths)\", year: \"Second (3rd & 4th Sem.)\", yearSimple: \"Second\", category: \"ALL FEMALE\/ MALE SC\", grad: \"-\", practicals: 0, fee: 4300 },\r\n    { course: \"PG\", course2: \"M.A. \/ M.Sc. (Maths)\", year: \"Second (3rd & 4th Sem.)\", yearSimple: \"Second\", category: \"ALL MALE EXCEPT SC MALE\", grad: \"-\", practicals: 0, fee: 4480 },\r\n    { course: \"PG\", course2: \"M.Sc.\", year: \"Second (3rd & 4th Sem.)\", yearSimple: \"Second\", category: \"ALL FEMALE\/ MALE SC\", grad: \"-\", practicals: 1, fee: 4540 },\r\n    { course: \"PG\", course2: \"M.Sc.\", year: \"Second (3rd & 4th Sem.)\", yearSimple: \"Second\", category: \"ALL MALE EXCEPT SC MALE\", grad: \"-\", practicals: 1, fee: 4720 },\r\n    { course: \"UG\", course2: \"B.A. \/ B.Com.\", year: \"Third (5th & 6th Sem.)\", yearSimple: \"Third\", category: \"ALL FEMALE\/ MALE SC\", grad: \"-\", practicals: 0, fee: 3823 },\r\n    { course: \"UG\", course2: \"B.A. \/ B.Com.\", year: \"Third (5th & 6th Sem.)\", yearSimple: \"Third\", category: \"ALL MALE EXCEPT SC MALE\", grad: \"-\", practicals: 0, fee: 3955 },\r\n    { course: \"UG\", course2: \"B.A. (With Physical Education) & B.Sc. (Maths)\", year: \"Third (5th & 6th Sem.)\", yearSimple: \"Third\", category: \"ALL FEMALE\/ MALE SC\", grad: \"-\", practicals: 1, fee: 4063 },\r\n    { course: \"UG\", course2: \"B.A. (With Physical Education) & B.Sc. (Maths)\", year: \"Third (5th & 6th Sem.)\", yearSimple: \"Third\", category: \"ALL MALE EXCEPT SC MALE\", grad: \"-\", practicals: 1, fee: 4195 },\r\n    { course: \"UG\", course2: \"B.Sc. (Bio.)\", year: \"Third (5th & 6th Sem.)\", yearSimple: \"Third\", category: \"ALL FEMALE\/ MALE SC\", grad: \"-\", practicals: 2, fee: 4303 },\r\n    { course: \"UG\", course2: \"B.Sc. (Bio.)\", year: \"Third (5th & 6th Sem.)\", yearSimple: \"Third\", category: \"ALL MALE EXCEPT SC MALE\", grad: \"-\", practicals: 2, fee: 4435 }\r\n];\r\n\r\nfunction populateCourseDropdown() {\r\n    const level = document.getElementById('course-level').value;\r\n    const courseSelect = document.getElementById('course-filter');\r\n    const selectedCourse = courseSelect.value;\r\n    \r\n    courseSelect.innerHTML = '<option value=\"ALL\">All Courses<\/option>';\r\n    \r\n    const courses = [...new Set(\r\n        feeData\r\n            .filter(item => level === 'ALL' || item.course === level)\r\n            .map(item => item.course2)\r\n    )].sort();\r\n\r\n    courses.forEach(c => {\r\n        const option = document.createElement('option');\r\n        option.value = c;\r\n        option.textContent = c;\r\n        if (c === selectedCourse) option.selected = true;\r\n        courseSelect.appendChild(option);\r\n    });\r\n}\r\n\r\nfunction renderTable(data) {\r\n    const tbody = document.getElementById('table-body');\r\n    tbody.innerHTML = '';\r\n    \r\n    if (data.length === 0) {\r\n        tbody.innerHTML = '<tr><td colspan=\"7\" class=\"no-data\">No matching fee records found.<\/td><\/tr>';\r\n        document.getElementById('total-entries').textContent = 0;\r\n        return;\r\n    }\r\n\r\n    data.forEach(item => {\r\n        const tr = document.createElement('tr');\r\n        \r\n        const levelBadge = item.course === 'UG' ? '<span class=\"badge badge-ug\">UG<\/span>' : '<span class=\"badge badge-pg\">PG<\/span>';\r\n        const catBadge = item.category.includes('FEMALE') ? '<span class=\"badge badge-category-sc\">Female \/ SC Male<\/span>' : '<span class=\"badge badge-category-gen\">General Male<\/span>';\r\n        \r\n        tr.innerHTML = `\r\n            <td>${levelBadge}<\/td>\r\n            <td><strong>${item.course2}<\/strong><\/td>\r\n            <td>${item.year}<\/td>\r\n            <td>${catBadge}<\/td>\r\n            <td>${item.grad}<\/td>\r\n            <td>${item.practicals}<\/td>\r\n            <td class=\"price-cell\">\u20b9${item.fee.toLocaleString('en-IN')}<\/td>\r\n        `;\r\n        tbody.appendChild(tr);\r\n    });\r\n\r\n    document.getElementById('total-entries').textContent = data.length;\r\n}\r\n\r\nfunction updateCourseOptions() {\r\n    populateCourseDropdown();\r\n}\r\n\r\nfunction filterData() {\r\n    const level = document.getElementById('course-level').value;\r\n    const course = document.getElementById('course-filter').value;\r\n    const year = document.getElementById('year-filter').value;\r\n    const category = document.getElementById('category-filter').value;\r\n    const search = document.getElementById('search-input').value.toLowerCase();\r\n\r\n    const filtered = feeData.filter(item => {\r\n        const matchesLevel = (level === 'ALL') || (item.course === level);\r\n        const matchesCourse = (course === 'ALL') || (item.course2 === course);\r\n        const matchesYear = (year === 'ALL') || (item.yearSimple === year);\r\n        const matchesCat = (category === 'ALL') || \r\n            (category === 'SC_FEMALE' && item.category.includes('FEMALE')) || \r\n            (category === 'GEN_MALE' && !item.category.includes('FEMALE'));\r\n        const matchesSearch = item.course2.toLowerCase().includes(search) || \r\n                              item.year.toLowerCase().includes(search) ||\r\n                              item.grad.toLowerCase().includes(search);\r\n\r\n        return matchesLevel && matchesCourse && matchesYear && matchesCat && matchesSearch;\r\n    });\r\n\r\n    renderTable(filtered);\r\n}\r\n\r\n\/\/ Initial Setup & Render\r\npopulateCourseDropdown();\r\nrenderTable(feeData);\r\n\r\nfunction getFilteredFeeData() {\r\n    const level = document.getElementById('course-level').value;\r\n    const course = document.getElementById('course-filter').value;\r\n    const year = document.getElementById('year-filter').value;\r\n    const category = document.getElementById('category-filter').value;\r\n    const search = document.getElementById('search-input').value.toLowerCase().trim();\r\n\r\n    return feeData.filter(item => {\r\n        const matchesLevel = level === 'ALL' || item.course === level;\r\n        const matchesCourse = course === 'ALL' || item.course2 === course;\r\n        const matchesYear = year === 'ALL' || item.yearSimple === year;\r\n        const matchesCat = category === 'ALL' ||\r\n            (category === 'SC_FEMALE' && item.category.includes('FEMALE')) ||\r\n            (category === 'GEN_MALE' && !item.category.includes('FEMALE'));\r\n        const searchable = [item.course,item.course2,item.year,item.category,item.grad,item.practicals,item.fee].join(' ').toLowerCase();\r\n        return matchesLevel && matchesCourse && matchesYear && matchesCat && searchable.includes(search);\r\n    });\r\n}\r\n\r\nfunction printFeeStructure() {\r\n    if (!getFilteredFeeData().length) { alert('No fee records available to print.'); return; }\r\n    window.print();\r\n}\r\n\r\nfunction downloadPDF() {\r\n    const data = getFilteredFeeData();\r\n    if (!data.length) { alert('No fee records available for PDF download.'); return; }\r\n    if (!window.jspdf || !window.jspdf.jsPDF) { alert('PDF library could not be loaded. Please check your internet connection and try again.'); return; }\r\n    const { jsPDF } = window.jspdf;\r\n    const doc = new jsPDF({ orientation:'landscape', unit:'mm', format:'a4' });\r\n    doc.setFontSize(18); doc.setFont('helvetica','bold');\r\n    doc.text('Academic Fee Structure & Schedule', 148, 15, {align:'center'});\r\n    doc.setFontSize(10); doc.setFont('helvetica','normal');\r\n    doc.text('DDU Government PG College, Saidabad', 148, 22, {align:'center'});\r\n    doc.setFontSize(8);\r\n    doc.text('Generated: ' + new Date().toLocaleString('en-IN'), 14, 29);\r\n    doc.text('Records: ' + data.length, 283, 29, {align:'right'});\r\n    const rows = data.map(item => [\r\n        item.course, item.course2, item.year,\r\n        item.category.includes('FEMALE') ? 'Female \/ SC Male' : 'General Male',\r\n        item.grad, item.practicals || '-', 'Rs. ' + item.fee.toLocaleString('en-IN')\r\n    ]);\r\n    doc.autoTable({\r\n        startY:34,\r\n        head:[['Level','Course \/ Programme','Year & Semester','Category','Graduated From','Practicals','Total Fee']],\r\n        body:rows, theme:'grid', styles:{fontSize:8,cellPadding:3}, headStyles:{fontSize:8,fontStyle:'bold',halign:'center'},\r\n        columnStyles:{0:{cellWidth:18},1:{cellWidth:55},2:{cellWidth:42},3:{cellWidth:35},4:{cellWidth:28},5:{cellWidth:20},6:{cellWidth:27,halign:'right'}},\r\n        didDrawPage:function(){\r\n            const page = doc.internal.getNumberOfPages();\r\n            doc.setFontSize(8);\r\n            doc.text('Academic Fee Structure',14,202);\r\n            doc.text('Page '+page,283,202,{align:'right'});\r\n        }\r\n    });\r\n    const today = new Date().toISOString().slice(0,10);\r\n    doc.save('Academic_Fee_Structure_' + today + '.pdf');\r\n}\r\n\r\nfunction exportExcel() {\r\n    const data = getFilteredFeeData();\r\n    if (!data.length) { alert('No fee records available for Excel export.'); return; }\r\n    if (typeof XLSX === 'undefined') { alert('Excel library could not be loaded. Please check your internet connection and try again.'); return; }\r\n    const rows = data.map((item,index) => ({\r\n        'S.No.':index+1, 'Level':item.course, 'Course \/ Programme':item.course2,\r\n        'Year & Semester':item.year,\r\n        'Category':item.category.includes('FEMALE') ? 'Female \/ SC Male' : 'General Male',\r\n        'Graduated From':item.grad, 'Practicals':item.practicals, 'Total Fee':item.fee\r\n    }));\r\n    const ws = XLSX.utils.json_to_sheet(rows);\r\n    ws['!cols']=[{wch:8},{wch:12},{wch:45},{wch:28},{wch:22},{wch:20},{wch:12},{wch:15}];\r\n    const wb = XLSX.utils.book_new();\r\n    XLSX.utils.book_append_sheet(wb,ws,'Fee Structure');\r\n    const summary = [\r\n        ['Academic Fee Structure & Schedule'],\r\n        ['Total Records',data.length],\r\n        ['Generated On',new Date().toLocaleString('en-IN')],[],['Applied Filters'],\r\n        ['Programme Level',document.getElementById('course-level').selectedOptions[0].text],\r\n        ['Course',document.getElementById('course-filter').selectedOptions[0].text],\r\n        ['Year \/ Semester',document.getElementById('year-filter').selectedOptions[0].text],\r\n        ['Category',document.getElementById('category-filter').selectedOptions[0].text],\r\n        ['Search',document.getElementById('search-input').value || 'None']\r\n    ];\r\n    const sws = XLSX.utils.aoa_to_sheet(summary); sws['!cols']=[{wch:25},{wch:55}];\r\n    XLSX.utils.book_append_sheet(wb,sws,'Summary');\r\n    const today = new Date().toISOString().slice(0,10);\r\n    XLSX.writeFile(wb,'Academic_Fee_Structure_'+today+'.xlsx');\r\n}\r\n\r\nfunction resetFilters() {\r\n    document.getElementById('course-level').value='ALL';\r\n    document.getElementById('year-filter').value='ALL';\r\n    document.getElementById('category-filter').value='ALL';\r\n    document.getElementById('search-input').value='';\r\n    populateCourseDropdown();\r\n    document.getElementById('course-filter').value='ALL';\r\n    renderTable(feeData);\r\n}\r\n<\/script>\r\n\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-c1bd656 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"c1bd656\" 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-de84729\" data-id=\"de84729\" 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-b090a51 elementor-widget elementor-widget-html\" data-id=\"b090a51\" 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<title>Ultimate Transaction Dashboard<\/title>\r\n\r\n<script src=\"https:\/\/cdn.jsdelivr.net\/npm\/chart.js\"><\/script>\r\n\r\n<style>\r\nbody { font-family: Arial; margin:20px; background:#f4f6f9;}\r\nh2 { text-align:center; }\r\n\r\n.controls { display:flex; gap:10px; flex-wrap:wrap; margin-bottom:15px; }\r\n\r\ninput, select, button { padding:6px; }\r\n\r\ntable { width:100%; border-collapse:collapse; background:white;}\r\nth, td { padding:8px; border:1px solid #ddd; text-align:center;}\r\nth { background:#007bff; color:white;}\r\ntr:nth-child(even){ background:#f2f2f2;}\r\n\r\n.success { color:green; font-weight:bold;}\r\n.shipped { color:orange; font-weight:bold;}\r\n\r\n.summary { margin-top:15px; padding:10px; background:white; border:1px solid #ccc;}\r\n\r\ncanvas { margin-top:20px; background:white; padding:10px;}\r\n<\/style>\r\n<\/head>\r\n\r\n<body>\r\n\r\n<h2>\ud83d\udcca Bank Transaction Dashboard<\/h2>\r\n\r\n<div class=\"controls\">\r\n<input type=\"file\" id=\"csvFile\">\r\n<input type=\"text\" id=\"search\" placeholder=\"Search...\">\r\n<select id=\"statusFilter\">\r\n<option value=\"\">All<\/option>\r\n<option>Success<\/option>\r\n<option>Shipped<\/option>\r\n<\/select>\r\n<input type=\"date\" id=\"fromDate\">\r\n<input type=\"date\" id=\"toDate\">\r\n<button onclick=\"downloadCSV()\">\u2b07 Export CSV<\/button>\r\n<\/div>\r\n\r\n<table>\r\n<thead>\r\n<tr>\r\n<th>Date<\/th><th>Order<\/th><th>Status<\/th><th>Amount<\/th>\r\n<th>Email<\/th><th>Mobile<\/th>\r\n<\/tr>\r\n<\/thead>\r\n<tbody id=\"tableBody\"><\/tbody>\r\n<\/table>\r\n\r\n<div class=\"summary\">\r\nTotal: <span id=\"total\">0<\/span> |\r\nSuccess: <span id=\"success\">0<\/span> |\r\nShipped: <span id=\"shipped\">0<\/span> |\r\nAmount: \u20b9<span id=\"amount\">0<\/span>\r\n<\/div>\r\n\r\n<canvas id=\"chart\"><\/canvas>\r\n\r\n<script>\r\nlet allData=[], chart;\r\n\r\ndocument.getElementById(\"csvFile\").addEventListener(\"change\", e=>{\r\nlet reader=new FileReader();\r\nreader.onload=ev=>{\r\nlet rows=ev.target.result.split(\"\\n\").slice(1);\r\nallData=[];\r\n\r\nrows.forEach(r=>{\r\nif(!r.trim()) return;\r\nlet c=r.split(\",\");\r\nallData.push({\r\ndate:c[0]?.split(\" \")[0],\r\norder:c[1],\r\nstatus:c[3],\r\namount:parseFloat(c[7])||0,\r\nemail:c[10],\r\nmobile:c[9]\r\n});\r\n});\r\n\r\napplyFilters();\r\n};\r\nreader.readAsText(e.target.files[0]);\r\n});\r\n\r\nfunction applyFilters(){\r\nlet s=document.getElementById(\"search\").value.toLowerCase();\r\nlet st=document.getElementById(\"statusFilter\").value;\r\nlet f=document.getElementById(\"fromDate\").value;\r\nlet t=document.getElementById(\"toDate\").value;\r\n\r\nlet data=allData.filter(d=>{\r\nlet match=Object.values(d).join(\" \").toLowerCase().includes(s);\r\nlet m2=!st||d.status===st;\r\nlet m3=true;\r\nif(f) m3=d.date>=f;\r\nif(t) m3=m3&&d.date<=t;\r\nreturn match&&m2&&m3;\r\n});\r\n\r\nrender(data);\r\ndrawChart(data);\r\n}\r\n\r\nfunction render(data){\r\nlet tb=document.getElementById(\"tableBody\");\r\ntb.innerHTML=\"\";\r\nlet total=0,success=0,shipped=0,amount=0;\r\n\r\ndata.forEach(d=>{\r\ntotal++; amount+=d.amount;\r\nlet cls=\"\";\r\nif(d.status===\"Success\"){success++; cls=\"success\";}\r\nif(d.status===\"Shipped\"){shipped++; cls=\"shipped\";}\r\n\r\ntb.innerHTML+=`\r\n<tr>\r\n<td>${d.date}<\/td>\r\n<td>${d.order}<\/td>\r\n<td class=\"${cls}\">${d.status}<\/td>\r\n<td>${d.amount}<\/td>\r\n<td>${d.email}<\/td>\r\n<td>${d.mobile}<\/td>\r\n<\/tr>`;\r\n});\r\n\r\ndocument.getElementById(\"total\").innerText=total;\r\ndocument.getElementById(\"success\").innerText=success;\r\ndocument.getElementById(\"shipped\").innerText=shipped;\r\ndocument.getElementById(\"amount\").innerText=amount;\r\n}\r\n\r\nfunction drawChart(data){\r\nlet map={};\r\ndata.forEach(d=>{\r\nmap[d.date]=(map[d.date]||0)+d.amount;\r\n});\r\n\r\nlet labels=Object.keys(map);\r\nlet values=Object.values(map);\r\n\r\nif(chart) chart.destroy();\r\n\r\nchart=new Chart(document.getElementById(\"chart\"),{\r\ntype:\"bar\",\r\ndata:{labels:labels,datasets:[{label:\"Daily Amount\",data:values}]}\r\n});\r\n}\r\n\r\nfunction downloadCSV(){\r\nlet csv=\"Date,Order,Status,Amount,Email,Mobile\\n\";\r\ndocument.querySelectorAll(\"#tableBody tr\").forEach(tr=>{\r\nlet row=[];\r\ntr.querySelectorAll(\"td\").forEach(td=>row.push(td.innerText));\r\ncsv+=row.join(\",\")+\"\\n\";\r\n});\r\n\r\nlet blob=new Blob([csv],{type:\"text\/csv\"});\r\nlet a=document.createElement(\"a\");\r\na.href=URL.createObjectURL(blob);\r\na.download=\"filtered_data.csv\";\r\na.click();\r\n}\r\n\r\ndocument.querySelectorAll(\"#search,#statusFilter,#fromDate,#toDate\")\r\n.forEach(el=>el.addEventListener(\"input\",applyFilters));\r\n<\/script>\r\n\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<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Advanced QR Code Scanner Dashboard Academic Digital Scanner Scan Admission PDFs or use Live Camera Verification \ud83d\udcc4 Upload Admission PDF \ud83d\udcf7 Live Camera Scanner Select official student Document\/PDF containing a QR code Scanned Data Output Loading\u2026 DOWNLOAD BANK UPLOAD CSV FILE Academic Fee Structure &#038; Schedule | DDU Government PG College, Saidabad Academic Fee Schedule [&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":"","ast-breadcrumbs-content":"disabled","ast-featured-img":"disabled","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-15212","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/ddugdcsaidabad.ac.in\/index.php\/wp-json\/wp\/v2\/pages\/15212","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=15212"}],"version-history":[{"count":56,"href":"https:\/\/ddugdcsaidabad.ac.in\/index.php\/wp-json\/wp\/v2\/pages\/15212\/revisions"}],"predecessor-version":[{"id":17399,"href":"https:\/\/ddugdcsaidabad.ac.in\/index.php\/wp-json\/wp\/v2\/pages\/15212\/revisions\/17399"}],"wp:attachment":[{"href":"https:\/\/ddugdcsaidabad.ac.in\/index.php\/wp-json\/wp\/v2\/media?parent=15212"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}