Epey.com Favorilerim

Epey.com daki favori ürünlerinizi kategorize eder.

// ==UserScript==
// @name         Epey.com Favorilerim
// @namespace    https://github.com/ilyasbilgihan
// @version      1.0
// @description  Epey.com daki favori ürünlerinizi kategorize eder.
// @author       @ilyasbilgihan
// @match        https://www.epey.com/uye/favorilerim/*
// @match        http://www.epey.com/uye/favorilerim/*
// @icon         https://www.google.com/s2/favicons?domain=epey.com
// @grant        GM_addStyle
// ==/UserScript==

(function() {
    'use strict';

    var counts = {};
    var indirimde = 0;
    var items = document.querySelectorAll('#favorilerim li');
    var fbaslik = document.querySelector('#fbaslik h1');

    items.forEach((item)=>{
        var category = item.querySelector('a').getAttribute('href').split('/')[3];
        var degisim = item.querySelector('.degisim');
        if(!degisim.classList.contains('dusus')){ // Bu kontrol yapılmazsa tüm favori ürünler kategorilere ayrılır.
            counts[category] = counts[category] || document.createElement('ul');
            counts[category].append(item);
        }else { indirimde++; }

    });

    fbaslik.innerHTML = `Fiyatı Düşenler | <span class="count">(${indirimde} ürün)</span>`
    var cerceve = document.querySelector('.cerceve.cerceve');
    var favs = document.querySelector('#favorilerim');

    for (const [key, value] of Object.entries(counts)) {
        var h2 = document.createElement('div');
        h2.classList.add('cat-name');
        h2.innerHTML = `<h2>${ key.split('-').join(' ') } | <span class="count">(${ value.childElementCount } ürün)</span></h2> <span data-target="${ key }" class="btn-open">Göster / Gizle</span>`;


        value.classList.add('cat');
        value.classList.add('closed');
        value.classList.add(key);


        favs.append(h2);
        favs.append(value);
        setTimeout(function(){
            value.style.maxHeight = value.scrollHeight + "px"
        }, 1000);
    }

    var buttons = document.querySelectorAll('.btn-open');
    buttons.forEach((button)=>{
        button.addEventListener('click', (e)=>{
            var target = e.target.getAttribute('data-target');
            var targetElement = document.querySelector('.cat.'+target);
            targetElement.classList.toggle('closed');

        });
    });

    GM_addStyle(`
        #fbaslik h1{font-size: 25px;}
        .cerceve.cerceve{ width: auto; }
        #fbaslik h1 span.count{font-size: 16px; color: #2f9a30;}
        .btn-open { position: absolute; top: 0; right: 20px; cursor: pointer; user-select: none; }
        #favorilerim { min-height: 0; }

        .cat-name {
            margin: 20px 0 20px 10px;
            text-transform: Capitalize;
            min-width: 100%;
            float: left;
            position: relative;
        }

        .cat-name h2 span.count { font-size: 14px; color: red; }
        .cat { transition: .4s all; opacity: 1; overflow: hidden; float: left; min-height: 0; }
        .cat.closed { max-height: 0px!important; opacity: 0; transition: .4s all; }
    `);



})();