added quotelength filters,

moved result filters to cookie storage instead of db storage
This commit is contained in:
Jack 2020-12-23 16:56:52 +00:00
parent 03ba948cae
commit 1ca6def98e
4 changed files with 126 additions and 48 deletions

View file

@ -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

View file

@ -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(),

View file

@ -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);
}

View file

@ -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">