Merge branch 'master' into patch-1

This commit is contained in:
Jack 2020-06-27 00:33:50 +01:00 committed by GitHub
commit a424275958
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
13 changed files with 120 additions and 40 deletions

View file

@ -2858,7 +2858,7 @@
}
},
"websocket-extensions": {
"version": "0.1.4",
"version": ">=0.1.4",
"resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz",
"integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg=="
},

2
package-lock.json generated
View file

@ -4232,7 +4232,7 @@
}
},
"websocket-extensions": {
"version": "0.1.3",
"version": ">=0.1.4",
"resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.3.tgz",
"integrity": "sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg=="
},

View file

@ -14,7 +14,7 @@
<meta name="name" content="Monkey Type">
<meta name="image" content="https://monkey-type.com/mtsocial_large.png">
<meta name="description" content="A super customisable, minimalistic typing test.">
<meta name="keywords" content="typing, test, typing-test, typing test, monkey-type, monkeytype, monkey, type, miodec, wpm">
<meta name="keywords" content="typing, test, typing-test, typing test, monkey-type, monkeytype, monkey type, monkey-types, monkey types, types, monkey, type, miodec, wpm, words per minute, typing website, minimalistic, custom typing test, customizable, customisable, themes, random words, smooth caret, smooth, new, new typing site, new typing website">
<meta name="author" content="Miodec">
<meta property="og:title" content="Monkey Type">
<meta property="og:url" content="https://monkey-type.com/">
@ -44,8 +44,7 @@
<div id="resultEditTagsPanelWrapper" class="hidden">
<div id="resultEditTagsPanel" resultid="">
<div class="buttons">
<div class="button tag">asdf</div>
<div class="button active tag">asdf</div>
</div>
<div class="button confirmButton"><i class="fas fa-check"></i></div>
</div>
@ -714,17 +713,17 @@
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js"></script>
<!-- <script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.7.3/Chart.min.js"></script> -->
<script src="js/chart.js"></script>
<script src="js/chartjs-plugin-trendline.js?v=19"></script>
<script src="js/chartjs-plugin-trendline.js?v=20"></script>
<script src="js/chartjs-plugin-annotation.js"></script>
<script src="js/html2canvas.js"></script>
<script src="js/words.js?v=19"></script>
<script src="js/layouts.js?v=19"></script>
<script src="js/db.js?v=19"></script>
<script src="js/userconfig.js?v=19"></script>
<script src="js/commandline.js?v=19"></script>
<script src="js/settings.js?v=19"></script>
<script src="js/account.js?v=19"></script>
<script src="js/script.js?v=19"></script>
<script src="js/words.js?v=20"></script>
<script src="js/layouts.js?v=20"></script>
<script src="js/db.js?v=20"></script>
<script src="js/userconfig.js?v=20"></script>
<script src="js/commandline.js?v=20"></script>
<script src="js/settings.js?v=20"></script>
<script src="js/account.js?v=20"></script>
<script src="js/script.js?v=20"></script>
</html>

View file

@ -886,12 +886,14 @@ function hideResultEditTagsPanel(){
}
$(document).on('click','.pageAccount .group.history #resultEditTags',f => {
let resultid = $(f.target).parents('span').attr('resultid');
let tags = $(f.target).parents('span').attr('tags');
$("#resultEditTagsPanel").attr('resultid',resultid);
$("#resultEditTagsPanel").attr('tags',tags);
updateActiveResultEditTagsPanelButtons(JSON.parse(tags));
showResultEditTagsPanel();
if(dbSnapshot.tags.length > 0){
let resultid = $(f.target).parents('span').attr('resultid');
let tags = $(f.target).parents('span').attr('tags');
$("#resultEditTagsPanel").attr('resultid',resultid);
$("#resultEditTagsPanel").attr('tags',tags);
updateActiveResultEditTagsPanelButtons(JSON.parse(tags));
showResultEditTagsPanel();
}
})
$(document).on('click','#resultEditTagsPanelWrapper .button.tag',f => {

View file

@ -27,5 +27,12 @@ const layouts = {
"aA","sS","hH","tT","gG","yY","nN","eE","oO","iI","'\"",
"zZ","xX","mM","cC","vV","kK","lL",",<",".>","/?",
" "
],
turkishf: [
"*+","1!","2\"","3^","4$","5%","6&","7'","8(","9)","0=","/?","-_",
"fF","gG","ğĞ","ıI","oO","dD","rR","nN","hH","pP","qQ","wW","xX",
"uU","iİ","eE","aA","üÜ","tT","kK","mM","lL","yY","şŞ",
"jJ","öÖ","vV","cC","çÇ","zZ","sS","bB",".:",",;",
" "
]
}
}

View file

@ -36,6 +36,28 @@ const editTag = firebase.functions().httpsCallable('editTag');
const removeTag = firebase.functions().httpsCallable('removeTag');
const updateResultTags = firebase.functions().httpsCallable('updateResultTags');
function smooth(arr, windowSize, getter = (value) => value, setter) {
const get = getter
const result = []
for (let i = 0; i < arr.length; i += 1) {
const leftOffeset = i - windowSize
const from = leftOffeset >= 0 ? leftOffeset : 0
const to = i + windowSize + 1
let count = 0
let sum = 0
for (let j = from; j < to && j < arr.length; j += 1) {
sum += get(arr[j])
count += 1
}
result[i] = setter ? setter(arr[i], sum / count) : sum / count
}
return result
}
function showNotification(text, time) {
let noti = $(".notification");
noti.text(text);
@ -675,7 +697,7 @@ function showResult(difficultyFailed = false) {
let testtime = roundedToFixed(stats.time,1);
$("#result .stats .wpm .bottom").text(Math.round(stats.wpm));
$("#result .stats .raw .bottom").text(Math.round(stats.wpmRaw));
$("#result .stats .acc .bottom").text(Math.round(stats.acc) + "%");
$("#result .stats .acc .bottom").text(Math.floor(stats.acc) + "%");
$("#result .stats .key .bottom").text(stats.correctChars + stats.spaces + "/" + stats.incorrectChars);
$("#result .stats .time .bottom").text(testtime+'s');
@ -700,8 +722,7 @@ function showResult(difficultyFailed = false) {
// $("#result .stats .time").removeClass('hidden');
// $("#result .stats .time .bottom").text(roundedToFixed(stats.time,1)+'s');
}
let pbVal = 0;
if (firebase.auth().currentUser != null) {
$("#result .loginTip").addClass('hidden');
@ -773,6 +794,9 @@ function showResult(difficultyFailed = false) {
}
localPb = true;
}
wpmOverTimeChart.options.annotation.annotations[0].value = d2;
wpmOverTimeChart.options.annotation.annotations[0].label.content = "PB: "+ d2;
wpmOverTimeChart.update();
})
})
@ -791,7 +815,7 @@ function showResult(difficultyFailed = false) {
if(e.data === 2){
//new pb
if(!localPb){
showNotification('Local PB data is out of sync! Refresh the page to resync it or contact Miodec on Discord.',15000);
showNotification('Local PB data is out of sync! Resyncing.',5000);
}
db_saveLocalPB(config.mode,mode2,config.punctuation,config.language,config.difficulty,stats.wpm);
}else{
@ -911,10 +935,15 @@ function showResult(difficultyFailed = false) {
wpmOverTimeChart.data.labels = labels;
let rawWpmPerSecond = keypressPerSecond.map(f => Math.round((f/5)*60));
rawWpmPerSecond = smooth(rawWpmPerSecond,1);
wpmOverTimeChart.data.datasets[0].borderColor = mainColor;
wpmOverTimeChart.data.datasets[0].data = wpmHistory;
wpmOverTimeChart.data.datasets[1].borderColor = subColor;
wpmOverTimeChart.data.datasets[1].data = rawHistory;
wpmOverTimeChart.data.datasets[1].data = rawWpmPerSecond;
wpmOverTimeChart.options.annotation.annotations[0].borderColor = subColor;
wpmOverTimeChart.options.annotation.annotations[0].label.backgroundColor = subColor;
@ -922,12 +951,15 @@ function showResult(difficultyFailed = false) {
let maxVal = 0;
rawHistory.forEach(raw =>{
if(raw >= maxVal){
maxVal = raw;
}
})
// let maxVal = 0;
// rawWpmPerSecond.forEach(raw =>{
// if(raw >= maxVal){
// maxVal = raw;
// }
// })
let maxVal = Math.max(...[Math.max(...rawWpmPerSecond),Math.max(...wpmHistory)]);
wpmOverTimeChart.options.scales.yAxes[0].ticks.max = maxVal;
wpmOverTimeChart.options.scales.yAxes[1].ticks.max = maxVal;
@ -1052,7 +1084,7 @@ function restartTest(withSameWordset = false) {
clearIntervals();
$("#restartTestButton").css('opacity', 1);
if ($("#commandLineWrapper").hasClass('hidden')) focusWords();
wpmOverTimeChart.options.annotation.annotations[0].value = "-20";
wpmOverTimeChart.options.annotation.annotations[0].value = "-30";
wpmOverTimeChart.update();
@ -1486,6 +1518,7 @@ function tagsEdit(){
name: inputVal,
id: e.data.id
})
updateResultEditTagsPanelButtons();
updateSettingsPage();
updateFilterTags();
}else if(status === -1){
@ -1506,6 +1539,7 @@ function tagsEdit(){
tag.name = inputVal;
}
})
updateResultEditTagsPanelButtons();
updateSettingsPage();
updateFilterTags();
}else if(status === -1){
@ -1526,6 +1560,7 @@ function tagsEdit(){
dbSnapshot.tags.splice(index, 1);
}
})
updateResultEditTagsPanelButtons();
updateSettingsPage();
updateFilterTags();
updateActiveTags();
@ -1823,7 +1858,7 @@ $(document).keydown((event) => {
}
compareInput(currentWordIndex,currentInput,!config.blindMode);
}
currentKeypressCount++;
// currentKeypressCount++;
updateCaretPosition();
}
//space
@ -1867,6 +1902,7 @@ $(document).keydown((event) => {
currentWordIndex++;
updateActiveElement();
updateCaretPosition();
currentKeypressCount++;
} else {
inputHistory.push(currentInput);
highlightBadWord(currentWordIndex,!config.blindMode)
@ -1887,6 +1923,7 @@ $(document).keydown((event) => {
}
updateActiveElement();
updateCaretPosition();
currentKeypressCount++;
}
if (config.mode === "words" || config.mode === "custom") {
updateTimer();
@ -2091,7 +2128,7 @@ let wpmOverTimeChart = new Chart(ctx, {
type: 'line',
mode: 'horizontal',
scaleID: 'wpm',
value: '-20',
value: '-30',
borderColor: 'red',
borderWidth: 1,
borderDash: [2,2],
@ -2127,7 +2164,7 @@ let wpmOverTimeChart = new Chart(ctx, {
// Text to display in label - default is null. Provide an array to display values on a new line
content: "PB",
},
}
}]
}
}

View file

@ -14,4 +14,5 @@ const words = {
portuguese: ["nem","José","de","nova","local","nada","têm","as","dinheiro","qual","você","maior","dias","depois","mundo","por","especial","bem","onde","rio","plano","quando","são","grande","sempre","sistema","porque","dia","cerca","essa","mas","ano","às","dois","ter","sobre","esporte","muito","sem","equipe","me","no","eles","podem","nacional","vai","quatro","seja","esta","sul","pelos","todos","será","há","a","mil","além","hoje","só","qualquer","ontem","em","estava","os","sendo","um","brasileira","pode","mesmo","tempo","preços","exemplo","apenas","vida","país","cada","diz","real","assim","ela","segundo","da","com","faz","suas","também","do","forma","já","grupo","disse","cotidiano","antes","era","milhões","eu","folha","Fernando","melhor","estado","e","todo","isso","dos","ao","Carlos","programa","três","estão","foram","alguns","parte","fazer","presidente","trabalho","final","nos","para","Paulo","cidade","partir","mais","número","outro","à","candidato","está","ele","processo","novo","na","contra","como","polícia","entre","casa","vez","empresa","pouco","afirmou","jogo","durante","após","aos","desde","empresas","foi","banco","quem","página","anos","duas","não","pela","sua","ser","é","pelo","o","esse","mês","Brasil","deve","ainda","pessoas","primeiro","caso","agora","outra","outros","semana","se","até","primeira","tinha","uma","po","este","governo","editoria","mercado","que","lei","tem","menos","seus","acordo","ou","seu","das","reportagem","tudo"],
bahasa: ["adalah","akan","aku","anak","anda","apa","atau","ayah","baca","bagaimana","bagian","bahkan","bahwa","baik","bapak","beberapa","belajar","berarti","berbeda","bermain","besar","bicara","bisa","cahaya","cara","cari","dan","dari","dengan","di","dia","dimana","dua","hati","hidup","ibu","ingin","ini","itu","jika","kalimat","kami","kanan","kapan","kata","kecil","kembali","kerja","kiri","kita","kota","kurang","lebih","melakukan","melalui","membaca","membuat","memiliki","menjadi","menulis","mereka","milik","muda","naik","nama","oleh","orang","pada","pergi","pohon","pria","rendah","rumah","sangat","satu","saya","sebab","sebagai","sebelum","sebuah","sekolah","setelah","setiap","siapa","suara","taman","tanaman","tapi","tempat","tetapi","tidak","tiga","tinggi","tua","turun","udara","untuk","waktu","wanita","yang"],
turkish: ["bir", "ve", "olmak", "bu", "için", "o", "ben", "demek", "çok", "yapmak", "ne", "gibi", "daha", "almak", "var", "kendi", "gelmek", "ile", "vermek", "ama", "sonra", "kadar", "yer", "en", "insan", "değil", "her", "istemek", "yıl", ıkmak", "görmek", "gün", "biz", "gitmek", "iş", "şey", "ara", "ki", "bilmek", "el", "zaman", "ya", "çocuk", "iki", "bakmak", "çalışmak", "içinde", "büyük", "yok", "başlamak", "yol", "kalmak", "neden", "siz", "konu", "yapılmak", "iyi", "kadın", "ev", "ise", "diye", "bulunmak", "söylemek", "göz", "gerekmek", "dünya", "baş", "durum", "yan", "geçmek", "sen", "onlar", "yeni", "önce", "başka", "hâl", "orta", "su", "girmek", "ülke", "yemek", "hiç", "bile", "nasıl", "bütün", "karşı", "bulmak", "böyle", "yaşamak", "düşünmek", "aynı", "iç", "ancak", "kişi", "bunlar", "veya", "ilk", "göre", "ön", "son", "biri", "şekil", "önemli", "yüz", "hem", "göstermek", "etmek", "alt", "getirmek", "kullanmak", "çünkü", "taraf", "şimdi", "adam", "onun", "diğer", "artık", "üzerinde", "ses", "hep", "doğru", "durmak", "kız", "tüm", "çekmek", "konuşmak", "para", "anlamak", "anne", "az", "bazı", "baba", "hayat", "sadece", "küçük", "fazla", "bilgi", "an", "sormak", "bunun", "öyle", "yine", "sağlamak", "sonuç", "kullanılmak", "dış", "ad", "yani", "süre", "dönmek", "açmak", "oturmak", "anlatmak", "bırakmak", "hemen", "saat", "yaş", "sorun", "devlet", "sahip", "sıra", "yazmak", "yüzde", "ay", "atmak", "tutmak", "bunu", "olay", "düşmek", "duymak", "söz", "güzel", "sevmek", "biraz", "zor", ıkarmak", "şu", "koymak", "tek", "sistem", "birlikte", "verilmek", "kim", "alınmak", "genç", "kapı", "kitap", "üzerine", "burada", "gece", "alan", "birbiri", "işte", "beklemek", "uzun", "hiçbir", "bugün", "dönem", "arkadaş", "ürün", "aile", "üç", "okumak", "erkek", "herkes", "güç", "belki", "gerçek", "tam", "ilgili", "ilişki", "çevre", "eski", "aramak", "yaşam", "halk", "yakın", "sokak", "bey", "tarih", "özellik", "bölüm", "özel", "akıl", "kimse", "pek", "eğer", "gerek", "özellikle", "anlam", "yüksek", "banka", "kez", "ayak", "taşımak", "geri", "toplum", "araç", "madde", "tür", "karar", "görülmek", "hava", "sayı", "farklı", "grup", "oda", "biçim", "oluşmak", "haber", "ayrıca", "gelen", "birkaç", "soru", "arka", "kazanmak", "yazı", "okul", "açık", "öğrenmek", "sürmek", "dil", "şirket", "kaynak", "bitmek", "program", "devam etmek", "hareket", "renk", "açılmak", "hak", "inanmak", "çalışma", "açı", "parça", "gazete", "oluşturmak", "tabi", "değer", "tanımak", "yapı", "doktor", "gelir", "görev", "amaç", "bölge", "film", "üzere", "müşteri", "zaten", "telefon", "eğitim", "deniz", "ikinci", "kalkmak", "hatta", "etki", "gelişmek", "geçen"]
hungarian: ["lapát", "vödör", "fuss", "játék", "nap", "hold", "éjszaka", "reggel", "délután", "címke", "ugrás", "kosár", "kosárlabda", "eszik", "csokoládé", "palacsinta", "labda", "teniszlabda", "denevér", "fejlesztő", "busz", "pilóta", "desszert", "egér", "kutya", "macska", "ital", "villa", "kanál", "kés", "táska", "iskola", "ceruza", "szín", "ebéd", "reggeli", "vacsora", "falatozás", "pénztárca", "fürdőszoba", "mosogató", "kád", "zuhany", "kazán", "mosógép", "mosó", "szárítógép", "száraz", "lány", "fiú", "férfi", "női", "ők", "őket", "csinál", "bor", "víz", "kávé", "sör", "nehéz", "könnyű", "csúnya", "gyönyörű", "szép", "rossz", "jó", "nagy", "kicsi", "bocsánat", "szívesen", "köszönöm", "igen", "nem", "viszontlátásra", "viszlát", "szia", "szervusz", "káröröm", "ordít", "csendes", "hangos", "elmosolyodik", "bezzeg", "megcsörget", "ügyeskedő", "rosszarcú", "meghazudtol", "szöszmötöl"],
};

2
public/robots.txt Normal file
View file

@ -0,0 +1,2 @@
User-agent: *
Disallow:

View file

@ -51,8 +51,8 @@
},
{
"name": "rgb",
"bgColor": "#111",
"textColor": "#eee"
"bgColor": "linear-gradient(to left, indigo, blue, green, yellow, orange, red);",
"textColor": "#fff"
},
{
"name": "oblivion",
@ -198,5 +198,15 @@
"name": "matrix",
"bgColor": "#000000",
"textColor": "#15ff00"
},
{
"name": "olive",
"bgColor": "#e9e5cc",
"textColor": "#92946f"
},
{
"name": "strawberry",
"bgColor": "#e53c58",
"textColor": "#fcfcf8"
}
]

View file

@ -2,7 +2,7 @@
--bg-color: #2d2e30;
--main-color: #65d2cd;
--caret-color: #65d2cd;
--sub-color: #7e8389;
--sub-color: #54585c;
--text-color: #e3e6eb;
--error-color: #d36a7b;
--error-extra-color: #994154;

11
public/themes/olive.css Normal file
View file

@ -0,0 +1,11 @@
:root {
--bg-color: #e9e5cc;
--caret-color: #92946f;
--main-color: #92946f;
--sub-color: #b7b39e;
--text-color: #373731;
--error-color: #cf2f2f;
--error-extra-color: #a22929;
--extra-error-color: #cf2f2f;
--extra-error-extra-color: #a22929;
}

View file

@ -2,7 +2,7 @@
--bg-color: #181818;
--main-color: #17b8bd;
--caret-color: #17b8bd;
--sub-color: #484848;
--sub-color: #53565a;
--text-color: #e5f4f4;
--error-color: #da3333;
--error-extra-color: #791717;

View file

@ -0,0 +1,11 @@
:root {
--bg-color: #f37f83;
--main-color: #fcfcf8;
--caret-color: #fcfcf8;
--sub-color: #e53c58;
--text-color: #fcfcf8;
--error-color: #fcd23f;
--error-extra-color: #d7ae1e;
--extra-error-color: #fcd23f;
--extra-error-extra-color: #d7ae1e;
}