File size: 5,295 Bytes
617a965
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
document.addEventListener('DOMContentLoaded', function() {
    // DOM Elements
    const spreadsheetInput = document.getElementById('spreadsheet');
    const inputTypeSelect = document.getElementById('inputType');
    const manualInput = document.getElementById('manualInput');
    const processBtn = document.getElementById('processBtn');
    const dataPreview = document.getElementById('dataPreview');
    const exportBtn = document.getElementById('exportBtn');
    const reportBtn = document.getElementById('reportBtn');
    const formulaDisplay = document.getElementById('formulaDisplay');
    
    // Event Listeners
    inputTypeSelect.addEventListener('change', toggleInputType);
    processBtn.addEventListener('click', processData);
    exportBtn.addEventListener('click', exportData);
    reportBtn.addEventListener('click', generateReport);
    
    // Initialize
    toggleInputType();
    feather.replace();
    
    // Functions
    function toggleInputType() {
        const inputType = inputTypeSelect.value;
        if (inputType === 'text') {
            manualInput.placeholder = "Insira os valores (um por linha)\nExemplo:\nvalor1\nvalor2\nvalor3";
        } else {
            manualInput.placeholder = "Insira os valores separados por |\nExemplo:\nvalor1|valor2|valor3\nvalor4|valor5|valor6";
        }
    }
    
    function processData() {
        // Show processing state
        processBtn.disabled = true;
        processBtn.innerHTML = '<i data-feather="loader" class="animate-spin mr-2"></i> Processando...';
        feather.replace();
        
        // Simulate processing delay
        setTimeout(() => {
            // Process data based on input type
            const inputType = inputTypeSelect.value;
            let data = [];
            
            if (inputType === 'text') {
                data = manualInput.value.split('\n').filter(item => item.trim() !== '');
            } else {
                data = manualInput.value.split('\n')
                    .filter(row => row.trim() !== '')
                    .map(row => row.split('|').map(item => item.trim()));
            }
            
            // Display preview
            displayDataPreview(data);
            
            // Display sample formulas
            displayFormulas(data);
            
            // Reset button
            processBtn.disabled = false;
            processBtn.innerHTML = '<i data-feather="zap" class="mr-2"></i> Processar Dados';
            feather.replace();
        }, 1500);
    }
    
    function displayDataPreview(data) {
        if (Array.isArray(data[0])) {
            // Tabular data
            let tableHTML = '<table class="data-table"><thead><tr>';
            
            // Create headers (assuming first row has all columns)
            for (let i = 0; i < data[0].length; i++) {
                tableHTML += `<th>Coluna ${i+1}</th>`;
            }
            tableHTML += '</tr></thead><tbody>';
            
            // Add rows
            data.forEach(row => {
                tableHTML += '<tr>';
                row.forEach(cell => {
                    tableHTML += `<td>${cell}</td>`;
                });
                tableHTML += '</tr>';
            });
            
            tableHTML += '</tbody></table>';
            dataPreview.innerHTML = tableHTML;
        } else {
            // Simple list
            let listHTML = '<ul class="space-y-1">';
            data.forEach(item => {
                listHTML += `<li class="px-3 py-2 bg-gray-100 rounded">${item}</li>`;
            });
            listHTML += '</ul>';
            dataPreview.innerHTML = listHTML;
        }
    }
    
    function displayFormulas(data) {
        formulaDisplay.innerHTML = `
            <h3 class="font-semibold text-gray-700 mb-2">Fórmulas Aplicadas:</h3>
            <ul class="space-y-2">
                <li><span class="font-mono bg-gray-200 px-2 py-1 rounded">SOMA(A1:A${data.length})</span> - Soma de todos os valores</li>
                <li><span class="font-mono bg-gray-200 px-2 py-1 rounded">MÉDIA(A1:A${data.length})</span> - Média dos valores</li>
                <li><span class="font-mono bg-gray-200 px-2 py-1 rounded">MÁXIMO(A1:A${data.length})</span> - Valor máximo</li>
                <li><span class="font-mono bg-gray-200 px-2 py-1 rounded">MÍNIMO(A1:A${data.length})</span> - Valor mínimo</li>
            </ul>
            <p class="mt-4 text-sm text-gray-600">* As fórmulas serão calculadas automaticamente conforme os dados são processados.</p>
        `;
    }
    
    function exportData() {
        alert('Funcionalidade de exportação será implementada aqui. Os dados serão exportados no formato selecionado.');
    }
    
    function generateReport() {
        alert('Relatório gerado com sucesso! Esta funcionalidade criará um PDF/Excel com os dados processados e cálculos aplicados.');
    }
    
    // Handle spreadsheet file upload
    spreadsheetInput.addEventListener('change', function(e) {
        const file = e.target.files[0];
        if (file) {
            alert(`Planilha "${file.name}" selecionada. O processamento de arquivos será implementado aqui.`);
            // In a real app, you would use a library like SheetJS to read the file
        }
    });
});