/**
 * KNSDDRules - Dinamik Kural Limit Kontrolü
 * 
 * Bu kod, kural tablosunu izler ve satır sayısı değiştiğinde
 * limit kontrolünü otomatik olarak günceller.
 */
jQuery(document).ready(function ($) {
    'use strict';

    // Kural sayfasında değilsek çık
    if (typeof knsdd_data === 'undefined' || knsdd_data.page !== 'rules') {
        return;
    }

    // Limit kontrolünü güncelleyen fonksiyonun hazır olmasını bekle
    const waitForUpdateFunction = () => {
        if (typeof window.updateRuleLimitStatus === 'function') {
            initRuleLimitObserver();
        } else {
            setTimeout(waitForUpdateFunction, 100);
        }
    };

    const initRuleLimitObserver = () => {
        const $rulesTbody = $('#knsdd-rules-tbody');

        if ($rulesTbody.length === 0) {
            return;
        }

        // MutationObserver: Tablo satırları değiştiğinde tetiklenir
        const observer = new MutationObserver(function (mutations) {
            let rowsChanged = false;

            mutations.forEach(function (mutation) {
                if (mutation.type === 'childList') {
                    if (mutation.addedNodes.length > 0 || mutation.removedNodes.length > 0) {
                        mutation.addedNodes.forEach(function (node) {
                            if (node.nodeType === 1 && node.tagName === 'TR') {
                                rowsChanged = true;
                            }
                        });
                        mutation.removedNodes.forEach(function (node) {
                            if (node.nodeType === 1 && node.tagName === 'TR') {
                                rowsChanged = true;
                            }
                        });
                    }
                }
            });

            if (rowsChanged && typeof window.updateRuleLimitStatus === 'function') {
                setTimeout(function () {
                    window.updateRuleLimitStatus();
                }, 50);
            }
        });

        observer.observe($rulesTbody[0], {
            childList: true,
            subtree: false
        });
    };

    waitForUpdateFunction();
});
