Páginas filhas
  • Calculadora - Ecossistema TOTVS Agro Bioenergia

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.
Comentário: Revertida da versão 42
HTML
<!DOCTYPE

...

 html>
<html lang="pt-BR">

...


<head>
    <meta charset="UTF-8">

...


    <title>Calculadora do Ecossistema TOTVS Agro Bioenergia</title>
    <style>
        body {
            font-family: 'Segoe UI', Arial, sans-serif;
            margin: 40px;
            background: #f4f8fb;
            color: #080808;
        }
        h1 {
            color: #080808;
            background: #e3f2fd;
            padding: 16px;
            border-radius: 8px;
            margin-bottom: 30px;
            box-shadow: 0 2px 8px #f4f4f51a;
        }
        label {
            color: #0a0a0a;
            font-weight: bold;
            margin-right: 10px;
        }
        select {
            padding: 6px 12px;
            border: 1px solid #90caf9;
            border-radius: 6px;
            background: #e3f2fd;
            color: #0d0d0e;
            margin-bottom: 20px;
            margin-right: 20px;
            font-size: 1em;
        }
        h2 {
            background: #bbdefb;
            color: #0a0a0a;
            padding: 10px;
            border-radius: 6px;
            margin-top: 30px;
            margin-bottom: 10px;
        }
        table {
            border-collapse: collapse;
            width: 100%;
            margin-bottom: 40px;
            background: #e3f2fd;
            border-radius: 8px;
            overflow: hidden;
            box-shadow: 0 2px 8px #1565c01a;
        }
        th, td {
            border: 1px solid #90caf9;
            padding: 10px;
            text-align: left;
        }
        th {
            background: #0c0c0c;
            color: #fff;
            font-weight: bold;
        }
        tr:nth-child(even) td {
            background: #f4f8fb;
        }
        tr:hover td {
            background: #bbdefb;
        }
        .produto {
            font-weight: bold;
            background: #030303;
        }
        @media (max-width: 700px) {
            body { margin: 10px; }
            table, th, td { font-size: 0.95em; }
            h1 { font-size: 1.3em; }
        }
    </style>
</head>
<body>

    <br><br>
    <label for="produtoFiltroSelect">Produto:</label>
    <select id="produtoFiltroSelect"></select>
    <label for="userTotalSelect">Usuários (total):</label>
    <select id="userTotalSelect"></select>    
	<br><br>
    <div id="tables"></div>
    <script>
        const csvData = `
Produto,UsuariosTotal,UsuariosConcorrentes,Requisito,Descricao,Valor

...

 
Bioenergia,250-600,200,Servidor aplicação,Processador,8 VCPU - 2 processadores

...

  Intel(R) Xeon(R) Gold 6248R CPU @ 3.00GHz / GenuineIntel / Speed 3.00 GHz / Cores 4 / Theads 4 / Model 63 / Stepping 0

...


Bioenergia,1000-1500,500,Servidor aplicação,SO,Windows Server 2019

...


Bioenergia,1000-1500,500,Servidor aplicação,Memória,16 GB

...


Bioenergia,1000-1500,500,Servidor aplicação,Disco,300 GB

...


Bioenergia,1000-1500,500,Servidor aplicação,Servidores,1

...


Bioenergia,1000-1500,500,Servidor Go Global,Servidores,50

...


Bioenergia,1000-1500,500,Banco de Dados,Versão,Oracle Server 19c

...


Bioenergia,1000-1500,500,Banco de Dados,Processador,"Intel Xeon Gold 6248R (3.00 GHz, 24 núcleos/48 threads, 35.75MB Cache, TDP 205W) ou superior"

...


Bioenergia,1000-1500,500,Banco de Dados,Memória,32 GB

...


Bioenergia,1000-1500,500,Banco de Dados,Disco,2 TB

...


Bioenergia,1000-1500,500,Banco de Dados,Servidores,1

...


Pesagem Offline,1000-1500,500,Servidor aplicação,Processador,12 VCPU  2 processadores

...

  Intel(R) Xeon(R) Gold 6248R CPU @ 3.00GHz / GenuineIntel / Speed 3.00 GHz / Cores 6 / Theads 6 / Model 63 / Stepping 0

...


Pesagem Offline,1000-1500,500,Servidor aplicação,SO,Windows Server 2019

...


Pesagem Offline,1000-1500,500,Servidor aplicação,Memória,32GB RAM

...


Pesagem Offline,1000-1500,500,Servidor aplicação,Disco,300GB Disco

...


Pesagem Offline,1000-1500,500,Servidor aplicação,Servidores,1

...


PIMS Server,1000-1500,500,Servidor aplicação,Processador,16 VCPU  2 processadores

...

  Intel(R) Xeon(R) Gold 6248R CPU @ 3.00GHz / GenuineIntel / Speed 3.00 GHz / Cores 6 / Theads 6 / Model 63 / Stepping 0

...


PIMS Server,1000-1500,500,Servidor aplicação,SO,Windows Server 2019

...


PIMS Server,1000-1500,500,Servidor aplicação,Memória,48GB RAM

...


PIMS Server,1000-1500,500,Servidor aplicação,Disco,500GB Disco

...


PIMS Server,1000-1500,500,Servidor aplicação,Servidores,1

...


Pesagem Offline

...

  (Cliente),1000-1500,500,Estacão Cliente,Processador,4 VCPU 

...

 
Pesagem Offline

...

  (Cliente),1000-1500,500,Estacão Cliente,SO,Windows 11

...


Pesagem Offline

...

  (Cliente),1000-1500,500,Estacão Cliente,Memória,12 GB RAM

...


Pesagem Offline

...

  (Cliente),1000-1500,500,Estacão Cliente,Disco,200GB Disco

...


Pesagem Offline

...

  (Cliente),1000-1500,500,Estacão Cliente,Quantidade Estações,De acordo com a quantidade de balança

...


Pesagem Offline

...

  (Cliente),1000-1500,500,Estacão Cliente,Banco de Dados,PostgreSQL 14

...


Bioenergia,600-1000,400,Servidor aplicação,Processador,8 VCPU

...


Bioenergia,600-1000,400,Servidor aplicação,SO,Windows Server 2019

...


Bioenergia,600-1000,400,Servidor aplicação,Memória,16 GB

...


Bioenergia,600-1000,400,Servidor aplicação,Disco,300 GB

...


Bioenergia,600-1000,400,Servidor aplicação,Servidores,1

...


Bioenergia,600-1000,400,Servidor Go Global,Servidores,35

...


Bioenergia,600-1000,400,Banco de Dados,Versão,Oracle Server 19c

...


Bioenergia,600-1000,400,Banco de Dados,Processador,"Intel Xeon Gold 6248R (3.00 GHz, 24 núcleos/48 threads, 35.75MB Cache, TDP 205W) ou superior"

...


Bioenergia,600-1000,400,Banco de Dados,Memória,32 GB

...


Bioenergia,600-1000,400,Banco de Dados,Disco,"1,5 TB"

...


Bioenergia,600-1000,400,Banco de Dados,Servidores,1

...


Pesagem Offline,600-1000,400,Servidor aplicação,Processador,10 VCPU

...


Pesagem Offline,600-1000,400,Servidor aplicação,SO,Windows Server 2019

...


Pesagem Offline,600-1000,400,Servidor aplicação,Memória,24 GB RAM

...


Pesagem Offline,600-1000,400,Servidor aplicação,Disco,300GB Disco

...


Pesagem Offline,600-1000,400,Servidor aplicação,Servidores,1

...


PIMS Server,600-1000,400,Servidor aplicação,Processador,12 VCPU

...

 
PIMS Server,600-1000,400,Servidor aplicação,SO,Windows Server 2019

...


PIMS Server,600-1000,400,Servidor aplicação,Memória,36 GB RAM

...


PIMS Server,600-1000,400,Servidor aplicação,Disco,500GB Disco

...


PIMS Server,600-1000,400,Servidor aplicação,Servidores,1

...


Pesagem Offline

...

  (Cliente),600-1000,400,Estacão Cliente,Processador,4 VCPU 

...

 
Pesagem Offline

...

  (Cliente),600-1000,400,Estacão Cliente,SO,Windows 11

...


Pesagem Offline

...

  (Cliente),600-1000,400,Estacão Cliente,Memória,12 GB RAM

...


Pesagem Offline

...

  (Cliente),600-1000,400,Estacão Cliente,Disco,200GB Disco

...


Pesagem Offline

...

  (Cliente),600-1000,400,Estacão Cliente,Quantidade Estações,De acordo com a quantidade de balança

...


Pesagem Offline

...

  (Cliente),600-1000,400,Estacão Cliente,Banco de Dados,PostgreSQL 14

...


Bioenergia,250-600,200,Servidor aplicação,Processador,8 VCPU

...

 
Bioenergia,250-600,200,Servidor aplicação,SO,Windows Server 2019

...


Bioenergia,250-600,200,Servidor aplicação,Memória,16 GB

...


Bioenergia,250-600,200,Servidor aplicação,Disco,300 GB

...


Bioenergia,250-600,200,Servidor aplicação,Servidores,1

...


Bioenergia,250-600,200,Servidor Go Global,Servidores,20

...


Bioenergia,250-600,200,Banco de Dados,Versão,Oracle Server 19c

...


Bioenergia,250-600,200,Banco de Dados,Processador,"Intel Xeon Gold 6248R (3.00 GHz, 24 núcleos/48 threads, 35.75MB Cache, TDP 205W) ou superior"

...


Bioenergia,250-600,200,Banco de Dados,Memória,24 GB

...


Bioenergia,250-600,200,Banco de Dados,Disco,1 TB

...


Bioenergia,250-600,200,Banco de Dados,Servidores,1

...


Pesagem Offline,250-600,200,Servidor aplicação,Processador,8 VCPU

...


Pesagem Offline,250-600,200,Servidor aplicação,SO,Windows Server 2019

...


Pesagem Offline,250-600,200,Servidor aplicação,Memória,16GB RAM

...


Pesagem Offline,250-600,200,Servidor aplicação,Disco,300GB Disco

...


Pesagem Offline,250-600,200,Servidor aplicação,Servidores,1

...


PIMS Server,250-600,200,Servidor aplicação,Processador,10 VCPU

...


PIMS Server,250-600,200,Servidor aplicação,SO,Windows Server 2019

...


PIMS Server,250-600,200,Servidor aplicação,Memória,24 GB RAM

...


PIMS Server,250-600,200,Servidor aplicação,Disco,500GB Disco

...


PIMS Server,250-600,200,Servidor aplicação,Servidores,1

...


Pesagem Offline

...

  (Cliente),250-600,200,Estacão Cliente,Processador,4 VCPU 

...

 
Pesagem Offline

...

  (Cliente),250-600,200,Estacão Cliente,SO,Windows 11

...


Pesagem Offline

...

  (Cliente),250-600,200,Estacão Cliente,Memória,12 GB RAM

...


Pesagem Offline

...

  (Cliente),250-600,200,Estacão Cliente,Disco,200GB Disco

...


Pesagem Offline

...

  (Cliente),250-600,200,Estacão Cliente,Quantidade Estações,De acordo com a quantidade de balança

...


Pesagem Offline

...

  (Cliente),250-600,200,Estacão Cliente,Banco de Dados,PostgreSQL 14

...


Bioenergia,1-250,50,Servidor aplicação,Processador,6 VCPU

...


Bioenergia,1-250,50,Servidor aplicação,SO,Windows Server 2019

...


Bioenergia,1-250,50,Servidor aplicação,Memória,16 GB

...


Bioenergia,1-250,50,Servidor aplicação,Disco,300 GB

...


Bioenergia,1-250,50,Servidor aplicação,Servidores,1

...


Bioenergia,1-250,50,Servidor Go Global,Servidores,10

...


Bioenergia,1-250,50,Banco de Dados,Versão,Oracle Server 19c

...


Bioenergia,1-250,50,Banco de Dados,Processador,"Intel Xeon Gold 6248R (3.00 GHz, 24 núcleos/48 threads, 35.75MB Cache, TDP 205W) ou superior"

...


Bioenergia,1-250,50,Banco de Dados,Memória,16 GB

...


Bioenergia,1-250,50,Banco de Dados,Disco,500 GB

...


Bioenergia,1-250,50,Banco de Dados,Servidores,1

...


Pesagem Offline,1-250,50,Servidor aplicação,Processador,06 VCPU

...

 
Pesagem Offline,1-250,50,Servidor aplicação,SO,Windows Server 2019

...


Pesagem Offline,1-250,50,Servidor aplicação,Memória,08 GB RAM

...


Pesagem Offline,1-250,50,Servidor aplicação,Disco,300GB Disco

...


Pesagem Offline,1-250,50,Servidor aplicação,Servidores,1

...


PIMS Server,1-250,50,Servidor aplicação,Processador,08 VCPU

...


PIMS Server,1-250,50,Servidor aplicação,SO,Windows Server 2019

...


PIMS Server,1-250,50,Servidor aplicação,Memória,16GB RAM

...


PIMS Server,1-250,50,Servidor aplicação,Disco,300GB Disco

...


PIMS Server,1-250,50,Servidor aplicação,Servidores,1

...


Pesagem Offline

...

  (Cliente),1-250,50,Estacão Cliente,Processador,4 VCPU 

...

 
Pesagem Offline

...

  (Cliente),1-250,50,Estacão Cliente,SO,Windows 11

...


Pesagem Offline

...

  (Cliente),1-250,50,Estacão Cliente,Memória,12 GB RAM

...


Pesagem Offline

...

  (Cliente),1-250,50,Estacão Cliente,Disco,200GB Disco

...


Pesagem Offline

...

  (Cliente),1-250,50,Estacão Cliente,Quantidade Estações,De acordo com a quantidade de balança

...


Pesagem Offline

...

  (Cliente),1-250,50,Estacão Cliente,Banco de Dados,PostgreSQL 14

...


Indústria,1-250,50,Servidor aplicação,Processador,6 VCPU

...


Indústria,1-250,50,Servidor aplicação,SO,Windows Server 2019

...


Indústria,1-250,50,Servidor aplicação,Memória,12 GB

...


Indústria,1-250,50,Servidor aplicação,Disco,300 GB

...


Indústria,1-250,50,Servidor aplicação,Servidores,1

...


Indústria,1-250,50,Servidor Go Global,Servidores,10

...


Indústria,250-600,200,Servidor aplicação,Processador,8 VCPU

...

 
Indústria,250-600,200,Servidor aplicação,SO,Windows Server 2019

...


Indústria,250-600,200,Servidor aplicação,Memória,16 GB

...


Indústria,250-600,200,Servidor aplicação,Disco,300 GB

...


Indústria,250-600,200,Servidor aplicação,Servidores,1

...


Indústria,250-600,200,Servidor Go Global,Servidores,20

...


Indústria,600-1000,400,Servidor aplicação,Processador,8 VCPU

...


Indústria,600-1000,400,Servidor aplicação,SO,Windows Server 2019

...


Indústria,600-1000,400,Servidor aplicação,Memória,16 GB

...


Indústria,600-1000,400,Servidor aplicação,Disco,300 GB

...


Indústria,600-1000,400,Servidor aplicação,Servidores,1

...


Indústria,600-1000,400,Servidor Go Global,Servidores,35

...


Indústria,1000-1500,500,Servidor aplicação,Processador,8 VCPU - 2 processadores

...

  Intel(R) Xeon(R) Gold 6248R CPU @ 3.00GHz / GenuineIntel / Speed 3.00 GHz / Cores 4 / Theads 4 / Model 63 / Stepping 0

...


Indústria,1000-1500,500,Servidor aplicação,SO,Windows Server 2019

...


Indústria,1000-1500,500,Servidor aplicação,Memória,16 GB

...


Indústria,1000-1500,500,Servidor aplicação,Disco,300 GB

...


Indústria,1000-1500,500,Servidor aplicação,Servidores,1

...


Indústria,1000-1500,500,Servidor Go Global,Servidores,50

...


TOTVS Agro LGPD,-,Sem Variação,Servidor aplicação,Processador,"4 VCPU - Intel® Xeon® Gold 5415+ Processor (22.5M Cache, 2.90 GHz)"

...


TOTVS Agro LGPD,-,Sem Variação,Servidor aplicação,SO,Windows Server 2019 & Red Hat 8 ou Superior

...


TOTVS Agro LGPD,-,Sem Variação,Servidor aplicação,Memória,8 GB

...


TOTVS Agro LGPD,-,Sem Variação,Servidor aplicação,Disco,20 GB

...


TOTVS Agro LGPD,-,Sem Variação,Banco de Dados,Versão,PostgreSQL 14 & Oracle 19c

...


TOTVS Agro LGPD,-,Sem Variação,Banco de Dados,Servidores,1

...


TOTVS Agro Conector Client,-,Sem Variação,Servidor aplicação,Processador,"4 VCPU - Intel® Xeon® Gold 5415+ Processor (22.5M Cache, 2.90 GHz)"

...


TOTVS Agro Conector Client,-,Sem Variação,Servidor aplicação,SO,Windows Server 2019 & Red Hat 8 ou Superior

...


TOTVS Agro Conector Client,-,Sem Variação,Servidor aplicação,Memória,8 GB

...


TOTVS Agro Conector Client,-,Sem Variação,Servidor aplicação,Disco,20 GB

...


TOTVS Agro Conector Client,-,Sem Variação,Banco de Dados,Versão,PostgreSQL 14 & Oracle 19c

...


TOTVS Agro Conector Client,-,Sem Variação,Banco de Dados,Servidores,1

...


TOTVS Agro Connecta Dados ,-,Sem Variação,Servidor aplicação,Processador,"4 VCPU - Intel® Xeon® Gold 5415+ Processor (22.5M Cache, 2.90 GHz)"

...


TOTVS Agro Connecta Dados ,-,Sem Variação,Servidor aplicação,SO,Windows Server 2019 & Red Hat 8 ou Superior

...


TOTVS Agro Connecta Dados ,-,Sem Variação,Servidor aplicação,Memória,8 GB

...


TOTVS Agro Connecta Dados ,-,Sem Variação,Servidor aplicação,Disco,40 GB

...


TOTVS Agro Connecta Dados ,-,Sem Variação,Banco de Dados,Versão,PostgreSQL 14 & Oracle 19c

...


TOTVS Agro Connecta Dados ,-,Sem Variação,Banco de Dados,Servidores,1

...


TOTVS Agro TProvider,-,Sem Variação,Servidor aplicação,Processador,"4 VCPU - Intel® Xeon® Gold 5415+ Processor (22.5M Cache, 2.90 GHz)"

...


TOTVS Agro TProvider,-,Sem Variação,Servidor aplicação,SO,Windows Server 2019 & Red Hat 8 ou Superior

...


TOTVS Agro TProvider,-,Sem Variação,Servidor aplicação,Memória,4 GB

...


TOTVS Agro TProvider,-,Sem Variação,Servidor aplicação,Disco,20 GB

...


TOTVS Agro TProvider,-,Sem Variação,Banco de Dados,Versão,Oracle 19c

...


TOTVS Agro TProvider,-,Sem Variação,Banco de Dados,Servidores,

...


TOTVS Agro API Minha Borracharia,-,Sem Variação,Servidor aplicação,Processador,"4 VCPU - Intel® Xeon® Gold 5415+ Processor (22.5M Cache, 2.90 GHz)"

...


TOTVS Agro API Minha Borracharia,-,Sem Variação,Servidor aplicação,SO,Windows Server 2019 & Red Hat 8 ou Superior

...


TOTVS Agro API Minha Borracharia,-,Sem Variação,Servidor aplicação,Memória,6 GB

...


TOTVS Agro API Minha Borracharia,-,Sem Variação,Servidor aplicação,Disco,20 GB

...


TOTVS Agro API Minha Borracharia,-,Sem Variação,Banco de Dados,Versão,PostgreSQL 14

...

 , Oracle 19c

...

 , Microsoft SQL Server 2019

...


TOTVS Agro API Minha Borracharia,-,Sem Variação,Banco de Dados,Servidores,

...


TOTVS Agro API HUB,-,Sem Variação,Servidor aplicação,Processador,"CPU Intel® Xeon® Gold 5415+ Processor (22.5M Cache, 2.90 GHz) / 4 vCPU"

...


TOTVS Agro API HUB,-,Sem Variação,Servidor aplicação,SO,Windows Server 2019 & Red Hat 8 ou Superior

...


TOTVS Agro API HUB,-,Sem Variação,Servidor aplicação,Memória,12 GB

...


TOTVS Agro API HUB,-,Sem Variação,Servidor aplicação,Disco,30 GB

...


TOTVS Agro API HUB,-,Sem Variação,Banco de Dados,Versão,PostgreSQL 14 & Oracle 19c`.trim();

...



        function getProdutoOptions(data)

...

 {
            const set = new Set();
            data.forEach(row => set.add(row['Produto']));

...


            return Array.from(set).filter(v => v && v !== '').sort();

...


        }

        function parseCSV(text)

...

 {
            const lines = text.split(/\r?\n/).filter(l => l.trim());

...


            const header = lines[0].split(',');

...


            return lines.slice(1).map(line =>

...

 {
                const regex = /(".*?"|[^",]+)(?=\s*,|\s*$)/g;

...


                const matches = line.match(regex) || [];

...


                return header.reduce((obj, key, i) =>

...

 {
                    obj[key.trim()] = (matches[i] || '').replace(/^"|"$/g, '').replace(/""/g, '"');

...


                    return obj;
                }, {});
            });
        }

        function groupByUserTotal(data, produtoFiltro) {
            const groups = {};
            data.forEach(row => {
                if (produtoFiltro && row['Produto'] !== produtoFiltro)

...

 return;
                const userTotal = row['UsuariosTotal'] || '-';

...


                if (!groups[userTotal]) groups[userTotal] = [];

...


                groups[userTotal].push(row);

...


            });
            return groups;
        }

        function getUserTotalOptions(data, produtoFiltro)

...

 {
            const set = new Set();
            data.forEach(row =>

...

 {
                if (produtoFiltro && row['Produto'] !== produtoFiltro)

...

 return;
                set.add(row['UsuariosTotal'] || '-');

...


            });
            // Remova o filtro para incluir o "-"
            return Array.from(set)
                .sort((a, b) =>

...

 {
                    // '-' sempre vai para o

...

 final
                    if (a === '-') return

...

 1;
                    if (b === '-') return -1;

...


                    const getMin = str => {
                        const match = str.match(/(\d+)/);

...


                        return match ? parseInt(match[1], 10) : Number.MAX_SAFE_INTEGER;

...


                    };
                    return getMin(a) - getMin(b);

...


                });
        }

        function renderTables(groups, selectedUserTotal, produtoFiltro)

...

 {
            const container = document.getElementById('tables');

...


            container.innerHTML = '';

...


            const group = groups[selectedUserTotal];

...


            if (!group)

...

 {
                container.innerHTML = '<p>Nenhum dado para este grupo.</p>';

...


                return;
            }
            const h2 = document.createElement('h2');

...

     
		h2.innerHTML = `<div style="margin-bottom:16px;">

...


        <strong>Produto:</strong> ${produtoFiltro}

...


        <strong>Usuários (total):</strong> ${selectedUserTotal}

...


    </div>`;container.appendChild(h2);

...



            const table = document.createElement('table');

...


            const thead = document.createElement('thead');

...


            thead.innerHTML =

...

 `<tr>
    <th>Produto</th>

...


    <th></th>

...


    <th>Usuários (concorrentes)</th>

...


    <th></th>

...


    <th>Requisito</th>

...


    <th></th>

...


    <th>Descrição</th>

...


    <th></th>

...


    <th>Valor</th>

...


</tr>`;

...


            table.appendChild(thead);

...



            const tbody = document.createElement('tbody');

...


            group.forEach(row =>

...

 {
                const tr = document.createElement('tr');

...


                tr.innerHTML =

...

 `
        <td>${row['Produto']}</td>

...


        <td></td>
        <td style="text-align:center;"

...

>${row['UsuariosConcorrentes']}</td>

...


        <td></td>
        <td>${row['Requisito']}</td>

...


        <td></td>
        <td>${row['Descricao']}</td>

...


        <td></td>
        <td>${row['Valor']}</td>

...


    `;
                tbody.appendChild(tr);

...


            });
            table.appendChild(tbody);

...


            container.appendChild(table);

...


        }

        // Executa ao carregar
        const data = parseCSV(csvData);
        const produtoOptions = getProdutoOptions(data);

        const produtoSelect = document.getElementById('produtoFiltroSelect');

...


        produtoOptions.forEach(opt =>

...

 {
            const option = document.createElement('option');

...


            option.value =

...

 opt;
            option.textContent =

...

 opt;
            produtoSelect.appendChild(option);

...


        });

        let produtoFiltro = produtoSelect.value;

        function updateUserTotalSelect() {
            const userTotalOptions = getUserTotalOptions(data, produtoFiltro);
            const select = document.getElementById('userTotalSelect');

...


            select.innerHTML = '';

...


            userTotalOptions.forEach(opt =>

...

 {
                const option = document.createElement('option');

...


                option.value =

...

 opt;
                option.textContent =

...

 opt;
                select.appendChild(option);

...


            });
        }

        function updateTable() {
            const userTotal = document.getElementById('userTotalSelect').value;

...


            const groups = groupByUserTotal(data, produtoFiltro);
            renderTables(groups, userTotal, produtoFiltro);
        }

        produtoSelect.addEventListener('change', function() {
            produtoFiltro = produtoSelect.value;
            updateUserTotalSelect();
            updateTable();
        });

        document.getElementById('userTotalSelect').addEventListener('change', function() {
            updateTable();
        });

        updateUserTotalSelect();
        updateTable();
    </script>
<br><br> <br><br>
  </body>
</html>