aboutsummaryrefslogtreecommitdiff
path: root/synhestesis.js
blob: 7169f6111c9ec6ecdef044c55616da3a615921ec (plain)
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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
function shuffle(a) {
    var j, x, i;
    for (i = a.length; i; i--) {
        j = Math.floor(Math.random() * i);
        x = a[i - 1];
        a[i - 1] = a[j];
        a[j] = x;
    }
}

onTop = document.getElementById('onTop');
inputAnswer = document.createElement("input");
passButt = document.createElement("input");
outputAnswer = document.getElementById("output");
outputStyleBase = outputAnswer.style.cssText;
compteurSpan = document.getElementById('compteur');
ratioSpan    = document.getElementById('ratio');
asPass = false

function handleFileSelect(evt) {

  var files = evt.target.files; // FileList object
  var file = files[0];

  var reader = new FileReader();
  
  inputAnswer.style.float = "right";
  passButt.type = "button";
  passButt.style.float = "right";
  passButt.value = "Pass";
  

  
  
  reader.onload = function (evt) {
    var res = JSON.parse(evt.target.result);
    var indexRes = 0;
    var cmpGood = 0;
    var cmpBad = 0;
    for( var i = 0, elem = res.answer[0] ; i < res.answer.length ; elem = res.answer[++i]) {
        console.log(elem.key + " -> " + elem.value);
    }
	shuffle(res.answer);
	compteurSpan.innerText = "0/" + res.answer.length;
	ratioSpan.innerText = "∅";
    outputAnswer.innerText = res.answer[indexRes].key;
	if( res.answer[indexRes].style )
		outputAnswer.style = outputStyleBase + res.answer[indexRes].style;
	function pass() {
		console.log(inputAnswer.value)
		asPass = true
		inputAnswer.value = "" + res.answer[indexRes].value
		console.log(inputAnswer.value)
	}
	inputAnswer.onkeydown = function(event) {
		inputAnswer.style.borderColor = ""
        var ev = event || window.event;
        var key = ev.keyCode || ev.which || ev.charCode;
		if( key == 13 ) {
			if( ev.shiftKey ) {
				pass();
			} else {
				inputAnswer.change();
			}
		}
	}
	passButt.onclick = pass
	inputAnswer.change = function() {
      if( inputAnswer.value == res.answer[indexRes].value ) {
		if( ! asPass ) {
			cmpGood+=1;
			console.log("Good");
		}else {
			console.log("Passed : " + res.answer[indexRes].value);
			asPass = false;
		}
		inputAnswer.style.borderColor = "#0F0"

		inputAnswer.value = "";
		if( indexRes+1 < res.answer.length ) {
			indexRes++;
			outputAnswer.innerText = res.answer[indexRes].key;
		} else {
			onTop.removeChild(inputAnswer);
			onTop.removeChild(passButt);
			if( cmpBad == 0 ) {
				outputAnswer.innerText = "Perfect !";				
			}else if( cmpGood/cmpBad > 0.9 * (res.answer.length + cmpBad) ) {
				outputAnswer.innerText = "Almost perfect !";							
			}else if( cmpGood/cmpBad > 0.75 * (res.answer.length + cmpBad) ) {
				outputAnswer.innerText = "Good !";							
			}else if( cmpGood/cmpBad > 0.5 * (res.answer.length + cmpBad) ) {
				outputAnswer.innerText = "Average";							
			}else if( cmpGood/cmpBad > 0.25 * (res.answer.length + cmpBad) ) {
				outputAnswer.innerText = "Can do better";							
			}else {
				outputAnswer.innerText = "Bad";							
			}
		}
      } else {
		console.log("Bad");
		inputAnswer.style.borderColor = "red"
        cmpBad+=1;
      }

	  if( cmpBad > 0 )
		ratioSpan.innerText = "" + cmpGood/cmpBad;
	  else
		ratioSpan.innerText = "∅";
	  
	  
	  compteurSpan.innerText = indexRes + "/" + res.answer.length;
    }
    onTop.appendChild(inputAnswer);
    onTop.appendChild(passButt);
  }
  reader.readAsText(file, "UTF-8");
}
document.getElementById('getFile').addEventListener('change', handleFileSelect, false);