mirror of
https://github.com/monkeytypegame/monkeytype.git
synced 2025-09-13 01:57:38 +08:00
added quotelength filters,
moved result filters to cookie storage instead of db storage
This commit is contained in:
parent
03ba948cae
commit
1ca6def98e
4 changed files with 126 additions and 48 deletions
|
@ -372,36 +372,36 @@ function getAccountDataAndInit() {
|
|||
initPaceCaret(true);
|
||||
}
|
||||
}
|
||||
try {
|
||||
if (
|
||||
config.resultFilters === undefined ||
|
||||
config.resultFilters === null ||
|
||||
config.resultFilters.difficulty === undefined
|
||||
) {
|
||||
if (
|
||||
db_getSnapshot().config.resultFilters == null ||
|
||||
db_getSnapshot().config.resultFilters.difficulty === undefined
|
||||
) {
|
||||
config.resultFilters = defaultAccountFilters;
|
||||
} else {
|
||||
config.resultFilters = db_getSnapshot().config.resultFilters;
|
||||
}
|
||||
}
|
||||
} catch (e) {
|
||||
config.resultFilters = defaultAccountFilters;
|
||||
}
|
||||
if (
|
||||
Object.keys(config.resultFilters.language).length !==
|
||||
Object.keys(defaultAccountFilters.language).length
|
||||
) {
|
||||
config.resultFilters.language = defaultAccountFilters.language;
|
||||
}
|
||||
if (
|
||||
Object.keys(config.resultFilters.funbox).length !==
|
||||
Object.keys(defaultAccountFilters.funbox).length
|
||||
) {
|
||||
config.resultFilters.funbox = defaultAccountFilters.funbox;
|
||||
}
|
||||
// try {
|
||||
// if (
|
||||
// config.resultFilters === undefined ||
|
||||
// config.resultFilters === null ||
|
||||
// config.resultFilters.difficulty === undefined
|
||||
// ) {
|
||||
// if (
|
||||
// db_getSnapshot().config.resultFilters == null ||
|
||||
// db_getSnapshot().config.resultFilters.difficulty === undefined
|
||||
// ) {
|
||||
// config.resultFilters = defaultAccountFilters;
|
||||
// } else {
|
||||
// config.resultFilters = db_getSnapshot().config.resultFilters;
|
||||
// }
|
||||
// }
|
||||
// } catch (e) {
|
||||
// config.resultFilters = defaultAccountFilters;
|
||||
// }
|
||||
// if (
|
||||
// Object.keys(config.resultFilters.language).length !==
|
||||
// Object.keys(defaultAccountFilters.language).length
|
||||
// ) {
|
||||
// config.resultFilters.language = defaultAccountFilters.language;
|
||||
// }
|
||||
// if (
|
||||
// Object.keys(config.resultFilters.funbox).length !==
|
||||
// Object.keys(defaultAccountFilters.funbox).length
|
||||
// ) {
|
||||
// config.resultFilters.funbox = defaultAccountFilters.funbox;
|
||||
// }
|
||||
if ($(".pageLogin").hasClass("active")) {
|
||||
changePage("account");
|
||||
}
|
||||
|
@ -410,6 +410,7 @@ function getAccountDataAndInit() {
|
|||
updateFilterTags();
|
||||
updateCommandsTagsList();
|
||||
loadActiveTagsFromCookie();
|
||||
loadResultFiltersFromCookie();
|
||||
updateResultEditTagsPanelButtons();
|
||||
showAccountSettingsSection();
|
||||
})
|
||||
|
@ -1019,6 +1020,12 @@ let defaultAccountFilters = {
|
|||
120: true,
|
||||
custom: true,
|
||||
},
|
||||
quoteLength: {
|
||||
short: true,
|
||||
medium: true,
|
||||
long: true,
|
||||
thicc: true,
|
||||
},
|
||||
punctuation: {
|
||||
on: true,
|
||||
off: true,
|
||||
|
@ -1098,12 +1105,23 @@ function updateFilterTags() {
|
|||
}
|
||||
|
||||
function toggleFilter(group, filter) {
|
||||
if (group === "date") {
|
||||
Object.keys(config.resultFilters.date).forEach((date) => {
|
||||
setFilter("date", date, false);
|
||||
});
|
||||
try {
|
||||
if (group === "date") {
|
||||
Object.keys(config.resultFilters.date).forEach((date) => {
|
||||
setFilter("date", date, false);
|
||||
});
|
||||
}
|
||||
config.resultFilters[group][filter] = !config.resultFilters[group][filter];
|
||||
saveResultFiltersToCookie();
|
||||
} catch (e) {
|
||||
Misc.showNotification(
|
||||
"Something went wrong toggling filter. Reverting to defaults",
|
||||
3000
|
||||
);
|
||||
config.resultFilters = defaultAccountFilters;
|
||||
saveResultFiltersToCookie();
|
||||
showActiveFilters();
|
||||
}
|
||||
config.resultFilters[group][filter] = !config.resultFilters[group][filter];
|
||||
}
|
||||
|
||||
function setFilter(group, filter, set) {
|
||||
|
@ -1276,7 +1294,7 @@ $(".pageAccount .topFilters .button.allFilters").click((e) => {
|
|||
});
|
||||
config.resultFilters.date.all = true;
|
||||
showActiveFilters();
|
||||
saveConfigToCookie();
|
||||
saveResultFiltersToCookie();
|
||||
});
|
||||
|
||||
$(".pageAccount .topFilters .button.currentConfigFilter").click((e) => {
|
||||
|
@ -1320,7 +1338,7 @@ $(".pageAccount .topFilters .button.currentConfigFilter").click((e) => {
|
|||
config.resultFilters.date.all = true;
|
||||
|
||||
showActiveFilters();
|
||||
saveConfigToCookie();
|
||||
saveResultFiltersToCookie();
|
||||
});
|
||||
|
||||
$(".pageAccount .topFilters .button.toggleAdvancedFilters").click((e) => {
|
||||
|
@ -1365,7 +1383,7 @@ $(
|
|||
}
|
||||
}
|
||||
showActiveFilters();
|
||||
saveConfigToCookie();
|
||||
saveResultFiltersToCookie();
|
||||
});
|
||||
|
||||
function fillPbTables() {
|
||||
|
@ -1849,6 +1867,21 @@ function refreshAccountPage() {
|
|||
if (!config.resultFilters.words[wordfilter]) return;
|
||||
}
|
||||
|
||||
if (result.quoteLength != null) {
|
||||
let filter = null;
|
||||
if (result.quoteLength === 0) {
|
||||
filter = "short";
|
||||
} else if (result.quoteLength === 1) {
|
||||
filter = "medium";
|
||||
} else if (result.quoteLength === 2) {
|
||||
filter = "long";
|
||||
} else if (result.quoteLength === 3) {
|
||||
filter = "thicc";
|
||||
}
|
||||
if (filter !== null && !config.resultFilters.quoteLength[filter])
|
||||
return;
|
||||
}
|
||||
|
||||
let langFilter = config.resultFilters.language[result.language];
|
||||
|
||||
if (
|
||||
|
@ -1926,8 +1959,10 @@ function refreshAccountPage() {
|
|||
"Something went wrong when filtering. Resetting filters.",
|
||||
5000
|
||||
);
|
||||
console.error(e);
|
||||
config.resultFilters = defaultAccountFilters;
|
||||
saveConfigToCookie();
|
||||
saveResultFiltersToCookie();
|
||||
showActiveFilters();
|
||||
}
|
||||
|
||||
//filters done
|
||||
|
|
|
@ -446,9 +446,14 @@ async function initWords() {
|
|||
quotes.groups.forEach((qg, i) => {
|
||||
let lower = qg[0];
|
||||
let upper = qg[1];
|
||||
quotes.groups[i] = quotes.quotes.filter(
|
||||
(q) => q.length >= lower && q.length <= upper
|
||||
);
|
||||
quotes.groups[i] = quotes.quotes.filter((q) => {
|
||||
if (q.length >= lower && q.length <= upper) {
|
||||
q.group = i;
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
});
|
||||
});
|
||||
quotes.quotes = [];
|
||||
},
|
||||
|
@ -2013,6 +2018,11 @@ function showResult(difficultyFailed = false) {
|
|||
lang = "english";
|
||||
}
|
||||
|
||||
let quoteLength = null;
|
||||
if (config.mode === "quote") {
|
||||
quoteLength = randomQuote.group;
|
||||
}
|
||||
|
||||
let completedEvent = {
|
||||
wpm: stats.wpm,
|
||||
rawWpm: stats.wpmRaw,
|
||||
|
@ -2022,6 +2032,7 @@ function showResult(difficultyFailed = false) {
|
|||
acc: stats.acc,
|
||||
mode: config.mode,
|
||||
mode2: mode2,
|
||||
quoteLength: quoteLength,
|
||||
punctuation: config.punctuation,
|
||||
numbers: config.numbers,
|
||||
timestamp: Date.now(),
|
||||
|
|
|
@ -96,7 +96,9 @@ async function saveConfigToCookie(noDbCheck = false) {
|
|||
// expires: d,
|
||||
// path: "/",
|
||||
// });
|
||||
Misc.setCookie("config", JSON.stringify(config), 365);
|
||||
let save = config;
|
||||
delete save.resultFilters;
|
||||
Misc.setCookie("config", JSON.stringify(save), 365);
|
||||
restartCount = 0;
|
||||
if (!noDbCheck) await saveConfigToDB();
|
||||
}
|
||||
|
@ -320,6 +322,27 @@ function loadActiveTagsFromCookie() {
|
|||
}
|
||||
}
|
||||
|
||||
function saveResultFiltersToCookie() {
|
||||
Misc.setCookie("resultFilters", JSON.stringify(config.resultFilters), 365);
|
||||
}
|
||||
|
||||
function loadResultFiltersFromCookie() {
|
||||
// let newTags = $.cookie("activeTags");
|
||||
try {
|
||||
let newResultFilters = Misc.getCookie("resultFilters");
|
||||
if (newResultFilters !== undefined && newResultFilters !== "") {
|
||||
config.resultFilters = JSON.parse(newResultFilters);
|
||||
saveResultFiltersToCookie();
|
||||
} else {
|
||||
config.resultFilters = defaultAccountFilters;
|
||||
saveResultFiltersToCookie();
|
||||
}
|
||||
} catch {
|
||||
config.resultFilters = defaultAccountFilters;
|
||||
saveResultFiltersToCookie();
|
||||
}
|
||||
}
|
||||
|
||||
function showTestConfig() {
|
||||
$("#top .config").removeClass("hidden").css("opacity", 1);
|
||||
}
|
||||
|
|
|
@ -3298,6 +3298,14 @@
|
|||
<div class="button noFilters">clear filters</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="buttonsAndTitle" style="grid-column: 1/3">
|
||||
<div class="title">difficulty</div>
|
||||
<div class="buttons filterGroup" group="difficulty">
|
||||
<div class="button" filter="normal">normal</div>
|
||||
<div class="button" filter="expert">expert</div>
|
||||
<div class="button" filter="master">master</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="buttonsAndTitle">
|
||||
<div class="title">mode</div>
|
||||
<div class="buttons filterGroup" group="mode">
|
||||
|
@ -3308,11 +3316,12 @@
|
|||
</div>
|
||||
</div>
|
||||
<div class="buttonsAndTitle">
|
||||
<div class="title">difficulty</div>
|
||||
<div class="buttons filterGroup" group="difficulty">
|
||||
<div class="button" filter="normal">normal</div>
|
||||
<div class="button" filter="expert">expert</div>
|
||||
<div class="button" filter="master">master</div>
|
||||
<div class="title">quote length</div>
|
||||
<div class="buttons filterGroup" group="quoteLength">
|
||||
<div class="button" filter="short">short</div>
|
||||
<div class="button" filter="medium">medium</div>
|
||||
<div class="button" filter="long">long</div>
|
||||
<div class="button" filter="thicc">thicc</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="buttonsAndTitle">
|
||||
|
|
Loading…
Add table
Reference in a new issue