-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.js
57 lines (46 loc) · 2.08 KB
/
index.js
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
// Import the page's CSS. Webpack will know what to do with it.
// Import libraries we need.
import { default as Web3} from 'web3';
import { default as contract } from 'truffle-contract'
import voting_artifacts from '../../build/contracts/Votacion.json'
var Voting = contract(voting_artifacts);
let candidatos = {"Correa": "candidato-1", "Nebot": "candidato-2"}
// funcion para votar a un candidato que se pasa como parametro. Una vez minada la transaccion se actualiza el contador
window.votar = function(candidato) {
let nombreCandidato = $("#candidato").val();
try {
$("#msg").html("Tu voto ha sido emitido. El número de votos se actualizará cuando la transacción sea minada. Espera.")
$("#candidato").val("");
Voting.deployed().then(function(contractInstance) {
contractInstance.votar(web3.utils.asciiToHex(nombreCandidato), {gas: 140000, from: web3.eth.getAccounts()}).then(function() {
let div_id = candidatos[nombreCandidato];
return contractInstance.votosTotales.call(web3.utils.asciiToHex(nombreCandidato)).then(function(v) {
$("#" + div_id).html(v.toString());
$("#msg").html("");
});
});
});
} catch (err) {
console.log(err);
}
}
// cuando se carga la página se inicializa la conexión con la blockchain y se actualizan los votos de cada candidato
$( document ).ready(function() {
if (typeof web3 !== 'undefined') {
console.warn("Usando web3 de fuente externa como Metamask")
window.web3 = new Web3(web3.currentProvider);
} else {
console.warn("No web3 detectado. Redirifiendo a http://localhost:7545.");
window.web3 = new Web3(new Web3.providers.HttpProvider("http://localhost:7545"));
}
Voting.setProvider(web3.currentProvider);
let nombreCandidatos = Object.keys(candidatos);
for (var i = 0; i < nombreCandidatos.length; i++) {
let nombre = nombreCandidatos[i];
Voting.deployed().then(function(contractInstance) {
contractInstance.votosTotales.call(web3.utils.asciiToHex(nombre)).then(function(v) {
$("#" + candidatos[nombre]).html(v.toString());
});
})
}
});