-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathwpm-forkortet.html
253 lines (229 loc) · 13.3 KB
/
wpm-forkortet.html
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
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
<html>
<head lang='en'>
<meta charset='UTF-8'>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script src="http://code.jquery.com/ui/1.9.2/jquery-ui.js"></script>
<script src='https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore.js'></script>
</head>
<body id="body">
<p tabindex="1" id="sentence"></p>
<input tabindex="2" id="input" style="width:500px; height: 40px;" type="text" />
<p id="result"></p>
<script>
let proverbs;
let proverbsWithSigns;
let done = false;
let currentString = '';
let currentStringInSigns = '';
let currentCollection;
let resultString = '';
let finishedString = '';
let timestarted = false;
let howLongTyped = 0;
let words = 0;
let sec = 0;
let sumSec = 0;
let refreshIntervalId = 0;
let arrayOverview;
let hasFinished = false;
// Fields
const sentenceField = $('#sentence');
const inputField = $('#input');
const wordsField = $('#words');
const timeField = $('#time');
const resultsField = $('#result');
const bodyField = $('#body');
proverbs = [
{ text: "mange bække små gør en stor å", signs: "mï bække små g ê zx å" },
{ text: "for mange kokke fordærver maden", signs: "f mï kokke fxdærvû maç" },
{ text: "nogle bygger læhegn mens andre bygger vindmøller", signs: "nle byggû læhegn mês andà byggû viqmøllû" },
{ text: "saml appetit ude spis hjemme", signs: "saml appetit uô spis hjemî" },
{ text: "slå ikke større brød op end du kan bage", signs: "slå ik zørà brød o eq d k baï" },
{ text: "den der graver en grav for andre falder selv deri", signs: "ç ù gravû ê grav f andà falù sv ùi" },
{ text: "kært barn har mange navne", signs: "kært barn h mï navë" },
{ text: "den der kommer først til mølle får først malet", signs: "ç ù kû fz t mølle får fz malž" },
{ text: "sæt ikke dit lys under en skæppe", signs: "sæt ik dt lys q ê éæppe" },
{ text: "tro kan flytte bjerge", signs: "tro k flytü bjûï" },
{ text: "man skal ikke kaste med sten når man selv bor i et glashus", signs: "man é ik kaze m zê n man sv bx i ž glashus" },
{ text: "man kan ikke både blæse og have mel i munden", signs: "man k ik båô blæse c h¾ îl i munç" },
{ text: "blind høne kan også finde korn", signs: "bliq høë k cå finô kxn" },
{ text: "den der ler sidst ler bedst", signs: "ç ù lû sz lû bedz" },
{ text: "der er ikke rust på et nyttigt redskab", signs: "ù û ik ruz p ž nytt*t àdéab" },
{ text: "tomme tønder buldrer mest", signs: "tomî tønù buldrû îz" },
{ text: "når katten er ude danser musene på bordet", signs: "n kattê û uô dansû museë p bxè" },
{ text: "gå ikke over åen efter vand", signs: "gå ik x åê z vaq" },
{ text: "hop ikke over hvor gærdet er lavest", signs: "hop ik x ¿ gærè û lavez" },
{ text: "hvor der handles der spildes", signs: "¿ ù haqles ù spilôs" },
{ text: "krage søger mage", signs: "kraï søgû maï" },
{ text: "lige børn leger bedst", signs: "l børn legû bedz" },
{ text: "man skal smede mens jernet er varmt", signs: "man é sîô mês jûnž û varmt" },
{ text: "den som jager to harer får ingen", signs: "ç s jagû to harû får ingê" },
{ text: "almindelig sund fornuft er ikke så almindelig endda", signs: "alminôl* suq fxnuft û ik å alminôl* eqda" },
{ text: "de fleste selvmord i Danmark begås med kniv og gaffel", signs: "ô fleze selvmxd i Danmark begås m kniv c gaffel" },
{ text: "det er sundt at leve sjovt men det er ikke sjovt at leve sundt", signs: "è û suqt a leve sjovt î è û ik sjovt a leve suqt" },
{ text: "frisk luft gør lægen fattig", signs: "frié luft g lægê fatt*" },
{ text: "tab og vind med samme sind", signs: "tab c viq m sî siq" },
{ text: "ingen roser uden torne", signs: "ingê rosû uç txë" },
{ text: "gammel kærlighed ruster ikke", signs: "gamîl kærl*hed ruzû ik" },
{ text: "små gryder har også ører", signs: "små gryù h cå ørû" },
{ text: "sælg ikke skindet før bjørnen er skudt", signs: "sælg ik éinè ø bjørnê û éudt" },
{ text: "hvad du ikke ved af har du ikke ondt af", signs: "w d ik v ° h d ik oqt °" },
{ text: "tyv tror hver mand stjæler", signs: "tyv trx wû maq zjælû" },
{ text: "uden mad og drikke duer helten ikke", signs: "uç mad c drikke duû heltê" },
{ text: "man skal kravle før man kan gå", signs: "ik man é kravle ø man k gå" }, // ralle passer denne
{ text: "tale er sølv tavshed er guld", signs: "tale û sølv tavshed û guld" },
{ text: "af gammelt jern smedes nye våben", signs: "° gamîlt jûn sîôs nye våbê" },
{ text: "zebraen kan ikke slippe for sine striber", signs: "zebraê k ik slippe f sië zribû" },
{ text: "brændt barn skyr ilden", signs: "bræqt barn éyr ilç" },
{ text: "den enes død den andens brød", signs: "ç eës død ç ançs brød" },
{ text: "der hvor kragerne vender", signs: "ù ¿ kragûë vêù" },
{ text: "det skal gøre ondt før det gør godt", signs: "è é gøà oqt ø è g godt" },
{ text: "en fugl i hånden er bedre end ti på taget", signs: "ê fugl i hånç û bedà eq ti p tagž" },
{ text: "fej for egen dør før du fejer for andres", signs: "fej f egê dør ø d fejû f andàs" },
{ text: "hastværk er lastværk", signs: "hazværk û lazværk" },
{ text: "hvor der er vilje er der vej", signs: "¿ ù û vilje û ù vej" },
{ text: "i mørket er alle katte grå", signs: "i mørkž û ae katü grå" },
{ text: "mange bække små gør en stor å ", signs: "mï bække små g ê zx å" },
{ text: "for mange kokke fordærver maden ", signs: "f mï kokke fxdærvû maç" },
{ text: "nogle bygger læhegn mens andre bygger vindmøller ", signs: "nle byggû læhegn mês andà byggû viqmøllû" },
{ text: "saml appetit ude spis hjemme ", signs: "saml appetit uô spis hjemî " },
{ text: "slå ikke større brød op end du kan bage ", signs: "slå ik zørà brød o eq d k baï " },
{ text: "den der graver en grav for andre falder selv deri ", signs: "ç ù gravû ê grav f andà falù sv ùi " },
{ text: "kært barn har mange navne ", signs: "kært barn h mï navë " },
{ text: "den der kommer først til mølle får først malet ", signs: "ç ù kû fz t mølle får fz malž " },
{ text: "sæt ikke dit lys under en skæppe ", signs: "sæt ik dt lys q ê éæppe " },
{ text: "tro kan flytte bjerge ", signs: "tro k flytü bjûï " },
{ text: "man skal ikke kaste med sten når man selv bor i et glashus ", signs: "man é ik kaze m zê n man sv bx i ž glashus " },
{ text: "man kan ikke både blæse og have mel i munden ", signs: "an k ik båô blæse c h¾ îl i munç " },
{ text: "blind høne kan også finde korn ", signs: "bliq høë k cå finô kxn " },
{ text: "den der ler sidst ler bedst ", signs: "ç ù lû sz lû bedz" },
{ text: "der er ikke rust på et nyttigt redskab ", signs: "ù û ik ruz p ž nytt*t àdéab" },
{ text: "tomme tønder buldrer mest ", signs: "tomî tønù buldrû îz " },
{ text: "når katten er ude danser musene på bordet ", signs: "n kattê û uô dansû museë p bxè" },
{ text: "gå ikke over åen efter vand ", signs: "gå ik x åê z vaq " },
{ text: "hop ikke over hvor gærdet er lavest ", signs: "hop ik x ¿ gærè û lavez " },
{ text: "hvor der handles der spildes ", signs: "¿ ù haqles ù spilôs " },
{ text: "krage søger mage ", signs: "kraï søgû maï " },
{ text: "lige børn leger bedst ", signs: "l børn legû bedz " },
{ text: "man skal smede mens jernet er varmt ", signs: "man é sîô mês jûnž û varmt " },
{ text: "den som jager to harer får ingen ", signs: "ç s jagû to harû får ingê " },
{ text: "almindelig sund fornuft er ikke så almindelig endda ", signs: "alminôl* suq fxnuft û ik å alminôl* eqda" },
{ text: "de fleste selvmord i Danmark begås med kniv og gaffel ", signs: "ô fleze selvmxd i Danmark begås m kniv c gaffel" },
{ text: "det er sundt at leve sjovt men det er ikke sjovt at leve sundt ", signs: "è û suqt a leve sjovt î è û ik sjovt a leve suqt" },
{ text: "frisk luft gør lægen fattig ", signs: "frié luft g lægê fatt* " },
{ text: "fra børn og fulde folk skal man høre sandheden ", signs: "! børn c fulô folk é man høà saqheç" },
{ text: "tab og vind med samme sind ", signs: "tab c viq m sî siq" },
{ text: "ingen roser uden torne ", signs: "ingê rosû uç txë" },
{ text: "gammel kærlighed ruster ikke ", signs: "gamîl kærl*hed ruzû ik" },
{ text: "små gryder har også ører ", signs: "små gryù h cå ørû" },
{ text: "sælg ikke skindet før bjørnen er skudt ", signs: "sælg ik éinè ø bjørnê û éudt" },
{ text: "hvad du ikke ved af har du ikke ondt af ", signs: "w d ik v ° h d ik oqt °" },
{ text: "tyv tror hver mand stjæler ", signs: "tyv trx wû maq zjælû" },
{ text: "uden mad og drikke duer helten ikke ", signs: "uç mad c drikke duû heltê" },
{ text: "man skal kravle før man kan gå ", signs: "ik man é kravle ø man k gå" },
{ text: "tale er sølv tavshed er guld ", signs: "tale û sølv tavshed û guld" },
{ text: "af gammelt jern smedes nye våben ", signs: "° gamîlt jûn sîôs nye våbê" },
{ text: "zebraen kan ikke slippe for sine striber ", signs: "zebraê k ik slippe f sië zribû" },
{ text: "brændt barn skyr ilden ", signs: "bræqt barn éyr ilç" },
{ text: "den enes død den andens brød ", signs: "ç eës død ç ançs brød" },
{ text: "der hvor kragerne vender ", signs: "ù ¿ kragûë vêù" }, // Passer denne Ralle?
{ text: "det skal gøre ondt før det gør godt ", signs: "è é gøà oqt ø è g godt" },
{ text: "en fugl i hånden er bedre end ti på taget ", signs: "ê fugl i hånç û bedà eq ti p tagž" },
{ text: "fej for egen dør før du fejer for andres ", signs: "fej f egê dør ø d fejû f andàs" },
{ text: "hastværk er lastværk ", signs: "hazværk û lazværk" },
{ text: "hvor der er vilje er der vej ", signs: "¿ ù û vilje û ù vej" },
{ text: "i mørket er alle katte grå ", signs: "i mørkž û ae katü grå" },
];
sentenceField.html(getSentence());
function fixProverbs() {
let arrayOverview = _.map(proverbs, function (num, index) { return { 'sentence': num, 'signed': proverbsWithSigns[index], } });
sentenceField.html(getSentence());
}
function changeSentence() {
sentenceField.html(getSentence());
}
function getSentence() {
if (proverbs.length > 0) {
currentCollection = _.sample(proverbs);
currentString = currentCollection.text;
currentStringInSigns = currentCollection.signs;
proverbs = _.without(proverbs, currentCollection);
return currentString;
} else {
done = true;
return 'done';
}
}
$(function () {
if (done) {
return;
}
inputField.keydown(function (e) {
if (!timestarted) {
startClock();
}
if (e.key.length == 1) {
resultString += e.key;
} else if (e.key.toLowerCase() == 'backspace') {
resultString += '>';
} else if (e.key.toLowerCase() == 'arrowleft') {
resultString += '←';
} else if (e.key.toLowerCase() == 'arrowright') {
resultString += '→';
} else if (e.key.toLowerCase() == 'enter') {
enterHasBeenPressed(resultString);
wordsField.html(words);
resultString = '';
clearInterval(refreshIntervalId);
timestarted = false;
} else if (e.key.toLowerCase() == 'escape') {
finishedProcedure();
return;
}
});
});
function finishedProcedure() {
if (hasFinished) {
return;
}
hasFinished = true
let wpmString = `wpm is ${wpm()}`;
finishedString = `${wpmString} \n ${finishedString}`;
resultsField.html(finishedString.replace(/(\r\n|\n|\r)/gm, '<br>'));
finishedString = encodeURIComponent(finishedString);
done = true;
// window.open(
// `mailto:[email protected]?subject=WPM&body=${finishedString}`
// );
}
function enterHasBeenPressed(result) {
howLongTyped = sec;
let stringFromInput = inputField.val();
let areThereSpecialCharacters = stringFromInput !== result;
words += parseInt(stringFromInput.trim().split(/\s+/).length);
finishedString += `
${result}, ${stringFromInput}, ${currentStringInSigns}, ${howLongTyped}, ${areThereSpecialCharacters}, \n`;
changeSentence();
inputField.val('');
if (done) {
finishedProcedure();
}
}
function wpm() {
return words / (sumSec / 60);
}
function startClock() {
timestarted = true;
sec = 0;
var handler = function () {
if (!done && timestarted && inputField.val().length > 0) {
sumSec++;
sec++;
}
};
refreshIntervalId = setInterval(handler, 1000);
handler();
}
</script>
</body>
</html>