{"id":191,"date":"2026-07-16T13:50:34","date_gmt":"2026-07-16T05:50:34","guid":{"rendered":"https:\/\/www.ukm.my\/upsoku\/?page_id=191"},"modified":"2026-08-10T09:50:40","modified_gmt":"2026-08-10T01:50:40","slug":"statistik-warga-oku-ukm","status":"publish","type":"page","link":"https:\/\/www.ukm.my\/upsoku\/utama\/statistik-warga-oku-ukm\/","title":{"rendered":"Statistik Warga OKU UKM"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"191\" class=\"elementor elementor-191\">\n\t\t\t\t<div class=\"elementor-element elementor-element-d409d00 e-grid e-con-boxed e-con e-parent\" data-id=\"d409d00\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-19e5bf8 e-grid e-con-full e-con e-child\" data-id=\"19e5bf8\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;gradient&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-e566088 elementor-widget elementor-widget-counter\" data-id=\"e566088\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"counter.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-counter\">\n\t\t\t<div class=\"elementor-counter-title\">Staf OKU<\/div>\t\t\t<div class=\"elementor-counter-number-wrapper\">\n\t\t\t\t<span class=\"elementor-counter-number-prefix\"><\/span>\n\t\t\t\t<span class=\"elementor-counter-number\" data-duration=\"2000\" data-to-value=\"52\" data-from-value=\"0\" data-delimiter=\",\">0<\/span>\n\t\t\t\t<span class=\"elementor-counter-number-suffix\"><\/span>\n\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-d7aca42 e-grid e-con-full e-con e-child\" data-id=\"d7aca42\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;gradient&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-332c66d elementor-widget elementor-widget-html\" data-id=\"332c66d\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t\n<div class=\"oku-chart-wrapper\" style=\"width: 100%; max-width: 900px; margin: 0 auto; background: transparent; padding: 24px; border-radius: 12px; font-family: 'Barlow', 'Segoe UI', sans-serif;\">\n    \n    <h3 style=\"text-align: center; color: #1e1e1e; font-size: 1.25rem; font-weight: 400; margin-top: 0; margin-bottom: 24px;\">\n        Senarai Staf OKU mengikut Kategori OKU\n    <\/h3>\n    \n\n    <div style=\"position: relative; height: 400px; width: 100%;\">\n        <canvas id=\"okuVerticalChart\"><\/canvas>\n    <\/div>\n\n<\/div>\n\n\n<script src=\"https:\/\/cdn.jsdelivr.net\/npm\/chart.js@3.9.1\/dist\/chart.min.js\"><\/script>\n<script src=\"https:\/\/cdn.jsdelivr.net\/npm\/chartjs-plugin-datalabels@2.2.0\/dist\/chartjs-plugin-datalabels.min.js\"><\/script>\n\n<script>\n    document.addEventListener(\"DOMContentLoaded\", function() {\n\n        Chart.register(ChartDataLabels);\n\n        const ctx = document.getElementById('okuVerticalChart').getContext('2d');\n        \n\n        const chartData = [55.8, 26.9, 11.5, 3.8, 1.9, 0, 0];\n        \n\n        const chartLabels = [\n            'Kurang Upaya Fizikal',\n            'Kurang Upaya Penglihatan',\n            'Kurang Upaya Pendengaran',\n            'Kurang Upaya Pembelajaran',\n            'Kurang Upaya Mental',\n            'Kurang Upaya Pelbagai',\n            'Kurang Upaya Pertuturan'\n        ];\n\n        new Chart(ctx, {\n            type: 'bar',\n            data: {\n                labels: chartLabels,\n                datasets: [{\n                    label: 'Peratusan (%)',\n                    data: chartData,\n \n                    backgroundColor: '#1a4cce', \n\n                    hoverBackgroundColor: '#0075C5',\n\n                    borderRadius: 6,\n                    borderSkipped: false,\n\n                    maxBarThickness: 40\n                }]\n            },\n            options: {\n                indexAxis: 'y', \n                responsive: true,\n                maintainAspectRatio: false,\n                plugins: {\n\n                    legend: {\n                        display: false \n                    },\n\n                    tooltip: {\n                        backgroundColor: 'rgba(17, 24, 39, 0.9)',\n                        titleFont: { size: 18, family: 'inherit' },\n                        bodyFont: { size: 14, family: 'inherit', weight: 'bold' },\n                        padding: 12,\n                        cornerRadius: 8,\n                        displayColors: false,\n                        callbacks: {\n                            label: function(context) {\n                                return context.parsed.x + '%';\n                            }\n                        }\n                    },\n\n                    datalabels: {\n                        anchor: 'end',\n                        align: 'right', \n                        color: '#4b5563', \n                        font: {\n                            weight: '600',\n                            size: 12,\n                            family: 'inherit'\n                        },\n                        formatter: function(value) {\n   \n                            return value > 0 ? value + '%' : '0%'; \n                        }\n                    }\n                },\n                scales: {\n                    x: { \n                        beginAtZero: true,\n                        \/\/ Force the maximum value to be 100%\n                        max: 100, \n                        grid: {\n                            color: '#f3f4f6', \n                            drawBorder: false, \n                        },\n                        ticks: {\n                            color: '#6b7280',\n                            font: { family: 'inherit' },\n                            callback: function(value) {\n                                return value + '%';\n                            }\n                        }\n                    },\n                    y: { \n                        grid: {\n                            display: false, \n                            drawBorder: false\n                        },\n                        ticks: {\n                            color: '#4b5563',\n                            font: { family: 'inherit', size: 12 }\n                        }\n                    }\n                }\n            }\n        });\n    });\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-29275ba e-grid e-con-boxed e-con e-parent\" data-id=\"29275ba\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-2600d10 e-grid e-con-full e-con e-child\" data-id=\"2600d10\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;gradient&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-c612567 elementor-widget elementor-widget-html\" data-id=\"c612567\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<div class=\"oku-chart-wrapper\" style=\"width: 100%; max-width: 900px; margin: 0 auto; background: transparent; padding: 24px; border-radius: 12px; font-family: 'Barlow', 'Segoe UI', sans-serif;\">\n    \n    <h3 style=\"text-align: center; color: #1e1e1e; font-size: 1.25rem; font-weight: 400; margin-top: 0; margin-bottom: 24px;\">\n        Senarai Staf OKU mengikut Kategori Kampus\n    <\/h3>\n    \n    <div style=\"position: relative; height: 300px; width: 100%;\">\n        <canvas id=\"kampusChart\"><\/canvas>\n    <\/div>\n\n<\/div>\n\n<!-- Pastikan fail Chart.js dan DataLabels ini dimuatkan jika belum ada -->\n<script src=\"https:\/\/cdn.jsdelivr.net\/npm\/chart.js@3.9.1\/dist\/chart.min.js\"><\/script>\n<script src=\"https:\/\/cdn.jsdelivr.net\/npm\/chartjs-plugin-datalabels@2.2.0\/dist\/chartjs-plugin-datalabels.min.js\"><\/script>\n\n<script>\n    document.addEventListener(\"DOMContentLoaded\", function() {\n\n        Chart.register(ChartDataLabels);\n\n        const ctx = document.getElementById('kampusChart').getContext('2d');\n        \n        \/\/ Data peratusan dari gambar\n        const chartData = [48.1, 9.6, 42.3];\n        \n        \/\/ Kategori kampus\n        const chartLabels = [\n            'Bangi',\n            'Kuala Lumpur',\n            'Cheras'\n        ];\n\n        new Chart(ctx, {\n            type: 'bar',\n            data: {\n                labels: chartLabels,\n                datasets: [{\n                    label: 'Peratusan (%)',\n                    data: chartData,\n                    \n                    \/\/ Warna kelabu gelap sepadan dengan gambar rujukan\n                    backgroundColor: '#52525B', \n                    hoverBackgroundColor: '#3F3F46',\n\n                    borderRadius: 6,\n                    borderSkipped: false,\n                    maxBarThickness: 40\n                }]\n            },\n            options: {\n                indexAxis: 'y', \n                responsive: true,\n                maintainAspectRatio: false,\n                plugins: {\n                    legend: {\n                        display: false \n                    },\n                    tooltip: {\n                        backgroundColor: 'rgba(17, 24, 39, 0.9)',\n                        titleFont: { size: 18, family: 'inherit' },\n                        bodyFont: { size: 14, family: 'inherit', weight: 'bold' },\n                        padding: 12,\n                        cornerRadius: 8,\n                        displayColors: false,\n                        callbacks: {\n                            label: function(context) {\n                                return context.parsed.x + '%';\n                            }\n                        }\n                    },\n                    datalabels: {\n                        anchor: 'end',\n                        align: 'right', \n                        color: '#4b5563', \n                        font: {\n                            weight: '600',\n                            size: 12,\n                            family: 'inherit'\n                        },\n                        formatter: function(value) {\n                            return value > 0 ? value + '%' : '0%'; \n                        }\n                    }\n                },\n                scales: {\n                    x: { \n                        beginAtZero: true,\n                        max: 100, \n                        grid: {\n                            color: '#f3f4f6', \n                            drawBorder: false, \n                        },\n                        ticks: {\n                            color: '#6b7280',\n                            font: { family: 'inherit' },\n                            callback: function(value) {\n                                return value + '%';\n                            }\n                        }\n                    },\n                    y: { \n                        grid: {\n                            display: false, \n                            drawBorder: false\n                        },\n                        ticks: {\n                            color: '#4b5563',\n                            font: { family: 'inherit', size: 12 }\n                        }\n                    }\n                }\n            }\n        });\n    });\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-46103db e-grid e-con-full e-con e-child\" data-id=\"46103db\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;gradient&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-62a7436 elementor-widget elementor-widget-html\" data-id=\"62a7436\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<div class=\"oku-chart-wrapper\" style=\"width: 100%; max-width: 900px; margin: 0 auto; background: transparent; padding: 24px; border-radius: 12px; font-family: 'Barlow', 'Segoe UI', sans-serif;\">\n    \n    <h3 style=\"text-align: center; color: #1e1e1e; font-size: 1.25rem; font-weight: 400; margin-top: 0; margin-bottom: 24px;\">\n        Senarai Staf OKU mengikut Kategori Kumpulan Perkhidmatan\n    <\/h3>\n    \n    <div style=\"position: relative; height: 300px; width: 100%;\">\n        <canvas id=\"perkhidmatanChart\"><\/canvas>\n    <\/div>\n\n<\/div>\n\n<!-- Pastikan fail Chart.js dan DataLabels ini dimuatkan di dalam laman anda -->\n<script src=\"https:\/\/cdn.jsdelivr.net\/npm\/chart.js@3.9.1\/dist\/chart.min.js\"><\/script>\n<script src=\"https:\/\/cdn.jsdelivr.net\/npm\/chartjs-plugin-datalabels@2.2.0\/dist\/chartjs-plugin-datalabels.min.js\"><\/script>\n\n<script>\n    document.addEventListener(\"DOMContentLoaded\", function() {\n\n        Chart.register(ChartDataLabels);\n\n        const ctx = document.getElementById('perkhidmatanChart').getContext('2d');\n        \n        \/\/ Data peratusan\n        const chartData = [3.8, 15.4, 80.8];\n        \n        \/\/ Kategori Kumpulan Perkhidmatan\n        const chartLabels = [\n            'Pengurusan dan Profesional',\n            'Akademik',\n            'Pelaksana'\n        ];\n\n        new Chart(ctx, {\n            type: 'bar',\n            data: {\n                labels: chartLabels,\n                datasets: [{\n                    label: 'Peratusan (%)',\n                    data: chartData,\n                    \n                    \/\/ Array warna untuk setiap bar: Kuning, Merah, Hijau\n                    backgroundColor: ['#FACC15', '#EF4444', '#16A34A'], \n                    hoverBackgroundColor: ['#EAB308', '#DC2626', '#15803D'],\n\n                    borderRadius: 6,\n                    borderSkipped: false,\n                    maxBarThickness: 40\n                }]\n            },\n            options: {\n                indexAxis: 'y', \n                responsive: true,\n                maintainAspectRatio: false,\n                plugins: {\n                    legend: {\n                        display: false \n                    },\n                    tooltip: {\n                        backgroundColor: 'rgba(17, 24, 39, 0.9)',\n                        titleFont: { size: 18, family: 'inherit' },\n                        bodyFont: { size: 14, family: 'inherit', weight: 'bold' },\n                        padding: 12,\n                        cornerRadius: 8,\n                        displayColors: false,\n                        callbacks: {\n                            label: function(context) {\n                                return context.parsed.x + '%';\n                            }\n                        }\n                    },\n                    datalabels: {\n                        anchor: 'end',\n                        align: 'right', \n                        color: '#4b5563', \n                        font: {\n                            weight: '600',\n                            size: 12,\n                            family: 'inherit'\n                        },\n                        formatter: function(value) {\n                            return value > 0 ? value + '%' : '0%'; \n                        }\n                    }\n                },\n                scales: {\n                    x: { \n                        beginAtZero: true,\n                        max: 100, \n                        grid: {\n                            color: '#f3f4f6', \n                            drawBorder: false, \n                        },\n                        ticks: {\n                            color: '#6b7280',\n                            font: { family: 'inherit' },\n                            callback: function(value) {\n                                return value + '%';\n                            }\n                        }\n                    },\n                    y: { \n                        grid: {\n                            display: false, \n                            drawBorder: false\n                        },\n                        ticks: {\n                            color: '#4b5563',\n                            font: { family: 'inherit', size: 12 }\n                        }\n                    }\n                }\n            }\n        });\n    });\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-162f796 e-grid e-con-boxed e-con e-parent\" data-id=\"162f796\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-c654b44 e-grid e-con-full e-con e-child\" data-id=\"c654b44\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;gradient&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-6c72850 elementor-widget elementor-widget-html\" data-id=\"6c72850\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<div class=\"oku-chart-wrapper\" style=\"width: 100%; max-width: 1000px; margin: 0 auto; background: transparent; padding: 24px; border-radius: 12px; font-family: 'Barlow', 'Segoe UI', sans-serif;\">\n    \n    <h3 style=\"text-align: center; color: #1e1e1e; font-size: 1.25rem; font-weight: 400; margin-top: 0; margin-bottom: 24px;\">\n        Senarai Staf OKU mengikut PTj\/Fakulti\/Institut\n    <\/h3>\n    \n    <!-- Ketinggian dilaraskan untuk memberi ruang kepada label paksi X yang condong -->\n    <div style=\"position: relative; height: 550px; width: 100%;\">\n        <canvas id=\"ptjChart\"><\/canvas>\n    <\/div>\n\n<\/div>\n\n<!-- Memuatkan pustaka Chart.js dan DataLabels -->\n<script src=\"https:\/\/cdn.jsdelivr.net\/npm\/chart.js@3.9.1\/dist\/chart.min.js\"><\/script>\n<script src=\"https:\/\/cdn.jsdelivr.net\/npm\/chartjs-plugin-datalabels@2.2.0\/dist\/chartjs-plugin-datalabels.min.js\"><\/script>\n\n<script>\n    document.addEventListener(\"DOMContentLoaded\", function() {\n\n        Chart.register(ChartDataLabels);\n\n        \/\/ Menetapkan font Barlow secara global\n        Chart.defaults.font.family = \"'Barlow', 'Segoe UI', sans-serif\";\n\n        const staffRecords = [\n    { \"label\": \"Jabatan Pendaftar\", \"quantity\": 2, \"percentage\": 3.8 },\n    { \"label\": \"Jabatan Bendahari\", \"quantity\": 2, \"percentage\": 3.8 },\n    { \"label\": \"Pusat Teknologi Digital\", \"quantity\": 1, \"percentage\": 1.9 },\n    { \"label\": \"Jabatan Pembangunan dan Prasarana UKM\", \"quantity\": 1, \"percentage\": 1.9 },\n    { \"label\": \"Pusat Pengurusan Penjanaan UKM\", \"quantity\": 1, \"percentage\": 1.9 },\n    { \"label\": \"Unit Audit Dalam\", \"quantity\": 1, \"percentage\": 1.9 },\n    { \"label\": \"Perpustakaan Tun Seri Lanang\", \"quantity\": 3, \"percentage\": 5.8 },\n    { \"label\": \"Pusat Sukan\", \"quantity\": 1, \"percentage\": 1.9 },\n    { \"label\": \"Institut Alam & Tamadun Melayu\", \"quantity\": 1, \"percentage\": 1.9 },\n    { \"label\": \"Institut Islam Hadhari\", \"quantity\": 1, \"percentage\": 1.9 },\n    { \"label\": \"Fakulti Sains Sosial dan Kemanusiaan\", \"quantity\": 4, \"percentage\": 7.7 },\n    { \"label\": \"Fakulti Perubatan\", \"quantity\": 1, \"percentage\": 1.9 },\n    { \"label\": \"Fakulti Kejuruteraan dan Alam Bina\", \"quantity\": 2, \"percentage\": 3.8 },\n    { \"label\": \"Fakulti Pendidikan\", \"quantity\": 1, \"percentage\": 1.9 },\n    { \"label\": \"Fakulti Teknologi dan Sains Maklumat\", \"quantity\": 2, \"percentage\": 3.8 },\n    { \"label\": \"Fakulti Sains dan Teknologi\", \"quantity\": 2, \"percentage\": 3.8 },\n    { \"label\": \"Fakulti Pengajian Islam\", \"quantity\": 0, \"percentage\": 0.0 },\n    { \"label\": \"Fakulti Sains Kesihatan\", \"quantity\": 1, \"percentage\": 1.9 },\n    { \"label\": \"Fakulti Undang Undang\", \"quantity\": 0, \"percentage\": 0.0 },\n    { \"label\": \"Fakulti Pergigian\", \"quantity\": 1, \"percentage\": 1.9 },\n    { \"label\": \"Kolej Ibrahim Yaakob\", \"quantity\": 1, \"percentage\": 1.9 },\n    { \"label\": \"Hospital Canselor Tuanku Muhriz\", \"quantity\": 22, \"percentage\": 42.3 }\n];\n\n        \/\/ Menyusun data (menaik berdasarkan bilangan)\n        staffRecords.sort((a, b) => a.quantity - b.quantity);\n\n        \/\/ Penjanaan warna dinamik dari kod asal anda\n        const buildColors = (count) => {\n            const colors = [];\n            for (let i = 0; i < count; i++) {\n                const hue = (i * 360 \/ count) % 360; \n                colors.push(`hsl(${hue}, 70%, 50%)`);\n            }\n            return colors;\n        };\n\n        const colorSet = buildColors(staffRecords.length);\n        const ctx = document.getElementById('ptjChart').getContext('2d');\n\n        new Chart(ctx, {\n            type: 'bar', \/\/ Kekal menegak (vertical) secara lalai\n            data: {\n                labels: staffRecords.map(rec => rec.label),\n                datasets: [{\n                    label: 'Bilangan',\n                    data: staffRecords.map(rec => rec.quantity),\n                    \n                    backgroundColor: colorSet, \n                    \n                    \/\/ Style bar\n                    borderRadius: 6,\n                    borderSkipped: false,\n                    maxBarThickness: 40 \n                }]\n            },\n            options: {\n                responsive: true,\n                maintainAspectRatio: false,\n                plugins: {\n                    legend: {\n                        display: false \n                    },\n                    tooltip: {\n                        backgroundColor: 'rgba(17, 24, 39, 0.9)',\n                        titleFont: { size: 14, family: \"'Barlow', 'Segoe UI', sans-serif\" },\n                        bodyFont: { size: 14, family: \"'Barlow', 'Segoe UI', sans-serif\", weight: 'bold' },\n                        padding: 12,\n                        cornerRadius: 8,\n                        displayColors: false,\n                        callbacks: {\n                            label: function(context) {\n                                const rec = staffRecords[context.dataIndex];\n                                return `Bilangan: ${rec.quantity} (${rec.percentage}%)`;\n                            }\n                        }\n                    },\n                    datalabels: {\n                        anchor: 'end',\n                        align: 'top', \/\/ Ubah kedudukan label ke bahagian atas bar\n                        color: '#4b5563', \n                        font: {\n                            weight: '600',\n                            size: 10,\n                            family: \"'Barlow', 'Segoe UI', sans-serif\"\n                        },\n                        formatter: function(value, context) {\n                            const rec = staffRecords[context.dataIndex];\n                            \/\/ Memaparkan data dalam 2 baris agar lebih kemas dan tidak bertindih\n                            return [`${rec.percentage}%`, `(${rec.quantity})`];\n                        }\n                    }\n                },\n                scales: {\n                    x: { \n                        grid: {\n                            display: false, \/\/ Buang grid menegak\n                            drawBorder: false, \n                        },\n                        ticks: {\n                            color: '#6b7280',\n                            font: { family: \"'Barlow', 'Segoe UI', sans-serif\", size: 10 },\n                            autoSkip: false,\n                            maxRotation: 45, \/\/ Condongkan teks 45 darjah\n                            minRotation: 45\n                        }\n                    },\n                    y: { \n                        beginAtZero: true,\n                        grace: '15%', \/\/ Ruang tambahan di bahagian atas carta\n                        grid: {\n                            color: '#f3f4f6', \n                            drawBorder: false\n                        },\n                        ticks: {\n                            color: '#4b5563',\n                            font: { family: \"'Barlow', 'Segoe UI', sans-serif\", size: 12 }\n                        }\n                    }\n                }\n            }\n        });\n    });\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-bcd0983 e-flex e-con-boxed e-con e-parent\" data-id=\"bcd0983\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-c729912 elementor-widget elementor-widget-text-editor\" data-id=\"c729912\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p><em><i>Dikemaskini pada: <strong>31 Julai 2026<\/strong><\/i><\/em><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-46c9361 e-flex e-con-boxed e-con e-parent\" data-id=\"46c9361\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-efd9a6e elementor-widget-divider--view-line elementor-widget elementor-widget-divider\" data-id=\"efd9a6e\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"divider.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-divider\">\n\t\t\t<span class=\"elementor-divider-separator\">\n\t\t\t\t\t\t<\/span>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-40a7999 e-flex e-con-boxed e-con e-parent\" data-id=\"40a7999\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-867b171 elementor-widget elementor-widget-spacer\" data-id=\"867b171\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-spacer\">\n\t\t\t<div class=\"elementor-spacer-inner\"><\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-4899c4b e-grid e-con-boxed e-con e-parent\" data-id=\"4899c4b\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-554c3e0 e-grid e-con-full e-con e-child\" data-id=\"554c3e0\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;gradient&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-aa60693 elementor-widget elementor-widget-counter\" data-id=\"aa60693\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"counter.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-counter\">\n\t\t\t<div class=\"elementor-counter-title\">Pelajar OKU<\/div>\t\t\t<div class=\"elementor-counter-number-wrapper\">\n\t\t\t\t<span class=\"elementor-counter-number-prefix\"><\/span>\n\t\t\t\t<span class=\"elementor-counter-number\" data-duration=\"2000\" data-to-value=\"86\" data-from-value=\"0\" data-delimiter=\",\">0<\/span>\n\t\t\t\t<span class=\"elementor-counter-number-suffix\"><\/span>\n\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-5f03cd1 e-grid e-con-full e-con e-child\" data-id=\"5f03cd1\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;gradient&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-53bd7dc elementor-widget elementor-widget-html\" data-id=\"53bd7dc\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t\n<div class=\"pelajar-oku-chart-wrapper\" style=\"width: 100%; max-width: 900px; margin: 0 auto; background: transparent; font-family: 'Barlow', 'Segoe UI', sans-serif;\">\n    \n    <h3 style=\"text-align: center; color: #1e1e1e; font-size: 1.25rem; font-weight: 400; margin-top: 0; margin-bottom: 24px;\">\n        Senarai Pelajar OKU mengikut Kategori OKU\n    <\/h3>\n    \n\n    <div style=\"position: relative; height: 400px; width: 100%;\">\n        <canvas id=\"pelajarokuVerticalChart\"><\/canvas>\n    <\/div>\n\n<\/div>\n\n\n<script src=\"https:\/\/cdn.jsdelivr.net\/npm\/chart.js@3.9.1\/dist\/chart.min.js\"><\/script>\n<script src=\"https:\/\/cdn.jsdelivr.net\/npm\/chartjs-plugin-datalabels@2.2.0\/dist\/chartjs-plugin-datalabels.min.js\"><\/script>\n\n<script>\n    document.addEventListener(\"DOMContentLoaded\", function() {\n\n        Chart.register(ChartDataLabels);\n\n        const ctx = document.getElementById('pelajarokuVerticalChart').getContext('2d');\n        \n\n        const chartData = [50, 14, 17.4, 14, 3.5, 1.2, 0];\n        \n\n        const chartLabels = [\n            'Kurang Upaya Fizikal',\n            'Kurang Upaya Penglihatan',\n            'Kurang Upaya Pendengaran',\n            'Kurang Upaya Pembelajaran',\n            'Kurang Upaya Mental',\n            'Kurang Upaya Pelbagai',\n            'Kurang Upaya Pertuturan'\n        ];\n\n        new Chart(ctx, {\n            type: 'bar',\n            data: {\n                labels: chartLabels,\n                datasets: [{\n                    label: 'Peratusan (%)',\n                    data: chartData,\n \n                    backgroundColor: '#93003f', \n\n                    hoverBackgroundColor: '#990202',\n\n                    borderRadius: 6,\n                    borderSkipped: false,\n\n                    maxBarThickness: 40\n                }]\n            },\n            options: {\n                indexAxis: 'y', \n                responsive: true,\n                maintainAspectRatio: false,\n                plugins: {\n\n                    legend: {\n                        display: false \n                    },\n\n                    tooltip: {\n                        backgroundColor: 'rgba(17, 24, 39, 0.9)',\n                        titleFont: { size: 13, family: 'inherit' },\n                        bodyFont: { size: 14, family: 'inherit', weight: 'bold' },\n                        padding: 12,\n                        cornerRadius: 8,\n                        displayColors: false,\n                        callbacks: {\n                            label: function(context) {\n                                return context.parsed.x + '%';\n                            }\n                        }\n                    },\n\n                    datalabels: {\n                        anchor: 'end',\n                        align: 'right', \n                        color: '#4b5563', \n                        font: {\n                            weight: '600',\n                            size: 12,\n                            family: 'inherit'\n                        },\n                        formatter: function(value) {\n   \n                            return value > 0 ? value + '%' : '0%'; \n                        }\n                    }\n                },\n                scales: {\n                    x: { \n                        beginAtZero: true,\n                        \/\/ Force the maximum value to be 100%\n                        max: 100, \n                        grid: {\n                            color: '#f3f4f6', \n                            drawBorder: false, \n                        },\n                        ticks: {\n                            color: '#6b7280',\n                            font: { family: 'inherit' },\n                            callback: function(value) {\n                                return value + '%';\n                            }\n                        }\n                    },\n                    y: { \n                        grid: {\n                            display: false, \n                            drawBorder: false\n                        },\n                        ticks: {\n                            color: '#4b5563',\n                            font: { family: 'inherit', size: 12 }\n                        }\n                    }\n                }\n            }\n        });\n    });\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-a6fd394 e-grid e-con-boxed e-con e-parent\" data-id=\"a6fd394\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-1275de4 e-grid e-con-full e-con e-child\" data-id=\"1275de4\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;gradient&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-cbae544 elementor-widget elementor-widget-html\" data-id=\"cbae544\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<div class=\"oku-chart-wrapper\" style=\"width: 100%; max-width: 1000px; margin: 0 auto; background: transparent; padding: 24px; border-radius: 12px; font-family: 'Barlow', 'Segoe UI', sans-serif;\">\n    \n    <h3 style=\"text-align: center; color: #1e1e1e; font-size: 1.25rem; font-weight: 400; margin-top: 0; margin-bottom: 24px;\">\n        Senarai Pelajar OKU mengikut Fakulti\/Institut\n    <\/h3>\n    \n    <!-- Ketinggian dilaraskan ke 550px untuk memberi ruang kepada label paksi X yang condong -->\n    <div style=\"position: relative; height: 550px; width: 100%;\">\n        <canvas id=\"fakultiChart\"><\/canvas>\n    <\/div>\n\n<\/div>\n\n<!-- Memuatkan pustaka Chart.js dan DataLabels -->\n<script src=\"https:\/\/cdn.jsdelivr.net\/npm\/chart.js@3.9.1\/dist\/chart.min.js\"><\/script>\n<script src=\"https:\/\/cdn.jsdelivr.net\/npm\/chartjs-plugin-datalabels@2.2.0\/dist\/chartjs-plugin-datalabels.min.js\"><\/script>\n\n<script>\n    document.addEventListener(\"DOMContentLoaded\", function() {\n\n        Chart.register(ChartDataLabels);\n\n        \/\/ Menetapkan font Barlow secara global untuk carta ini\n        Chart.defaults.font.family = \"'Barlow', 'Segoe UI', sans-serif\";\n\n        const dataPoints = [\n    { \"label\": \"FSSK\", \"quantity\": 15, \"percentage\": 17.4 },\n    { \"label\": \"FST\", \"quantity\": 4, \"percentage\": 4.7 },\n    { \"label\": \"FEP\", \"quantity\": 4, \"percentage\": 4.7 },\n    { \"label\": \"Fakulti Farmasi\", \"quantity\": 0, \"percentage\": 0.0 },\n    { \"label\": \"FPI\", \"quantity\": 7, \"percentage\": 8.1 },\n    { \"label\": \"FSK\", \"quantity\": 1, \"percentage\": 1.2 },\n    { \"label\": \"FKAB\", \"quantity\": 7, \"percentage\": 8.1 },\n    { \"label\": \"FUU\", \"quantity\": 5, \"percentage\": 5.8 },\n    { \"label\": \"FGG\", \"quantity\": 0, \"percentage\": 0.0 },\n    { \"label\": \"FPEND\", \"quantity\": 28, \"percentage\": 32.6 },\n    { \"label\": \"FPER\", \"quantity\": 3, \"percentage\": 3.5 },\n    { \"label\": \"FTSM\", \"quantity\": 7, \"percentage\": 8.1 },\n    { \"label\": \"CITRA\", \"quantity\": 1, \"percentage\": 1.2 },\n    { \"label\": \"UKM-GSB\", \"quantity\": 1, \"percentage\": 1.2 },\n    { \"label\": \"SELFUEL\", \"quantity\": 2, \"percentage\": 2.3 },\n    { \"label\": \"IMEN\", \"quantity\": 1, \"percentage\": 1.2 },\n    { \"label\": \"ATMA\", \"quantity\": 0, \"percentage\": 0.0 }\n];\n\n        \/\/ Menyusun data (menaik berdasarkan bilangan)\n        dataPoints.sort((a, b) => a.quantity - b.quantity);\n\n        \/\/ Fungsi penjanaan warna asal dikekalkan\n        const generateColors = (count) => {\n            const colors = [];\n            for (let i = 0; i < count; i++) {\n                const hue = (i * 360 \/ count) % 360; \n                colors.push(`hsl(${hue}, 70%, 50%)`);\n            }\n            return colors;\n        };\n\n        const colors = generateColors(dataPoints.length);\n        const ctx = document.getElementById('fakultiChart').getContext('2d');\n\n        new Chart(ctx, {\n            type: 'bar', \/\/ Carta Bar Menegak\n            data: {\n                labels: dataPoints.map(dp => dp.label),\n                datasets: [{\n                    label: 'Bilangan',\n                    data: dataPoints.map(dp => dp.quantity),\n                    \n                    backgroundColor: colors, \n                    \n                    \/\/ Radius dan style sepadan dengan design sistem\n                    borderRadius: 6,\n                    borderSkipped: false,\n                    maxBarThickness: 40 \n                }]\n            },\n            options: {\n                responsive: true,\n                maintainAspectRatio: false,\n                plugins: {\n                    legend: {\n                        display: false \n                    },\n                    tooltip: {\n                        backgroundColor: 'rgba(17, 24, 39, 0.9)',\n                        titleFont: { size: 14, family: \"'Barlow', 'Segoe UI', sans-serif\" },\n                        bodyFont: { size: 14, family: \"'Barlow', 'Segoe UI', sans-serif\", weight: 'bold' },\n                        padding: 12,\n                        cornerRadius: 8,\n                        displayColors: false,\n                        callbacks: {\n                            label: function(context) {\n                                const dp = dataPoints[context.dataIndex];\n                                return `Bilangan: ${dp.quantity} (${dp.percentage}%)`;\n                            }\n                        }\n                    },\n                    datalabels: {\n                        anchor: 'end',\n                        align: 'top', \n                        color: '#4b5563', \n                        font: {\n                            weight: '600',\n                            size: 10,\n                            family: \"'Barlow', 'Segoe UI', sans-serif\"\n                        },\n                        formatter: function(value, context) {\n                            const dp = dataPoints[context.dataIndex];\n                            \/\/ Memaparkan peratusan (atas) & bilangan (bawah)\n                            return [`${dp.percentage}%`, `(${dp.quantity})`];\n                        }\n                    }\n                },\n                scales: {\n                    x: { \n                        grid: {\n                            display: false, \n                            drawBorder: false, \n                        },\n                        ticks: {\n                            color: '#6b7280',\n                            font: { family: \"'Barlow', 'Segoe UI', sans-serif\", size: 10 },\n                            autoSkip: false,\n                            maxRotation: 45, \/\/ Teks condong\n                            minRotation: 45\n                        }\n                    },\n                    y: { \n                        beginAtZero: true,\n                        grace: '15%', \/\/ Tambahan ruang di atas carta\n                        grid: {\n                            color: '#f3f4f6', \n                            drawBorder: false\n                        },\n                        ticks: {\n                            color: '#4b5563',\n                            font: { family: \"'Barlow', 'Segoe UI', sans-serif\", size: 12 }\n                        }\n                    }\n                }\n            }\n        });\n    });\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-18a99e8 e-grid e-con-full e-con e-child\" data-id=\"18a99e8\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;gradient&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-16e431e elementor-widget elementor-widget-html\" data-id=\"16e431e\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<div class=\"oku-chart-wrapper\" style=\"width: 100%; max-width: 900px; margin: 0 auto; background: transparent; padding: 24px; border-radius: 12px; font-family: 'Barlow', 'Segoe UI', sans-serif;\">\n    \n    <h3 style=\"text-align: center; color: #1e1e1e; font-size: 1.25rem; font-weight: 400; margin-top: 0; margin-bottom: 24px;\">\n        Senarai Pelajar OKU mengikut Tahap Pengajian\n    <\/h3>\n    \n    <div style=\"position: relative; height: 400px; width: 100%;\">\n        <canvas id=\"tahapPengajianChart\"><\/canvas>\n    <\/div>\n\n<\/div>\n\n<!-- Pastikan fail Chart.js dan DataLabels ini dimuatkan jika belum ada -->\n<script src=\"https:\/\/cdn.jsdelivr.net\/npm\/chart.js@3.9.1\/dist\/chart.min.js\"><\/script>\n<script src=\"https:\/\/cdn.jsdelivr.net\/npm\/chartjs-plugin-datalabels@2.2.0\/dist\/chartjs-plugin-datalabels.min.js\"><\/script>\n\n<script>\n    document.addEventListener(\"DOMContentLoaded\", function() {\n\n        Chart.register(ChartDataLabels);\n\n        const ctx = document.getElementById('tahapPengajianChart').getContext('2d');\n        \n        \/\/ Data peratusan dari gambar rujukan\n        const chartData = [46.5, 24.4, 16.3, 11.6, 1.2, 0];\n        \n        \/\/ Kategori tahap pengajian\n        const chartLabels = [\n            'Ijazah Sarjana Muda',\n            'Sarjana',\n            'Doktor Falsafah (PhD)',\n            'Diploma Lepasan Ijazah',\n            'Ijazah Doktor Perubatan',\n            'Diploma Pascasiswazah'\n        ];\n\n        new Chart(ctx, {\n            type: 'bar',\n            data: {\n                labels: chartLabels,\n                datasets: [{\n                    label: 'Peratusan (%)',\n                    data: chartData,\n                    \n                    \/\/ Warna kelabu gelap sepadan dengan gambar rujukan\n                    backgroundColor: '#52525B', \n                    hoverBackgroundColor: '#3F3F46',\n\n                    borderRadius: 6,\n                    borderSkipped: false,\n                    maxBarThickness: 40\n                }]\n            },\n            options: {\n                indexAxis: 'y', \n                responsive: true,\n                maintainAspectRatio: false,\n                plugins: {\n                    legend: {\n                        display: false \n                    },\n                    tooltip: {\n                        backgroundColor: 'rgba(17, 24, 39, 0.9)',\n                        titleFont: { size: 18, family: 'inherit' },\n                        bodyFont: { size: 14, family: 'inherit', weight: 'bold' },\n                        padding: 12,\n                        cornerRadius: 8,\n                        displayColors: false,\n                        callbacks: {\n                            label: function(context) {\n                                return context.parsed.x + '%';\n                            }\n                        }\n                    },\n                    datalabels: {\n                        anchor: 'end',\n                        align: 'right', \n                        color: '#4b5563', \n                        font: {\n                            weight: '600',\n                            size: 12,\n                            family: 'inherit'\n                        },\n                        formatter: function(value) {\n                            return value > 0 ? value + '%' : '0%'; \n                        }\n                    }\n                },\n                scales: {\n                    x: { \n                        beginAtZero: true,\n                        max: 100, \n                        grid: {\n                            color: '#f3f4f6', \n                            drawBorder: false, \n                        },\n                        ticks: {\n                            color: '#6b7280',\n                            font: { family: 'inherit' },\n                            callback: function(value) {\n                                return value + '%';\n                            }\n                        }\n                    },\n                    y: { \n                        grid: {\n                            display: false, \n                            drawBorder: false\n                        },\n                        ticks: {\n                            color: '#4b5563',\n                            font: { family: 'inherit', size: 12 }\n                        }\n                    }\n                }\n            }\n        });\n    });\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-37a58e7 e-flex e-con-boxed e-con e-parent\" data-id=\"37a58e7\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-db5d7f3 elementor-widget elementor-widget-text-editor\" data-id=\"db5d7f3\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p><em><i>Dikemaskini pada: <strong>31 J<\/strong><strong>ulai 2026<\/strong><\/i><\/em><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Staf OKU 0 Senarai Staf OKU mengikut Kategori OKU Senarai Staf OKU mengikut Kategori Kampus Senarai Staf OKU mengikut Kategori Kumpulan Perkhidmatan Senarai Staf OKU<a class=\"ut-readmore\" href=\"https:\/\/www.ukm.my\/upsoku\/utama\/statistik-warga-oku-ukm\/\"> &#8230;<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":26,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-191","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.ukm.my\/upsoku\/wp-json\/wp\/v2\/pages\/191","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.ukm.my\/upsoku\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.ukm.my\/upsoku\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.ukm.my\/upsoku\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.ukm.my\/upsoku\/wp-json\/wp\/v2\/comments?post=191"}],"version-history":[{"count":10,"href":"https:\/\/www.ukm.my\/upsoku\/wp-json\/wp\/v2\/pages\/191\/revisions"}],"predecessor-version":[{"id":351,"href":"https:\/\/www.ukm.my\/upsoku\/wp-json\/wp\/v2\/pages\/191\/revisions\/351"}],"up":[{"embeddable":true,"href":"https:\/\/www.ukm.my\/upsoku\/wp-json\/wp\/v2\/pages\/26"}],"wp:attachment":[{"href":"https:\/\/www.ukm.my\/upsoku\/wp-json\/wp\/v2\/media?parent=191"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}