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 @@
-
-
-
-
- {{ game.name }}
-
-
-
-
-
-
- {{ game.name }}
-
-
-
-
-
-
- {{ game.name }}
-
-
-
-
-
-
- {{ game.name }}
-
-
+
+
+
+ {{ gameTypeTitle }} with{{ category.name }}
+
+
+
+
+ {{ member.name }}
+
+
+
+
+
@@ -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 @@