mirror of
https://github.com/monkeytypegame/monkeytype.git
synced 2025-02-06 05:43:47 +08:00
further refactoring, added setters and getters
This commit is contained in:
parent
23544383af
commit
9ff6a2f31d
2 changed files with 89 additions and 71 deletions
|
@ -180,7 +180,6 @@ function signUp() {
|
|||
obj: notSignedInLastResult,
|
||||
});
|
||||
db_getSnapshot().results.push(notSignedInLastResult);
|
||||
// ResultFilters.filters = defaultResultFilters;
|
||||
}
|
||||
changePage("account");
|
||||
usr.sendEmailVerification();
|
||||
|
@ -410,7 +409,6 @@ function getAccountDataAndInit() {
|
|||
updateFilterTags();
|
||||
updateCommandsTagsList();
|
||||
loadActiveTagsFromCookie();
|
||||
// loadResultFiltersFromCookie();
|
||||
updateResultEditTagsPanelButtons();
|
||||
showAccountSettingsSection();
|
||||
})
|
||||
|
@ -1048,13 +1046,11 @@ function updateFilterTags() {
|
|||
function toggleFilter(group, filter) {
|
||||
try {
|
||||
if (group === "date") {
|
||||
Object.keys(ResultFilters.filters.date).forEach((date) => {
|
||||
setFilter("date", date, false);
|
||||
Object.keys(ResultFilters.getGroup("date")).forEach((date) => {
|
||||
ResultFilters.setFilter("date", date, false);
|
||||
});
|
||||
}
|
||||
ResultFilters.filters[group][filter] = !ResultFilters.filters[group][
|
||||
filter
|
||||
];
|
||||
ResultFilters.toggleFilter(group, filter);
|
||||
ResultFilters.save();
|
||||
} catch (e) {
|
||||
Misc.showNotification(
|
||||
|
@ -1068,19 +1064,15 @@ function toggleFilter(group, filter) {
|
|||
}
|
||||
}
|
||||
|
||||
function setFilter(group, filter, set) {
|
||||
ResultFilters.filters[group][filter] = set;
|
||||
}
|
||||
|
||||
function showActiveFilters() {
|
||||
let aboveChartDisplay = {};
|
||||
Object.keys(ResultFilters.filters).forEach((group) => {
|
||||
Object.keys(ResultFilters.getFilters()).forEach((group) => {
|
||||
aboveChartDisplay[group] = {
|
||||
all: true,
|
||||
array: [],
|
||||
};
|
||||
Object.keys(ResultFilters.filters[group]).forEach((filter) => {
|
||||
if (ResultFilters.filters[group][filter]) {
|
||||
Object.keys(ResultFilters.getGroup(group)).forEach((filter) => {
|
||||
if (ResultFilters.getFilter(group, filter)) {
|
||||
aboveChartDisplay[group].array.push(filter);
|
||||
} else {
|
||||
aboveChartDisplay[group].all = false;
|
||||
|
@ -1095,7 +1087,7 @@ function showActiveFilters() {
|
|||
`.pageAccount .group.filterButtons .filterGroup[group="${group}"] .button[filter="${filter}"]`
|
||||
);
|
||||
}
|
||||
if (ResultFilters.filters[group][filter]) {
|
||||
if (ResultFilters.getFilter(group, filter)) {
|
||||
buttonEl.addClass("active");
|
||||
} else {
|
||||
buttonEl.removeClass("active");
|
||||
|
@ -1226,66 +1218,66 @@ function hideChartPreloader() {
|
|||
}
|
||||
|
||||
$(".pageAccount .topFilters .button.allFilters").click((e) => {
|
||||
Object.keys(ResultFilters.filters).forEach((group) => {
|
||||
Object.keys(ResultFilters.filters[group]).forEach((filter) => {
|
||||
Object.keys(ResultFilters.getFilters()).forEach((group) => {
|
||||
Object.keys(ResultFilters.getGroup(group)).forEach((filter) => {
|
||||
if (group === "date") {
|
||||
ResultFilters.filters[group][filter] = false;
|
||||
ResultFilters.setFilter(group, filter, false);
|
||||
} else {
|
||||
ResultFilters.filters[group][filter] = true;
|
||||
ResultFilters.setFilter(group, filter, true);
|
||||
}
|
||||
});
|
||||
});
|
||||
ResultFilters.filters.date.all = true;
|
||||
ResultFilters.setFilter("date", "all", true);
|
||||
showActiveFilters();
|
||||
ResultFilters.save();
|
||||
});
|
||||
|
||||
$(".pageAccount .topFilters .button.currentConfigFilter").click((e) => {
|
||||
Object.keys(ResultFilters.filters).forEach((group) => {
|
||||
Object.keys(ResultFilters.filters[group]).forEach((filter) => {
|
||||
ResultFilters.filters[group][filter] = false;
|
||||
Object.keys(ResultFilters.getFilters()).forEach((group) => {
|
||||
Object.keys(ResultFilters.getGroup(group)).forEach((filter) => {
|
||||
ResultFilters.setFilter(group, filter, false);
|
||||
});
|
||||
});
|
||||
|
||||
ResultFilters.filters.difficulty[config.difficulty] = true;
|
||||
ResultFilters.filters.mode[config.mode] = true;
|
||||
ResultFilters.setFilter("difficulty", config.difficulty, true);
|
||||
ResultFilters.setFilter("mode", config.mode, true);
|
||||
if (config.mode === "time") {
|
||||
ResultFilters.filters.time[config.time] = true;
|
||||
ResultFilters.setFilter("time", config.time, true);
|
||||
} else if (config.mode === "words") {
|
||||
ResultFilters.filters.words[config.words] = true;
|
||||
ResultFilters.setFilter("words", config.words, true);
|
||||
} else if (config.mode === "quote") {
|
||||
Object.keys(ResultFilters.filters.quoteLength).forEach((ql) => {
|
||||
ResultFilters.filters.quoteLength[ql] = true;
|
||||
Object.keys(ResultFilters.getGroup("quoteLength")).forEach((ql) => {
|
||||
ResultFilters.setFilter("quoteLength", ql, true);
|
||||
});
|
||||
}
|
||||
if (config.punctuation) {
|
||||
ResultFilters.filters.punctuation.on = true;
|
||||
ResultFilters.setFilter("punctuation", "on", true);
|
||||
} else {
|
||||
ResultFilters.filters.punctuation.off = true;
|
||||
ResultFilters.setFilter("punctuation", "off", true);
|
||||
}
|
||||
if (config.numbers) {
|
||||
ResultFilters.filters.numbers.on = true;
|
||||
ResultFilters.setFilter("numbers", "on", true);
|
||||
} else {
|
||||
ResultFilters.filters.numbers.off = true;
|
||||
ResultFilters.setFilter("numbers", "off", true);
|
||||
}
|
||||
if (config.mode === "quote" && /english.*/.test(config.language)) {
|
||||
ResultFilters.filters.language["english"] = true;
|
||||
ResultFilters.setFilter("language", "english", true);
|
||||
} else {
|
||||
ResultFilters.filters.language[config.language] = true;
|
||||
ResultFilters.setFilter("language", config.language, true);
|
||||
}
|
||||
ResultFilters.filters.funbox[activeFunBox] = true;
|
||||
ResultFilters.filters.tags.none = true;
|
||||
ResultFilters.setFilter("funbox", activeFunBox, true);
|
||||
ResultFilters.setFilter("tags", "none", true);
|
||||
db_getSnapshot().tags.forEach((tag) => {
|
||||
if (tag.active === true) {
|
||||
ResultFilters.filters.tags.none = false;
|
||||
ResultFilters.filters.tags[tag.id] = true;
|
||||
ResultFilters.setFilter("tags", "none", false);
|
||||
ResultFilters.setFilter("tags", tag.id, true);
|
||||
}
|
||||
});
|
||||
|
||||
ResultFilters.filters.date.all = true;
|
||||
|
||||
ResultFilters.setFilter("date", "all", true);
|
||||
showActiveFilters();
|
||||
ResultFilters.save();
|
||||
console.log(ResultFilters.getFilters());
|
||||
});
|
||||
|
||||
$(".pageAccount .topFilters .button.toggleAdvancedFilters").click((e) => {
|
||||
|
@ -1301,30 +1293,30 @@ $(
|
|||
const filter = $(e.target).attr("filter");
|
||||
const group = $(e.target).parents(".buttons").attr("group");
|
||||
if ($(e.target).hasClass("allFilters")) {
|
||||
Object.keys(ResultFilters.filters).forEach((group) => {
|
||||
Object.keys(ResultFilters.filters[group]).forEach((filter) => {
|
||||
Object.keys(ResultFilters.getFilters()).forEach((group) => {
|
||||
Object.keys(ResultFilters.getGroup(group)).forEach((filter) => {
|
||||
if (group === "date") {
|
||||
ResultFilters.filters[group][filter] = false;
|
||||
ResultFilters.setFilter(group, filter, false);
|
||||
} else {
|
||||
ResultFilters.filters[group][filter] = true;
|
||||
ResultFilters.setFilter(group, filter, true);
|
||||
}
|
||||
});
|
||||
});
|
||||
ResultFilters.filters.date.all = true;
|
||||
ResultFilters.setFilter("date", "all", true);
|
||||
} else if ($(e.target).hasClass("noFilters")) {
|
||||
Object.keys(ResultFilters.filters).forEach((group) => {
|
||||
Object.keys(ResultFilters.getFilters()).forEach((group) => {
|
||||
if (group !== "date") {
|
||||
Object.keys(ResultFilters.filters[group]).forEach((filter) => {
|
||||
ResultFilters.filters[group][filter] = false;
|
||||
Object.keys(ResultFilters.getGroup(group)).forEach((filter) => {
|
||||
ResultFilters.setFilter(group, filter, false);
|
||||
});
|
||||
}
|
||||
});
|
||||
} else {
|
||||
if (e.shiftKey) {
|
||||
Object.keys(ResultFilters.filters[group]).forEach((filter) => {
|
||||
ResultFilters.filters[group][filter] = false;
|
||||
Object.keys(ResultFilters.getGroup(group)).forEach((filter) => {
|
||||
ResultFilters.setFilter(group, filter, false);
|
||||
});
|
||||
setFilter(group, filter, true);
|
||||
ResultFilters.setFilter(group, filter, true);
|
||||
} else {
|
||||
toggleFilter(group, filter);
|
||||
}
|
||||
|
@ -1797,21 +1789,21 @@ function refreshAccountPage() {
|
|||
if (resdiff == undefined) {
|
||||
resdiff = "normal";
|
||||
}
|
||||
if (!ResultFilters.filters.difficulty[resdiff]) return;
|
||||
if (!ResultFilters.filters.mode[result.mode]) return;
|
||||
if (!ResultFilters.getFilter("difficulty", resdiff)) return;
|
||||
if (!ResultFilters.getFilter("mode", result.mode)) return;
|
||||
|
||||
if (result.mode == "time") {
|
||||
let timefilter = "custom";
|
||||
if ([15, 30, 60, 120].includes(parseInt(result.mode2))) {
|
||||
timefilter = result.mode2;
|
||||
}
|
||||
if (!ResultFilters.filters.time[timefilter]) return;
|
||||
if (!ResultFilters.getFilter("time", timefilter)) return;
|
||||
} else if (result.mode == "words") {
|
||||
let wordfilter = "custom";
|
||||
if ([10, 25, 50, 100, 200].includes(parseInt(result.mode2))) {
|
||||
wordfilter = result.mode2;
|
||||
}
|
||||
if (!ResultFilters.filters.words[wordfilter]) return;
|
||||
if (!ResultFilters.getFilter("words", wordfilter)) return;
|
||||
}
|
||||
|
||||
if (result.quoteLength != null) {
|
||||
|
@ -1825,15 +1817,18 @@ function refreshAccountPage() {
|
|||
} else if (result.quoteLength === 3) {
|
||||
filter = "thicc";
|
||||
}
|
||||
if (filter !== null && !ResultFilters.filters.quoteLength[filter])
|
||||
if (
|
||||
filter !== null &&
|
||||
!ResultFilters.getFilter("quoteLength", filter)
|
||||
)
|
||||
return;
|
||||
}
|
||||
|
||||
let langFilter = ResultFilters.filters.language[result.language];
|
||||
let langFilter = ResultFilters.getFilter("language", result.language);
|
||||
|
||||
if (
|
||||
result.language === "english_expanded" &&
|
||||
ResultFilters.filters.language.english_1k
|
||||
ResultFilters.getFilter("language", "english_1k")
|
||||
) {
|
||||
langFilter = true;
|
||||
}
|
||||
|
@ -1843,18 +1838,18 @@ function refreshAccountPage() {
|
|||
if (result.punctuation) {
|
||||
puncfilter = "on";
|
||||
}
|
||||
if (!ResultFilters.filters.punctuation[puncfilter]) return;
|
||||
if (!ResultFilters.getFilter("punctuation", puncfilter)) return;
|
||||
|
||||
let numfilter = "off";
|
||||
if (result.numbers) {
|
||||
numfilter = "on";
|
||||
}
|
||||
if (!ResultFilters.filters.numbers[numfilter]) return;
|
||||
if (!ResultFilters.getFilter("numbers", numfilter)) return;
|
||||
|
||||
if (result.funbox === "none" || result.funbox === undefined) {
|
||||
if (!ResultFilters.filters.funbox.none) return;
|
||||
if (!ResultFilters.getFilter("funbox", "none")) return;
|
||||
} else {
|
||||
if (!ResultFilters.filters.funbox[result.funbox]) return;
|
||||
if (!ResultFilters.getFilter("funbox", result.funbox)) return;
|
||||
}
|
||||
|
||||
let tagHide = true;
|
||||
|
@ -1862,7 +1857,7 @@ function refreshAccountPage() {
|
|||
if (result.tags === undefined || result.tags.length === 0) {
|
||||
//no tags, show when no tag is enabled
|
||||
if (db_getSnapshot().tags.length > 0) {
|
||||
if (ResultFilters.filters.tags.none) tagHide = false;
|
||||
if (ResultFilters.getFilter("tags", "none")) tagHide = false;
|
||||
} else {
|
||||
tagHide = false;
|
||||
}
|
||||
|
@ -1875,10 +1870,10 @@ function refreshAccountPage() {
|
|||
//check if tag is valid
|
||||
if (validTags.includes(tag)) {
|
||||
//tag valid, check if filter is on
|
||||
if (ResultFilters.filters.tags[tag]) tagHide = false;
|
||||
if (ResultFilters.getFilter("tags", tag)) tagHide = false;
|
||||
} else {
|
||||
//tag not found in valid tags, meaning probably deleted
|
||||
if (ResultFilters.filters.tags.none) tagHide = false;
|
||||
if (ResultFilters.getFilter("tags", "none")) tagHide = false;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
@ -1890,10 +1885,13 @@ function refreshAccountPage() {
|
|||
let datehide = true;
|
||||
|
||||
if (
|
||||
ResultFilters.filters.date.all ||
|
||||
(ResultFilters.filters.date.last_day && timeSinceTest <= 86400) ||
|
||||
(ResultFilters.filters.date.last_week && timeSinceTest <= 604800) ||
|
||||
(ResultFilters.filters.date.last_month && timeSinceTest <= 2592000)
|
||||
ResultFilters.getFilter("date", "all") ||
|
||||
(ResultFilters.getFilter("date", "last_day") &&
|
||||
timeSinceTest <= 86400) ||
|
||||
(ResultFilters.getFilter("date", "last_week") &&
|
||||
timeSinceTest <= 604800) ||
|
||||
(ResultFilters.getFilter("date", "last_month") &&
|
||||
timeSinceTest <= 2592000)
|
||||
) {
|
||||
datehide = false;
|
||||
}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
import * as Misc from "./misc";
|
||||
|
||||
export let filters = defaultResultFilters;
|
||||
let filters = defaultResultFilters;
|
||||
|
||||
let defaultResultFilters = {
|
||||
difficulty: {
|
||||
|
@ -72,6 +72,26 @@ Misc.getFunboxList().then((funboxModes) => {
|
|||
});
|
||||
});
|
||||
|
||||
export function getFilters() {
|
||||
return filters;
|
||||
}
|
||||
|
||||
export function getGroup(group) {
|
||||
return filters[group];
|
||||
}
|
||||
|
||||
export function setFilter(group, filter, value) {
|
||||
filters[group][filter] = value;
|
||||
}
|
||||
|
||||
export function getFilter(group, filter) {
|
||||
return filters[group][filter];
|
||||
}
|
||||
|
||||
export function toggleFilter(group, filter) {
|
||||
filters[group][filter] = !filters[group][filter];
|
||||
}
|
||||
|
||||
export function loadTags(tags) {
|
||||
tags.forEach((tag) => {
|
||||
defaultResultFilters.tags[tag.id] = true;
|
||||
|
|
Loading…
Reference in a new issue