Gerador de Código Único

TSSI 2018/02

by GustavoSatheler

HTML

<form method="post" id="myForm">
  <h3> Insira um arquivo CSV</h3>
  <input type="file" name="inputCSV" id="inputCSV" accept=".csv" />

  <h3>Ou forneça as informações abaixo:</h3>
  <input type="text" name="nome" id="nome" placeholder="Nome completo" required />
  <input type="text" name="cpf" id="cpf" placeholder="CPF" required />
  <input type="text" name="rg" id="rg" placeholder="RG" required />
  <input type="text" name="matricula" id="matricula" placeholder="Matricula" required />
  <input type="email" name="email" id="email" placeholder="Email" required />
  <input type="date" name="dataNasc" id="dataNasc" placeholder="Data de nascimento" required />
  <input type="text" name="telefone" id="telefone" placeholder="Telefone" required />

  <input type="submit" id="enviar" value="Enviar" />
  <input type="reset" id="limpar" value="Limpar" />
</form>

<div id="contentMessage">
  <a id="message"></a>
</div>

<div id="contentCodeHash">
  <b>Resultado:</b><br />
  <a id="codeHash"></a>
</div>

CSS

#contentCodeHash,
#contentMessage {
  visibility: hidden
}

JavaScript

"use strict";

var leitorDeCSV = new FileReader();

var inputCSV = document.querySelector("#inputCSV");
var btnEnviar = document.querySelector("#enviar");
var formElements = document.querySelector("#myForm").elements;
var contentMessage = document.querySelector("#contentMessage");
var contentCodeHash = document.querySelector("#contentCodeHash");

btnEnviar.onclick = function(e) {
    e.preventDefault();
    if (validateForm()) {
        generate(getValuesForm());
    } else {
    	resetFeedback();
        showMessage("Preencha todos os campos.");
    }
}

inputCSV.onchange = function() {
    var file = inputCSV.files[0];
    leitorDeCSV.readAsText(file);
}

leitorDeCSV.onload = function(evt) {
    var fileArr = evt.target.result.split('\n');
    var arr = new Array();

    fileArr.forEach(function(a, b, c) {
        if (a != "") {
            arr.push(a.split(';'));
        }
    });

    generate(arr);
}

document.querySelector("#limpar").onclick = function(){
	resetFeedback();
}

function generate(arr) {
    resetFeedback();
    var hashes = new Array();
	
    console.log(arr);
    
    arr.forEach(function(a) {
        hashes.push(GRS1(a.join('|')));
    });

    showCodeHash(hashes);
}

function showCodeHash(code) {
    var codeHash = document.querySelector("#codeHash");
    contentCodeHash.style.visibility = "visible";
    codeHash.innerHTML = code.join("<br />");
}

function validateForm() {
    for (var i = 0, formElement; formElement = formElements[i++];) {
        if (formElement.type != "submit" && formElement.type != "reset" && formElement.type != "file" && formElement.value === "") {
            return false;
        }
    }

    return true;
}

function showMessage(messageText) {
    var message = document.querySelector("#message")
    contentMessage.style.visibility = "visible";
    message.text = messageText;
}

function resetFeedback() {
    contentCodeHash.style.visibility = "hidden";
    contentMessage.style.visibility = "hidden";
}

function...