diff --git a/src/components/units/AppGames.vue b/src/components/units/AppGames.vue index aec0499a..f0df4587 100644 --- a/src/components/units/AppGames.vue +++ b/src/components/units/AppGames.vue @@ -1,42 +1,20 @@ @@ -68,30 +46,25 @@ const gameType = computed(() => route.params.type as string); const gameTypeTitle = computed(() => gameType.value[0].toUpperCase() + gameType.value.slice(1)); const search = ref(""); -const gamesV0 = computed(() => { - let unfiltered = store.getters.games(gameType.value).games; - const asArray = Object.entries(unfiltered); - const filtered = asArray.filter(([_, value]) => value.name.toLowerCase().includes(search.value.toLowerCase()) && value.gui_status === "v0"); - return Object.fromEntries(filtered); -}); -const gamesV1 = computed(() => { - let unfiltered = store.getters.games(gameType.value).games; - const asArray = Object.entries(unfiltered); - const filtered = asArray.filter(([_, value]) => value.name.toLowerCase().includes(search.value.toLowerCase()) && value.gui_status === "v1"); - return Object.fromEntries(filtered); -}); -const gamesV2 = computed(() => { - let unfiltered = store.getters.games(gameType.value).games; - const asArray = Object.entries(unfiltered); - const filtered = asArray.filter(([_, value]) => value.name.toLowerCase().includes(search.value.toLowerCase()) && value.gui_status === "v2"); - return Object.fromEntries(filtered); -}); -const gamesV3 = computed(() => { - let unfiltered = store.getters.games(gameType.value).games; - const asArray = Object.entries(unfiltered); - const filtered = asArray.filter(([_, value]) => value.name.toLowerCase().includes(search.value.toLowerCase()) && value.gui_status === "v3"); - return Object.fromEntries(filtered); +interface Category { + id: string; + name: string; + members: Game[]; +} + +const categories = computed(() => { + let categories: Category[] = []; + const asArray = Object.values(store.getters.games(gameType.value).games); + for (const strs of [["v3", " Animated GUIs"], ["v2", " Artisan GUIs"], ["v1", " Standard GUIs"], ["v0", "out GUIs (Still in Development)"]]) { + categories.push({ + id: strs[0], + name: strs[1], + members: asArray.filter((value) => value.name.toLowerCase().includes(search.value.toLowerCase()) && value.gui_status === strs[0]) + }); + } + return categories; }); + store.dispatch(actionTypes.loadGames, { type: gameType.value }); watch( () => route.params.type as string, @@ -101,60 +74,70 @@ watch( diff --git a/src/components/units/Header/AppHeaderNavigations.vue b/src/components/units/Header/AppHeaderNavigations.vue index 555837f1..39801fca 100644 --- a/src/components/units/Header/AppHeaderNavigations.vue +++ b/src/components/units/Header/AppHeaderNavigations.vue @@ -1,7 +1,7 @@ @@ -21,22 +21,38 @@ diff --git a/src/components/units/Header/AppHeaderPreferences.vue b/src/components/units/Header/AppHeaderPreferences.vue index ae2c9cb1..2251b9af 100644 --- a/src/components/units/Header/AppHeaderPreferences.vue +++ b/src/components/units/Header/AppHeaderPreferences.vue @@ -89,6 +89,7 @@