<!-- <script src="/admin/app-assets/vendors/js/forms/select/select2.full.min.js"></script>
<script src="/admin/app-assets/js/scripts/forms/select/form-select2.js"></script> -->
<%- include('../includes/truncateText.ejs') %>
    <script>
        let lang = "<%=filterData.lang%>",
            link = "<%=filterData.url%>";

        $(document).on('click', '.show_filter', function () {
            $('.filter_div').fadeToggle(200);
        });

        var $list = $(":input[type='date']");
        $(window).on('load', function () {
            if ($($list).length > 0) {
                $(document).find($list).addClass("custom-input-date");
                $(document).find($list).parents(".controls").addClass("parent-input-date");
            }

            var startLength = $('#start').length;
            var endLength = $('#start').length;

            if (startLength > 0 && endLength > 0) {
                var start = flatpickr(document.querySelector('#start'), {
                    wrap: true, disableMobile: true, locale: lang, dateFormat: "m-d-Y",
                    onChange: function (_, dateStr) { end.set('minDate', dateStr); }
                });
                var end = flatpickr(document.querySelector('#end'), {
                    wrap: true, disableMobile: true, locale: lang, dateFormat: "m-d-Y",
                    onChange: function (_, dateStr) { start.set('maxDate', dateStr); }
                });
            }
        });

        $(document).ready(function () {
            var $startDate = $('#startDate');
            var $endDate = $('#endDate');

            $startDate.on('change', function () {
                var startDateValue = $(this).val();
                $endDate.val('');
                if (startDateValue) $endDate.attr('min', startDateValue);
                else $endDate.removeAttr('min');
            });
            $endDate.on('change', function () { });
        });

        $(".btn-searchTable").on("click", function (e) {
            e.stopPropagation();
            $(this).toggleClass("active");
            if ($(this).hasClass("active")) $(".searchTable , .layout_").addClass("active");
            else $(".searchTable , .layout_").removeClass("active");
        });

        $(".btnClose").on("click", function () { $(".searchTable , .layout_").removeClass("active"); });
        $(".layout_").on("click", function () { $(".btn-searchTable.active").click(); });

        function searchArray() {
            var searchArray = {};
            $('.search-input').each(function () {
                var value = $(this).val();
                if (value !== null) searchArray[$(this).attr('name')] = value.trim();
            });
            return searchArray;
        }

        $(document).on('change', '.search-input', function (e) {
            e.preventDefault();
            filterData(searchArray());
        });

        /* دمج الهاندلرين المكررين في واحد */
        $(document).on('click', '.reloadTable', function (e) {
            e.preventDefault();
            $('.delete_all_button').hide();
            $('.search-input').val(null);
            const minValue = $('#minValue').text();
            const maxValue = $('#maxValue').text();
            $('#minRange').val(minValue);
            $('#maxRange').val(maxValue);
            filterData(searchArray(), true);
        });

        $(document).on('change', '#minRange, #maxRange', function () {
            filterData(searchArray());
        });

        $('.clean-input').on('click', function () {
            $(this).siblings('input').val(null);
            $(this).siblings('select').val(null);
            filterData(searchArray());
        });

        let selectedCity = '';
        $(document).on('change', '#CitySelect', function () {
            const districtsDropdown = document.getElementById('DistrictSelect');
            const chooseOption = document.createElement('option');
            districtsDropdown.innerHTML = '';
            chooseOption.value = '';
            chooseOption.text = '<%= i18n.__("common.choose") %>';
            districtsDropdown.appendChild(chooseOption);
            selectedCity = $(this).val();
        });

        let selectedVillage = '';
        $(document).on('change', '#VillageSelect', function () { selectedVillage = $(this).val(); });

        function smartPatch(html) {
            var $html = $(html);

            // 1) إن رجع سكشن كامل: احفظ الهيدر الحالي واستبدل الجسم (عشان زر التحديث يفضل)
            var $incomingSection = $html.filter('#data-list-view');
            if (!$incomingSection.length) $incomingSection = $html.find('#data-list-view');

            if ($incomingSection.length && $('#data-list-view').length) {
                var $header = $('#data-list-view .card-header').first().clone(true, true);
                var $body = $incomingSection.children().not('.card-header');
                var $target = $('#data-list-view');
                $target.empty();
                if ($header.length) $target.append($header);
                $target.append($body);
                return;
            }

            // 2) إن رجع card-datatable wrapper
            var $incomingWrap = $html.filter('.table_content_append');
            if (!$incomingWrap.length) $incomingWrap = $html.find('.table_content_append');
            if ($incomingWrap.length && $('.table_content_append').length) {
                $('.table_content_append').first().html($incomingWrap.first().html());
                return;
            }

            // 3) إن رجع table-responsive (زي بعض صفحاتك)
            var $incomingTable = $html.filter('.table-responsive');
            if (!$incomingTable.length) $incomingTable = $html.find('.table-responsive');
            if ($incomingTable.length) {
                var $cur = $('#data-list-view .table-responsive').first();
                if ($cur.length) $cur.replaceWith($incomingTable.first());
                else $('#data-list-view').append($incomingTable.first());
                return;
            }

            // 4) إن رجع tbody/rows فقط
            var $incomingTbody = $html.filter('tbody');
            if (!$incomingTbody.length) $incomingTbody = $html.find('tbody');
            if ($incomingTbody.length && $('.data-list-view tbody').length) {
                $('.data-list-view tbody').first().replaceWith($incomingTbody.first());
                return;
            }

            // 5) Fallback: لو كله فشل، حط اللي رجع جوه أول .table-responsive
            const container = $('.table-responsive').first();
            if (container.length) container.empty().html(html);
        }

        function filterData(params, refresh = "") {
            const data = new URLSearchParams(params);
            let city = params.city || "";

            link = link.replace(/&amp;/g, "&");

            let url = link.includes("?") ? `${link}&${data}` : `${link}?${data}`;
            if (data.size === 0) url = link;

            if (city !== selectedCity) {
                url = url.replace(/(village=)[^&]*/, '$1undefined').replace(/(district=)[^&]*/, '$1undefined');
            }
            if (refresh) {
                url = link.includes("?") ? `${link}&refresh=true` : `${link}?refresh=true`;
            }

            $.ajax({
                type: 'GET',
                url,
                beforeSend: function () { ajaxLoading(true); },
                success: function (html) {
                    ajaxLoading(false);

                    if (/\/dashboard\/notifications/i.test(url)) {
                        var $html = $(html);

                        var $incomingSection = $html.filter('#data-list-view');
                        if (!$incomingSection.length) $incomingSection = $html.find('#data-list-view');

                        if ($incomingSection.length && $('#data-list-view').length) {
                            var $header = $('#data-list-view .card-header').first().clone(true, true);
                            var $body = $incomingSection.children().not('.card-header');
                            var $target = $('#data-list-view');
                            $target.empty();
                            if ($header.length) $target.append($header);
                            $target.append($body);
                        } else {
                            var $incomingWrap = $html.filter('.table_content_append');
                            if (!$incomingWrap.length) $incomingWrap = $html.find('.table_content_append');

                            if ($incomingWrap.length && $('.table_content_append').length) {
                                $('.table_content_append').first().html($incomingWrap.first().html());
                            } else {
                                var $incomingTable = $html.filter('.table-responsive');
                                if (!$incomingTable.length) $incomingTable = $html.find('.table-responsive');

                                if ($incomingTable.length) {
                                    var $cur = $('#data-list-view .table-responsive').first();
                                    if ($cur.length) $cur.replaceWith($incomingTable.first());
                                    else $('#data-list-view').append($incomingTable.first());
                                } else {
                                    var $incomingTbody = $html.filter('tbody');
                                    if (!$incomingTbody.length) $incomingTbody = $html.find('tbody');
                                    if ($incomingTbody.length && $('.data-list-view tbody').length) {
                                        $('.data-list-view tbody').first().replaceWith($incomingTbody.first());
                                    } else {
                                        const container = $('#data-list-view .table-responsive').first();
                                        if (container.length) container.empty().html(html);
                                    }
                                }
                            }
                        }

                        if (!refresh) $('.pagination').hide();

                        var parts = (url || '').split("/");
                        if (parts.includes("infoServices") || parts.includes("infoSliders") || parts.includes("intros") || parts.includes("reports")) {
                            truncateText('.longText', 60);
                        }
                        return;
                    }

                    const container = $('.table_content_append').first();
                    if (container.length) {
                        container.html(html);
                    }

                    if (!refresh) {
                        $('.pagination').hide();
                    }

                    url = url.split("/");
                    if (url.includes("infoServices") || url.includes("infoSliders") || url.includes("intros") || url.includes("reports")) {
                        truncateText('.longText', 60);
                    }
                },

                error: function (error) {
                    Swal.fire({
                        icon: 'error',
                        title: `${error?.responseJSON?.message || error.responseJSON || error.message}`,
                        showConfirmButton: false,
                        timer: 1500
                    });
                    ajaxLoading(false);
                    console.error('Error:', error);
                }
            });
        }
    </script>
