<style>
    /* ========================================================
       1. CSS CORE RESPONSIVE (ANTI HALAMAN JEBOL)
       ======================================================== */
    body, html {
        overflow-x: hidden !important;
        width: 100%;
        max-width: 100vw;
    }

    @media (max-width: 991.98px) {
        #layoutSidenav_content {
            padding-left: 0 !important;
            margin-left: 0 !important;
            width: 100% !important;
            max-width: 100vw !important;
        }
        .container-fluid {
            padding-left: 10px !important;
            padding-right: 10px !important;
        }
    }

    #layoutSidenav_content {
        width: 100%;
        max-width: 100vw;
        overflow-x: hidden !important;
    }

    /* Memaksa Tabel agar menyesuaikan layar */
    table, table.dataTable {
        min-width: 0 !important;
        width: 100% !important;
        border-collapse: collapse !important;
    }

    .card {
        width: 100% !important;
        max-width: 100% !important;
        min-width: 0 !important;
        overflow-x: hidden; 
    }

    /* Scroll Horizontal Halus untuk Tabel di HP */
    .table-responsive {
        width: 100% !important;
        max-width: 100% !important;
        overflow-x: auto !important;
        -webkit-overflow-scrolling: touch;
        border: none;
    }

    /* ========================================================
       2. STYLING KOTAK FILTER & TOMBOL
       ======================================================== */
    .filter-wrapper {
        background-color: #f8f9fa;
        border-radius: 8px;
        padding: 15px;
        box-shadow: 0 2px 4px rgba(0,0,0,0.05);
    }

    /* Responsif Form */
    @media (max-width: 768px) {
        .filter-wrapper .form-group { margin-bottom: 12px; }
        .btn-group-custom { display: flex; flex-direction: column; gap: 10px; width: 100%; margin-top: 10px; }
        .btn-group-custom button { width: 100%; margin-left: 0 !important;}
        div.dataTables_wrapper div.dataTables_filter input { width: 140px !important; }
    }

    @media (min-width: 769px) {
        .btn-group-custom { display: flex; gap: 10px; align-items: flex-end; height: 100%; padding-bottom: 2px; }
    }
</style>

<div id="layoutSidenav_content">
    <main>
        <div class="container-fluid px-3 px-md-4 overflow-hidden">
            <h1 class="mt-4 fs-3" id="judulPasien">Data Waktu Serah Resep</h1>
            <ol class="breadcrumb mb-4 shadow-sm bg-white p-2 rounded">
                <li class="breadcrumb-item"><a href="index.html" class="text-decoration-none text-muted">Dashboard</a></li>
                <li class="breadcrumb-item active">Tampil Data Waktu Serah Resep Pasien</li>
            </ol>
            
            <div class="card mb-4 border-0 shadow-sm">
                <div class="card-body filter-wrapper">
                    <form id="filterForm">
                        <div class="row g-2 align-items-end">
                            <div class="col-12 col-md-3 col-lg-2">
                                <label for="tanggal_awal" class="form-label text-muted small fw-bold mb-1">Tanggal Awal</label>
                                <input type="date" id="tanggal_awal" name="tanggal_awal" class="form-control" value="<?= $tgl_awal ?>" required />
                            </div>
                            <div class="col-12 col-md-3 col-lg-2">
                                <label for="tanggal_akhir" class="form-label text-muted small fw-bold mb-1">Tanggal Akhir</label>
                                <input type="date" id="tanggal_akhir" name="tanggal_akhir" class="form-control" value="<?= $tgl_akhir ?>" required />
                            </div>
                            <div class="col-12 col-md-6 col-lg-8">
                                <div class="btn-group-custom mt-3 mt-md-0">
                                    <button type="submit" class="btn btn-primary px-4 shadow-sm"><i class="fas fa-search me-1"></i> Filter</button>
                                    <button type="button" id="downloadButton" class="btn btn-success px-4 shadow-sm" style="display: none;"><i class="fas fa-file-excel me-1"></i> Download Excel</button>
                                </div>
                            </div>
                        </div>
                    </form>
                </div>
            </div>

            <div class="row mb-4" id="grafikContainer" style="display: none;">
                <div class="col-md-12">
                    <div class="card shadow-sm border-0 border-top border-primary border-4">
                        <div class="card-header bg-white font-weight-bold pt-3 pb-2">
                            <i class="fas fa-chart-bar me-1 text-primary"></i> Grafik Rata-Rata Total Waktu Serah Per-Jam
                        </div>
                        <div class="card-body">
                            <div style="position: relative; height: 350px; width: 100%; max-width:100%;">
                                <canvas id="waktuSerahChart"></canvas>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

            <div class="card border-0 shadow-sm mb-5">
                <div class="card-body p-2 p-md-3">
                    <div id="result">
                        <div id="loadingIcon" style="display: none;" class="py-5 text-center">
                            <img src="<?= base_url('assets_/assets/img/loading-new.gif') ?>" alt="Loading..." style="width: 50px;" />
                            <p class="mt-2 text-muted small fw-bold">Mengambil Data...</p>
                        </div>
                        <div id="tableContainer" style="display: none;">
                            </div>
                    </div>
                </div>
            </div>

        </div>
    </main>

    <footer class="py-4 bg-light mt-auto border-top">
        <div class="container-fluid px-4">
            <div class="d-flex align-items-center justify-content-between small text-muted">
                <div>Copyright &copy; IT RSU Ananda Purwokerto 2024</div>
                <div class="d-none d-md-block">
                    <a href="#" class="text-decoration-none text-muted">Privacy Policy</a>
                    &middot;
                    <a href="#" class="text-decoration-none text-muted">Terms &amp; Conditions</a>
                </div>
            </div>
        </div>
    </footer>
</div>

<script src="https://cdn.datatables.net/1.13.4/js/jquery.dataTables.min.js"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.13/css/select2.min.css" rel="stylesheet" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.13/js/select2.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
<script src="https://cdn.jsdelivr.net/npm/chartjs-plugin-datalabels@2.0.0"></script>
<script src="https://cdn.jsdelivr.net/npm/sweetalert2@11"></script>

<script>
    // =========================================================
    // FUNGSI RENDER GRAFIK WAKTU SERAH (BERDASARKAN JUMLAH PASIEN)
    // =========================================================
    Chart.register(ChartDataLabels);
    let chartWaktuSerah = null;

    function renderGrafikWaktuSerah(labels, dataRacikan, dataNonRacikan, waktuRacikan, waktuNonRacikan) {
        const ctx = document.getElementById('waktuSerahChart');
        if(!ctx) return;

        if(chartWaktuSerah) {
            chartWaktuSerah.destroy();
        }

        chartWaktuSerah = new Chart(ctx, {
            type: 'bar',
            data: {
                labels: labels, 
                datasets: [
                    { 
                        label: 'NON-RACIKAN', 
                        data: dataNonRacikan,           
                        waktuTotal: waktuNonRacikan,    
                        backgroundColor: '#198754', 
                        borderRadius: 4 
                    },
                    { 
                        label: 'RACIKAN', 
                        data: dataRacikan,              
                        waktuTotal: waktuRacikan,       
                        backgroundColor: '#dc3545', 
                        borderRadius: 4 
                    }
                ]
            },
            options: { 
                responsive: true, 
                maintainAspectRatio: false,
                plugins: {
                    legend: { position: 'top' },
                    
                    tooltip: {
                        callbacks: {
                            label: function(context) {
                                let label = context.dataset.label || '';
                                let jmlPasien = context.parsed.y || 0; 
                                let rataWaktu = context.dataset.waktuTotal[context.dataIndex] || 0; 
                                return label + ': ' + jmlPasien + ' Pasien (Waktu: ' + rataWaktu + ' Menit)';
                            }
                        }
                    },

                    datalabels: {
                        color: '#444', 
                        anchor: 'end', 
                        align: 'top', 
                        offset: 4,
                        textAlign: 'center',
                        font: { weight: 'bold', size: 10 },
                        formatter: (value, ctx) => { 
                            if(value > 0) {
                                let rataWaktu = ctx.dataset.waktuTotal[ctx.dataIndex] || 0;
                                return value + ' px\n(' + rataWaktu + ' mnt)';
                            }
                            return ''; 
                        }
                    }
                },
                scales: {
                    x: { grid: { display: false } },
                    y: { 
                        beginAtZero: true, 
                        grace: '15%',
                        ticks: {
                            precision: 0 
                        }
                    } 
                }
            }
        });
    }

    $(document).ready(function() {
        $('#filterForm').on('submit', function(event) {
            event.preventDefault(); 
            $('#loadingIcon').show(); 
            $('#tableContainer').hide(); 
            $('#grafikContainer').hide(); 

            let tglAwal = $('#tanggal_awal').val();
            let tglAkhir = $('#tanggal_akhir').val();

            // ===============================================================
            // 1. AJAX UNTUK MENGAMBIL DATA GRAFIK
            // ===============================================================
            $.ajax({
                url: '<?= base_url("farmasi/tampilgrafik") ?>',
                type: 'POST',
                data: {
                    TANGGAL_AWAL: tglAwal,
                    TANGGAL_AKHIR: tglAkhir
                },
                dataType: 'json',
                success: function(res) {
                    let dataGrafik = res.response ? res.response : res;

                    if(dataGrafik && Array.isArray(dataGrafik) && dataGrafik.length > 0) {
                        $('#grafikContainer').show();
                        
                        let labelJam = [];
                        let dataRacikan = [];
                        let dataNonRacikan = [];
                        let waktuRacikan = [];
                        let waktuNonRacikan = [];

                        let uniqueBuckets = [...new Set(dataGrafik.map(item => item.bucket_jam))];
                        labelJam = uniqueBuckets.sort();

                        labelJam.forEach(jam => {
                            let findRacikan = dataGrafik.find(i => i.bucket_jam === jam && i.resep === 'RACIKAN');
                            let findNonRacikan = dataGrafik.find(i => i.bucket_jam === jam && i.resep === 'NON-RACIKAN');

                            dataRacikan.push(findRacikan ? parseInt(findRacikan.jumlah_pasien) : 0);
                            dataNonRacikan.push(findNonRacikan ? parseInt(findNonRacikan.jumlah_pasien) : 0);
                            waktuRacikan.push(findRacikan ? parseFloat(findRacikan.rata_total) : 0);
                            waktuNonRacikan.push(findNonRacikan ? parseFloat(findNonRacikan.rata_total) : 0);
                        });

                        renderGrafikWaktuSerah(labelJam, dataRacikan, dataNonRacikan, waktuRacikan, waktuNonRacikan);
                    }
                },
                error: function(err) {
                    console.error("Gagal memuat data grafik:", err);
                }
            });

            // ===============================================================
            // 2. AJAX UNTUK MENGAMBIL DATA TABEL
            // ===============================================================
            $.ajax({
                url: '<?= base_url("farmasi/tampilwaktuserah") ?>',
                type: 'POST',
                data: {
                    TANGGAL_AWAL: tglAwal,
                    TANGGAL_AKHIR: tglAkhir
                },
                success: function(response) {
                    $('#loadingIcon').hide(); 

                    try {
                        const data = JSON.parse(response); 

                        if (data && Array.isArray(data.response)) {
                            const list = data.response;

                            if ($.fn.DataTable.isDataTable('#datatablesSimple')) {
                                $('#datatablesSimple').DataTable().destroy();
                            }

                            if (list.length > 0) {
                                // PERBAIKAN: Bungkus tabel dengan div responsive & class text-nowrap
                                let html = `
                                <div class="table-responsive w-100">
                                    <table id="datatablesSimple" class="table table-striped table-hover table-bordered text-nowrap w-100">
                                        <thead class="table-dark">
                                            <tr>
                                                <th>Kode Registrasi</th>
                                                <th>Nama Pasien</th>
                                                <th>Waktu Kirim E-resep Dokter</th>
                                                <th>Nama Dokter</th>
                                                <th>Waktu Scan E-Resep Farmasi</th>
                                                <th>Nama Poli</th>
                                                <th class="text-center">Serah</th>
                                                <th>Nama Resep</th>
                                            </tr>
                                        </thead>
                                    <tbody>`;

                                list.forEach(item => {
                                    html += `<tr>
                                        <td class="fw-bold">${item.kd_registrasi}</td>
                                        <td>${item.nm_pasien}</td>
                                        <td>${item.tgl_resep}</td>
                                        <td>${item.nm_dokter}</td>
                                        <td>${item.scan}</td>
                                        <td>${item.nm_poliklinik}</td>
                                        <td class="text-center fw-bold">${item.serah}</td>
                                        <td class="text-wrap" style="min-width: 200px;">${item.resep}</td>
                                    </tr>`;
                                });
                                html += '</tbody></table></div>';
                                
                                $('#tableContainer').html(html).show(); 

                                // INISIALISASI DATATABLES KHUSUS HP (scrollX: false)
                                $('#datatablesSimple').DataTable({
                                    responsive: false,
                                    scrollX: false, 
                                    autoWidth: false,
                                    columnDefs: [{
                                        targets: 1, 
                                        type: "date"
                                    }],
                                    order: [[2, "asc"]],
                                    dom: '<"row"<"col-sm-12 col-md-6"l><"col-sm-12 col-md-6"f>>' +
                                         '<"row"<"col-sm-12"tr>>' +
                                         '<"row"<"col-sm-12 col-md-5"i><"col-sm-12 col-md-7"p>>',
                                    language: {
                                        search: "Cari Data:",
                                        lengthMenu: "Tampil _MENU_"
                                    }
                                });

                                $('#downloadButton').fadeIn();
                            } else {
                                $('#tableContainer').html('<div class="alert alert-info text-center m-3 small"><i class="fas fa-info-circle me-1"></i> Tidak ada data yang ditemukan.</div>').show();
                                $('#downloadButton').hide(); 
                            }
                        } else {
                            $('#tableContainer').html('<div class="alert alert-warning text-center m-3 small">Respons data kosong atau format salah.</div>').show();
                            $('#downloadButton').hide(); 
                        }

                        history.replaceState(null, '', '<?= base_url("farmasi/tampilwaktuserah") ?>');
                    } catch (e) {
                        console.error("Error parsing JSON: ", e);
                        $('#tableContainer').html('<div class="alert alert-danger text-center m-3 small">Terjadi kesalahan format data dari server.</div>').show();
                        $('#downloadButton').hide(); 
                    }
                },
                error: function(xhr, status, error) {
                    $('#loadingIcon').hide(); 
                    console.error("AJAX Error: ", error);
                    $('#tableContainer').html('<div class="alert alert-danger text-center m-3 small"><i class="fas fa-exclamation-triangle me-1"></i> Gagal terhubung ke server. Silakan coba lagi.</div>').show();
                }
            });
        });

        // Event untuk tombol download
        $('#downloadButton').on('click', function() {
            const tanggalAwal = $('#tanggal_awal').val();
            const tanggalAkhir = $('#tanggal_akhir').val();
            window.location.href = `<?= base_url("farmasi/unduhwaktuserah") ?>?TANGGAL_AWAL=${tanggalAwal}&TANGGAL_AKHIR=${tanggalAkhir}`;
        });
    });
</script>