$(()=>{
// parâmetros globais
const parametros = {
dados: null,
colunas: null,
onde: '#minha_tabela',
tabela: $().DataTable(),
arquivos: ['1.csv','2.csv'],
arquivo_atual: 0
}
// plotando a tabela
const plotar = ()=>{
// desestruturando o objeto
let { dados, colunas, onde, tabela } = parametros
// destrua a tabela anterior
tabela.destroy()
// limpe o elemento html
$(onde).empty()
// primeira linha contém os nomes das colunas
colunas = dados[0]
// remove a primeira linha (nome das colunas)
dados.shift()
// selecionar colunas
colunas = colunas.map(d => ({ title: d }))
// ativar datatable
parametros.tabela = $(onde).DataTable({
"data": dados,
"columns": colunas,
"order": [[0, 'asc']] // ordena pela coluna 0
})
}
// listar arquivos --> INÍCIO
const listarArquivos = (arquivos)=>{
// para cada arquivo
for(i of arquivos){
// adicione uma option no select
$("#arquivos").append(
""
)
}
}
// listar arquivos --> FIM
// escolher arquivo atual --> INÍCIO
const carregarArquivo = ()=>{
let novo_arquivo = $("#arquivos").val()
// atualizar o índice do arquivo atual
parametros.arquivo_atual = parametros.arquivos.indexOf(novo_arquivo)
// alterando o índice
lerDados(novo_arquivo)
}
// ler dados --> INÍCIO
const lerDados = (arquivo)=>{
// ler arquivo usando jQuery
$.ajax({
url: arquivo,
success: (dados)=>{
dados_formatados = formatarTabela(dados)
parametros.dados = dados_formatados
plotar()
}
});
}
// ler dados --> FIM
// formatar tabela --> INÍCIO
const formatarTabela = (dados)=>{
let dados_tabelados = [];
// separa as linhas
let linhas = dados.split("\n")
// para cada linha
for(let linha of linhas){
// remove caracteres especiais
linha = linha.replace("\r","")
// separa as células
celulas = linha.split(",")
// salva células
dados_tabelados.push(celulas)
}
return dados_tabelados
}
// formatar tabela --> FIM
// iniciar
const iniciar = ()=>{
let { arquivos, arquivo_atual } = parametros
// cria o select com o nome dos arquivos
listarArquivos(arquivos)
// lê os dados do arquivo selecionado
lerDados(arquivos[arquivo_atual])
// evento: seleciona outro arquivo
$("#arquivos").on("change", ()=>{
carregarArquivo()
})
}
// executa
iniciar()
})
// // // novo objeto XHR
// let xhr = new XMLHttpRequest();
// // // resposta deve estar em json
// // xhr.responseType = "json";
// // console.log("Escutando readyState:")
// // xhr.onreadystatechange = ()=>{
// // // imprime os status atuais
// // console.log(
// // "readyState:", xhr.readyState,
// // "| Status:", xhr.status
// // );
// // // se o readyState estiver pronto (código 4)
// // if(xhr.readyState == 4){
// // // lê resposta
// // let resposta = xhr.response;
// // // imprime objeto no console
// // console.log(resposta);
// // // exibe a mensagem no site
// // document.write(
// // "A mensagem para a humanidade é:
",
// // resposta.mensagem,
// // ""
// // );
// // }
// // }
// // // abre a requisição Ajax
// xhr.open("GET", "http://localhost:8080")
// xhr.send()
// let pessoas = ["José","Maria","Cláudio"];
// // iterator com for
// for(i in pessoas){
// console.log(i, ":", pessoas[i]);
// }
// /*
// 0 : José
// 1 : Maria
// 2 : Cláudio
// */
// // iterator em jQuery
// $.each(pessoas, (i, j) => {
// // i: índice; j: valor
// console.log(i, ":", j);
// });
// // Implementando o iterator manualmente
// let it = pessoas[Symbol.iterator]()
// // pegando o primeiro elemento
// console.log(it.next()) // José
// // 2º e 3º elemento
// console.log(it.next().value) // Maria
// console.log(it.next().value) // Cláudio
// // Depois que acaba a lista
// console.log(it.next().value) // undefined
// $("li").each((i) => {
// console.log('aaaaaaaas')
// console.log(i, ":", $(this).text());
// });