From 1bb1ec414f11321aaece03e2fa76d0628c654a06 Mon Sep 17 00:00:00 2001 From: Marco Pagani Date: Wed, 4 Nov 2020 22:08:00 -0500 Subject: [PATCH 01/32] #506 added hover text to graph button (duh) --- src/js/account.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/js/account.js b/src/js/account.js index 79751939c..c99079a6b 100644 --- a/src/js/account.js +++ b/src/js/account.js @@ -1824,7 +1824,7 @@ function loadMoreLines() { } else if (result.chartData === "toolong") { icons += ``; } else { - icons += ``; + icons += ``; } let tagNames = ""; From fa465161e2168ef4e50be7fc7c4d9bdcd091a1e2 Mon Sep 17 00:00:00 2001 From: corey Date: Thu, 5 Nov 2020 13:30:07 -0500 Subject: [PATCH 02/32] added quick navigation shortcuts to settings page --- static/index.html | 35 +++++++++++++++++++++++++---------- 1 file changed, 25 insertions(+), 10 deletions(-) diff --git a/static/index.html b/static/index.html index 5ee6f0fec..50529eaea 100644 --- a/static/index.html +++ b/static/index.html @@ -1437,8 +1437,19 @@ esc ) - - -
+
behaviour
@@ -1680,7 +1691,7 @@
-
+
input
@@ -1830,7 +1841,7 @@
-
+
sound
@@ -1901,7 +1912,7 @@
-
+
caret
@@ -2059,7 +2070,7 @@
-
+
appearance
@@ -2453,7 +2464,7 @@
-
+
theme
@@ -2646,7 +2657,11 @@
-
+
hide elements
@@ -2713,7 +2728,7 @@
-
+
danger zone
From 079bd61e7fc14b7610b5a161b4443877521dc408 Mon Sep 17 00:00:00 2001 From: Jack Date: Thu, 5 Nov 2020 19:52:38 +0000 Subject: [PATCH 03/32] renamed script to start:dev --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 6c55fa043..f8106c8c4 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,7 @@ "scripts": { "postinstall": "cd functions && npm install", "build": "npx gulp build", - "start": "npm run build && concurrently --kill-others \"npx gulp watch\" \"firebase serve\"", + "start:dev": "npm run build && concurrently --kill-others \"npx gulp watch\" \"firebase serve\"", "deploy:live:hosting": "npm run build && firebase deploy -P live --only hosting", "deploy:live:functions": "npm run build && firebase deploy -P live --only functions", "deploy:live": "npm run build && firebase deploy -P live" From 49cffaa3a5475449b6d13ffaee15e79731503119 Mon Sep 17 00:00:00 2001 From: Jack Date: Thu, 5 Nov 2020 19:53:30 +0000 Subject: [PATCH 04/32] added hungarian 2.5k --- static/languages/hungarian_2.5k.json | 2510 ++++++++++++++++++++++++++ static/languages/list.json | 1 + 2 files changed, 2511 insertions(+) create mode 100644 static/languages/hungarian_2.5k.json diff --git a/static/languages/hungarian_2.5k.json b/static/languages/hungarian_2.5k.json new file mode 100644 index 000000000..4c8627c0f --- /dev/null +++ b/static/languages/hungarian_2.5k.json @@ -0,0 +1,2510 @@ +{ + "name": "hungarian_2.5k", + "leftToRight": true, + "words": [ + "a", + "az", + "és", + "hogy", + "nem", + "is", + "egy", + "meg", + "csak", + "de", + "volt", + "már", + "azt", + "ha", + "van", + "még", + "az", + "vagy", + "mint", + "szerint", + "kell", + "ez", + "el", + "s", + "sem", + "ki", + "mert", + "akkor", + "magyar", + "lehet", + "olyan", + "úgy", + "pedig", + "két", + "ezt", + "után", + "minden", + "majd", + "be", + "több", + "aki", + "most", + "volna", + "nagy", + "fel", + "új", + "között", + "lesz", + "amely", + "azonban", + "arra", + "hanem", + "első", + "én", + "itt", + "egyik", + "ami", + "illetve", + "mi", + "jó", + "nincs", + "nagyon", + "miatt", + "ilyen", + "más", + "így", + "annak", + "amit", + "azért", + "előtt", + "által", + "alatt", + "kormány", + "ő", + "ott", + "ne", + "amikor", + "le", + "-e", + "akik", + "mondta", + "mellett", + "hiszen", + "év", + "való", + "viszont", + "ahol", + "ma", + "sok", + "politikai", + "lenne", + "millió", + "ember", + "át", + "valamint", + "alapján", + "három", + "ezer", + "számára", + "tehát", + "például", + "arról", + "ugyanis", + "saját", + "mindig", + "nélkül", + "törvény", + "másik", + "ennek", + "lett", + "néhány", + "ezért", + "úr", + "szó", + "ellen", + "vannak", + "kis", + "egész", + "milyen", + "gazdasági", + "jól", + "azzal", + "éppen", + "igen", + "amelyek", + "amerikai", + "milliárd", + "szóló", + "meg", + "kellett", + "mit", + "inkább", + "vagyok", + "erre", + "forint", + "éves", + "azok", + "ezzel", + "évi", + "maga", + "ebben", + "nagyobb", + "során", + "ország", + "elnök", + "ezek", + "ám", + "óta", + "elnöke", + "nemzetközi", + "mind", + "közül", + "őket", + "belül", + "se", + "teljes", + "talán", + "abban", + "voltak", + "így", + "kellene", + "szemben", + "aztán", + "áll", + "legyen", + "került", + "valami", + "magát", + "ahogy", + "második", + "állami", + "elmondta", + "együtt", + "eddig", + "amelyet", + "tudom", + "egyetlen", + "következő", + "miniszter", + "tudja", + "vissza", + "egyébként", + "elmúlt", + "bizottság", + "esetben", + "egyes", + "miért", + "legalább", + "mintegy", + "című", + "mivel", + "egyre", + "fontos", + "persze", + "szükséges", + "négy", + "orosz", + "helyi", + "mégis", + "legnagyobb", + "nemcsak", + "részt", + "korábban", + "lévő", + "fél", + "módon", + "újabb", + "csupán", + "német", + "bár", + "képviselő", + "neki", + "emberek", + "valaki", + "szinte", + "elő", + "történt", + "semmi", + "idő", + "világ", + "fog", + "amelynek", + "érdekében", + "össze", + "kerül", + "megfelelő", + "míg", + "hazai", + "bizonyos", + "es", + "kapcsolatban", + "jobb", + "vele", + "éve", + "további", + "párt", + "utolsó", + "ezen", + "ellenére", + "teljesen", + "nap", + "közös", + "kívül", + "európai", + "valóban", + "mai", + "végén", + "nekem", + "forintot", + "idén", + "rá", + "biztos", + "évben", + "mintha", + "szükség", + "szót", + "tegnap", + "nemzeti", + "része", + "sikerült", + "kapcsolatos", + "kérdés", + "te", + "álló", + "vonatkozó", + "felé", + "mondja", + "sőt", + "esetén", + "mikor", + "ugyan", + "jelentős", + "hozzá", + "százalékos", + "mindenki", + "sokkal", + "korábbi", + "elsősorban", + "hosszú", + "azokat", + "egyszer", + "később", + "jelenlegi", + "tud", + "tavaly", + "hogyan", + "akár", + "cég", + "külföldi", + "újra", + "öt", + "megyei", + "általános", + "állam", + "igaz", + "vezetője", + "százalékkal", + "lehetett", + "mely", + "jelent", + "tíz", + "évek", + "helyett", + "város", + "szombat", + "csütörtök", + "kapott", + "parlamenti", + "hát", + "szakmai", + "utóbbi", + "adott", + "emberi", + "the", + "helyzet", + "péntek", + "ismét", + "évvel", + "elég", + "hasonló", + "régi", + "ahhoz", + "először", + "sor", + "egyéb", + "szerda", + "rossz", + "önkormányzat", + "különböző", + "kedd", + "tartja", + "jobban", + "rendszer", + "szépen", + "közötti", + "férfi", + "senki", + "tett", + "ők", + "társadalmi", + "este", + "hét", + "elé", + "követően", + "dolog", + "tovább", + "szép", + "többi", + "jogi", + "francia", + "hétfő", + "természetesen", + "jelenleg", + "hiszem", + "miniszterelnök", + "mindent", + "jelentette", + "szintén", + "jelenti", + "közölte", + "hol", + "esetleg", + "idején", + "vált", + "szervezet", + "harmadik", + "pénzügyi", + "azaz", + "önkormányzati", + "vagyis", + "tette", + "alá", + "száma", + "esetében", + "kisebb", + "akar", + "román", + "gondolom", + "teszi", + "országos", + "erről", + "tenni", + "hat", + "forintos", + "továbbra", + "addig", + "végül", + "módosító", + "egyelőre", + "maradt", + "elleni", + "kicsit", + "ugyanakkor", + "számú", + "nehéz", + "élet", + "lehetne", + "helyen", + "történő", + "általában", + "alig", + "ezeket", + "vagyunk", + "attól", + "parlament", + "soha", + "képest", + "út", + "szociális", + "költségvetési", + "őt", + "közé", + "marad", + "ad", + "állt", + "belső", + "magas", + "múlt", + "megfelelően", + "budapesti", + "amelyben", + "rendelet", + "rendőrség", + "legjobb", + "adott", + "katonai", + "képes", + "pont", + "százalék", + "fő", + "túl", + "egyáltalán", + "hivatalos", + "ebből", + "amikor", + "jutott", + "százaléka", + "igazán", + "tagja", + "héten", + "elején", + "élő", + "ehhez", + "években", + "keresztül", + "föl", + "előző", + "sokat", + "említett", + "pontosan", + "akinek", + "igazi", + "egészen", + "szabad", + "különösen", + "meghatározott", + "azon", + "létre", + "azonnal", + "jött", + "külön", + "szerintem", + "benne", + "úgynevezett", + "végre", + "ide", + "óra", + "tart", + "ezelőtt", + "annyira", + "továbbá", + "komoly", + "javaslatot", + "eredeti", + "jár", + "pénzt", + "egykori", + "időben", + "fogja", + "valamit", + "lenni", + "mondani", + "oda", + "szól", + "miután", + "venni", + "polgári", + "körül", + "vita", + "bíróság", + "munka", + "számos", + "tárca", + "egészségügyi", + "tudta", + "tudjuk", + "összes", + "szám", + "tudják", + "rövid", + "kulturális", + "főváros", + "fiatal", + "megy", + "megint", + "róla", + "akit", + "született", + "voltam", + "kevés", + "szerinti", + "sincs", + "napon", + "többet", + "súlyos", + "tudni", + "bele", + "közel", + "kíván", + "vezető", + "ellenzéki", + "fővárosi", + "pénz", + "személy", + "sokan", + "központi", + "eddigi", + "asszony", + "részét", + "országgyűlési", + "ért", + "gyakran", + "anyagi", + "adatok", + "annyi", + "társaság", + "tartozik", + "magyarországi", + "eljárás", + "jövő", + "semmit", + "miközben", + "amelyeket", + "amíg", + "mértékben", + "mögött", + "száz", + "jön", + "idei", + "kevesebb", + "baj", + "tervezett", + "erős", + "valószínűleg", + "előbb", + "annyit", + "társadalom", + "program", + "figyelembe", + "tűnik", + "önkormányzatok", + "utca", + "január", + "akár", + "szerepel", + "kisebbségi", + "tartozó", + "múlva", + "egyet", + "oldalon", + "azon", + "összesen", + "fekete", + "jelen", + "választási", + "tesz", + "nyugati", + "vasárnap", + "valamennyi", + "nekik", + "lehetséges", + "döntés", + "évre", + "legfontosabb", + "figyelmet", + "jut", + "területén", + "délután", + "ügyben", + "történelmi", + "csaknem", + "azóta", + "tényleg", + "volt", + "tudott", + "költségvetés", + "vette", + "mostani", + "pártok", + "kereskedelmi", + "országban", + "lesznek", + "osztrák", + "működő", + "víz", + "javaslat", + "látszik", + "lehetőséget", + "tagjai", + "hatalmas", + "többször", + "embert", + "szervezetek", + "legfeljebb", + "család", + "érkezett", + "század", + "adni", + "kapcsán", + "kérdést", + "szerződés", + "magyarok", + "érdemes", + "munkát", + "vett", + "ment", + "úton", + "lehetőség", + "részben", + "rendkívül", + "államtitkár", + "fehér", + "ismert", + "tartott", + "él", + "tartózkodás", + "működik", + "benne", + "lép", + "százalékát", + "akarja", + "azonos", + "kormányfő", + "részéről", + "ideje", + "szabad", + "egyedül", + "történik", + "egyszerűen", + "tartják", + "személyi", + "lakosság", + "tudományos", + "olasz", + "angol", + "előtti", + "képviselők", + "and", + "kap", + "engem", + "mindössze", + "politikus", + "szocialista", + "egyszerű", + "szeretném", + "oka", + "közben", + "ellenzék", + "oly", + "épp", + "szempontból", + "önálló", + "abból", + "következik", + "egymás", + "tudnak", + "egymást", + "keretében", + "főleg", + "szeptember", + "támogatást", + "járt", + "várhatóan", + "kedves", + "tudok", + "környezetvédelmi", + "nyolc", + "ugyancsak", + "brit", + "előre", + "december", + "sajnos", + "június", + "válik", + "testület", + "látja", + "határozat", + "csapat", + "szerepet", + "hangsúlyozta", + "csoport", + "ügy", + "jóval", + "tartó", + "lap", + "igen", + "folyamatosan", + "érintett", + "polgármester", + "családi", + "magukat", + "személyes", + "támogatja", + "támogatás", + "tőle", + "kizárólag", + "reggel", + "intézmény", + "szlovák", + "pár", + "tisztelt", + "film", + "október", + "háború", + "lapunknak", + "választ", + "rendkívüli", + "illeti", + "országok", + "adta", + "egyaránt", + "kevésbé", + "igazgatója", + "tovább", + "helyet", + "legalábbis", + "március", + "szél", + "jövőben", + "értelmében", + "területen", + "hónap", + "leginkább", + "szellemi", + "egyéni", + "mindkét", + "várható", + "többsége", + "női", + "kiderült", + "valamilyen", + "helyzetben", + "hétfőn", + "május", + "nyomán", + "írta", + "legtöbb", + "célja", + "oktatási", + "lassan", + "körülmények", + "terület", + "alkalommal", + "neve", + "napokban", + "kötelező", + "gazdaság", + "annál", + "nyilván", + "augusztus", + "intézmények", + "hozott", + "július", + "mondom", + "ki", + "nő", + "következtében", + "természetes", + "magasabb", + "minél", + "indult", + "kijelentette", + "tavalyi", + "többek", + "követő", + "révén", + "kerületi", + "cégek", + "választások", + "üzleti", + "kormányzati", + "illetőleg", + "gyorsan", + "döntött", + "egyszerre", + "mások", + "megállapodás", + "pontja", + "veszi", + "külső", + "azoknak", + "néha", + "közvetlen", + "ellenszavazat", + "nélküli", + "szerb", + "nálunk", + "számít", + "nevű", + "immár", + "otthon", + "jellegű", + "szinten", + "évig", + "járó", + "hiába", + "melyek", + "alá", + "izraeli", + "jog", + "jövőre", + "rá", + "beszélt", + "minisztérium", + "úrnak", + "közt", + "lány", + "utcai", + "mondjuk", + "vezetői", + "vizsgálat", + "szempontjából", + "vége", + "készült", + "tartani", + "érdekes", + "azután", + "ülésén", + "konkrét", + "napi", + "állandó", + "mindenképpen", + "esett", + "szólt", + "rendelkező", + "iskola", + "tegnapi", + "látni", + "magának", + "alakult", + "majdnem", + "ház", + "mezőgazdasági", + "iránt", + "zsidó", + "nekünk", + "melynek", + "részére", + "ipari", + "esetleges", + "szövetség", + "rendelkezik", + "segítségével", + "uniós", + "alkalmas", + "ennél", + "törvényjavaslat", + "velük", + "kívánja", + "gyermek", + "külügyminiszter", + "november", + "körülbelül", + "nevét", + "egyben", + "folyik", + "gyerek", + "származó", + "tartom", + "nép", + "politika", + "többen", + "amennyiben", + "miként", + "véli", + "fok", + "fogadta", + "másfél", + "szerződést", + "évente", + "gyerekek", + "csökkent", + "írja", + "köztük", + "ügyében", + "látom", + "közlekedési", + "probléma", + "megoldás", + "mégsem", + "hivatal", + "pontos", + "címmel", + "hagyományos", + "biztonsági", + "együttes", + "törvényt", + "zöld", + "adja", + "fölött", + "szolgáló", + "éven", + "tiszta", + "valójában", + "legfőbb", + "ismeretlen", + "magam", + "készül", + "érvényes", + "egymással", + "akiknek", + "közvetlenül", + "sokszor", + "tartanak", + "jugoszláv", + "tér", + "szereplő", + "nehezen", + "vesz", + "írt", + "sajtó", + "közben", + "melyik", + "havi", + "piaci", + "körében", + "érte", + "összeg", + "független", + "ráadásul", + "perc", + "gyakorlatilag", + "várható", + "katolikus", + "felelős", + "kissé", + "pénteken", + "akkori", + "egyértelműen", + "állnak", + "hely", + "szeretnék", + "hirtelen", + "szívesen", + "formában", + "dönt", + "kérem", + "fognak", + "mellé", + "nincsenek", + "utáni", + "illetékes", + "gyors", + "forinttal", + "szakemberek", + "anyag", + "tárgyalások", + "tulajdonképpen", + "mutatja", + "állítja", + "alatti", + "vezette", + "demokratikus", + "épület", + "kérte", + "bizony", + "előzetes", + "bank", + "ekkor", + "mondott", + "továbbiakban", + "húsz", + "városi", + "melyet", + "egységes", + "részletes", + "idegen", + "túl", + "műszaki", + "feladat", + "általa", + "kedden", + "végéig", + "könyv", + "közigazgatási", + "képviselője", + "fiú", + "erők", + "egyetemi", + "április", + "felett", + "nők", + "hasonlóan", + "nőtt", + "hamarosan", + "kezdett", + "órakor", + "nevezte", + "haza", + "jogok", + "vajon", + "ettől", + "adat", + "dollár", + "mar", + "alól", + "életét", + "föld", + "modern", + "óriási", + "kész", + "vezető", + "fogják", + "tervek", + "kaptak", + "ön", + "beszélni", + "ideig", + "téren", + "szövetségi", + "hatalom", + "döntést", + "öreg", + "ugye", + "hatóságok", + "bekezdése", + "könnyű", + "lépett", + "cseh", + "amelyik", + "igénybe", + "tény", + "feladata", + "magam", + "vár", + "alapvető", + "neked", + "tartotta", + "velem", + "akart", + "technikai", + "koszovói", + "szombaton", + "könnyen", + "fogalmazott", + "némi", + "államfő", + "időt", + "széles", + "rajta", + "hozta", + "végső", + "ezúttal", + "helyzetet", + "kérdésre", + "teszik", + "látta", + "szerdán", + "biztosan", + "köztársasági", + "határon", + "képviselői", + "tetszik", + "komolyan", + "koalíciós", + "kormányzat", + "civil", + "közepén", + "nappal", + "ára", + "nyelv", + "értelemben", + "valódi", + "tartott", + "példa", + "kapta", + "egyház", + "február", + "építési", + "körüli", + "mindenkinek", + "szovjet", + "dolgot", + "fiatalok", + "véleménye", + "összeget", + "napirend", + "bennünket", + "megye", + "rám", + "terv", + "köteles", + "nevében", + "kezdődött", + "sikerül", + "költő", + "függetlenül", + "kapnak", + "védelmi", + "hozzá", + "található", + "szakértők", + "miszerint", + "mondják", + "különleges", + "érzem", + "bizottsági", + "viszonylag", + "cél", + "folyamat", + "szerepe", + "hadsereg", + "alacsony", + "kerültek", + "erősen", + "rendőrök", + "hajlandó", + "mást", + "kötött", + "tudtam", + "semmilyen", + "típusú", + "elnöki", + "erkölcsi", + "akarnak", + "folyamatos", + "dolgok", + "hisz", + "holnap", + "fordult", + "értem", + "beszél", + "végére", + "ok", + "amelyen", + "indul", + "élni", + "nyilatkozott", + "cm", + "kezdve", + "messze", + "hét", + "adó", + "kezdődik", + "levő", + "fizetni", + "létezik", + "különféle", + "illetően", + "válasz", + "véget", + "ilyenkor", + "joga", + "napja", + "ér", + "kialakult", + "máris", + "megyében", + "szeretné", + "folyó", + "meglehetősen", + "városban", + "sokáig", + "vitát", + "tartalmazza", + "tekintettel", + "mennyire", + "amúgy", + "százalékot", + "kép", + "közgyűlés", + "törvényben", + "aminek", + "elérni", + "főként", + "ahogyan", + "politikusok", + "tevékenység", + "személyek", + "darab", + "bekezdés", + "kérdések", + "szegény", + "elegendő", + "bármilyen", + "dolgozik", + "többnyire", + "ennyi", + "elfogadott", + "végzett", + "munkáját", + "maguk", + "lengyel", + "állítólag", + "vezet", + "veszélyes", + "megjelent", + "valószínű", + "embereket", + "napján", + "találtak", + "tudunk", + "utána", + "név", + "nyári", + "keleti", + "megoldást", + "tekintetében", + "jelentősen", + "különös", + "lehetővé", + "spanyol", + "nyert", + "déli", + "eljárást", + "élt", + "foglalkozó", + "kultúra", + "díj", + "rosszul", + "bejelentette", + "vették", + "vállalat", + "feladatok", + "nyilvánosságra", + "ezután", + "tanár", + "segítséget", + "amint", + "időszakban", + "pozitív", + "demokrácia", + "csütörtökön", + "napig", + "sikeres", + "palesztin", + "igazgató", + "forintra", + "utat", + "dolgozott", + "kéne", + "pillanatban", + "eset", + "feltételek", + "időre", + "kemény", + "embernek", + "tudták", + "kínai", + "alábbi", + "folytatott", + "kért", + "fővárosban", + "közösen", + "bal", + "piac", + "másrészt", + "lehetnek", + "egyházi", + "orvosi", + "titkos", + "határozatot", + "irodalmi", + "azért", + "hírek", + "alkotmányos", + "akiket", + "különbség", + "legutóbbi", + "közeli", + "megvan", + "évet", + "király", + "belőle", + "mennyi", + "hozza", + "kék", + "szabadon", + "akarják", + "határozati", + "semmiféle", + "adatokat", + "heti", + "közelében", + "kérdésben", + "nyilatkozta", + "lehetővé", + "nemzet", + "akarta", + "rendszeresen", + "hosszabb", + "képesek", + "számított", + "függ", + "jelen", + "író", + "kettő", + "valamelyik", + "láttam", + "jelzi", + "noha", + "kérdése", + "kapcsolatok", + "kétszer", + "okoz", + "rendelkezésre", + "értékű", + "elfogadta", + "hivatkozva", + "foglalkozik", + "adtak", + "mond", + "kormánynak", + "fegyveres", + "szerinte", + "település", + "alkalmazni", + "kezdte", + "helyes", + "valahol", + "szervezett", + "naponta", + "szabályok", + "válogatott", + "magyarság", + "piros", + "közösség", + "biztosítani", + "helyettes", + "működési", + "lehetőségét", + "esik", + "tartalmaz", + "eleget", + "falu", + "gép", + "sajátos", + "szerző", + "használt", + "onnan", + "észre", + "kiderül", + "ellentétben", + "aligha", + "mire", + "jogszabály", + "néző", + "figyelmét", + "kisgazda", + "rájuk", + "jelezte", + "feltétlenül", + "hogyha", + "üres", + "méltó", + "rendszert", + "egyetem", + "időnként", + "ügyvezető", + "kerülnek", + "elől", + "elfogadja", + "közönség", + "lehetősége", + "negyedik", + "nézve", + "átmeneti", + "bírósági", + "nő", + "vettek", + "lakás", + "elég", + "szüksége", + "hány", + "nyelvű", + "érzi", + "adnak", + "to", + "akarok", + "eredmény", + "szeretne", + "csökken", + "világban", + "régen", + "iránti", + "oldal", + "mindegy", + "helye", + "verseny", + "fordul", + "rögtön", + "életben", + "hoz", + "hatóság", + "amellyel", + "készült", + "hatása", + "kár", + "magában", + "okozta", + "kommunista", + "kilenc", + "kezd", + "kicsi", + "érintő", + "vonatkozik", + "zárt", + "körben", + "szöveg", + "emelkedett", + "fejét", + "vezetők", + "szam", + "bármely", + "véleményét", + "harminc", + "véletlenül", + "számomra", + "élnek", + "útján", + "nincsen", + "díjat", + "szervek", + "minket", + "élete", + "melléklet", + "hozni", + "innen", + "regionális", + "véve", + "olimpiai", + "katonák", + "méter", + "szóba", + "alapon", + "pályázat", + "tanács", + "fenn", + "kerület", + "órától", + "tartalmazó", + "kormányt", + "északi", + "ezeknek", + "ülésen", + "alelnöke", + "férfiak", + "világon", + "na", + "néz", + "pénzügyminiszter", + "források", + "tudtak", + "képet", + "téma", + "ugyanúgy", + "világos", + "történelem", + "infláció", + "vagyon", + "szóvivője", + "albán", + "területi", + "bárki", + "véletlen", + "speciális", + "kapcsolódó", + "csinálni", + "eredménye", + "különben", + "valahogy", + "fogadja", + "törvények", + "emiatt", + "mutat", + "hivatalosan", + "eredetileg", + "célra", + "dolgozni", + "egyrészt", + "túli", + "hatására", + "amivel", + "alakul", + "aránya", + "alapvetően", + "tekintetben", + "kérdezte", + "néven", + "menni", + "bekezdésében", + "koalíció", + "gazdag", + "jo", + "veszik", + "tudtuk", + "felső", + "ismeri", + "apró", + "országot", + "híres", + "hír", + "irodalom", + "változás", + "kinek", + "tettek", + "iskolai", + "értéke", + "tették", + "helyre", + "tűnt", + "beruházás", + "együttműködés", + "tekintve", + "gond", + "tudod", + "államtitkára", + "sötét", + "forradalom", + "önmagában", + "jogszabályok", + "megállapodást", + "kifejezetten", + "elektronikus", + "oldalán", + "fejlesztési", + "várja", + "későbbi", + "legyenek", + "dollárt", + "egyértelmű", + "játék", + "ugy", + "vitában", + "erdélyi", + "előterjesztést", + "okozott", + "többé", + "megerősítette", + "megjelent", + "válság", + "délelőtt", + "gyermekek", + "kapcsolatot", + "dolgokat", + "kettős", + "hiánya", + "mindenütt", + "nyilvános", + "fizikai", + "sárga", + "esti", + "igazság", + "állította", + "magára", + "jelentés", + "helyzete", + "bécsi", + "lelki", + "szabályozás", + "hatályba", + "levelet", + "világot", + "helyébe", + "hamis", + "oktatás", + "görög", + "ebbe", + "ég", + "kabinet", + "játszott", + "köszönhetően", + "helyzetbe", + "erő", + "külföldön", + "szét", + "fontosnak", + "nyáron", + "szomszédos", + "vizet", + "szerepelt", + "problémák", + "növekedés", + "segíteni", + "jövő", + "halál", + "romániai", + "hiányzik", + "eleve", + "igy", + "kapcsolat", + "szolgálati", + "előtte", + "végleges", + "bennem", + "szocialisták", + "többség", + "sohasem", + "meglévő", + "szigorú", + "urat", + "szólva", + "foglalt", + "meleg", + "működését", + "vett", + "utal", + "írni", + "számukra", + "liberális", + "felesége", + "találni", + "területek", + "problémát", + "egyebek", + "eléggé", + "japán", + "kénytelen", + "drága", + "pontot", + "szerzett", + "tájékoztatta", + "belüli", + "adatai", + "helyét", + "plusz", + "római", + "eszközök", + "mégiscsak", + "fény", + "rendőr", + "lásd", + "ti", + "programot", + "rendelkezés", + "vezetett", + "látható", + "vezetése", + "dolgozó", + "talált", + "gyakorlati", + "hideg", + "nemrég", + "engedély", + "szerzett", + "formájában", + "mindez", + "szent", + "számát", + "áron", + "keresztény", + "mielőtt", + "kezében", + "piacon", + "végig", + "ötven", + "szeretnék", + "folyamán", + "állást", + "rend", + "privatizációs", + "kerülhet", + "dolláros", + "lényeges", + "kívüli", + "vállalkozás", + "miniszteri", + "világháború", + "termékek", + "negatív", + "itthon", + "elkövetett", + "távon", + "természeti", + "olykor", + "rádió", + "polgárok", + "gyakorlat", + "török", + "ügyet", + "többiek", + "mindenesetre", + "horvát", + "kiemelt", + "vizsgálatot", + "belügyminiszter", + "hatósági", + "irányuló", + "mondták", + "engedélyt", + "jellemző", + "eszembe", + "rész", + "forgalom", + "joggal", + "vidéki", + "bácsi", + "külön", + "kiállítás", + "adják", + "beteg", + "topic", + "televízió", + "átlagos", + "klasszikus", + "furcsa", + "amire", + "tevékenységet", + "parlamentben", + "tudomásul", + "vallási", + "lehessen", + "számon", + "jelentése", + "története", + "benyújtott", + "kik", + "ír", + "történet", + "tekinthető", + "svájci", + "legjobban", + "korában", + "vélte", + "végi", + "érkező", + "kerülő", + "terén", + "zene", + "szánt", + "legújabb", + "főpolgármester", + "lát", + "szokásos", + "boldog", + "részén", + "nyújt", + "cigány", + "változott", + "milliárdos", + "jogot", + "gondoltam", + "rengeteg", + "országokban", + "hó", + "szintű", + "holott", + "ennyire", + "tulajdonosa", + "egymástól", + "életet", + "szeme", + "mire", + "kiváló", + "nyugodtan", + "ellene", + "jövő", + "látott", + "mondtam", + "fogva", + "nézett", + "eredményt", + "tevékenységét", + "állandóan", + "találta", + "tagok", + "választás", + "fontosabb", + "tulajdonos", + "cikk", + "környékén", + "késő", + "nyelvi", + "hangzott", + "tényleges", + "holland", + "alap", + "hónapban", + "cím", + "mára", + "ellenőrzés", + "stratégiai", + "szerepét", + "feladatokat", + "dolgoznak", + "bekezdésben", + "alaposan", + "időjárásról", + "ifjúsági", + "legmagasabb", + "információk", + "tartottak", + "vállalatok", + "hozzátette", + "lehetetlen", + "térség", + "helyén", + "ugyanaz", + "szakember", + "hiányában", + "kérdésére", + "orvos", + "halálos", + "számítógépes", + "tudomány", + "döntése", + "alacsonyabb", + "közelmúltban", + "mentén", + "felel", + "nevet", + "életében", + "kéri", + "állapotban", + "utcán", + "hete", + "előterjesztés", + "katona", + "magával", + "játszik", + "éjjel", + "nyelven", + "tulajdonában", + "napot", + "kor", + "közülük", + "aktív", + "események", + "találkozó", + "tartoznak", + "árak", + "családok", + "hamar", + "hadd", + "színház", + "honvédelmi", + "kutatók", + "lényege", + "anyagot", + "személyesen", + "eső", + "közszolgálati", + "írásban", + "vezetés", + "kivételével", + "vesznek", + "írtam", + "mégpedig", + "hiba", + "ítélet", + "egyedi", + "igyekszik", + "ül", + "nyilvánvalóan", + "közvélemény", + "szólni", + "tekinti", + "éri", + "megelőző", + "ügyek", + "várják", + "tett", + "lényegesen", + "javaslatát", + "alapos", + "jönnek", + "dokumentum", + "átlagosan", + "kapott", + "helyzetét", + "rendszerváltás", + "szabályozási", + "emlékszem", + "felében", + "nyerte", + "eredmények", + "no", + "információs", + "programok", + "velünk", + "lakossági", + "tartották", + "elnökének", + "választásokon", + "hagyta", + "nyitott", + "helyszínen", + "százalékra", + "támogatása", + "ár", + "baloldali", + "ritkán", + "anélkül", + "derül", + "érdekeit", + "jöttek", + "szabadalmi", + "szemmel", + "sorsa", + "rendben", + "módosítása", + "meghalt", + "ült", + "akarom", + "kormánypárti", + "beruházási", + "intézkedések", + "amelyre", + "magyarul", + "külügyi", + "leszek", + "esetekben", + "fogunk", + "jogát", + "szakértői", + "gyenge", + "előírt", + "látják", + "értelme", + "szeretem", + "lettek", + "szabadság", + "végzett", + "voltunk", + "előterjesztő", + "kezét", + "héttel", + "központ", + "fenti", + "milliós", + "vállalkozó", + "eső", + "figyelemmel", + "tárgyalásokat", + "anyagok", + "lényeg", + "kérdéseket", + "vörös", + "időszak", + "szenvedett", + "kórház", + "határ", + "ülés", + "vonatkozóan", + "amiért", + "képviselőtársaim", + "gondot", + "egyfajta", + "rendes", + "baleset", + "lapunk", + "századi", + "dolgozók", + "érdemi", + "etnikai", + "érdekel", + "környezeti", + "pontjában", + "csapatok", + "belőle", + "oldalról", + "szavazattal", + "egészséges", + "orvosok", + "tőke", + "lépés", + "fele", + "köze", + "korona", + "iskolák", + "kiadott", + "őszi", + "nyílt", + "szolgálat", + "területeken", + "szem", + "derült", + "friss", + "egyidejűleg", + "fogok", + "mindenkit", + "érinti", + "negyven", + "valamely", + "hallottam", + "termék", + "nevezett", + "kér", + "örök", + "rendezett", + "kerüljön", + "szavak", + "állampolgárok", + "információ", + "munkatársa", + "igaza", + "jót", + "rendszeres", + "sosem", + "szavazás", + "kifejtette", + "jelentkezik", + "autó", + "osztály", + "szülők", + "mindjárt", + "hozott", + "lennének", + "átfogó", + "felől", + "adták", + "túl", + "kiegészítő", + "érték", + "fn", + "távú", + "gondolja", + "forintért", + "pártja", + "fekvő", + "jelentett", + "háborús", + "alkotmány", + "levél", + "mértékű", + "azonnali", + "szlovákiai", + "am", + "roma", + "túlságosan", + "arányban", + "használni", + "internetes", + "lényegében", + "kérni", + "tesznek", + "napra", + "vállalkozások", + "távol", + "zenei", + "ideiglenes", + "csoportok", + "eltérő", + "valakinek", + "diákok", + "mű", + "javasolja", + "avagy", + "profi", + "amilyen", + "sehol", + "találkozott", + "ottani", + "nyilvánvaló", + "szervezeti", + "fizetési", + "tonna", + "változik", + "ügyész", + "halála", + "ugyanolyan", + "indítványt", + "korai", + "nyilvánosság", + "befektetők", + "területet", + "pályázatot", + "tó", + "céljából", + "törvényi", + "jutottak", + "készített", + "úti", + "támogatási", + "valóságos", + "bizottságának", + "svéd", + "forduló", + "költségek", + "állítják", + "ránk", + "jelentkezett", + "pusztán", + "támogatását", + "században", + "mekkora", + "református", + "járnak", + "közösségi", + "feladatot", + "kárt", + "látható", + "amiről", + "mély", + "származik", + "összefüggésben", + "szóban", + "szolgáltatások", + "valaha", + "egyenesen", + "betegség", + "doktor", + "szűk", + "úgyhogy", + "mértéke", + "pályázati", + "környezet", + "összege", + "kivéve", + "hívta", + "várnak", + "munkaügyi", + "nagyjából", + "debreceni", + "dolga", + "igenis", + "hangot", + "bizonyára", + "remélem", + "soron", + "egyenlő", + "kommunikációs", + "hátrányos", + "szerv", + "fideszes", + "rá", + "könyvet", + "támogatására", + "egyike", + "népi", + "legkisebb", + "nehogy", + "pártelnök", + "alsó", + "egyúttal", + "szakszervezetek", + "alapja", + "folytatni", + "mutatják", + "művészeti", + "támogatta", + "csoda", + "elfogadni", + "érkezik", + "akkora", + "elképzelhető", + "igény", + "ügyekben", + "szavazni", + "példát", + "felek", + "lennie", + "állat", + "klub", + "értek", + "jelek", + "bizonyult", + "emberiség", + "körű", + "munkatársai", + "biztosítja", + "állítani", + "többségi", + "változatlanul", + "vers", + "következett", + "közelebb", + "támogatni", + "nyújtott", + "bonyolult", + "fejezet", + "élén", + "valakit", + "folyt", + "bankok", + "pontban", + "változások", + "bizonyítja", + "betegek", + "média", + "tábornok", + "természet", + "honnan", + "ezekben", + "folytatja", + "percben", + "számában", + "filmet", + "fogom", + "követi", + "frakció", + "kör", + "nézni", + "idők", + "lányok", + "szavazzanak", + "általuk", + "érezte", + "tőlük", + "ingatlan", + "valamivel", + "szóvivő", + "hang", + "melletti", + "fölé", + "ezelőtti", + "álltak", + "ötödik", + "pontosabban", + "sorra", + "rendelkezésére", + "csecsen", + "határozottan", + "munkája", + "normális", + "megyek", + "abszolút", + "egyházak", + "hatályos", + "senkit", + "megoldani", + "felelősség", + "szeretnénk", + "szolgáltatás", + "működött", + "hazánkban", + "felsőoktatási", + "utcában", + "fokozatosan", + "vélik", + "esemény", + "összhangban", + "hasznos", + "hivatásos", + "beruházások", + "templom", + "folytatódik", + "gondolok", + "idős", + "belföldi", + "nettó", + "mód", + "kedvező", + "önök", + "módja", + "mondván", + "kijelölt", + "ajánlás", + "használják", + "vasúti", + "hozzám", + "címe", + "hatalmi", + "olyanok", + "kezdeni", + "módosítását", + "egyetért", + "fejlődés", + "módosításáról", + "érdeke", + "valamiféle", + "ritka", + "fizet", + "jelenség", + "mutatott", + "állapota", + "pécsi", + "esélye", + "halott", + "számítani", + "kisebbségek", + "települések", + "régóta", + "akad", + "melyben", + "ukrán", + "ilyet", + "nyár", + "maradtak", + "amiben", + "to", + "törvényes", + "intézkedéseket", + "őrizetbe", + "véleményt", + "hatékony", + "lehetőségek", + "nemzetbiztonsági", + "államok", + "férfit", + "moszkvai", + "ügyészség", + "fős", + "vizsgálatok", + "állatok", + "címet", + "ingyenes", + "nála", + "hallani", + "jutni", + "készülő", + "db", + "vegyes", + "úgyis", + "alkalmazott", + "szolgálja", + "pályára", + "órás", + "csatlakozási", + "számunkra", + "művelődési", + "megfelel", + "netán", + "gondolat", + "szerelem", + "lélek", + "éreztem", + "meghaladja", + "ellentétes", + "számot", + "híd", + "földön", + "életbe", + "tízezer", + "befektetési", + "pesti", + "képtelen", + "testi", + "ezáltal", + "tartós", + "időn", + "valóság", + "unió", + "igencsak", + "másként", + "véleményem", + "biztosít", + "megállapított", + "feltehetően", + "csatlakozás", + "tűz", + "diplomáciai", + "mindenekelőtt", + "bizottsága", + "helyére", + "jelent", + "módszer", + "tag", + "folyamatban", + "álláspontja", + "csakis", + "gondolta", + "bűncselekmény", + "rendőrségi", + "senkinek", + "határidő", + "pályán", + "minimális", + "gyönyörű", + "kapitány", + "elnököt", + "információt", + "fiatalember", + "tőlem", + "aktuális", + "foglalkozni", + "amelyeknek", + "állampolgár", + "hozzájuk", + "párizsi", + "válaszolni", + "kolozsvári", + "professzor", + "társadalombiztosítási", + "állapot", + "valós", + "óráig", + "fent", + "hírt", + "belga", + "jelenik", + "felét", + "kellő", + "tagjainak", + "ifjú", + "konzervatív", + "válaszolt", + "fa", + "előadás", + "órát", + "szolgál", + "fejezte", + "rosszabb", + "rendőri", + "szolgáltató", + "párhuzamosan", + "bizonnyal", + "forgalmi", + "levélben", + "védett", + "lapok", + "vállalkozók", + "számító", + "jegyző", + "rendszerben", + "alapítvány", + "mellette", + "szembeni", + "kívánják", + "induló", + "bíró", + "foglalkozott", + "számolt", + "finom", + "kevesebbet", + "mindennapi", + "döntését", + "éjszaka", + "mérkőzés", + "mennek", + "térségben", + "feletti", + "hagyja", + "jobboldali", + "színes", + "tavaszi", + "maradnak", + "hazánk", + "határozza", + "éles", + "akárcsak", + "kötelezettség", + "hozták", + "ünnepi", + "bizonytalan", + "látszott", + "találták", + "láttam", + "épületek", + "londoni", + "ingyen", + "épül", + "azokkal", + "tárgyalt", + "jogos", + "polgármesteri", + "szomorú", + "hatálya", + "létrehozott", + "kérek", + "ketten", + "rég", + "elhangzott", + "keresni", + "segít", + "választotta", + "iroda", + "elsőként", + "azert", + "tisztában", + "bejelentés", + "mindenkori", + "létező", + "nemigen", + "szakma", + "javasolta", + "tárgyalni", + "mögé", + "tájékoztatást", + "apja", + "viták", + "vezeti", + "azokra", + "hónapja", + "mindezt", + "ügye", + "intézet", + "kérdésekben", + "elismerte", + "veled", + "hangzik", + "szokás", + "köszönöm", + "kedvéért", + "meghatározó", + "vállalta", + "ingatlanok", + "egység", + "képviselői", + "fogjuk", + "sorban", + "fajta", + "teszem", + "mostanában" + ] +} diff --git a/static/languages/list.json b/static/languages/list.json index 52134dcc5..a67f5c36c 100644 --- a/static/languages/list.json +++ b/static/languages/list.json @@ -18,6 +18,7 @@ "slovak", "dutch", "hungarian", + "hungarian_2.5k", "norwegian", "hebrew", "icelandic_1k", From b2891f488e8898b1dd190df48776f5a5259c0f2d Mon Sep 17 00:00:00 2001 From: Jack Date: Thu, 5 Nov 2020 20:04:00 +0000 Subject: [PATCH 05/32] renamed links, added styling --- src/sass/style.scss | 11 +++++++++ static/index.html | 58 +++++++++++++++++++++++++++++---------------- 2 files changed, 49 insertions(+), 20 deletions(-) diff --git a/src/sass/style.scss b/src/sass/style.scss index c2889a7f0..204c6cf38 100644 --- a/src/sass/style.scss +++ b/src/sass/style.scss @@ -2091,6 +2091,17 @@ key { .settingsGroup { display: grid; gap: 2rem; + &.quickNav .links { + display: flex; + justify-content: space-between; + a { + text-decoration: none; + opacity: 0.5; + &:hover { + opacity: 1; + } + } + } } .section { diff --git a/static/index.html b/static/index.html index 50529eaea..276f7b8e5 100644 --- a/static/index.html +++ b/static/index.html @@ -1437,19 +1437,25 @@ esc )
-
quick navigation
-
- account - behavior - input - sound - caret - appearance - theme - hide elements - danger zone + + - -
+
behaviour
@@ -1691,7 +1701,7 @@
-
+
input
@@ -1841,7 +1851,7 @@
-
+
sound
@@ -1912,7 +1922,7 @@
-
+
caret
@@ -2070,7 +2080,11 @@
-
+
appearance
@@ -2464,7 +2478,7 @@
-
+
theme
@@ -2658,7 +2672,7 @@
@@ -2728,7 +2742,11 @@
-
+
danger zone
From 81e8908548f4f6e043bd14720a455be07f8e4eea Mon Sep 17 00:00:00 2001 From: Jack Date: Thu, 5 Nov 2020 20:09:46 +0000 Subject: [PATCH 06/32] fixed word highlight and blind mode --- src/js/script.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/js/script.js b/src/js/script.js index d9a9d3823..b29cb8b3c 100644 --- a/src/js/script.js +++ b/src/js/script.js @@ -939,6 +939,9 @@ function compareInput(showError) { correctSoFar = true; } let classString = correctSoFar ? "correct" : "incorrect"; + if (config.blindMode) { + classString = "correct"; + } for (let i = 0; i < currentWord.length; i++) { ret += `` + currentWord[i] + ``; } From 33be51979cc1a1bc5b7befa1c4eb72da8444d965 Mon Sep 17 00:00:00 2001 From: Jack Date: Thu, 5 Nov 2020 20:13:54 +0000 Subject: [PATCH 07/32] saving quote mode always as english --- src/js/script.js | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/js/script.js b/src/js/script.js index b29cb8b3c..91b4694b9 100644 --- a/src/js/script.js +++ b/src/js/script.js @@ -2026,6 +2026,12 @@ function showResult(difficultyFailed = false) { keypressStats.duration.array = "toolong"; } + // REMOVE THIS WHEN MULTI LANGUAGE QUOTES ARE ADDED + let lang = config.language; + if (config.mode === "quote") { + lang = "english"; + } + let completedEvent = { wpm: stats.wpm, rawWpm: stats.wpmRaw, @@ -2038,7 +2044,7 @@ function showResult(difficultyFailed = false) { punctuation: config.punctuation, numbers: config.numbers, timestamp: Date.now(), - language: config.language, + language: lang, restartCount: restartCount, incompleteTestSeconds: incompleteTestSeconds, difficulty: config.difficulty, @@ -3078,7 +3084,7 @@ function changeMode(mode, nosave) { $("#top .config .numbersMode").addClass("hidden"); $("#result .stats .source").removeClass("hidden"); $("#top .config .quoteLength").removeClass("hidden"); - changeLanguage("english", nosave); + // changeLanguage("english", nosave); } if (!nosave) saveConfigToCookie(); } From 5591583f38a4c32f7a43910567a96bc09fe7f4f7 Mon Sep 17 00:00:00 2001 From: Jack Date: Thu, 5 Nov 2020 20:20:40 +0000 Subject: [PATCH 08/32] parsing input as int --- src/js/script.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/js/script.js b/src/js/script.js index 91b4694b9..39abf3b92 100644 --- a/src/js/script.js +++ b/src/js/script.js @@ -4233,7 +4233,7 @@ function updateKeytips() { function applyMode2Popup() { let mode = $("#customMode2Popup").attr("mode"); - let val = $("#customMode2Popup input").val(); + let val = parseInt($("#customMode2Popup input").val()); if (mode == "time") { if (val !== null && !isNaN(val) && val >= 0) { From 5e671616fbdc52813987b089d8da717941c2fdb0 Mon Sep 17 00:00:00 2001 From: Gennady Koshkin Date: Fri, 6 Nov 2020 21:17:05 +0300 Subject: [PATCH 09/32] Add Iceberg themes --- static/themes/iceberg_dark.css | 11 +++++++++++ static/themes/iceberg_light.css | 11 +++++++++++ static/themes/list.json | 10 ++++++++++ 3 files changed, 32 insertions(+) create mode 100644 static/themes/iceberg_dark.css create mode 100644 static/themes/iceberg_light.css diff --git a/static/themes/iceberg_dark.css b/static/themes/iceberg_dark.css new file mode 100644 index 000000000..bbc81dbb7 --- /dev/null +++ b/static/themes/iceberg_dark.css @@ -0,0 +1,11 @@ +:root { + --bg-color: #161821; + --caret-color: #d2d4de; + --main-color: #d2d4de; + --sub-color: #84a0c6; + --text-color: #c6c8d1; + --error-color: #e27878; + --error-extra-color: #e2a478; + --colorful-error-color: #e27878; + --colorful-error-extra-color: #e2a478; +} diff --git a/static/themes/iceberg_light.css b/static/themes/iceberg_light.css new file mode 100644 index 000000000..ed5245691 --- /dev/null +++ b/static/themes/iceberg_light.css @@ -0,0 +1,11 @@ +:root { + --bg-color: #e8e9ec; + --caret-color: #262a3f; + --main-color: #262a3f; + --sub-color: #2d539e; + --text-color: #33374c; + --error-color: #cc517a; + --error-extra-color: #cc3768; + --colorful-error-color: #cc517a; + --colorful-error-extra-color: #cc3768; +} diff --git a/static/themes/list.json b/static/themes/list.json index 3f8627222..3fa346d8f 100644 --- a/static/themes/list.json +++ b/static/themes/list.json @@ -423,5 +423,15 @@ "name": "drowning", "bgColor": "#191826", "textColor": "#4a6fb5" + }, + { + "name": "iceberg_dark", + "bgColor": "#161821", + "textColor": "#c6c8d1" + }, + { + "name": "iceberg_light", + "bgColor": "#e8e9ec", + "textColor": "#33374c" } ] From 04f6ef784989a806f30c467a6d8c43ef4229d589 Mon Sep 17 00:00:00 2001 From: Jack Date: Fri, 6 Nov 2020 19:20:50 +0000 Subject: [PATCH 10/32] added static keymap mode --- src/js/commandline.js | 7 +++++++ static/index.html | 8 ++++++++ 2 files changed, 15 insertions(+) diff --git a/src/js/commandline.js b/src/js/commandline.js index 5501af046..d1171fd0f 100644 --- a/src/js/commandline.js +++ b/src/js/commandline.js @@ -651,6 +651,13 @@ let commandsKeymapMode = { changeKeymapMode("off"); }, }, + { + id: "setKeymapModeStatic", + display: "static", + exec: () => { + changeKeymapMode("static"); + }, + }, { id: "setKeymapModeNext", display: "next", diff --git a/static/index.html b/static/index.html index 276f7b8e5..b8a67f770 100644 --- a/static/index.html +++ b/static/index.html @@ -2318,6 +2318,14 @@ > off
+
+ static +
Date: Fri, 6 Nov 2020 19:21:29 +0000 Subject: [PATCH 11/32] checking for default before applying config --- src/js/userconfig.js | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/src/js/userconfig.js b/src/js/userconfig.js index 748e62cbf..ffab2d499 100644 --- a/src/js/userconfig.js +++ b/src/js/userconfig.js @@ -149,17 +149,25 @@ function saveActiveTagsToCookie() { } function loadConfigFromCookie() { + console.log("loading cookie config"); let newConfig = $.cookie("config"); if (newConfig !== undefined) { newConfig = JSON.parse(newConfig); applyConfig(newConfig); + console.log("applying cookie config"); cookieConfig = newConfig; saveConfigToCookie(true); + console.log("saving cookie config"); } restartTest(false, true); } function applyConfig(configObj) { + Object.keys(defaultConfig).forEach((configKey) => { + if (configObj[configKey] === undefined) { + configObj[configKey] = defaultConfig[configKey]; + } + }); if (configObj && configObj != null && configObj != "null") { setTheme(configObj.theme, true); setCustomTheme(configObj.customTheme, true); @@ -283,11 +291,6 @@ function applyConfig(configObj) { $("#ad3").remove(); } } - Object.keys(defaultConfig).forEach((configKey) => { - if (config[configKey] == undefined) { - config[configKey] = defaultConfig[configKey]; - } - }); updateTestModesNotice(); } @@ -1284,12 +1287,12 @@ function changeKeymapMode(mode, nosave) { if (mode == null || mode == undefined) { mode = "off"; } - if (mode === "react") { - $(".active-key").removeClass("active-key"); - } - if (mode === "next") { - $(".keymap-key").attr("style", ""); - } + // if (mode === "react" ||) { + $(".active-key").removeClass("active-key"); + // } + // if (mode === "next") { + $(".keymap-key").attr("style", ""); + // } config.keymapMode = mode; if (!nosave) restartTest(false, nosave); if (!nosave) saveConfigToCookie(); From f797f28bf326ec65abea50da2999c72afa75f415 Mon Sep 17 00:00:00 2001 From: Jack Date: Fri, 6 Nov 2020 19:21:43 +0000 Subject: [PATCH 12/32] auto saving custom theme when applied from link --- src/js/script.js | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/js/script.js b/src/js/script.js index 39abf3b92..e27b09858 100644 --- a/src/js/script.js +++ b/src/js/script.js @@ -5240,6 +5240,14 @@ $(document).ready(() => { theme = theme.split(","); config.customThemeColors = theme; showNotification("Custom theme applied", 1000); + let save = []; + $.each( + $(".pageSettings .section.customTheme [type='color']"), + (index, element) => { + save.push($(element).attr("value")); + } + ); + setCustomThemeColors(save); } catch (e) { showNotification( "Something went wrong. Reverting to default custom colors.", From 311b000c2d1fc522cf1ff6c91fbeca45c37af155 Mon Sep 17 00:00:00 2001 From: Jack Date: Fri, 6 Nov 2020 19:36:03 +0000 Subject: [PATCH 13/32] loading custom theme on auth change --- src/js/account.js | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/src/js/account.js b/src/js/account.js index c99079a6b..c2ec39012 100644 --- a/src/js/account.js +++ b/src/js/account.js @@ -291,6 +291,31 @@ firebase.auth().onAuthStateChanged(function (user) { }); } } + let theme = findGetParameter("customTheme"); + if (theme !== null) { + try { + theme = theme.split(","); + config.customThemeColors = theme; + showNotification("Custom theme applied.", 1000); + } catch (e) { + showNotification( + "Something went wrong. Reverting to default custom colors.", + 3000 + ); + config.customThemeColors = defaultConfig.customThemeColors; + } + setCustomTheme(true); + setCustomThemeInputs(); + applyCustomThemeColors(); + // let save = []; + // $.each( + // $(".pageSettings .section.customTheme [type='color']"), + // (index, element) => { + // save.push($(element).attr("value")); + // } + // ); + // setCustomThemeColors(save); + } }); function getAccountDataAndInit() { From 396700dcf858d070a3fbd26461f1923f46756548 Mon Sep 17 00:00:00 2001 From: Jack Date: Fri, 6 Nov 2020 19:36:19 +0000 Subject: [PATCH 14/32] not loading the config immedietly --- src/js/script.js | 25 ------------------------- 1 file changed, 25 deletions(-) diff --git a/src/js/script.js b/src/js/script.js index e27b09858..a673ea785 100644 --- a/src/js/script.js +++ b/src/js/script.js @@ -5234,31 +5234,6 @@ $(document).ready(() => { .removeClass("hidden") .stop(true, true) .animate({ opacity: 1 }, 250, () => { - let theme = findGetParameter("customTheme"); - if (theme !== null) { - try { - theme = theme.split(","); - config.customThemeColors = theme; - showNotification("Custom theme applied", 1000); - let save = []; - $.each( - $(".pageSettings .section.customTheme [type='color']"), - (index, element) => { - save.push($(element).attr("value")); - } - ); - setCustomThemeColors(save); - } catch (e) { - showNotification( - "Something went wrong. Reverting to default custom colors.", - 3000 - ); - config.customThemeColors = defaultConfig.customThemeColors; - } - setCustomTheme(true); - setCustomThemeInputs(); - applyCustomThemeColors(); - } if (window.location.pathname === "/verify") { const fragment = new URLSearchParams(window.location.hash.slice(1)); if (fragment.has("access_token")) { From e2f41c6f4277d6ddd3cbed01d4abdc4b073cd64d Mon Sep 17 00:00:00 2001 From: Jack Date: Fri, 6 Nov 2020 20:28:33 +0000 Subject: [PATCH 15/32] added override sync option to the keymap layout --- src/js/commandline.js | 11 +++++++++-- src/js/settings.js | 9 ++++++--- src/js/userconfig.js | 32 ++++++++++++++++++++++++++------ 3 files changed, 41 insertions(+), 11 deletions(-) diff --git a/src/js/commandline.js b/src/js/commandline.js index d1171fd0f..516bcc4b5 100644 --- a/src/js/commandline.js +++ b/src/js/commandline.js @@ -1665,15 +1665,22 @@ let commandsKeymapLayouts = { if (Object.keys(layouts).length > 0) { commandsKeymapLayouts.list = []; + commandsKeymapLayouts.list.push({ + id: "changeKeymapLayoutOverrideSync", + display: "override sync", + exec: () => { + changeKeymapLayout("overrideSync"); + restartTest(); + }, + }); Object.keys(layouts).forEach((layout) => { if (layout.toString() != "default") { commandsKeymapLayouts.list.push({ id: "changeKeymapLayout" + capitalizeFirstLetter(layout), - display: layout.replace("_", " "), + display: layout.replace(/_/g, " "), exec: () => { changeKeymapLayout(layout); restartTest(); - saveConfigToCookie(); }, }); } diff --git a/src/js/settings.js b/src/js/settings.js index 44c60e6a8..7370c4913 100644 --- a/src/js/settings.js +++ b/src/js/settings.js @@ -269,7 +269,7 @@ async function fillSettingsPage() { languages.forEach((language) => { langEl.append( `
${language.replace( - "_", + /_/g, " " )}
` ); @@ -280,18 +280,21 @@ async function fillSettingsPage() { Object.keys(layouts).forEach((layout) => { layoutEl.append( `
${layout.replace( - "_", + /_/g, " " )}
` ); }); let keymapEl = $(".pageSettings .section.keymapLayout .buttons").empty(); + keymapEl.append( + `
override sync
` + ); Object.keys(layouts).forEach((layout) => { if (layout.toString() != "default") { keymapEl.append( `
${layout.replace( - "_", + /_/g, " " )}
` ); diff --git a/src/js/userconfig.js b/src/js/userconfig.js index ffab2d499..92cff96f4 100644 --- a/src/js/userconfig.js +++ b/src/js/userconfig.js @@ -1272,6 +1272,9 @@ function changeLayout(layout, nosave) { } config.layout = layout; updateTestModesNotice(); + if (config.keymapLayout === "overrideSync") { + refreshKeymapKeys(config.keymapLayout); + } if (!nosave) saveConfigToCookie(); } @@ -1376,22 +1379,40 @@ function changeKeymapLayout(layout, nosave) { layout = "qwerty"; } config.keymapLayout = layout; + refreshKeymapKeys(layout); if (!nosave) saveConfigToCookie(); // layouts[layout].forEach((x) => { // console.log(x); // }); + // console.log(all.join()); +} + +function refreshKeymapKeys(layout) { try { - if (layouts[layout].keymapShowTopRow) { + let lts = layouts[layout]; //layout to show + let layoutString = layout; + if (config.keymapLayout === "overrideSync") { + if (config.layout === "default") { + lts = layouts["qwerty"]; + layoutString = "default"; + } else { + lts = layouts[config.layout]; + layoutString = config.layout; + } + } + + if (lts.keymapShowTopRow) { $(".keymap .r1").removeClass("hidden"); } else { $(".keymap .r1").addClass("hidden"); } - $($(".keymap .r5 .keymap-key .letter")[0]).text(layout.replace(/_/g, " ")); + $($(".keymap .r5 .keymap-key .letter")[0]).text( + layoutString.replace(/_/g, " ") + ); + keymapShowIsoKey(lts.iso); - keymapShowIsoKey(layouts[layout].iso); - - var toReplace = layouts[layout].keys.slice(1, 48); + var toReplace = lts.keys.slice(1, 48); // var _ = toReplace.splice(12, 1); var count = 0; @@ -1456,7 +1477,6 @@ function changeKeymapLayout(layout, nosave) { ); changeKeymapLayout("qwerty", true); } - // console.log(all.join()); } function changeFontSize(fontSize, nosave) { From aaf6e6b00e65e97b5ad20aa360b8e9db947f11d7 Mon Sep 17 00:00:00 2001 From: Jack Date: Fri, 6 Nov 2020 20:28:53 +0000 Subject: [PATCH 16/32] you can now click the keymap space to change keymap layout --- src/js/script.js | 5 +++++ src/sass/style.scss | 7 +++++++ 2 files changed, 12 insertions(+) diff --git a/src/js/script.js b/src/js/script.js index a673ea785..88fc4aee1 100644 --- a/src/js/script.js +++ b/src/js/script.js @@ -5213,6 +5213,11 @@ $(document).on("click", "#bottom .leftright .right .current-theme", (e) => { showCommandLine(); }); +$(document).on("click", ".keymap .r5 #KeySpace", (e) => { + currentCommands.push(commandsKeymapLayouts); + showCommandLine(); +}); + $(document).on("mouseleave", "#resultWordsHistory .words .word", (e) => { $(".wordInputAfter").remove(); }); diff --git a/src/sass/style.scss b/src/sass/style.scss index 204c6cf38..7a03f48ec 100644 --- a/src/sass/style.scss +++ b/src/sass/style.scss @@ -3016,6 +3016,13 @@ key { } } + &#KeySpace { + &:hover { + cursor: pointer; + color: var(--main-color); + } + } + &#KeySpace, &#KeySpace2 { width: 100%; From 153cdb0898bd87734a7898394f1a31a10080a151 Mon Sep 17 00:00:00 2001 From: Jack Date: Fri, 6 Nov 2020 20:52:50 +0000 Subject: [PATCH 17/32] changed function names to follow the same convention --- src/js/commandline.js | 74 +++++++++++++++++++++---------------------- src/js/script.js | 52 +++++++++++++++--------------- src/js/settings.js | 15 ++++----- src/js/userconfig.js | 52 +++++++++++++++--------------- 4 files changed, 95 insertions(+), 98 deletions(-) diff --git a/src/js/commandline.js b/src/js/commandline.js index 516bcc4b5..a8ed2a322 100644 --- a/src/js/commandline.js +++ b/src/js/commandline.js @@ -648,28 +648,28 @@ let commandsKeymapMode = { id: "setKeymapModeOff", display: "off", exec: () => { - changeKeymapMode("off"); + setKeymapMode("off"); }, }, { id: "setKeymapModeStatic", display: "static", exec: () => { - changeKeymapMode("static"); + setKeymapMode("static"); }, }, { id: "setKeymapModeNext", display: "next", exec: () => { - changeKeymapMode("next"); + setKeymapMode("next"); }, }, { id: "setKeymapModeReact", display: "react", exec: () => { - changeKeymapMode("react"); + setKeymapMode("react"); }, }, ], @@ -960,28 +960,28 @@ let commandsKeymapStyle = { id: "setKeymapStyleStaggered", display: "staggered", exec: () => { - changeKeymapStyle("staggered"); + setKeymapStyle("staggered"); }, }, { id: "setKeymapStyleMatrix", display: "matrix", exec: () => { - changeKeymapStyle("matrix"); + setKeymapStyle("matrix"); }, }, { id: "setKeymapStyleSplit", display: "split", exec: () => { - changeKeymapStyle("split"); + setKeymapStyle("split"); }, }, { id: "setKeymapStyleSplitMatrix", display: "split matrix", exec: () => { - changeKeymapStyle("split_matrix"); + setKeymapStyle("split_matrix"); }, }, ], @@ -1149,7 +1149,7 @@ let commandsWordCount = { id: "changeWordCount10", display: "10", exec: () => { - changeWordCount("10"); + setWordCount("10"); restartTest(); }, }, @@ -1157,7 +1157,7 @@ let commandsWordCount = { id: "changeWordCount25", display: "25", exec: () => { - changeWordCount("25"); + setWordCount("25"); restartTest(); }, }, @@ -1165,7 +1165,7 @@ let commandsWordCount = { id: "changeWordCount50", display: "50", exec: () => { - changeWordCount("50"); + setWordCount("50"); restartTest(); }, }, @@ -1173,7 +1173,7 @@ let commandsWordCount = { id: "changeWordCount100", display: "100", exec: () => { - changeWordCount("100"); + setWordCount("100"); restartTest(); }, }, @@ -1181,7 +1181,7 @@ let commandsWordCount = { id: "changeWordCount200", display: "200", exec: () => { - changeWordCount("200"); + setWordCount("200"); restartTest(); }, }, @@ -1190,7 +1190,7 @@ let commandsWordCount = { display: "custom...", input: true, exec: (input) => { - changeWordCount(input); + setWordCount(input); restartTest(); }, }, @@ -1204,7 +1204,7 @@ let commandsQuoteLengthConfig = { id: "changeQuoteLengthAll", display: "all", exec: () => { - changeQuoteLength(-1); + setQuoteLength(-1); restartTest(); }, }, @@ -1212,7 +1212,7 @@ let commandsQuoteLengthConfig = { id: "changeQuoteLengthShort", display: "short", exec: () => { - changeQuoteLength(0); + setQuoteLength(0); restartTest(); }, }, @@ -1220,7 +1220,7 @@ let commandsQuoteLengthConfig = { id: "changeQuoteLengthMedium", display: "medium", exec: () => { - changeQuoteLength(1); + setQuoteLength(1); restartTest(); }, }, @@ -1228,7 +1228,7 @@ let commandsQuoteLengthConfig = { id: "changeQuoteLengthLong", display: "long", exec: () => { - changeQuoteLength(2); + setQuoteLength(2); restartTest(); }, }, @@ -1236,7 +1236,7 @@ let commandsQuoteLengthConfig = { id: "changeQuoteLengthThicc", display: "thicc", exec: () => { - changeQuoteLength(3); + setQuoteLength(3); restartTest(); }, }, @@ -1250,7 +1250,7 @@ let commandsMode = { id: "changeModeTime", display: "time", exec: () => { - changeMode("time"); + setMode("time"); restartTest(); }, }, @@ -1258,7 +1258,7 @@ let commandsMode = { id: "changeModeWords", display: "words", exec: () => { - changeMode("words"); + setMode("words"); restartTest(); }, }, @@ -1266,7 +1266,7 @@ let commandsMode = { id: "changeModeQuote", display: "quote", exec: () => { - changeMode("quote"); + setMode("quote"); restartTest(); }, }, @@ -1274,7 +1274,7 @@ let commandsMode = { id: "changeModeCustom", display: "custom", exec: () => { - changeMode("custom"); + setMode("custom"); restartTest(); }, }, @@ -1287,7 +1287,7 @@ let commandsTimeConfig = { id: "changeTimeConfig15", display: "15", exec: () => { - changeTimeConfig("15"); + setTimeConfig("15"); restartTest(); }, }, @@ -1295,7 +1295,7 @@ let commandsTimeConfig = { id: "changeTimeConfig30", display: "30", exec: () => { - changeTimeConfig("30"); + setTimeConfig("30"); restartTest(); }, }, @@ -1303,7 +1303,7 @@ let commandsTimeConfig = { id: "changeTimeConfig60", display: "60", exec: () => { - changeTimeConfig("60"); + setTimeConfig("60"); restartTest(); }, }, @@ -1311,7 +1311,7 @@ let commandsTimeConfig = { id: "changeTimeConfig120", display: "120", exec: () => { - changeTimeConfig("120"); + setTimeConfig("120"); restartTest(); }, }, @@ -1320,7 +1320,7 @@ let commandsTimeConfig = { display: "custom...", input: true, exec: (input) => { - changeTimeConfig(input); + setTimeConfig(input); restartTest(); }, }, @@ -1388,7 +1388,7 @@ let commandsFontSize = { id: "changeFontSize1", display: "1x", exec: () => { - changeFontSize(1); + setFontSize(1); restartTest(); }, }, @@ -1396,7 +1396,7 @@ let commandsFontSize = { id: "changeFontSize125", display: "1.25x", exec: () => { - changeFontSize(125); + setFontSize(125); restartTest(); }, }, @@ -1404,7 +1404,7 @@ let commandsFontSize = { id: "changeFontSize15", display: "1.5x", exec: () => { - changeFontSize(15); + setFontSize(15); restartTest(); }, }, @@ -1412,7 +1412,7 @@ let commandsFontSize = { id: "changeFontSize2", display: "2x", exec: () => { - changeFontSize(2); + setFontSize(2); restartTest(); }, }, @@ -1420,7 +1420,7 @@ let commandsFontSize = { id: "changeFontSize3", display: "3x", exec: () => { - changeFontSize(3); + setFontSize(3); restartTest(); }, }, @@ -1608,7 +1608,7 @@ getLanguageList().then((languages) => { id: "changeLanguage" + capitalizeFirstLetter(language), display: language.replace(/_/g, " "), exec: () => { - changeLanguage(language); + setLanguage(language); restartTest(); saveConfigToCookie(); }, @@ -1645,7 +1645,7 @@ if (Object.keys(layouts).length > 0) { id: "changeLayout" + capitalizeFirstLetter(layout), display: layout.replace(/_/g, " "), exec: () => { - changeSavedLayout(layout); + setSavedLayout(layout); restartTest(); saveConfigToCookie(); }, @@ -1669,7 +1669,7 @@ if (Object.keys(layouts).length > 0) { id: "changeKeymapLayoutOverrideSync", display: "override sync", exec: () => { - changeKeymapLayout("overrideSync"); + setKeymapLayout("overrideSync"); restartTest(); }, }); @@ -1679,7 +1679,7 @@ if (Object.keys(layouts).length > 0) { id: "changeKeymapLayout" + capitalizeFirstLetter(layout), display: layout.replace(/_/g, " "), exec: () => { - changeKeymapLayout(layout); + setKeymapLayout(layout); restartTest(); }, }); diff --git a/src/js/script.js b/src/js/script.js index 88fc4aee1..13dee7f15 100644 --- a/src/js/script.js +++ b/src/js/script.js @@ -331,7 +331,7 @@ function activateFunbox(funbox, mode) { } if (funbox === "simon_says") { - changeKeymapMode("next"); + setKeymapMode("next"); settingsGroups.keymapMode.updateButton(); restartTest(); } @@ -343,16 +343,16 @@ function activateFunbox(funbox, mode) { restartTest(); } else if (funbox === "layoutfluid") { config.keymapMode = "on"; - changeKeymapMode("next"); + setKeymapMode("next"); settingsGroups.keymapMode.updateButton(); config.savedLayout = config.layout; - changeLayout("qwerty"); + setLayout("qwerty"); settingsGroups.layout.updateButton(); - changeKeymapLayout("qwerty"); + setKeymapLayout("qwerty"); settingsGroups.keymapLayout.updateButton(); restartTest(); } else if (funbox === "memory") { - changeMode("words"); + setMode("words"); setShowAllLines(true, true); restartTest(false, true); } @@ -361,7 +361,7 @@ function activateFunbox(funbox, mode) { if (funbox !== "layoutfluid" || mode !== "script") { if (config.layout !== config.savedLayout) { - changeLayout(config.savedLayout); + setLayout(config.savedLayout); settingsGroups.layout.updateButton(); } } @@ -1115,7 +1115,7 @@ function hideTimer() { ); } -function changeTimerColor(color) { +function setTimerColor(color) { $("#timer").removeClass("timerSub"); $("#timer").removeClass("timerText"); $("#timer").removeClass("timerMain"); @@ -2673,8 +2673,8 @@ function startTest() { if (config.layout !== layouts[index] && layouts[index] !== undefined) { showNotification(`--- !!! ${layouts[index]} !!! ---`, 3000); } - changeLayout(layouts[index]); - changeKeymapLayout(layouts[index]); + setLayout(layouts[index]); + setKeymapLayout(layouts[index]); updateHighlightedKeymapKey(); settingsGroups.layout.updateButton(); } @@ -2759,7 +2759,7 @@ function restartTest(withSameWordset = false, nosave = false) { if (modeBeforePractise !== null && !withSameWordset) { showNotification("Reverting to previous settings.", 1500); - changeMode(modeBeforePractise); + setMode(modeBeforePractise); modeBeforePractise = null; } @@ -2862,9 +2862,9 @@ function restartTest(withSameWordset = false, nosave = false) { document.querySelector("#liveWpm").innerHTML = "0"; if (activeFunBox === "layoutfluid") { - changeLayout("qwerty"); + setLayout("qwerty"); settingsGroups.layout.updateButton(); - changeKeymapLayout("qwerty"); + setKeymapLayout("qwerty"); settingsGroups.keymapLayout.updateButton(); updateHighlightedKeymapKey(); } @@ -2932,14 +2932,14 @@ function focusWords() { } } -function changeCustomText() { +function setCustomText() { customText = prompt("Custom text").trim(); customText = customText.replace(/[\n\r\t ]/gm, " "); customText = customText.replace(/ +/gm, " "); customText = customText.split(" "); if (customText.length >= 10000) { showNotification("Custom text cannot be longer than 10000 words.", 4000); - changeMode("time"); + setMode("time"); customText = "The quick brown fox jumped over the lazy dog".split(" "); } // initWords(); @@ -3035,7 +3035,7 @@ function changePage(page) { } } -function changeMode(mode, nosave) { +function setMode(mode, nosave) { if (mode !== "words" && activeFunBox === "memory") { showNotification("Memory funbox can only be used with words mode."); return; @@ -4237,7 +4237,7 @@ function applyMode2Popup() { if (mode == "time") { if (val !== null && !isNaN(val) && val >= 0) { - changeTimeConfig(val); + setTimeConfig(val); manualRestart = true; restartTest(); if (val >= 1800) { @@ -4253,7 +4253,7 @@ function applyMode2Popup() { } } else if (mode == "words") { if (val !== null && !isNaN(val) && val >= 0) { - changeWordCount(val); + setWordCount(val); manualRestart = true; restartTest(); if (val > 2000) { @@ -4281,7 +4281,7 @@ $(document).on("click", "#top .config .wordCount .text-button", (e) => { if (wrd == "custom") { // let newWrd = prompt("Custom word amount"); // if (newWrd !== null && !isNaN(newWrd) && newWrd > 0 && newWrd <= 10000) { - // changeWordCount(newWrd); + // setWordCount(newWrd); // if (newWrd > 2000) { // showNotification( // "Very long tests can cause performance issues or crash the website on some machines!", @@ -4296,7 +4296,7 @@ $(document).on("click", "#top .config .wordCount .text-button", (e) => { // } showCustomMode2Popup("words"); } else { - changeWordCount(wrd); + setWordCount(wrd); manualRestart = true; restartTest(); } @@ -4307,7 +4307,7 @@ $(document).on("click", "#top .config .time .text-button", (e) => { if (mode == "custom") { // let newTime = prompt("Custom time in seconds"); // if (newTime !== null && !isNaN(newTime) && newTime > 0 && newTime <= 3600) { - // changeTimeConfig(newTime); + // setTimeConfig(newTime); // if (newTime >= 1800) { // showNotification( // "Very long tests can cause performance issues or crash the website on some machines!", @@ -4319,7 +4319,7 @@ $(document).on("click", "#top .config .time .text-button", (e) => { // } showCustomMode2Popup("time"); } else { - changeTimeConfig(mode); + setTimeConfig(mode); manualRestart = true; restartTest(); @@ -4328,7 +4328,7 @@ $(document).on("click", "#top .config .time .text-button", (e) => { $(document).on("click", "#top .config .quoteLength .text-button", (e) => { let len = $(e.currentTarget).attr("quoteLength"); - changeQuoteLength(len); + setQuoteLength(len); manualRestart = true; restartTest(); }); @@ -4360,7 +4360,7 @@ $("#wordsWrapper").on("click", (e) => { $(document).on("click", "#top .config .mode .text-button", (e) => { if ($(e.currentTarget).hasClass("active")) return; mode = $(e.currentTarget).attr("mode"); - changeMode(mode); + setMode(mode); manualRestart = true; restartTest(); }); @@ -4426,7 +4426,7 @@ $(document.body).on("click", "#restartTestButton", (event) => { function initPractiseMissedWords() { let currentMode = config.mode; - changeMode("custom"); + setMode("custom"); let newCustomText = []; Object.keys(missedWords).forEach((missedWord) => { for (let i = 0; i < missedWords[missedWord]; i++) { @@ -5039,8 +5039,8 @@ $(document).keydown((event) => { if (config.layout !== layouts[index] && layouts[index] !== undefined) { showNotification(`--- !!! ${layouts[index]} !!! ---`, 3000); } - changeLayout(layouts[index]); - changeKeymapLayout(layouts[index]); + setLayout(layouts[index]); + setKeymapLayout(layouts[index]); updateHighlightedKeymapKey(); settingsGroups.layout.updateButton(); } diff --git a/src/js/settings.js b/src/js/settings.js index 7370c4913..ecdedefa5 100644 --- a/src/js/settings.js +++ b/src/js/settings.js @@ -87,7 +87,7 @@ settingsGroups.showTimerProgress = new SettingsGroup( ); settingsGroups.keymapMode = new SettingsGroup( "keymapMode", - changeKeymapMode, + setKeymapMode, () => { settingsGroups.showLiveWpm.updateButton(); }, @@ -101,13 +101,10 @@ settingsGroups.keymapMode = new SettingsGroup( } } ); -settingsGroups.keymapMatrix = new SettingsGroup( - "keymapStyle", - changeKeymapStyle -); +settingsGroups.keymapMatrix = new SettingsGroup("keymapStyle", setKeymapStyle); settingsGroups.keymapLayout = new SettingsGroup( "keymapLayout", - changeKeymapLayout + setKeymapLayout ); settingsGroups.showKeyTips = new SettingsGroup( "showKeyTips", @@ -230,9 +227,9 @@ settingsGroups.capsLockBackspace = new SettingsGroup( "capsLockBackspace", setCapsLockBackspace ); -settingsGroups.layout = new SettingsGroup("layout", changeSavedLayout); -settingsGroups.language = new SettingsGroup("language", changeLanguage); -settingsGroups.fontSize = new SettingsGroup("fontSize", changeFontSize); +settingsGroups.layout = new SettingsGroup("layout", setSavedLayout); +settingsGroups.language = new SettingsGroup("language", setLanguage); +settingsGroups.fontSize = new SettingsGroup("fontSize", setFontSize); settingsGroups.pageWidth = new SettingsGroup("pageWidth", setPageWidth); settingsGroups.caretStyle = new SettingsGroup("caretStyle", setCaretStyle); settingsGroups.paceCaretStyle = new SettingsGroup( diff --git a/src/js/userconfig.js b/src/js/userconfig.js index 92cff96f4..8593e221f 100644 --- a/src/js/userconfig.js +++ b/src/js/userconfig.js @@ -174,13 +174,13 @@ function applyConfig(configObj) { setCustomThemeColors(configObj.customThemeColors, true); setQuickTabMode(configObj.quickTab, true); setKeyTips(configObj.showKeyTips, true); - changeTimeConfig(configObj.time, true); - changeQuoteLength(configObj.quoteLength, true); - changeWordCount(configObj.words, true); - changeLanguage(configObj.language, true); + setTimeConfig(configObj.time, true); + setQuoteLength(configObj.quoteLength, true); + setWordCount(configObj.words, true); + setLanguage(configObj.language, true); setCapsLockBackspace(configObj.capsLockBackspace, true); - changeSavedLayout(configObj.savedLayout, true); - changeFontSize(configObj.fontSize, true); + setSavedLayout(configObj.savedLayout, true); + setFontSize(configObj.fontSize, true); setFreedomMode(configObj.freedomMode, true); setCaretStyle(configObj.caretStyle, true); setPaceCaretStyle(configObj.paceCaretStyle, true); @@ -195,9 +195,9 @@ function applyConfig(configObj) { setTimerStyle(configObj.timerStyle, true); setTimerColor(configObj.timerColor, true); setTimerOpacity(configObj.timerOpacity, true); - changeKeymapMode(configObj.keymapMode, true); - changeKeymapStyle(configObj.keymapStyle, true); - changeKeymapLayout(configObj.keymapLayout, true); + setKeymapMode(configObj.keymapMode, true); + setKeymapStyle(configObj.keymapStyle, true); + setKeymapLayout(configObj.keymapLayout, true); setFontFamily(configObj.fontFamily, true); setSmoothCaret(configObj.smoothCaret, true); setSmoothLineScroll(configObj.smoothLineScroll, true); @@ -225,7 +225,7 @@ function applyConfig(configObj) { setPunctuation(configObj.punctuation, true); setHighlightMode(configObj.highlightMode, true); setAlwaysShowCPM(configObj.alwaysShowCPM, true); - changeMode(configObj.mode, true); + setMode(configObj.mode, true); config.startGraphsAtZero = configObj.startGraphsAtZero; // if ( // configObj.resultFilters !== null && @@ -796,7 +796,7 @@ function setTimerColor(color, nosave) { color = "black"; } config.timerColor = color; - changeTimerColor(color); + setTimerColor(color); if (!nosave) saveConfigToCookie(); } function setTimerOpacity(opacity, nosave) { @@ -829,13 +829,13 @@ function toggleKeyTips() { } //mode -function changeTimeConfig(time, nosave) { +function setTimeConfig(time, nosave) { if (time !== null && !isNaN(time) && time >= 0) { } else { time = 15; } time = parseInt(time); - if (!nosave) changeMode("time", nosave); + if (!nosave) setMode("time", nosave); config.time = time; $("#top .config .time .text-button").removeClass("active"); if (![15, 30, 60, 120].includes(time)) { @@ -848,13 +848,13 @@ function changeTimeConfig(time, nosave) { } //quote length -function changeQuoteLength(len, nosave) { +function setQuoteLength(len, nosave) { if (len !== null && !isNaN(len) && len >= -1 && len <= 3) { } else { len = 1; } len = parseInt(len); - if (!nosave) changeMode("quote", nosave); + if (!nosave) setMode("quote", nosave); config.quoteLength = len; $("#top .config .quoteLength .text-button").removeClass("active"); $( @@ -863,13 +863,13 @@ function changeQuoteLength(len, nosave) { if (!nosave) saveConfigToCookie(); } -function changeWordCount(wordCount, nosave) { +function setWordCount(wordCount, nosave) { if (wordCount !== null && !isNaN(wordCount) && wordCount >= 0) { } else { wordCount = 10; } wordCount = parseInt(wordCount); - if (!nosave) changeMode("words", nosave); + if (!nosave) setMode("words", nosave); config.words = wordCount; $("#top .config .wordCount .text-button").removeClass("active"); if (![10, 25, 50, 100, 200].includes(wordCount)) { @@ -1239,7 +1239,7 @@ function updateFavicon(size, curveSize) { $("#favicon").attr("href", canvas.toDataURL("image/png")); } -function changeLanguage(language, nosave) { +function setLanguage(language, nosave) { if (language == null || language == undefined) { language = "english"; } @@ -1266,7 +1266,7 @@ function toggleCapsLockBackspace() { setCapsLockBackspace(!config.capsLockBackspace, false); } -function changeLayout(layout, nosave) { +function setLayout(layout, nosave) { if (layout == null || layout == undefined) { layout = "qwerty"; } @@ -1278,15 +1278,15 @@ function changeLayout(layout, nosave) { if (!nosave) saveConfigToCookie(); } -function changeSavedLayout(layout, nosave) { +function setSavedLayout(layout, nosave) { if (layout == null || layout == undefined) { layout = "qwerty"; } config.savedLayout = layout; - changeLayout(layout, nosave); + setLayout(layout, nosave); } -function changeKeymapMode(mode, nosave) { +function setKeymapMode(mode, nosave) { if (mode == null || mode == undefined) { mode = "off"; } @@ -1301,7 +1301,7 @@ function changeKeymapMode(mode, nosave) { if (!nosave) saveConfigToCookie(); } -function changeKeymapStyle(style, nosave) { +function setKeymapStyle(style, nosave) { $(".keymap").removeClass("matrix"); $(".keymap").removeClass("split"); $(".keymap").removeClass("split_matrix"); @@ -1374,7 +1374,7 @@ function keymapShowIsoKey(tf) { } } -function changeKeymapLayout(layout, nosave) { +function setKeymapLayout(layout, nosave) { if (layout == null || layout == undefined) { layout = "qwerty"; } @@ -1475,11 +1475,11 @@ function refreshKeymapKeys(layout) { console.log( "something went wrong when changing layout, resettings: " + e.message ); - changeKeymapLayout("qwerty", true); + setKeymapLayout("qwerty", true); } } -function changeFontSize(fontSize, nosave) { +function setFontSize(fontSize, nosave) { if (fontSize == null || fontSize == undefined) { fontSize = 1; } From 6c0cab5fa5d3c42eeec99164dfb42551ea367a0d Mon Sep 17 00:00:00 2001 From: Jack Date: Fri, 6 Nov 2020 21:03:15 +0000 Subject: [PATCH 18/32] added 'hide extra letters' --- src/js/commandline.js | 7 +++++++ src/js/script.js | 5 ++++- src/js/userconfig.js | 18 ++++++++++++++++++ static/index.html | 16 ++++++++++++++++ 4 files changed, 45 insertions(+), 1 deletion(-) diff --git a/src/js/commandline.js b/src/js/commandline.js index a8ed2a322..fcb86dfda 100644 --- a/src/js/commandline.js +++ b/src/js/commandline.js @@ -214,6 +214,13 @@ let commands = { toggleIndicateTypos(); }, }, + { + id: "toggleHideExtraLetters", + display: "Toggle hide extra letters", + exec: () => { + toggleHideExtraLetters(); + }, + }, // { // id: "toggleReadAheadMode", // display: "Toggle read ahead mode", diff --git a/src/js/script.js b/src/js/script.js index 13dee7f15..3c626ae32 100644 --- a/src/js/script.js +++ b/src/js/script.js @@ -994,7 +994,10 @@ function compareInput(showError) { } } else { if (currentWord[i] == undefined) { - ret += '' + input[i] + ""; + if (!config.hideExtraLetters) { + ret += + '' + input[i] + ""; + } } else { ret += '' + diff --git a/src/js/userconfig.js b/src/js/userconfig.js index 8593e221f..c9f45b392 100644 --- a/src/js/userconfig.js +++ b/src/js/userconfig.js @@ -70,6 +70,7 @@ let defaultConfig = { highlightMode: "letter", alwaysShowCPM: false, enableAds: "off", + hideExtraLetters: false, }; let cookieConfig = null; @@ -225,6 +226,7 @@ function applyConfig(configObj) { setPunctuation(configObj.punctuation, true); setHighlightMode(configObj.highlightMode, true); setAlwaysShowCPM(configObj.alwaysShowCPM, true); + setHideExtraLetters(configObj.hideExtraLetters, true); setMode(configObj.mode, true); config.startGraphsAtZero = configObj.startGraphsAtZero; // if ( @@ -783,6 +785,22 @@ function setHighlightMode(mode, nosave) { if (!nosave) saveConfigToCookie(); } +function setHideExtraLetters(val, nosave) { + if (val == null || val == undefined) { + val = false; + } + config.hideExtraLetters = val; + if (!nosave) saveConfigToCookie(); +} + +function toggleHideExtraLetters() { + config.hideExtraLetters = !config.hideExtraLetters; + // if (config.keymapMode !== "off") { + // config.keymapMode = "off"; + // } + saveConfigToCookie(); +} + function setTimerStyle(style, nosave) { if (style == null || style == undefined) { style = "bar"; diff --git a/static/index.html b/static/index.html index b8a67f770..73b1ed340 100644 --- a/static/index.html +++ b/static/index.html @@ -1818,6 +1818,22 @@
+
+

hide extra letters

+
+ Hides extra letters. This will completely avoid words jumping + lines (due to changing width), but might feel a bit confusing + when you press a key and nothing happens. +
+
+
+ off +
+
+ on +
+
+

swap esc and tab

From 9698a68b1aff3699679382abd59246f75ba5c0f6 Mon Sep 17 00:00:00 2001 From: Jack Date: Fri, 6 Nov 2020 21:09:54 +0000 Subject: [PATCH 19/32] added missing toggle start graphs at zero to the command line --- src/js/commandline.js | 7 +++++++ src/js/userconfig.js | 7 ++++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/js/commandline.js b/src/js/commandline.js index fcb86dfda..2808a1051 100644 --- a/src/js/commandline.js +++ b/src/js/commandline.js @@ -288,6 +288,13 @@ let commands = { toggleAlwaysShowCPM(); }, }, + { + id: "toggleStartGraphsAtZero", + display: "Toggle start graphs at zero", + exec: () => { + toggleStartGraphsAtZero(); + }, + }, { id: "toggleSwapEscAndTab", display: "Toggle swap esc and tab", diff --git a/src/js/userconfig.js b/src/js/userconfig.js index c9f45b392..a8c9d63f6 100644 --- a/src/js/userconfig.js +++ b/src/js/userconfig.js @@ -227,8 +227,8 @@ function applyConfig(configObj) { setHighlightMode(configObj.highlightMode, true); setAlwaysShowCPM(configObj.alwaysShowCPM, true); setHideExtraLetters(configObj.hideExtraLetters, true); + setStartGraphsAtZero(configObj.startGraphsAtZero, true); setMode(configObj.mode, true); - config.startGraphsAtZero = configObj.startGraphsAtZero; // if ( // configObj.resultFilters !== null && // configObj.resultFilters !== undefined @@ -911,6 +911,11 @@ function toggleSmoothCaret() { } //startgraphsatzero +function toggleStartGraphsAtZero() { + config.startGraphsAtZero = !config.startGraphsAtZero; + saveConfigToCookie(); +} + function setStartGraphsAtZero(mode, nosave) { config.startGraphsAtZero = mode; if (!nosave) saveConfigToCookie(); From 4c36a655e30c2e77efb7728c247c0614935f5144 Mon Sep 17 00:00:00 2001 From: Alireza Date: Sat, 7 Nov 2020 01:57:33 +0330 Subject: [PATCH 20/32] added persian language --- static/languages/list.json | 3 +- static/languages/persian.json | 207 ++++++++++++++++++++++++++++++++++ 2 files changed, 209 insertions(+), 1 deletion(-) create mode 100644 static/languages/persian.json diff --git a/static/languages/list.json b/static/languages/list.json index a67f5c36c..daf1cfd53 100644 --- a/static/languages/list.json +++ b/static/languages/list.json @@ -23,5 +23,6 @@ "hebrew", "icelandic_1k", "romanian", - "finnish" + "finnish", + "persian" ] diff --git a/static/languages/persian.json b/static/languages/persian.json new file mode 100644 index 000000000..03f03732b --- /dev/null +++ b/static/languages/persian.json @@ -0,0 +1,207 @@ +{ + "name": "persian", + "leftToRight": false, + "ligatures": true, + "words": [ + "من", + "تو", + "او", + "بود", + "برای", + "هست", + "شهرک", + "اقلیم", + "تیغ", + "پدر", + "خار", + "گریزان", + "پشتکار", + "نگار", + "هند", + "پیراهن", + "رعایت", + "سود", + "شب", + "نژاد", + "کوچک", + "کودک", + "پرسش", + "ناچار", + "لیاقت", + "ضیافت", + "پوشاک", + "امیر", + "تولید", + "محاسبه", + "مسافرت", + "مدرسه", + "سطح", + "مصاحبه", + "صندلی", + "شگفت", + "خواهر", + "آمار", + "اسباب", + "کاخ", + "شیرینی", + "کبریت", + "عروسک", + "کافی", + "کارگردان", + "صبحانه", + "لبخند", + "اطمینان", + "بازی", + "ریشه", + "مطالعه", + "هوا", + "مخصوص", + "گل", + "پایین", + "دانا", + "همهمه", + "دندان", + "امروز", + "مرهم", + "داستان", + "پزشک", + "آیینه", + "شادی", + "نبرد", + "ظلم", + "بیکار", + "ورزش", + "گریزان", + "تیغ", + "سرعت", + "نامه", + "پرچم", + "تمام", + "بریدن", + "آموزش", + "گویش", + "بیکار", + "کاربرد", + "ترانه", + "پشتکار", + "کج", + "تحقیق", + "مرحله", + "بهداشت", + "بانو", + "گرفتاری", + "شکست", + "آرایه", + "نوشتن", + "پیشانی", + "سلام", + "عاج", + "فیل", + "ماهی", + "چاه", + "باید", + "ژاپن", + "تراکم", + "اکتشاف", + "غذا", + "سختی", + "بادبادک", + "دولت", + "پیام", + "علی", + "شکوفه", + "قلّه", + "آبادی", + "صلاحدید", + "بهار", + "اسب", + "ققنوس", + "منش", + "عامیانه", + "مار", + "آزادی", + "توانایی", + "ظرف", + "خطا", + "آماده", + "عرصه", + "شروع", + "چرا", + "حیوانات", + "گوناگون", + "رویش", + "پاییز", + "ادبیات", + "بازرگانی", + "تلفن", + "فردا", + "دنباله", + "گردش", + "روشنایی", + "برگ", + "پشتوانه", + "استثنا", + "فراخ", + "چشم", + "سایه", + "اندیشه", + "چطور", + "جانور", + "مادر", + "درباره", + "سال", + "ساحل", + "استرداد", + "چرخه", + "سفید", + "صحبت", + "متفاوت", + "قالب", + "کرانه", + "ترجمه", + "راز", + "رمز", + "و", + "آلو", + "به", + "در", + "خنده", + "نیاز", + "دادگاه", + "دقیقه", + "انقباض", + "غروب", + "تنگی", + "ارسلان", + "برخوردار", + "نرگس", + "ضوابط", + "باد", + "ماشین", + "بها", + "طرح", + "سیلی", + "مرموز", + "کثیف", + "زبان", + "وزیر", + "شاه", + "ملکه", + "گنجایش", + "آسمان", + "نوشیدنی", + "برشته", + "حمله", + "اساس", + "عشق", + "طبس", + "پند", + "پیوند", + "کاسه", + "انسان", + "برق", + "عنوان", + "که", + "خود" + ] +} \ No newline at end of file From bc282a0297c788b061b935bc3137116ba520783c Mon Sep 17 00:00:00 2001 From: Jack Date: Fri, 6 Nov 2020 22:28:23 +0000 Subject: [PATCH 21/32] not setting config to null to avoid loading issues --- src/js/userconfig.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/js/userconfig.js b/src/js/userconfig.js index a8c9d63f6..edf59029f 100644 --- a/src/js/userconfig.js +++ b/src/js/userconfig.js @@ -91,7 +91,7 @@ async function saveConfigToCookie(noDbCheck = false) { // showNotification('saving to cookie',1000); let d = new Date(); d.setFullYear(d.getFullYear() + 1); - $.cookie("config", null); + // $.cookie("config", null); $.cookie("config", JSON.stringify(config), { expires: d, path: "/", From f31951228e72cd7c68258b510812edab4f70d146 Mon Sep 17 00:00:00 2001 From: Jack Date: Sat, 7 Nov 2020 02:10:11 +0000 Subject: [PATCH 22/32] allowing space to fail master and insert when in expert. showing spaces in history as underscore --- src/js/script.js | 780 ++++++++++++++++++++++++----------------------- 1 file changed, 396 insertions(+), 384 deletions(-) diff --git a/src/js/script.js b/src/js/script.js index 3c626ae32..f8c59d109 100644 --- a/src/js/script.js +++ b/src/js/script.js @@ -3316,12 +3316,13 @@ async function loadWordsHistory() { try { if (input === "") throw Exception; if (correctedHistory[i] !== undefined && correctedHistory[i] !== "") { - wordEl = `
`; + wordEl = `
`; } else { - wordEl = `
`; + wordEl = `
`; } if (i === inputHistory.length - 1) { //last word @@ -3345,18 +3346,16 @@ async function loadWordsHistory() { } if (word.incorrect !== 0 || config.mode !== "time") { if (input !== wordsList[i]) { - wordEl = `
`; + wordEl = `
`; } } } else { if (input !== wordsList[i]) { - wordEl = `
`; + wordEl = `
`; } } @@ -4570,13 +4569,385 @@ $(document).on("click", "#testModesNotice .text-button", (event) => { } }); +let dontInsertSpace = false; + +//handle keyboard events +$(document).keydown((event) => { + if (!resultVisible) { + let now = performance.now(); + let diff = Math.abs(keypressStats.spacing.current - now); + if (keypressStats.spacing.current !== -1) { + keypressStats.spacing.array.push(diff); + } + keypressStats.spacing.current = now; + } + + //tab + if ( + (event.key == "Tab" && !config.swapEscAndTab) || + (event.key == "Escape" && config.swapEscAndTab) + ) { + if ( + !event.ctrlKey && + config.quickTab && + !$(".pageLogin").hasClass("active") && + !resultCalculating && + $("#commandLineWrapper").hasClass("hidden") && + $("#simplePopupWrapper").hasClass("hidden") + ) { + event.preventDefault(); + if ($(".pageTest").hasClass("active")) { + if ( + (config.mode === "words" && config.words < 1000) || + (config.mode === "time" && config.time < 3600) || + config.mode === "quote" || + (config.mode === "custom" && + customTextIsRandom && + customTextWordCount < 1000) || + (config.mode === "custom" && + !customTextIsRandom && + customText.length < 1000) + ) { + if (testActive) { + let testNow = Date.now(); + let testSeconds = roundTo2((testNow - testStart) / 1000); + incompleteTestSeconds += testSeconds; + restartCount++; + } + restartTest(); + } else { + showNotification("Quick restart disabled for long tests", 2000); + } + } else { + changePage("test"); + } + } + } + + //only for the typing test + if ($("#wordsInput").is(":focus")) { + const isBackspace = + event.key === "Backspace" || + (config.capsLockBackspace && event.key === "CapsLock"); + if (isBackspace) { + event.preventDefault(); + if (!testActive) return; + if ( + currentInput == "" && + inputHistory.length > 0 && + currentWordElementIndex > 0 + ) { + if ( + (inputHistory[currentWordIndex - 1] == + wordsList[currentWordIndex - 1] && + !config.freedomMode) || + $($(".word")[currentWordIndex - 1]).hasClass("hidden") + ) { + return; + } else { + if (config.confidenceMode === "on" || config.confidenceMode === "max") + return; + if (event["ctrlKey"] || event["altKey"]) { + currentInput = ""; + inputHistory.pop(); + correctedHistory.pop(); + } else { + currentInput = inputHistory.pop(); + currentCorrected = correctedHistory.pop(); + } + currentWordIndex--; + currentWordElementIndex--; + updateActiveElement(); + compareInput(!config.blindMode); + } + } else { + if (config.confidenceMode === "max") return; + if (event["ctrlKey"] || event["altKey"]) { + currentInput = ""; + } else { + currentInput = currentInput.substring(0, currentInput.length - 1); + } + compareInput(!config.blindMode); + } + playClickSound(); + if (config.keymapMode === "react") { + flashPressedKeymapKey(event.code, true); + } else if (config.keymapMode === "next") { + updateHighlightedKeymapKey(); + } + updateCaretPosition(); + } + //space + if (event.key === " ") { + if (!testActive) return; + if (currentInput === "") return; + event.preventDefault(); + let currentWord = wordsList[currentWordIndex]; + // if (config.mode == "time") { + if (!config.showAllLines || config.mode == "time") { + // let currentTop = Math.floor($($("#words .word")[currentWordIndex]).position().top); + // let nextTop = Math.floor($($("#words .word")[currentWordIndex + 1]).position().top); + if (config.stopOnError != "off") { + if (currentWord !== currentInput) return; + } + + let currentTop = Math.floor( + document.querySelectorAll("#words .word")[currentWordElementIndex] + .offsetTop + ); + let nextTop; + try { + nextTop = Math.floor( + document.querySelectorAll("#words .word")[ + currentWordElementIndex + 1 + ].offsetTop + ); + } catch (e) { + nextTop = 0; + } + + if ((nextTop > currentTop || activeWordJumped) && !lineTransition) { + //last word of the line + if (currentTestLine > 0) { + let hideBound = currentTop; + if (activeWordJumped) { + hideBound = activeWordTopBeforeJump; + } + activeWordJumped = false; + + let toHide = []; + let wordElements = $("#words .word"); + for (let i = 0; i < currentWordElementIndex + 1; i++) { + if ($(wordElements[i]).hasClass("hidden")) continue; + // let forWordTop = Math.floor($(wordElements[i]).position().top); + let forWordTop = Math.floor(wordElements[i].offsetTop); + if (forWordTop < hideBound - 10) { + // $($("#words .word")[i]).addClass("hidden"); + toHide.push($($("#words .word")[i])); + } + } + const wordHeight = $(document.querySelector(".word")).outerHeight( + true + ); + if (config.smoothLineScroll && toHide.length > 0) { + lineTransition = true; + $("#words").prepend( + `
` + ); + $("#words .smoothScroller").animate( + { + height: 0, + }, + 125, + () => { + $("#words .smoothScroller").remove(); + } + ); + $("#paceCaret").animate( + { + top: + document.querySelector("#paceCaret").offsetTop - wordHeight, + }, + 125 + ); + $("#words").animate( + { + marginTop: `-${wordHeight}px`, + }, + 125, + () => { + activeWordTop = document.querySelector("#words .active") + .offsetTop; + + currentWordElementIndex -= toHide.length; + lineTransition = false; + toHide.forEach((el) => el.remove()); + $("#words").css("marginTop", "0"); + } + ); + } else { + toHide.forEach((el) => el.remove()); + currentWordElementIndex -= toHide.length; + $("#paceCaret").css({ + top: + document.querySelector("#paceCaret").offsetTop - wordHeight, + }); + } + // if (config.smoothLineScroll) { + // let word = $(document.querySelector(".word")); + // $("#words").prepend( + // `
` + // ); + // lineTransition = true; + // $("#words .smoothScroller").animate( + // { + // height: 0, + // }, + // 100, + // () => { + // $("#words .smoothScroller").remove(); + // lineTransition = false; + // $(this).remove(); + // activeWordTop = document.querySelector("#words .active") + // .offsetTop; + // } + // ); + // } + // toHide.forEach((el) => el.remove()); + } + currentTestLine++; + } + } //end of line wrap + if (activeFunBox === "layoutfluid" && config.mode !== "time") { + const layouts = ["qwerty", "dvorak", "colemak"]; + let index = 0; + let outof = wordsList.length; + index = Math.floor((inputHistory.length + 1) / (outof / 3)); + if (config.layout !== layouts[index] && layouts[index] !== undefined) { + showNotification(`--- !!! ${layouts[index]} !!! ---`, 3000); + } + setLayout(layouts[index]); + setKeymapLayout(layouts[index]); + updateHighlightedKeymapKey(); + settingsGroups.layout.updateButton(); + } + if (config.blindMode) $("#words .word.active letter").addClass("correct"); + // document + // .querySelector("#words .word.active") + // .setAttribute("input", currentInput); + dontInsertSpace = true; + if (currentWord == currentInput) { + //correct word + if ( + paceCaret !== null && + paceCaret.wordsStatus[currentWordIndex] === true && + !config.blindMode + ) { + paceCaret.wordsStatus[currentWordIndex] = undefined; + paceCaret.correction -= currentWord.length + 1; + } + accuracyStats.correct++; + inputHistory.push(currentInput); + currentInput = ""; + currentWordIndex++; + currentWordElementIndex++; + updateActiveElement(); + updateCaretPosition(); + currentKeypress.count++; + currentKeypress.words.push(currentWordIndex); + playClickSound(); + } else { + //incorrect word + if ( + paceCaret !== null && + paceCaret.wordsStatus[currentWordIndex] === undefined && + !config.blindMode + ) { + paceCaret.wordsStatus[currentWordIndex] = true; + paceCaret.correction += currentWord.length + 1; + } + if (!config.playSoundOnError || config.blindMode) { + playClickSound(); + } else { + playErrorSound(); + } + accuracyStats.incorrect++; + let cil = currentInput.length; + if (cil < wordsList[currentWordIndex].length) { + if (cil >= currentCorrected.length) { + currentCorrected += "_"; + } else { + currentCorrected = + currentCorrected.substring(0, cil) + + "_" + + currentCorrected.substring(cil + 1); + } + } + if (config.stopOnError != "off") { + if (config.difficulty == "expert" || config.difficulty == "master") { + //failed due to diff when pressing space + inputHistory.push(currentInput); + correctedHistory.push(currentCorrected); + lastSecondNotRound = true; + showResult(true); + // if (!afkDetected) { + let testNow = Date.now(); + let testSeconds = roundTo2((testNow - testStart) / 1000); + incompleteTestSeconds += testSeconds; + restartCount++; + // } + return; + } + return; + } + inputHistory.push(currentInput); + highlightBadWord(currentWordElementIndex, !config.blindMode); + currentInput = ""; + currentWordIndex++; + currentWordElementIndex++; + if (config.difficulty == "expert" || config.difficulty == "master") { + correctedHistory.push(currentCorrected); + currentCorrected = ""; + //submitted last word incorrect and failed test + lastSecondNotRound = true; + showResult(true); + // if (!afkDetected) { + let testNow = Date.now(); + let testSeconds = roundTo2((testNow - testStart) / 1000); + incompleteTestSeconds += testSeconds; + restartCount++; + // } + return; + } else if (currentWordIndex == wordsList.length) { + //submitted last word that is incorrect + lastSecondNotRound = true; + showResult(); + return; + } + updateActiveElement(); + updateCaretPosition(); + currentKeypress.count++; + currentKeypress.words.push(currentWordIndex); + } + correctedHistory.push(currentCorrected); + currentCorrected = ""; + if (config.keymapMode === "react") { + flashPressedKeymapKey(event.code, true); + } else if (config.keymapMode === "next") { + updateHighlightedKeymapKey(); + } + if ( + config.mode === "words" || + config.mode === "custom" || + config.mode === "quote" + ) { + updateTimer(); + } + // if (config.showAllLines) { + // if (config.mode == "time") { + // addWord(); + // } + // } else { + if ( + config.mode == "time" || + config.mode == "words" || + config.mode == "custom" + ) { + addWord(); + } + // } + } + } +}); + //keypresses for the test, using different method to be more responsive $(document).keydown(function (event) { if (!$("#wordsInput").is(":focus")) return; if ( [ "Tab", - " ", "ContextMenu", "Escape", "Shift", @@ -4612,6 +4983,17 @@ $(document).keydown(function (event) { ].includes(event.key) ) return; + if (event.key === " ") { + if (config.difficulty !== "normal") { + if (dontInsertSpace) { + dontInsertSpace = false; + return; + } + } else { + return; + } + } + if (event.key.length > 1) return; if (/F\d+/.test(event.key)) return; if (/Numpad/.test(event.key)) return; @@ -4805,376 +5187,6 @@ window.addEventListener("beforeunload", (event) => { } }); -//handle keyboard events -$(document).keydown((event) => { - if (!resultVisible) { - let now = performance.now(); - let diff = Math.abs(keypressStats.spacing.current - now); - if (keypressStats.spacing.current !== -1) { - keypressStats.spacing.array.push(diff); - } - keypressStats.spacing.current = now; - } - - //tab - if ( - (event.key == "Tab" && !config.swapEscAndTab) || - (event.key == "Escape" && config.swapEscAndTab) - ) { - if ( - !event.ctrlKey && - config.quickTab && - !$(".pageLogin").hasClass("active") && - !resultCalculating && - $("#commandLineWrapper").hasClass("hidden") && - $("#simplePopupWrapper").hasClass("hidden") - ) { - event.preventDefault(); - if ($(".pageTest").hasClass("active")) { - if ( - (config.mode === "words" && config.words < 1000) || - (config.mode === "time" && config.time < 3600) || - config.mode === "quote" || - (config.mode === "custom" && - customTextIsRandom && - customTextWordCount < 1000) || - (config.mode === "custom" && - !customTextIsRandom && - customText.length < 1000) - ) { - if (testActive) { - let testNow = Date.now(); - let testSeconds = roundTo2((testNow - testStart) / 1000); - incompleteTestSeconds += testSeconds; - restartCount++; - } - restartTest(); - } else { - showNotification("Quick restart disabled for long tests", 2000); - } - } else { - changePage("test"); - } - } - } - - //only for the typing test - if ($("#wordsInput").is(":focus")) { - const isBackspace = - event.key === "Backspace" || - (config.capsLockBackspace && event.key === "CapsLock"); - if (isBackspace) { - event.preventDefault(); - if (!testActive) return; - if ( - currentInput == "" && - inputHistory.length > 0 && - currentWordElementIndex > 0 - ) { - if ( - (inputHistory[currentWordIndex - 1] == - wordsList[currentWordIndex - 1] && - !config.freedomMode) || - $($(".word")[currentWordIndex - 1]).hasClass("hidden") - ) { - return; - } else { - if (config.confidenceMode === "on" || config.confidenceMode === "max") - return; - if (event["ctrlKey"] || event["altKey"]) { - currentInput = ""; - inputHistory.pop(); - correctedHistory.pop(); - } else { - currentInput = inputHistory.pop(); - currentCorrected = correctedHistory.pop(); - } - currentWordIndex--; - currentWordElementIndex--; - updateActiveElement(); - compareInput(!config.blindMode); - } - } else { - if (config.confidenceMode === "max") return; - if (event["ctrlKey"] || event["altKey"]) { - currentInput = ""; - } else { - currentInput = currentInput.substring(0, currentInput.length - 1); - } - compareInput(!config.blindMode); - } - playClickSound(); - if (config.keymapMode === "react") { - flashPressedKeymapKey(event.code, true); - } else if (config.keymapMode === "next") { - updateHighlightedKeymapKey(); - } - updateCaretPosition(); - } - //space - if (event.key === " ") { - if (!testActive) return; - if (currentInput == "") return; - event.preventDefault(); - let currentWord = wordsList[currentWordIndex]; - // if (config.mode == "time") { - if (!config.showAllLines || config.mode == "time") { - // let currentTop = Math.floor($($("#words .word")[currentWordIndex]).position().top); - // let nextTop = Math.floor($($("#words .word")[currentWordIndex + 1]).position().top); - if (config.stopOnError != "off") { - if (currentWord !== currentInput) return; - } - - let currentTop = Math.floor( - document.querySelectorAll("#words .word")[currentWordElementIndex] - .offsetTop - ); - let nextTop; - try { - nextTop = Math.floor( - document.querySelectorAll("#words .word")[ - currentWordElementIndex + 1 - ].offsetTop - ); - } catch (e) { - nextTop = 0; - } - - if ((nextTop > currentTop || activeWordJumped) && !lineTransition) { - //last word of the line - if (currentTestLine > 0) { - let hideBound = currentTop; - if (activeWordJumped) { - hideBound = activeWordTopBeforeJump; - } - activeWordJumped = false; - - let toHide = []; - let wordElements = $("#words .word"); - for (let i = 0; i < currentWordElementIndex + 1; i++) { - if ($(wordElements[i]).hasClass("hidden")) continue; - // let forWordTop = Math.floor($(wordElements[i]).position().top); - let forWordTop = Math.floor(wordElements[i].offsetTop); - if (forWordTop < hideBound - 10) { - // $($("#words .word")[i]).addClass("hidden"); - toHide.push($($("#words .word")[i])); - } - } - const wordHeight = $(document.querySelector(".word")).outerHeight( - true - ); - if (config.smoothLineScroll && toHide.length > 0) { - lineTransition = true; - $("#words").prepend( - `
` - ); - $("#words .smoothScroller").animate( - { - height: 0, - }, - 125, - () => { - $("#words .smoothScroller").remove(); - } - ); - $("#paceCaret").animate( - { - top: - document.querySelector("#paceCaret").offsetTop - wordHeight, - }, - 125 - ); - $("#words").animate( - { - marginTop: `-${wordHeight}px`, - }, - 125, - () => { - activeWordTop = document.querySelector("#words .active") - .offsetTop; - - currentWordElementIndex -= toHide.length; - lineTransition = false; - toHide.forEach((el) => el.remove()); - $("#words").css("marginTop", "0"); - } - ); - } else { - toHide.forEach((el) => el.remove()); - currentWordElementIndex -= toHide.length; - $("#paceCaret").css({ - top: - document.querySelector("#paceCaret").offsetTop - wordHeight, - }); - } - // if (config.smoothLineScroll) { - // let word = $(document.querySelector(".word")); - // $("#words").prepend( - // `
` - // ); - // lineTransition = true; - // $("#words .smoothScroller").animate( - // { - // height: 0, - // }, - // 100, - // () => { - // $("#words .smoothScroller").remove(); - // lineTransition = false; - // $(this).remove(); - // activeWordTop = document.querySelector("#words .active") - // .offsetTop; - // } - // ); - // } - // toHide.forEach((el) => el.remove()); - } - currentTestLine++; - } - } //end of line wrap - if (activeFunBox === "layoutfluid" && config.mode !== "time") { - const layouts = ["qwerty", "dvorak", "colemak"]; - let index = 0; - let outof = wordsList.length; - index = Math.floor((inputHistory.length + 1) / (outof / 3)); - if (config.layout !== layouts[index] && layouts[index] !== undefined) { - showNotification(`--- !!! ${layouts[index]} !!! ---`, 3000); - } - setLayout(layouts[index]); - setKeymapLayout(layouts[index]); - updateHighlightedKeymapKey(); - settingsGroups.layout.updateButton(); - } - if (config.blindMode) $("#words .word.active letter").addClass("correct"); - // document - // .querySelector("#words .word.active") - // .setAttribute("input", currentInput); - if (currentWord == currentInput) { - //correct word - if ( - paceCaret !== null && - paceCaret.wordsStatus[currentWordIndex] === true && - !config.blindMode - ) { - paceCaret.wordsStatus[currentWordIndex] = undefined; - paceCaret.correction -= currentWord.length + 1; - } - accuracyStats.correct++; - inputHistory.push(currentInput); - currentInput = ""; - currentWordIndex++; - currentWordElementIndex++; - updateActiveElement(); - updateCaretPosition(); - currentKeypress.count++; - currentKeypress.words.push(currentWordIndex); - playClickSound(); - } else { - //incorrect word - if ( - paceCaret !== null && - paceCaret.wordsStatus[currentWordIndex] === undefined && - !config.blindMode - ) { - paceCaret.wordsStatus[currentWordIndex] = true; - paceCaret.correction += currentWord.length + 1; - } - if (!config.playSoundOnError || config.blindMode) { - playClickSound(); - } else { - playErrorSound(); - } - accuracyStats.incorrect++; - let cil = currentInput.length; - if (cil < wordsList[currentWordIndex].length) { - if (cil >= currentCorrected.length) { - currentCorrected += "_"; - } else { - currentCorrected = - currentCorrected.substring(0, cil) + - "_" + - currentCorrected.substring(cil + 1); - } - } - if (config.stopOnError != "off") { - if (config.difficulty == "expert" || config.difficulty == "master") { - //failed due to diff when pressing space - inputHistory.push(currentInput); - correctedHistory.push(currentCorrected); - lastSecondNotRound = true; - showResult(true); - // if (!afkDetected) { - let testNow = Date.now(); - let testSeconds = roundTo2((testNow - testStart) / 1000); - incompleteTestSeconds += testSeconds; - restartCount++; - // } - return; - } - return; - } - inputHistory.push(currentInput); - highlightBadWord(currentWordElementIndex, !config.blindMode); - currentInput = ""; - currentWordIndex++; - currentWordElementIndex++; - if (config.difficulty == "expert" || config.difficulty == "master") { - correctedHistory.push(currentCorrected); - currentCorrected = ""; - //submitted last word incorrect and failed test - lastSecondNotRound = true; - showResult(true); - // if (!afkDetected) { - let testNow = Date.now(); - let testSeconds = roundTo2((testNow - testStart) / 1000); - incompleteTestSeconds += testSeconds; - restartCount++; - // } - return; - } else if (currentWordIndex == wordsList.length) { - //submitted last word that is incorrect - lastSecondNotRound = true; - showResult(); - return; - } - updateActiveElement(); - updateCaretPosition(); - currentKeypress.count++; - currentKeypress.words.push(currentWordIndex); - } - correctedHistory.push(currentCorrected); - currentCorrected = ""; - if (config.keymapMode === "react") { - flashPressedKeymapKey(event.code, true); - } else if (config.keymapMode === "next") { - updateHighlightedKeymapKey(); - } - if ( - config.mode === "words" || - config.mode === "custom" || - config.mode === "quote" - ) { - updateTimer(); - } - // if (config.showAllLines) { - // if (config.mode == "time") { - // addWord(); - // } - // } else { - if ( - config.mode == "time" || - config.mode == "words" || - config.mode == "custom" - ) { - addWord(); - } - // } - } - } -}); - if (firebase.app().options.projectId === "monkey-type-dev-67af4") { $("#top .logo .bottom").text("monkey-dev"); $("head title").text("Monkey Dev"); From c0c563b4649da2aa5da6e6814f33e1a9fd1b3de2 Mon Sep 17 00:00:00 2001 From: Jack Date: Sat, 7 Nov 2020 02:13:55 +0000 Subject: [PATCH 23/32] fixed timer/progress color --- src/js/script.js | 35 ----------------------------------- src/js/userconfig.js | 35 ++++++++++++++++++++++++++++++++++- 2 files changed, 34 insertions(+), 36 deletions(-) diff --git a/src/js/script.js b/src/js/script.js index f8c59d109..c155e1907 100644 --- a/src/js/script.js +++ b/src/js/script.js @@ -1118,41 +1118,6 @@ function hideTimer() { ); } -function setTimerColor(color) { - $("#timer").removeClass("timerSub"); - $("#timer").removeClass("timerText"); - $("#timer").removeClass("timerMain"); - - $("#timerNumber").removeClass("timerSub"); - $("#timerNumber").removeClass("timerText"); - $("#timerNumber").removeClass("timerMain"); - - $("#liveWpm").removeClass("timerSub"); - $("#liveWpm").removeClass("timerText"); - $("#liveWpm").removeClass("timerMain"); - - $("#miniTimerAndLiveWpm").removeClass("timerSub"); - $("#miniTimerAndLiveWpm").removeClass("timerText"); - $("#miniTimerAndLiveWpm").removeClass("timerMain"); - - if (color === "main") { - $("#timer").addClass("timerMain"); - $("#timerNumber").addClass("timerMain"); - $("#liveWpm").addClass("timerMain"); - $("#miniTimerAndLiveWpm").addClass("timerMain"); - } else if (color === "sub") { - $("#timer").addClass("timerSub"); - $("#timerNumber").addClass("timerSub"); - $("#liveWpm").addClass("timerSub"); - $("#miniTimerAndLiveWpm").addClass("timerSub"); - } else if (color === "text") { - $("#timer").addClass("timerText"); - $("#timerNumber").addClass("timerText"); - $("#liveWpm").addClass("timerText"); - $("#miniTimerAndLiveWpm").addClass("timerText"); - } -} - function restartTimer() { if (config.timerStyle === "bar") { if (config.mode === "time") { diff --git a/src/js/userconfig.js b/src/js/userconfig.js index edf59029f..53639dce7 100644 --- a/src/js/userconfig.js +++ b/src/js/userconfig.js @@ -814,7 +814,40 @@ function setTimerColor(color, nosave) { color = "black"; } config.timerColor = color; - setTimerColor(color); + + $("#timer").removeClass("timerSub"); + $("#timer").removeClass("timerText"); + $("#timer").removeClass("timerMain"); + + $("#timerNumber").removeClass("timerSub"); + $("#timerNumber").removeClass("timerText"); + $("#timerNumber").removeClass("timerMain"); + + $("#liveWpm").removeClass("timerSub"); + $("#liveWpm").removeClass("timerText"); + $("#liveWpm").removeClass("timerMain"); + + $("#miniTimerAndLiveWpm").removeClass("timerSub"); + $("#miniTimerAndLiveWpm").removeClass("timerText"); + $("#miniTimerAndLiveWpm").removeClass("timerMain"); + + if (color === "main") { + $("#timer").addClass("timerMain"); + $("#timerNumber").addClass("timerMain"); + $("#liveWpm").addClass("timerMain"); + $("#miniTimerAndLiveWpm").addClass("timerMain"); + } else if (color === "sub") { + $("#timer").addClass("timerSub"); + $("#timerNumber").addClass("timerSub"); + $("#liveWpm").addClass("timerSub"); + $("#miniTimerAndLiveWpm").addClass("timerSub"); + } else if (color === "text") { + $("#timer").addClass("timerText"); + $("#timerNumber").addClass("timerText"); + $("#liveWpm").addClass("timerText"); + $("#miniTimerAndLiveWpm").addClass("timerText"); + } + if (!nosave) saveConfigToCookie(); } function setTimerOpacity(opacity, nosave) { From 658602200633ed8956609846dec33e0feb9c13ec Mon Sep 17 00:00:00 2001 From: Jack Date: Sat, 7 Nov 2020 02:31:43 +0000 Subject: [PATCH 24/32] added strict space --- src/js/commandline.js | 7 +++++++ src/js/script.js | 2 +- src/js/settings.js | 5 +++++ src/js/userconfig.js | 15 +++++++++++++++ static/index.html | 15 +++++++++++++++ 5 files changed, 43 insertions(+), 1 deletion(-) diff --git a/src/js/commandline.js b/src/js/commandline.js index 2808a1051..30e634a07 100644 --- a/src/js/commandline.js +++ b/src/js/commandline.js @@ -200,6 +200,13 @@ let commands = { toggleFreedomMode(); }, }, + { + id: "toggleStrictSpace", + display: "Toggle strict space", + exec: () => { + toggleStrictSpace(); + }, + }, { id: "toggleBlindMode", display: "Toggle blind mode", diff --git a/src/js/script.js b/src/js/script.js index c155e1907..cc3f2c84c 100644 --- a/src/js/script.js +++ b/src/js/script.js @@ -4949,7 +4949,7 @@ $(document).keydown(function (event) { ) return; if (event.key === " ") { - if (config.difficulty !== "normal") { + if (config.difficulty !== "normal" || config.strictSpace) { if (dontInsertSpace) { dontInsertSpace = false; return; diff --git a/src/js/settings.js b/src/js/settings.js index ecdedefa5..d1b6f54e9 100644 --- a/src/js/settings.js +++ b/src/js/settings.js @@ -125,6 +125,7 @@ settingsGroups.freedomMode = new SettingsGroup( settingsGroups.confidenceMode.updateButton(); } ); +settingsGroups.strictSpace = new SettingsGroup("strictSpace", setStrictSpace); settingsGroups.confidenceMode = new SettingsGroup( "confidenceMode", setConfidenceMode, @@ -137,6 +138,10 @@ settingsGroups.indicateTypos = new SettingsGroup( "indicateTypos", setIndicateTypos ); +settingsGroups.hideExtraLetters = new SettingsGroup( + "hideExtraLetters", + setHideExtraLetters +); settingsGroups.blindMode = new SettingsGroup("blindMode", setBlindMode); settingsGroups.quickEnd = new SettingsGroup("quickEnd", setQuickEnd); settingsGroups.enableAds = new SettingsGroup("enableAds", setEnableAds); diff --git a/src/js/userconfig.js b/src/js/userconfig.js index 53639dce7..3e06518fd 100644 --- a/src/js/userconfig.js +++ b/src/js/userconfig.js @@ -71,6 +71,7 @@ let defaultConfig = { alwaysShowCPM: false, enableAds: "off", hideExtraLetters: false, + strictSpace: false, }; let cookieConfig = null; @@ -679,6 +680,20 @@ function toggleColorfulMode() { saveConfigToCookie(); } +//strict space +function setStrictSpace(val, nosave) { + if (val == undefined) { + val = false; + } + config.strictSpace = val; + if (!nosave) saveConfigToCookie(); +} + +function toggleStrictSpace() { + config.strictSpace = !config.strictSpace; + saveConfigToCookie(); +} + function setPageWidth(val, nosave) { if (val == null || val == undefined) { val = "100"; diff --git a/static/index.html b/static/index.html index 73b1ed340..95dd85869 100644 --- a/static/index.html +++ b/static/index.html @@ -1720,6 +1720,21 @@
+
+

strict space

+
+ Pressing space at the beginning of a word will insert a space + character when this mode is enabled. +
+
+
+ off +
+
+ on +
+
+

stop on error

From a7d41cd74ec544be27a76fdfbc1a9ce39cc4be8e Mon Sep 17 00:00:00 2001 From: KanatFM Date: Sat, 7 Nov 2020 11:13:32 +0600 Subject: [PATCH 25/32] Create kazakh.json Added kazakh language with about 200 common words. --- static/languages/kazakh.json | 211 +++++++++++++++++++++++++++++++++++ 1 file changed, 211 insertions(+) create mode 100644 static/languages/kazakh.json diff --git a/static/languages/kazakh.json b/static/languages/kazakh.json new file mode 100644 index 000000000..c7c92db20 --- /dev/null +++ b/static/languages/kazakh.json @@ -0,0 +1,211 @@ +{ + "name": "kazakh", + "leftToRight": true, + "words": [ + "сен", + "қазақ", + "ел", + "арман", + "қанат", + "өмір", + "әлем", + "бақыт", + "ол", + "қайда", + "қара", + "ақ", + "сары", + "көк", + "дос", + "мақсат", + "жақын", + "қыз", + "ұл", + "бір", + "екі", + "үш", + "төрт", + "бес", + "алты", + "жеті", + "сегіз", + "тоғыз", + "он", + "от", + "ай", + "күн", + "алаш", + "жұрт", + "аспан", + "ұру", + "нұр", + "кету", + "қалу", + "бару", + "айту", + "жету", + "ұту", + "аға", + "адал", + "адам", + "ау", + "ажар", + "аз", + "көп", + "азат", + "айбар", + "кітап", + "аққу", + "қазы", + "қасқыр", + "ақыл", + "алма", + "амал", + "аман", + "ана", + "әке", + "шеше", + "апа", + "ата", + "ар", + "намыс", + "ара", + "ит", + "сан", + "орын", + "ашу", + "сабыр", + "аю", + "аяз", + "әдеп", + "әзіл", + "әйел", + "әлем", + "бет", + "би", + "болу", + "білім", + "өнер", + "мал", + "қан", + "бата", + "қайрат", + "жігер", + "жүрек", + "ой", + "оқу", + "қуаныш", + "қабыл", + "ниет", + "күш", + "қимыл", + "жүйрік", + "қыран", + "көз", + "жас", + "бала", + "ұш", + "көл", + "сөз", + "хан", + "батыр", + "қате", + "төзім", + "күз", + "көктем", + "қыс", + "жаз", + "ажал", + "жақсы", + "жаман", + "рух", + "тұлпар", + "жүз", + "сый", + "былай", + "балық", + "жер", + "зат", + "жылқы", + "тал", + "түс", + "шоқ", + "бірақ", + "алу", + "емес", + "күш", + "рет", + "жара", + "ғибрат", + "ғылым", + "дана", + "дала", + "болат", + "даңқ", + "дау", + "ерік", + "есеп", + "ет", + "ешкім", + "жазу", + "жай", + "ту", + "иман", + "кедей", + "бай", + "қап", + "қар", + "қарай", + "қарау", + "қарт", + "қатал", + "қатты", + "қиын", + "оңай", + "қағаз", + "қол", + "мақта", + "мансап", + "мысық", + "ми", + "нақыл", + "одақ", + "ойлау", + "ойын", + "опат", + "осы", + "оян", + "өзгеріс", + "өлім", + "өнеге", + "ұзақ", + "жел", + "пайда", + "парасат", + "риза", + "рақмет", + "сабақ", + "сақ", + "сала", + "салт", + "сана", + "сапар", + "сатқын", + "сауда", + "соғыс", + "су", + "ауа", + "таң", + "садақ", + "жер", + "марс", + "тез", + "жылдам", + "дем", + "тор", + "уақыт", + "еңбек", + "ұшу", + "ұшқын" + ] + } From 26d8d3a7a928811d0561d2617153e6b6838780e0 Mon Sep 17 00:00:00 2001 From: Gennady Koshkin Date: Sat, 7 Nov 2020 11:18:09 +0300 Subject: [PATCH 26/32] Fix colors --- static/themes/iceberg_dark.css | 4 ++-- static/themes/iceberg_light.css | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/static/themes/iceberg_dark.css b/static/themes/iceberg_dark.css index bbc81dbb7..19b1e8f3b 100644 --- a/static/themes/iceberg_dark.css +++ b/static/themes/iceberg_dark.css @@ -1,8 +1,8 @@ :root { --bg-color: #161821; --caret-color: #d2d4de; - --main-color: #d2d4de; - --sub-color: #84a0c6; + --main-color: #84a0c6; + --sub-color: #c6c8d1; --text-color: #c6c8d1; --error-color: #e27878; --error-extra-color: #e2a478; diff --git a/static/themes/iceberg_light.css b/static/themes/iceberg_light.css index ed5245691..57a37675f 100644 --- a/static/themes/iceberg_light.css +++ b/static/themes/iceberg_light.css @@ -1,8 +1,8 @@ :root { --bg-color: #e8e9ec; --caret-color: #262a3f; - --main-color: #262a3f; - --sub-color: #2d539e; + --main-color: #2d539e; + --sub-color: #262a3f; --text-color: #33374c; --error-color: #cc517a; --error-extra-color: #cc3768; From dde67ae984458f2cead24a4bcf53130c616f68b7 Mon Sep 17 00:00:00 2001 From: Jack Date: Sat, 7 Nov 2020 16:01:35 +0000 Subject: [PATCH 27/32] missing kazakh --- static/languages/list.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/static/languages/list.json b/static/languages/list.json index daf1cfd53..a4751429a 100644 --- a/static/languages/list.json +++ b/static/languages/list.json @@ -24,5 +24,6 @@ "icelandic_1k", "romanian", "finnish", - "persian" + "persian", + "kazakh" ] From 14cf302a01a0471f0b4b22bdc7af1ac9815dd9e6 Mon Sep 17 00:00:00 2001 From: Jack Date: Sat, 7 Nov 2020 16:03:15 +0000 Subject: [PATCH 28/32] removed duplicate quote --- static/js/english_quotes.json | 6 ------ 1 file changed, 6 deletions(-) diff --git a/static/js/english_quotes.json b/static/js/english_quotes.json index 355d89be3..8e00c491b 100644 --- a/static/js/english_quotes.json +++ b/static/js/english_quotes.json @@ -12024,12 +12024,6 @@ "id": 2025, "length": 497 }, - { - "text": "I hate nice girls. If they so much as say hello, it stays on my mind. If they return my texts, my heart races. The day one calls me, I know I'll look at my call history and grin. But I know that's just them being nice. People who are nice to me are also nice to everyone else.", - "source": "My Youth Romantic Comedy is Wrong, as I Expected", - "id": 2026, - "length": 276 - }, { "text": "The morning sun in all its glory greets the day with hope and comfort too. And you fill my life with laughter, you can make it better.", "source": "Have I Told You Lately", From 7ff57a2c83d738b9157d6545abdf67e8b9321b15 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=96R=C3=96SK=C5=90I=20Andr=C3=A1s?= Date: Sat, 7 Nov 2020 23:10:55 +0100 Subject: [PATCH 29/32] hungarian_2.5k.json: minor fixes remove some misspelled or English words replace the removed words with new ones --- static/languages/hungarian_2.5k.json | 27 ++++++++++++--------------- 1 file changed, 12 insertions(+), 15 deletions(-) diff --git a/static/languages/hungarian_2.5k.json b/static/languages/hungarian_2.5k.json index 4c8627c0f..9f0b0bff7 100644 --- a/static/languages/hungarian_2.5k.json +++ b/static/languages/hungarian_2.5k.json @@ -231,7 +231,6 @@ "míg", "hazai", "bizonyos", - "es", "kapcsolatban", "jobb", "vele", @@ -315,7 +314,6 @@ "utóbbi", "adott", "emberi", - "the", "helyzet", "péntek", "ismét", @@ -659,7 +657,6 @@ "angol", "előtti", "képviselők", - "and", "kap", "engem", "mindössze", @@ -1389,7 +1386,6 @@ "nyelvű", "érzi", "adnak", - "to", "akarok", "eredmény", "szeretne", @@ -1424,7 +1420,6 @@ "emelkedett", "fejét", "vezetők", - "szam", "bármely", "véleményét", "harminc", @@ -1505,7 +1500,6 @@ "bekezdésében", "koalíció", "gazdag", - "jo", "veszik", "tudtuk", "felső", @@ -1544,7 +1538,6 @@ "dollárt", "egyértelmű", "játék", - "ugy", "vitában", "erdélyi", "előterjesztést", @@ -1601,7 +1594,6 @@ "romániai", "hiányzik", "eleve", - "igy", "kapcsolat", "szolgálati", "előtte", @@ -1713,7 +1705,6 @@ "kiállítás", "adják", "beteg", - "topic", "televízió", "átlagos", "klasszikus", @@ -1888,7 +1879,6 @@ "felében", "nyerte", "eredmények", - "no", "információs", "programok", "velünk", @@ -2026,7 +2016,6 @@ "túl", "kiegészítő", "érték", - "fn", "távú", "gondolja", "forintért", @@ -2039,7 +2028,6 @@ "mértékű", "azonnali", "szlovákiai", - "am", "roma", "túlságosan", "arányban", @@ -2292,7 +2280,6 @@ "nyár", "maradtak", "amiben", - "to", "törvényes", "intézkedéseket", "őrizetbe", @@ -2470,7 +2457,6 @@ "választotta", "iroda", "elsőként", - "azert", "tisztában", "bejelentés", "mindenkori", @@ -2505,6 +2491,17 @@ "sorban", "fajta", "teszem", - "mostanában" + "mostanában", + "file", + "internet", + "böngésző", + "Petőfi", + "Ady", + "Kossuth", + "Széchenyi", + "István", + "Péter", + "Covid", + "maszk" ] } From d28e8f5f3fc45dc71960589d4469b4f960262576 Mon Sep 17 00:00:00 2001 From: Jack Date: Sat, 7 Nov 2020 22:32:49 +0000 Subject: [PATCH 30/32] added danish --- static/languages/danish.json | 206 +++++++++++++++++++++++++++++++++++ static/languages/list.json | 1 + 2 files changed, 207 insertions(+) create mode 100644 static/languages/danish.json diff --git a/static/languages/danish.json b/static/languages/danish.json new file mode 100644 index 000000000..60f4b9229 --- /dev/null +++ b/static/languages/danish.json @@ -0,0 +1,206 @@ +{ + "name": "danish", + "leftToRight": true, + "words": [ + "ville", + "ud", + "første", + "siden", + "gang", + "giver", + "komme", + "nok", + "Danmark", + "København", + "i", + "kun", + "min", + "måtte", + "dig", + "langt", + "man", + "ham", + "være", + "sine", + "for", + "nogen", + "endnu", + "have", + "hende", + "havde", + "os", + "flere", + "du", + "blandt", + "står", + "sin", + "tror", + "får", + "samme", + "allerede", + "hvordan", + "noget", + "har", + "på", + "alle", + "ved", + "dem", + "nok", + "fået", + "gør", + "give", + "sådan", + "hver", + "gennem", + "også", + "han", + "vi", + "se", + "år", + "del", + "unge", + "hvis", + "nu", + "det", + "men", + "at", + "om", + "lidt", + "kom", + "tid", + "mig", + "ny", + "selv", + "sige", + "tilbage", + "arbejde", + "andre", + "skal", + "disse", + "stor", + "alt", + "altså", + "altid", + "ingen", + "to", + "frem", + "helt", + "går", + "mod", + "gøre", + "derfor", + "af", + "måde", + "måske", + "næsten", + "mens", + "dog", + "synes", + "kommer", + "jo", + "jeg", + "mindre", + "blev", + "par", + "god", + "godt", + "gamle", + "folk", + "fik", + "sidste", + "da", + "dansk", + "dag", + "omkring", + "under", + "mand", + "når", + "siger", + "et", + "en", + "dette", + "vil", + "tale", + "ja", + "ind", + "netop", + "bare", + "hos", + "er", + "hele", + "der", + "deres", + "med", + "som", + "baumann", + "tage", + "først", + "både", + "mange", + "de", + "til", + "mennesker", + "her", + "mere", + "været", + "aldrig", + "igen", + "kunne", + "meget", + "få", + "lille", + "denne", + "lige", + "nogle", + "fordi", + "mellem", + "før", + "stadig", + "over", + "blive", + "ikke", + "mest", + "var", + "vores", + "ligger", + "sagde", + "mon", + "ned", + "sig", + "gå", + "hun", + "eller", + "uden", + "hvad", + "andet", + "hvor", + "verden", + "så", + "ser", + "skulle", + "gik", + "tidligere", + "sammen", + "kan", + "tre", + "fra", + "mit", + "heller", + "side", + "anden", + "efter", + "store", + "mener", + "må", + "end", + "op", + "hovedet", + "gav", + "ca", + "danske", + "rigtig", + "døren", + "finde", + "børn" + ] +} diff --git a/static/languages/list.json b/static/languages/list.json index a4751429a..856264043 100644 --- a/static/languages/list.json +++ b/static/languages/list.json @@ -17,6 +17,7 @@ "czech", "slovak", "dutch", + "danish", "hungarian", "hungarian_2.5k", "norwegian", From 9415d40f4607c6e1b8b49614aacf767a4a3667a6 Mon Sep 17 00:00:00 2001 From: s1mple-Lemon <58873964+s1mple-Lemon@users.noreply.github.com> Date: Sun, 8 Nov 2020 21:55:25 +0700 Subject: [PATCH 31/32] Add files via upload add vietnamese language --- static/languages/vietnamese.json | 157 +++++++++++++++++++++++++++++++ 1 file changed, 157 insertions(+) create mode 100644 static/languages/vietnamese.json diff --git a/static/languages/vietnamese.json b/static/languages/vietnamese.json new file mode 100644 index 000000000..2610a5fc7 --- /dev/null +++ b/static/languages/vietnamese.json @@ -0,0 +1,157 @@ +{ + "name": "vietnamese", + "leftToRight": true, + "words": [ + "chào", + "má", + "ba", + "cha", + "con", + "anh", + "em", + "chị", + "bà", + "ngoại", + "ông", + "nội", + "ăn", + "cơm", + "chưa", + "rồi", + "sáng", + "đi", + "học", + "làm", + "bài", + "tập", + "trái", + "cây", + "tắm", + "chơi", + "bia", + "rượu", + "cà", + "phê", + "cơm", + "tấm", + "hủ", + "tiếu", + "sướng", + "ngày", + "độc", + "lập", + "trong", + "tim", + "mỗi", + "người", + "sung", + "đời", + "à", + "phải", + "tiền", + "nhiêu", + "lấy", + "của", + "để", + "không", + "phí", + "sữa", + "văn", + "chút", + "thuốc", + "hút", + "điện", + "thoại", + "di", + "động", + "máy", + "vi", + "tính", + "công", + "cộng", + "siêu", + "thị", + "được", + "trường", + "công", + "ty", + "ngân", + "ở", + "tại", + "sao", + "ai", + "cảm", + "ơn", + "xin", + "lỗi", + "mắc", + "quận", + "đói", + "nhung", + "lụa", + "thích", + "yêu", + "hiểu", + "gì", + "cười", + "bởi", + "hôm", + "qua", + "ngày", + "nhục", + "phục", + "thù", + "xào", + "luộc", + "tri", + "thức", + "nước", + "tương", + "nước", + "đá", + "đọc", + "bao", + "lâu", + "nhà", + "vệ", + "sinh", + "đúng", + "giận", + "dỗi", + "mang", + "xà", + "bông", + "bởi", + "vì", + "dầu", + "gội", + "đầu", + "trai", + "quán", + "ăn", + "chúng", + "mình", + "hoàn", + "xong", + "việc", + "dự", + "định", + "đến", + "trễ", + "giặt", + "chuẩn", + "bị", + "nhanh", + "nhức", + "đầu", + "mập", + "vui", + "mừng", + "cầu", + "đường", + "du", + "lịch", + "hành", + "khởi" + ] +} \ No newline at end of file From bcb24a8bb4a22ada89d987856c4a09cdac7368cb Mon Sep 17 00:00:00 2001 From: s1mple-Lemon <58873964+s1mple-Lemon@users.noreply.github.com> Date: Sun, 8 Nov 2020 21:56:53 +0700 Subject: [PATCH 32/32] Update list.json add vietnamese language --- static/languages/list.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/static/languages/list.json b/static/languages/list.json index 856264043..34161cf55 100644 --- a/static/languages/list.json +++ b/static/languages/list.json @@ -26,5 +26,6 @@ "romanian", "finnish", "persian", - "kazakh" + "kazakh", + "vietnamese" ]