Cartola

This script shows an approximate "minimum to value" value on the cartola website

Voor het installeren van scripts heb je een extensie nodig, zoals Tampermonkey, Greasemonkey of Violentmonkey.

Voor het installeren van scripts heb je een extensie nodig, zoals {tampermonkey_link:Tampermonkey}.

Voor het installeren van scripts heb je een extensie nodig, zoals Tampermonkey of Violentmonkey.

Voor het installeren van scripts heb je een extensie nodig, zoals Tampermonkey of Userscripts.

Voor het installeren van scripts heb je een extensie nodig, zoals {tampermonkey_link:Tampermonkey}.

Voor het installeren van scripts heb je een gebruikersscriptbeheerder nodig.

(Ik heb al een user script manager, laat me het downloaden!)

Voor het installeren van gebruikersstijlen heb je een extensie nodig, zoals {stylus_link:Stylus}.

Voor het installeren van gebruikersstijlen heb je een extensie nodig, zoals {stylus_link:Stylus}.

Voor het installeren van gebruikersstijlen heb je een extensie nodig, zoals {stylus_link:Stylus}.

Voor het installeren van gebruikersstijlen heb je een gebruikersstijlbeheerder nodig.

Voor het installeren van gebruikersstijlen heb je een gebruikersstijlbeheerder nodig.

Voor het installeren van gebruikersstijlen heb je een gebruikersstijlbeheerder nodig.

(Ik heb al een beheerder - laat me doorgaan met de installatie!)

// ==UserScript==
// @name         Cartola
// @namespace    http://tampermonkey.net/
// @version      1.0
// @description  This script shows an approximate "minimum to value" value on the cartola website
// @author       HenriqueM
// @match        https://cartola.globo.com/
// @icon         https://www.google.com/s2/favicons?sz=64&domain=globo.com
// @grant        none
// @license MIT
// ==/UserScript==

(function() {
    'use strict';

    function mostrarMinimo() {
        // Seleciona todos os elementos que possuem o atributo "card-atleta"
        const elementos = document.querySelectorAll('[card-atleta]');

        // Obtém o objeto "jogadores" armazenado na LocalStorage
        const jogadoresLocalStorage = localStorage.getItem('jogadores');
        let jogadores = {};

        // Verifica se há algum objeto armazenado
        if (jogadoresLocalStorage) {
            jogadores = JSON.parse(jogadoresLocalStorage);
        }

        // Itera sobre os elementos encontrados
        elementos.forEach(elemento => {
            // Busca a div com a classe "cartola-atletas__card" dentro do elemento atual
            const divCartola = elemento.querySelector('.cartola-atletas__card');
            
            // Verifica se a div foi encontrada
            if (divCartola) {
                // Busca o elemento <estrela-atleta-favorito> dentro da div
                const estrelaAtleta = divCartola.querySelector('estrela-atleta-favorito');
                
                // Verifica se o elemento foi encontrado e se possui o atributo "atletaid"
                if (estrelaAtleta && estrelaAtleta.hasAttribute('atletaid')) {
                    // Obtém o valor do atributo "atletaid"
                    const atletaId = estrelaAtleta.getAttribute('atletaid');
                    
                    // Verifica se há um jogador correspondente na LocalStorage
                    if (jogadores[atletaId] && jogadores[atletaId].pm) {
                        // Busca a div com a classe "small-collapse" dentro do elemento atual
                        const divSmallCollapse = divCartola.querySelector('.small-collapse');
                        
                        // Verifica se a div foi encontrada
                        if (divSmallCollapse) {
                            // Busca a div com a classe "cartola-atletas__scout--minval" dentro da div "small-collapse"
                            const divScoutMinval = divSmallCollapse.querySelector('.cartola-atletas__scout--minval');
                            
                            // Verifica se a div foi encontrada
                            if (divScoutMinval) {
                                // Substitui o conteúdo da div pelo valor de "pm"
                                divScoutMinval.textContent = jogadores[atletaId].pm;
                            }
                        }
                    }
                }
            }
        });
    }

    // Realiza a chamada AJAX para a URL fornecida
    fetch('https://pb89hpsof3.execute-api.us-east-1.amazonaws.com/prod/escalar/rodadas_anteriores/10')
    .then(response => {
        // Verifica se a resposta da requisição foi bem-sucedida (status code 200)
        if (response.ok) {
            // Converte a resposta para JSON
            return response.json();
        }
        // Se a resposta não for bem-sucedida, lança um erro
        throw new Error('Erro ao carregar os dados');
    })
    .then(data => {
        // Verifica se a propriedade "jogadores" está presente no objeto retornado
        if (data && data.jogadores) {
            // Armazena o objeto "jogadores" na LocalStorage
            localStorage.setItem('jogadores', JSON.stringify(data.jogadores));
            console.log('Objeto "jogadores" armazenado na LocalStorage.');

                // ---------

                new MutationObserver(() => {
                    mostrarMinimo();
                    console.log("callback that runs when observer is triggered");
                }).observe(document.querySelector(".cartola-atletas__listagem"), {
                    subtree: true,
                    childList: true,
                });
        } else {
            console.log('Objeto "jogadores" não encontrado na resposta.');
        }
    })
    .catch(error => {
        console.error('Erro:', error);
    });


})();