diff --git a/src/api/offstylesApi.ts b/src/api/offstylesApi.ts
index ebd8954..57c990e 100644
--- a/src/api/offstylesApi.ts
+++ b/src/api/offstylesApi.ts
@@ -104,6 +104,7 @@ class OffstylesApi extends Api {
break;
case 'player':
params.append("steamid", filter.scope.steamid);
+ if (filter.scope.wr !== undefined) params.append("wr", filter.scope.wr.toString());
break;
case 'globals':
if (filter.scope.recent) params.append("recent", "true");
diff --git a/src/components/MapDetails.vue b/src/components/MapDetails.vue
index aa83031..4ce8328 100644
--- a/src/components/MapDetails.vue
+++ b/src/components/MapDetails.vue
@@ -36,7 +36,7 @@
};
});
- const filterChanged = async (name: 'style' | 'sort' | 'best' | 'has_replay' | 'invalidated', value: string | number | boolean | undefined) => {
+ const filterChanged = async (name: 'style' | 'sort' | 'best' | 'has_replay' | 'wr' | 'invalidated', value: string | number | boolean | undefined) => {
await router.replace({ query: urlParams.updateMany({ [name]: value }) });
};
diff --git a/src/components/PlayerDetails.vue b/src/components/PlayerDetails.vue
index 056e074..f47e57c 100644
--- a/src/components/PlayerDetails.vue
+++ b/src/components/PlayerDetails.vue
@@ -50,6 +50,7 @@
sort: (q.sort as SortOrder) || 'Newest',
best: q.best !== undefined ? q.best === 'true' : true,
hasReplay: q.has_replay === 'true',
+ wr: q.wr === 'true',
invalidated: q.invalidated !== undefined ? q.invalidated === 'true' : undefined,
};
});
@@ -212,7 +213,7 @@
}
};
- const filterChanged = async (name: 'style' | 'sort' | 'best' | 'has_replay' | 'invalidated', value: string | number | boolean | undefined) => {
+ const filterChanged = async (name: 'style' | 'sort' | 'best' | 'has_replay' | 'wr' | 'invalidated', value: string | number | boolean | undefined) => {
await router.replace({ query: urlParams.updateMany({ [name]: value }) });
};
@@ -283,6 +284,8 @@
:sort="currentFilter.sort"
:best="currentFilter.best"
:hasReplay="currentFilter.hasReplay"
+ :wr="currentFilter.wr"
+ :showWr="true"
:invalidated="currentFilter.invalidated"
:styleOptions="playerStyleOptions"
@filter-Changed="filterChanged"
diff --git a/src/components/TimesFilterBar.vue b/src/components/TimesFilterBar.vue
index 345b9df..8e73769 100644
--- a/src/components/TimesFilterBar.vue
+++ b/src/components/TimesFilterBar.vue
@@ -9,7 +9,7 @@
import { useModerationStore } from '@/stores/moderation';
type InvalidatedChoice = 'hide' | 'mix' | 'only';
- type FilterKey = 'style' | 'sort' | 'best' | 'has_replay' | 'invalidated';
+ type FilterKey = 'style' | 'sort' | 'best' | 'has_replay' | 'wr' | 'invalidated';
const SORT_OPTIONS: SortOrder[] = ['Fastest', 'Slowest', 'Newest', 'Oldest'];
const INVALIDATED_OPTIONS: { value: InvalidatedChoice, label: string }[] = [
@@ -23,6 +23,8 @@
sort: SortOrder,
best: boolean,
hasReplay: boolean,
+ wr?: boolean,
+ showWr?: boolean,
invalidated: boolean | undefined,
styleOptions: number[],
}>();
@@ -62,6 +64,11 @@
emit('filter-Changed', 'has_replay', checked ? true : undefined);
};
+ const wrChanged = (event: Event) => {
+ const checked = (event.target as HTMLInputElement).checked;
+ emit('filter-Changed', 'wr', checked ? true : undefined);
+ };
+
const invalidatedChanged = (value: InvalidatedChoice) => {
const mapped = value === 'hide' ? undefined : value === 'only';
emit('filter-Changed', 'invalidated', mapped);
@@ -116,6 +123,11 @@
Has replay
+
+