Skip to content
Snippets Groups Projects
Commit b60c8694 authored by Otto Zaiser's avatar Otto Zaiser
Browse files

Nuevo tab y nueva funcionalidad de botón

parent 009b53a1
No related branches found
No related tags found
No related merge requests found
<!doctype html>
<html ng-app>
<head>
<meta charset="utf-8">
<link rel="stylesheet" type="text/css" href="lib/css/bootstrap.min.css">
<link rel="stylesheet" type="text/css" href="lib/css/style.css">
<script src="lib/js/angular.min.js"></script>
<script src="lib/js/bower_components/js-sha256/src/sha256.js"></script>
<script src="lib/js/jquery.min.js"></script>
<script src="lib/js/index.js"></script>
<script src="lib/js/bootstrap.min.js"></script>
<title>TSA - Blockchain Federal Argentina</title>
</head>
<body>
<nav class="navbar navbar-default">
<div class="container">
<div class="navbar-header">
<a class="navbar-brand" href="#">
<img alt="Blockchain Federal Argentina" src="lib/images/logo.svg" width="140" height="100">
<html>
<head>
<title>Sello de Tiempo - Blockchain Federal Argentina</title>
<meta charset="utf-8">
<link href="https://fonts.googleapis.com/css?family=Raleway:400,400i,700,700i" rel="stylesheet">
<link rel="stylesheet" type="text/css" href="lib/css/bootstrap.min.css">
<link rel="stylesheet" type="text/css" href="lib/css/style.css">
<meta name="MobileOptimized" content="width" />
<meta name="HandheldFriendly" content="true" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
</head>
<body>
<nav id="navbar" role="banner" class="navbar navbar-default">
<div class="container">
<div class="navbar-header">
<a class="logo navbar-btn pull-left" href="/" rel="home">
<img id="logo" src="lib/images/logo.svg" alt="Blockchain Federal Argentina">
</a>
</div>
<!-- Descomentar en caso de agregar menú para volver a BFA.ar
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#navbar-collapse">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
-->
</div>
</nav>
<main>
<div class="container">
<h1>Time Stamp Authority</h1>
<form class="box" method="post" action="" enctype="multipart/form-data">
<h2>Stamp</h2>
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit.</p>
<div id="stamp" class="dropArea" ondrop="drop(event)" ondragover="allowDrop(event)">
<div><span class=" glyphicon glyphicon-cloud-upload" aria-hidden="true"></span></div>
<div class="droptxt">Soltá un archivo aquí<br>ó</div>
<div><button type="button" class="btn btn-primary">Seleccioná un archivo</button></div>
<!-- <div id="navbar-collapse" class="navbar-collapse collapse">
<nav role="navigation">
<ul class="menu nav navbar-nav navbar-right">
<li>
<a href="/">Ir a BFA.ar</a>
</li>
</ul>
</nav>
</div>
-->
</div>
</nav>
<main>
<div class="container">
<h1>Sello de Tiempo</h1>
<p>El servicio de Sello de Tiempo de BFA permite demostrar digitalmente que el contenido de cualquier documento existió en un momento y que desde entonces, no ha cambiado.</p>
<ul class="nav nav-tabs nav-justified" role="tablist">
<li role="presentation" class="active"><a href="#tab_1" aria-controls="tab_1" role="tab"
data-toggle="tab">1. Sellar</a></li>
<li role="presentation"><a href="#tab_2" aria-controls="tab_2" role="tab" data-toggle="tab">2. Obtener recibo</a></li>
<li role="presentation"><a href="#tab_3" aria-controls="tab_3" role="tab" data-toggle="tab">Verificar</a></li>
</ul>
<form class="box tab-content" method="post" action="" enctype="multipart/form-data">
<div role="tabpanel" class="tab-pane active" id="tab_1">
<h2>Paso 1: Iniciar sellado</h2>
<p>Seleccioná un archivo para generar un Sello de Tiempo. El servicio generará un <i>hash</i> (un
código criptográfico asociado a dicho documento) y lo enviará a la blockchain. A continuación,
se descargará automáticamente un recibo digital <b>temporario</b> (.rdt) que luego podrás
usar para obtener el recibo digital <b>definitivo</b> (.rdd) en la pestaña <i>Obtener recibo</i>.</p>
<p>Importante: El documento seleccionado nunca se sube a la red, garantizando su privacidad.</p>
<div id="selectOriginalArea_1" class="dropArea" ondrop="dropStamp(event)" ondragover="allowDrop(event)">
<div id="originalInfo_1" class="replacedTxt">
<div><span class="glyphicon glyphicon-cloud-upload" aria-hidden="true"></span></div>
<div class="droptxt">Arrastrá un archivo aquí<br>ó</div>
</div>
<div><button type="button" id="selectOriginal_1" class="btn btn-primary btn-pill">Seleccioná un archivo <span class="sr-only">para Sellar</span></button></div>
</div>
<input type="file" id="fileUploadOriginal_1" hidden/>
<!-- <div id="ots_div" class="loading"></div> -->
<div id="response_1" role="alert"></div>
</div>
<div role="tabpanel" class="tab-pane certificadoTab" id="tab_2">
<h2>Paso 2: Obtener recibo digital definitivo</h2>
<p>Para obtener el recibo definitivo de un Sello de Tiempo se debe tener el documento original y el recibo digital temporal (.rdt), el servicio le devolverá el recibo digital definitivo (.rdd) junto con el día y la hora en que el hash del documento original fue sellado en la Blockchain Federal Argentina.</p>
<input type="hidden" name="hidden_original_file_hash_2" id="hidden_original_file_hash_2" />
<input type="hidden" name="hidden_original_file_name_2" id="hidden_original_file_name_2" />
<div class="row">
<div class="col-md-6">
<h3>Seleccioná el archivo original</h3>
<div id="selectOriginalArea_2" class="dropArea" ondrop="dropOriginalFile(event)"
ondragover="allowDrop(event)">
<div id="originalInfo_2" class="replacedTxt">
<div><span class=" glyphicon glyphicon-cloud-upload" aria-hidden="true"></span></div>
<div class="droptxt">Arrastrá el archivo <b>original</b> aquí<br>ó</div>
</div>
<div><button type="button" id="selectOriginal_2" class="btn btn-primary btn-pill">Seleccioná un archivo <span class="sr-only">original</span></button></div>
</div>
<input type="file" id="fileUploadOriginal_2" hidden/>
</div>
<div class="col-md-6">
<h3>Seleccioná el recibo digital temporario</h3>
<div id="selectReciboArea_2" class="dropArea" ondrop="dropOTSFile(event)" ondragover="allowDrop(event)">
<div class="replacedTxt">
<div id="reciboInfo_2"></div>
<div id="reciboInstructions_2">
<div><span class="glyphicon glyphicon-cloud-upload" aria-hidden="true"></span></div>
<div class="droptxt">Arrastrá el archivo <b>.rdt</b> aquí<br>ó</div>
</div>
</div>
<div><button type="button" id="selectRecibo_2" class="btn btn-primary btn-pill">Seleccioná un archivo <span class="sr-only">.rdt</span></button></div>
</div>
<input type="file" id="fileUploadRecibo_2" hidden/>
</div>
</div>
<div id="response_2" role="alert"></div>
</div>
<div id="ots_div" class="loading"></div>
<hr>
<h2>Verify</h2>
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit.</p>
<div class="form-group">
<textarea id="verify_ots" class="form-control" rows="3" readonly></textarea>
<div role="tabpanel" class="tab-pane verificarTab" id="tab_3">
<h2>Verificar un sello de tiempo</h2>
<p>Para verificar un Sello de Tiempo se debe tener el documento original y el recibo digital definitivo (.rdd). Podrá verificar el día y la hora en que el hash del documento original fue sellado en la Blockchain Federal Argentina.</p>
<input type="hidden" name="hidden_original_file_hash_3" id="hidden_original_file_hash_3" />
<input type="hidden" name="hidden_original_file_name_3" id="hidden_original_file_name_3" />
<div class="row">
<div class="col-md-6">
<h3>Seleccioná el archivo original</h3>
<div id="selectOriginalArea_3" class="dropArea dropAreaVerify" ondrop="dropOriginalFile(event)"
ondragover="allowDrop(event)">
<div id="originalInfo_3" class="replacedTxt">
<div><span class=" glyphicon glyphicon-cloud-upload" aria-hidden="true"></span></div>
<div class="droptxt">Arrastrá el archivo <b>original</b> aquí<br>ó</div>
</div>
<div><button type="button" id="selectOriginal_3" class="btn btn-success btn-pill">Seleccioná un archivo <span class="sr-only">original</span></button></div>
</div>
<input type="file" id="fileUploadOriginal_3" hidden/>
</div>
<div class="col-md-6">
<h3>Seleccioná el recibo digital definitivo</h3>
<div id="selectReciboArea_3" class="dropArea dropAreaVerify" ondrop="dropOTSFile(event)" ondragover="allowDrop(event)">
<div class="replacedTxt">
<div id="reciboInfo_3"></div>
<div id="reciboInstructions_3">
<div><span class="glyphicon glyphicon-cloud-upload" aria-hidden="true"></span></div>
<div class="droptxt">Arrastrá el archivo <b>.rdd</b> aquí<br>ó</div>
</div>
</div>
<div><button type="button" id="selectRecibo_3" class="btn btn-success btn-pill">Seleccioná un archivo <span class="sr-only">.rdd</span></button></div>
</div>
<input type="file" id="fileUploadRecibo_3" hidden/>
</div>
</div>
<div id="response_3" role="alert"></div>
</div>
<div id="response" role="alert"></div>
<div class="form-group">
<button type="button" id="btn_verify" class="btn btn-primary btn-lg">Verify</button>
</div>
</form>
</div>
</main>
</body>
</div>
</main>
</body>
<script src="lib/js/bower_components/js-sha256/src/sha256.js"></script>
<script src="lib/js/jquery.min.js"></script>
<script src="lib/js/index.js"></script>
<script src="lib/js/bootstrap.min.js"></script>
</html>
\ No newline at end of file
textarea {
width: 95%;
height: 95%;
border: none;
resize: none;
outline: none;
}
h1{
text-align: center;
}
#stamp{
border: 1px solid #ccc;
width: 50%;
height: 200px;
}
#verify{
border: 1px solid #ccc;
width: 50%;
height: 200px;
margin-top: 5px;
}
#ots_div{
width: 50%;
border: 1px solid #ccc;
height: 100px;
margin-top: 5px;
display: none;
overflow-y: overlay;
}
.center_div{
margin: 0 auto;
}
.title{
float: left;
width: 24%;
text-align: right;
font-size: 18px;
font-weight: bold;
}
#btn_verify{
margin-top: 5px;
}
.bg-dark{
background-color: #5a5a5a;
color:white;
}
\ No newline at end of file
body{
background-color: #f9f9f9;
html {
font-size: 0.9em;
}
body {
font-family: 'Raleway', sans-serif;
font-size: 1.125em;
background-color: #ffffff;
line-height: 1.45;
margin-top: 0;
}
h1,
h2,
h3,
h4 {
margin: 1.414em 0 0.5em;
font-weight: bold;
line-height: 1.2;
}
h1 {
margin-top: 20px;
font-size: 2.441em;
}
h2 {
font-size: 1.953em;
}
h3 {
font-size: 1.563em;
margin-top: 10px;
}
h4 {
font-size: 1.25em;
}
small,
.font_small {
font-size: 0.8em;
}
p {
margin-bottom: 20px;
}
.btn-pill {
border-radius: 50px;
}
.navbar-default {
background-color: #ffffff;
border-color: #e7e7e7;
}
.navbar-brand{
.navbar-brand {
height: 130px;
}
.dropArea{
.dropArea {
border: 1px dashed #0094D4;
background-color: #ffffff;
padding: 50px;
text-align: center;
-webkit-border-radius: 5px;
border-radius: 5px;
transition: 0.3s;
}
.dropArea:hover{
.hash {
word-wrap: break-word;
}
.replacedTxt {
margin-bottom: 20px;
}
.dropArea p {
margin-bottom: 5px;
}
.dropAreaVerify {
border: 1px dashed #4cae4c;
}
.dropArea:hover {
background-color: #f0f7ff;
border-style: solid;
}
.dropArea .droptxt{
font-size: 1.25em;
margin-bottom: 15px;
.dropAreaVerify:hover {
background-color: #e5fce5;
border-style: solid;
}
.dropArea .droptxt {
font-size: 1.2em;
margin-bottom: -5px;
}
.dropArea .glyphicon{
.dropArea .glyphicon-cloud-upload {
font-size: 8em;
margin-bottom: 40px;
color: #ccc;
}
.loading{
@media screen and (max-width: 768px) {
.dropArea .glyphicon-cloud-upload {
font-size: 4em;
margin-bottom: 20px;
}
.dropArea {
padding: 20px;
}
}
.loading {
background-color: #0094D4;
margin-top: 5px;
display: none;
padding: 10px;
text-align: center;
text-align: center;
-webkit-border-radius: 5px;
border-radius: 5px;
border-radius: 5px;
}
[hidden]{
display: none !important;
}
.btn-lg{
.btn-lg {
min-width: 200px;
}
\ No newline at end of file
}
.tab-pane {
background-color: #f8f8f8;
border: 1px solid #ddd;
border-top: 0px;
padding: 40px;
border-bottom-left-radius: 5px;
border-bottom-right-radius: 5px;
}
.nav-tabs>li.active>a, .nav-tabs>li.active>a:focus, .nav-tabs>li.active>a:hover{
background-color: #f8f8f8;
}
.nav-tabs.nav-justified>.active>a, .nav-tabs.nav-justified>.active>a:focus, .nav-tabs.nav-justified>.active>a:hover{
border-bottom-color: #f8f8f8;
}
.tab-pane h2 {
margin-top: 0px;
}
.nav-tabs {
font-size: 1.953em;
}
.alert {
margin-top: 15px;
}
@media screen and (max-width: 768px) {
.tab-pane {
border-top: 1px solid #ddd;
}
}
@media screen and (max-width: 992px) {
h3 {
margin-top: 30px;
}
.nav-tabs {
font-size: 1.5em;
}
}
@media screen and (max-width: 1200px) {
.dropArea .droptxt {
font-size: 1em;
margin-bottom: 15px;
}
}
.navbar-header .logo img {
height: 100px;
width: 140px;
}
.navbar .logo {
margin-right: -15px;
padding-left: 15px;
padding-right: 15px;
}
@media screen and (min-width: 768px){
.navbar .logo {
margin-right: 0;
padding-left: 0;
}
}
.navbar-default {
background-color: #fff;
border-color: #e7e7e7;
padding-top: 30px;
}
.navbar-default .navbar-nav li>a {
color: #0094D4;
font-weight: 400;
font-size: 1.25em;
}
.navbar-default .navbar-nav>.active>a,
.navbar-default .navbar-nav>.active>a:hover,
.navbar-default .navbar-nav>.active>a:focus {
color: #2e2f30;
background-color: transparent;
border-bottom: 2px solid #2e2f30;
}
@media (min-width: 768px) {
.navbar-default .navbar-nav li>a {
color: #0094D4;
padding-bottom: 8px;
padding-left: 4px;
padding-right: 4px;
margin-left: 20px;
border-bottom: 2px solid transparent;
}
.navbar-default .navbar-nav li>a:hover,
.navbar-default .navbar-nav li>a:focus {
color: #0094D4;
border-bottom: 2px solid #0094D4;
}
.navbar-default .navbar-nav li:last-child>a:hover,
.navbar-default .navbar-nav li:last-child>a:focus {
color: #0094D4;
background-color: #fff;
}
}
.navbar-default .navbar-toggle {
border-color: #0094D4;
}
.navbar-default .navbar-toggle .icon-bar {
background-color: #0094D4;
}
.navbar-default .navbar-toggle:hover,
.navbar-default .navbar-toggle:focus {
background-color: #0094D4;
}
.navbar-default .navbar-toggle:hover .icon-bar,
.navbar-default .navbar-toggle:focus .icon-bar {
background-color: #fff;
}
.navbar-default .menu {
margin-top: 40px;
}
@media (max-width: 768px) {
.navbar-default .navbar-nav li>a:hover,
.navbar-default .navbar-nav li>a:focus {
color: #0094D4;
text-decoration: underline;
}
.navbar-default {
padding-top: 0px;
}
.navbar-default .navbar-collapse {
-webkit-box-shadow: 0px 5px 5px 0px rgba(0, 0, 0, 0.2);
box-shadow: 0px 5px 5px 0px rgba(0, 0, 0, 0.2);
background-color: #fff;
}
.navbar-default .menu {
margin-top: 0;
}
}
$(document).ready(function(){
$('#btn_verify').click(function(){
if($('#verify_ots').val() == ''){
$('#response').html('<span class="glyphicon glyphicon-remove text-danger" aria-hidden="true"></span> Debe ingresar el comprobante');
$('#response').addClass('alert alert-danger');
}
verify($('#verify_ots').val());
});
});
var tsa_api = 'http://tsaapi.pp.bfa.local/api/tsa/';
var tsa_api = 'https://tsaapi.bfa.ar/api/tsa/';
var loader_gif = 'lib/images/loader.svg';
var ots_api = '';
var deadline_date = new Date('2018-09-03 00:00:00');
var current_date = new Date();
var whash = window.location.hash;
var currentTab = whash.substring(5, 6);
$(function () {
whash && $('ul.nav a[href="' + whash + '"]').tab('show');
$('.nav-tabs a').click(function (e) {
$(this).tab('show');
var scrollmem = $('body').scrollTop() || $('html').scrollTop();
whash = this.hash;
currentTab = whash.substring(5, 6);
window.location.hash = whash;
$('html,body').scrollTop(scrollmem);
});
if(deadline_date>current_date){
a = 1;
}
else{
a=2;
}
for (let i = 1; i < 4; i++) {
$('#selectOriginal_' + i+', #selectOriginalArea_' + i).on('click', function () {
$('#fileUploadOriginal_' + i).click();
return false;
});
if (i == 1) {
$('#fileUploadOriginal_' + i).change(
function () {
var file = $(this).prop('files')[0];
stamp(file);
}
);
} else {
$('#fileUploadOriginal_' + i).change(
function () {
var file = $(this).prop('files')[0];
original_file_check(file);
}
);
$('#selectRecibo_' + i+', #selectReciboArea_' + i).on('click', function () {
$('#fileUploadRecibo_' + i).click();
return false;
});
$('#fileUploadRecibo_' + i).change(
function () {
var file = $(this).prop('files')[0];
ots_check(file);
}
);
}
}
});
console.log(current_date);
function allowDrop(e) {
e.preventDefault();
}
function drop(e){
e.preventDefault();
$('#ots_div').html('<img src="' + loader_gif + '">');
$('#ots_div').fadeIn('fast');
function dropStamp(e) {
e.preventDefault();
var file = e.dataTransfer.items[0].getAsFile();
stamp(file);
}
var file = e.dataTransfer.items[0].getAsFile();
var reader = new FileReader();
reader.readAsArrayBuffer(file, "UTF-8")
function stamp(file) {
var reader = new FileReader();
reader.readAsArrayBuffer(file, "UTF-8")
reader.onload = function (evt) {
var file_contents = evt.target.result;
var hash = sha256.create();
hash.update(file_contents);
var file_hash = hash.hex();
$('#stamp_info').html('<span class="glyphicon glyphicon-remove" aria-hidden="true"></span> '+file.name );
$('#originalInfo_1').html('<p>Nombre del archivo: <b>' + file.name + '</b></p><p>Hash del archivo: <b><span class="hash">' + file_hash + '</span></b></p>');
$('#selectOriginal_1').html('Seleccioná otro archivo <span class="sr-only">para marcar</span>');
$.ajax({
url: tsa_api + "stamp/",
type: "POST",
data: {"file_hash" : file_hash},
dataType: "json",
success: function(response){
console.log(response);
data: {
"file_hash": file_hash
},
dataType: "json",
success: function (response) {
var ots = ' {"file_hash": "' + file_hash + '", "ots": "' + response.temporay_ots + '"}';
$('#ots_div').html(ots);
$('#ots_div').fadeIn('fast');
var ots = ' {"file_hash": "' + file_hash + '", "rd": "' + response.temporary_ots + '"}';
}
});
}
}
var saveData = (function () {
var a = document.createElement("a");
document.body.appendChild(a);
a.style = "display: none";
return function (data, fileName) {
var json = JSON.stringify(data),
blob = new Blob([json], {
type: "octet/stream"
}),
url = window.URL.createObjectURL(blob);
a.href = url;
a.download = fileName;
a.click();
window.URL.revokeObjectURL(url);
};
}());
var data = response.temporary_rd
fileName = file.name + ".rd.temp";
function verify(json_ots){
$('#response').removeClass();
try{
var ots = JSON.parse(json_ots);
}
catch(err){
$('#response').html('<span class="glyphicon glyphicon-remove" aria-hidden="true"></span> Parámetros inválidos');
$('#response').addClass('alert alert-danger');
return;
}
saveData(data, fileName);
$('#response').html('<img src="' + loader_gif + '">');
$('#response').addClass('loading');
if(deadline_date<current_date){
verify_bfa(ots);
}
else{
a=2;
}
});
}
}
function verify_bfa(ots){
function verify_bfa(ots) {
var pending = false;
var message = '';
$('#response_' + currentTab).removeClass();
$.ajax({
url: tsa_api + "verify/",
type: "POST",
data: {"file_hash" : ots.file_hash, "ots": ots.ots},
data: {
"file_hash": ots.file_hash,
"rd": ots.rd
},
dataType: "json",
success: function(response){
success: function (response) {
if(response.status == 'success'){
icon = 'glyphicon-ok';
st = 'alert alert-success';
}else if(response.status == 'pending'){
if (response.status == 'success') {
icon = 'glyphicon-ok';
st = 'alert alert-success';
response_messages = response.messages.replace(ots.file_hash, $('#hidden_original_file_name_' + currentTab).val());
} else if (response.status == 'pending') {
pending = true;
icon = 'glyphicon-time';
st = 'alert alert-warning';
}else{
response_messages = response.messages;
} else {
icon = 'glyphicon-remove';
st = 'alert alert-danger';
}
st = 'alert alert-danger';
response_messages = response.messages;
}
message = '<span class="glyphicon ' + icon + '" aria-hidden="true"></span> ' + response_messages;
$('#response_' + currentTab).addClass(st);
$('#response_' + currentTab).html(message);
if (!pending) {
var saveData = (function () {
var a = document.createElement("a");
document.body.appendChild(a);
a.style = "display: none";
return function (data, fileName) {
var json = JSON.stringify(data),
blob = new Blob([json], {
type: "octet/stream"
}),
url = window.URL.createObjectURL(blob);
a.href = url;
a.download = fileName;
a.click();
window.URL.revokeObjectURL(url);
};
}());
var data = response.permanent_rd;
fileName = $('#hidden_original_file_name_' + currentTab).val() + ".rd";
if (currentTab == '2') {
ms = 'Seleccioná otro archivo <span class="sr-only">.rd.temp</span>';
} else if (currentTab == '3') {
ms = 'Seleccioná otro archivo <span class="sr-only">.rd</span>';
}
$('#selectRecibo_' + currentTab).html(ms);
$('#reciboInstructions_' + currentTab).hide();
if ($('#reciboInfo_' + currentTab).html().includes('.temp')) {
saveData(data, fileName);
}
message = '<span class="glyphicon ' + icon + '" aria-hidden="true"></span> ' + response.messages;
if(!pending){
message += ' - ots definitivo:' + response.permanent_ots;
}
$('#response').html(message);
$('#response').addClass(st);
},
error:function(jqXHR, textStatus, errorThrown){
error: function (jqXHR, textStatus, errorThrown) {
responseText = 'No se encontró el archivo';
if(errorThrown == 'timeout'){
responseText = 'No se pudo conectar a la Blockchain';
if (errorThrown == 'timeout') {
responseText = 'No se pudo conectar a Blockchain Federal Argentina';
}
$('#response').html('<span class="glyphicon glyphicon-remove" aria-hidden="true"></span> ' + responseText);
$('#response').addClass('alert alert-danger');
if (whash == '#certificado-tab') {
rp_id = "#response_cert";
} else {
rp_id = "#response";
}
$('#response_' + currentTab).html('<span class="glyphicon glyphicon-remove" aria-hidden="true"></span> ' + responseText);
$('#response_' + currentTab).addClass('alert alert-danger');
},
timeout:5000
timeout: 5000
});
}
function verify_ots(){
function dropOriginalFile(e) {
e.preventDefault();
var file = e.dataTransfer.items[0].getAsFile();
original_file_check(file);
}
function original_file_check(file) {
$('#response_' + currentTab).html('');
$('#response_' + currentTab).removeClass();
$('#reciboInfo_' + currentTab).html('');
$('#reciboInstructions_' + currentTab).show();
var reader = new FileReader();
reader.readAsArrayBuffer(file, "UTF-8")
reader.onload = function (evt) {
var file_contents = evt.target.result;
var hash = sha256.create();
hash.update(file_contents);
var file_hash = hash.hex();
$('#hidden_original_file_hash_' + currentTab).val(file_hash);
$('#hidden_original_file_name_' + currentTab).val(file.name);
$('#originalInfo_' + currentTab).html('<p>Nombre del archivo: <b>' + file.name + '</b></p><p>Hash del archivo: <b><span class="hash">' + file_hash + '</span></b></p>');
$('#selectOriginal_' + currentTab).html('Seleccioná otro archivo <span class="sr-only">original</span>');
};
}
function dropOTSFile(e) {
e.preventDefault();
var file = e.dataTransfer.items[0].getAsFile();
ots_check(file);
}
function ots_check(file) {
$('#response_' + currentTab).html('');
$('#response_' + currentTab).removeClass();
var file_contents = '';
var file_hash = $('#hidden_original_file_hash_' + currentTab).val();
if (file_hash == '') {
$('#response_' + currentTab).html('<span class="glyphicon glyphicon-remove" aria-hidden="true"></span> Debe ingresar el archivo original');
$('#response_' + currentTab).addClass('alert alert-danger');
return;
}
var reader = new FileReader();
reader.readAsText(file, "UTF-8")
reader.onload = function (evt) {
file_contents = evt.target.result;
$('#reciboInstructions_' + currentTab).hide();
$('#reciboInfo_' + currentTab).html(file.name);
var ots = {
"file_hash": file_hash,
"rd": file_contents
}
verify_bfa(ots);
};
}
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment