From d66f15d20cda11b30c005bfb22091b6093614beb Mon Sep 17 00:00:00 2001
From: "[1000i100] Millicent Billette" <git@1000i100.fr>
Date: Wed, 18 Apr 2018 19:45:14 +0200
Subject: [PATCH] UX improvements

---
 public/main.js | 25 +++++++++++++++++++++----
 1 file changed, 21 insertions(+), 4 deletions(-)

diff --git a/public/main.js b/public/main.js
index d851088..4742f2f 100644
--- a/public/main.js
+++ b/public/main.js
@@ -1,10 +1,19 @@
+const cores = navigator.hardwareConcurrency;
+
+addEventsListeners(document.querySelectorAll("#salt, #pass"),"change keyup",updateEstimate);
+updateEstimate();
+function updateEstimate(){
+	const idSecList = multiLineString2cleanArray(document.getElementById("salt").value);
+	const passList = multiLineString2cleanArray(document.getElementById("pass").value);
+	document.getElementById("combi").innerHTML = idSecList.length*passList.length;
+	document.getElementById("temps").innerHTML = (idSecList.length*passList.length)+"s";
+}
 document.getElementById("compute").addEventListener("click",e=>{
 	const pub = document.getElementById("pubkey").value.trim();
 	const pubRaw = Base58.decode(pub);
-	const idSecList = document.getElementById("salt").value.split("\n").map(str=>str.trim());
-	const passList = document.getElementById("pass").value.split("\n").map(str=>str.trim());
-	document.getElementById("combi").innerHTML = idSecList.length*passList.length;
-	document.getElementById("temps").innerHTML = (idSecList.length*passList.length)+"s";
+	const idSecList = multiLineString2cleanArray(document.getElementById("salt").value);
+	const passList = multiLineString2cleanArray(document.getElementById("pass").value);
+	updateEstimate();
 	document.getElementById("percent").innerHTML = "0%";
 
 	for(let idSec of idSecList){
@@ -50,3 +59,11 @@ async function crypt(password, salt){
 	});
 
 }
+function addEventsListeners(triggerNodes,events,functions){
+	if(!triggerNodes.length) triggerNodes = [triggerNodes];
+	if(typeof events !== "object") events = events.split(" ");
+	if(typeof functions !== "object") functions = [functions];
+	console.log(triggerNodes[0].addEventListener, events, functions);
+	for(let n of triggerNodes) events.forEach(e=> functions.forEach(f=>n.addEventListener(e,f)));
+}
+function multiLineString2cleanArray(rawStr){ return rawStr.split("\n").map(str=>str.trim()).filter(str=>str !== ""); }
-- 
GitLab