[Snippet} Package is over

Hi guys, i would like to share my custom snippet with you if you use packages.

It is for backend users.

Package will be disabled and text color became red if you reach to end point. For example 10/10.

Add it with custom snippets plugins such as Fluent Snippets

(function() {
    function updatePackageOptions(selectEl) {
        for (let i = 0; i < selectEl.options.length; i++) {
            let option = selectEl.options[i];
            // Önce mevcut "- ..." kısmını temizle
          let text = option.text.replace(/ - (Left|Package is over|Overdose):?.*$/, '');
            
            let m = text.match(/\((\d+)\/(\d+)\)$/);
            if (m) {
                let used = parseInt(m[1], 10);
                let total = parseInt(m[2], 10);
                
                if (used > total) {
                    // Paket aşımı
                    option.text = text + ' - Paket Aşımı';
                    option.style.color = 'purple'; // mor renk
                    option.disabled = true; // seçim kapalı
                } else if (used === total) {
                    // Paket bitti
                    option.text = text + ' - Paket bitti';
                    option.style.color = 'red';
                    option.disabled = true; // seçim kapalı
                } else {
                    // Paket mevcut
                    option.text = text + ' - Kalan seans: ' + (total - used);
                    option.style.color = 'green';
                    option.disabled = false; // seçim açık
                }
            } else {
                option.style.color = '';
                option.disabled = false;
            }
        }
    }

    function initDropdown(selectEl) {
        updatePackageOptions(selectEl);
        selectEl.addEventListener('change', function() {
            updatePackageOptions(selectEl);
        });
    }

    function initAllDropdowns() {
        var selects = document.querySelectorAll('#bookly-attach-package');
        selects.forEach(function(selectEl) {
            initDropdown(selectEl);
        });
    }

    document.addEventListener('DOMContentLoaded', initAllDropdowns);

    var observer = new MutationObserver(function(mutations) {
        mutations.forEach(function(m) {
            m.addedNodes.forEach(function(node) {
                if (node.nodeType === 1) {
                    var selects = node.querySelectorAll('#bookly-attach-package');
                    selects.forEach(function(selectEl) {
                        initDropdown(selectEl);
                    });
                }
            });
        });
    });

    observer.observe(document.body, { childList: true, subtree: true });

    console.log('Dropdown güncellendi: Paket bitti ve Paket Aşımı durumu eklendi.');
})();
0

Comments

0 comments

Please sign in to leave a comment.

Didn't find what you were looking for?

New post