From 1fa86d69ae9337a96587b396843ec88b2900b291 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sascha=20K=C3=BChl?= Date: Mon, 21 Apr 2025 16:04:34 +0200 Subject: [PATCH] updated app workflow to match backend changes, added server type --- app/index.html | 1 + app/src/router/index.ts | 21 +-- app/src/services/Api.ts | 4 +- app/src/services/BackendService.ts | 15 ++ app/src/services/BullpenSessionService.ts | 10 +- app/src/types/Pitch.ts | 2 +- app/src/types/Server.ts | 5 + ...ullpenStats.vue => BullpenSummaryView.vue} | 26 ++- .../{PreparePitch.vue => BullpenView.vue} | 24 +-- app/src/views/FinalizePitch.vue | 159 ------------------ app/src/views/HomeView.vue | 2 +- app/src/views/LoginView.vue | 19 ++- app/src/views/PitcherList.vue | 2 +- app/src/views/SetupView.vue | 21 ++- 14 files changed, 99 insertions(+), 212 deletions(-) create mode 100644 app/src/services/BackendService.ts create mode 100644 app/src/types/Server.ts rename app/src/views/{BullpenStats.vue => BullpenSummaryView.vue} (61%) rename app/src/views/{PreparePitch.vue => BullpenView.vue} (93%) delete mode 100644 app/src/views/FinalizePitch.vue diff --git a/app/index.html b/app/index.html index 3998055..7a353f9 100644 --- a/app/index.html +++ b/app/index.html @@ -13,6 +13,7 @@ /> + diff --git a/app/src/router/index.ts b/app/src/router/index.ts index 7712f0a..3a37c39 100644 --- a/app/src/router/index.ts +++ b/app/src/router/index.ts @@ -4,10 +4,10 @@ import { RouteRecordRaw } from 'vue-router'; import PitcherList from '../views/PitcherList.vue' import LoginView from '../views/LoginView.vue' import HomeView from '../views/HomeView.vue' -import PreparePitch from "@/views/PreparePitch.vue"; -import FinalizePitch from "@/views/FinalizePitch.vue"; -import BullpenStats from "@/views/BullpenStats.vue"; +import BullpenView from "@/views/BullpenView.vue"; +import BullpenSummaryView from "@/views/BullpenSummaryView.vue"; import SetupView from '@/views/SetupView.vue'; +import backendService from '@/services/BackendService' const routes: Array = [ { path: '/', redirect: '/login' }, @@ -15,10 +15,8 @@ const routes: Array = [ { path: '/setup', component: SetupView }, { path: '/home', component: HomeView }, { path: '/pitchers', component: PitcherList }, - { path: '/bullpen', component: PreparePitch }, - { path: '/prepare', component: PreparePitch }, - { path: '/finalize', component: FinalizePitch }, - { path: '/stats', component: BullpenStats } + { path: '/bullpen', component: BullpenView }, + { path: '/summary', component: BullpenSummaryView } ] const router = createRouter({ @@ -28,20 +26,19 @@ const router = createRouter({ router.beforeEach((to, from, next) => { const store = useStore(); - const serverAddress = localStorage.getItem('serverAddress'); const isAuthenticated = store.state.auth.isAuthenticated; if (to.meta.requiresAuth && !isAuthenticated) { return next('/login'); } - if (!serverAddress && to.path !== '/setup') { + if (!backendService.hasServer() && to.path !== '/setup') { return next('/setup'); } - if (serverAddress && to.path === '/setup') { - return next('/login'); - } + // if (serverAddress && to.path === '/setup') { + // return next('/login'); + // } next(); }); diff --git a/app/src/services/Api.ts b/app/src/services/Api.ts index 775a4f0..25ab1c0 100644 --- a/app/src/services/Api.ts +++ b/app/src/services/Api.ts @@ -1,7 +1,9 @@ import axios from "axios"; +const server = JSON.parse(localStorage.getItem("server") || '""'); + const instance = axios.create({ - baseURL: "http://localhost:8080/api", + baseURL: `${server.protocol}://${server.host}:${server.port}/api`, headers: { "Content-Type": "application/json", }, diff --git a/app/src/services/BackendService.ts b/app/src/services/BackendService.ts new file mode 100644 index 0000000..477206b --- /dev/null +++ b/app/src/services/BackendService.ts @@ -0,0 +1,15 @@ +import Server from "@/types/Server"; + +class BackendService { + hasServer(): boolean { + return localStorage.getItem("server") !== null; + } + getServer(): Server { + return JSON.parse(localStorage.getItem("server") || '{"protocol":"https","host":"localhost","port":8080}'); + } + updateServer(server: Server): void { + localStorage.setItem("server", JSON.stringify(server)); + } +} + +export default new BackendService(); diff --git a/app/src/services/BullpenSessionService.ts b/app/src/services/BullpenSessionService.ts index 1da0c34..3452bc1 100644 --- a/app/src/services/BullpenSessionService.ts +++ b/app/src/services/BullpenSessionService.ts @@ -1,7 +1,6 @@ import Pitch from "@/types/Pitch"; import User from "@/types/User"; import Bullpen from '@/types/Bullpen'; -import PitchTypeService from '@/services/PitchTypeService'; import api from '@/services/Api'; export class BullpenSessionService { @@ -18,10 +17,9 @@ export class BullpenSessionService { public save(bullpen: Bullpen): Promise { console.log(JSON.stringify(bullpen, null, 2)); return api - .post('/bullpen_session', { - bullpen - }) + .post('/bullpen_session', bullpen) .then(response => { + console.log(JSON.stringify(response.data, null, 2)); return response.data; }, (error) => { console.log(JSON.stringify(error, null, 2)); @@ -30,9 +28,9 @@ export class BullpenSessionService { public createPitch(): Pitch { return { - id: 0, + id: undefined, pitchTime: new Date(), - pitchTypeId: PitchTypeService.getLocalPitchTypes()[0].id, + pitchTypeId: 0, aimedArea: 0, hitArea: 0 } diff --git a/app/src/types/Pitch.ts b/app/src/types/Pitch.ts index e2d63fa..7d9409d 100644 --- a/app/src/types/Pitch.ts +++ b/app/src/types/Pitch.ts @@ -1,5 +1,5 @@ export default interface Pitch { - id: number, + id: number | undefined, pitchTime: Date, pitchTypeId: number, aimedArea: number, diff --git a/app/src/types/Server.ts b/app/src/types/Server.ts new file mode 100644 index 0000000..8f56683 --- /dev/null +++ b/app/src/types/Server.ts @@ -0,0 +1,5 @@ +export default interface Server { + protocol: string, + host: string, + port: number +} diff --git a/app/src/views/BullpenStats.vue b/app/src/views/BullpenSummaryView.vue similarity index 61% rename from app/src/views/BullpenStats.vue rename to app/src/views/BullpenSummaryView.vue index 9bd32c2..afe1b74 100644 --- a/app/src/views/BullpenStats.vue +++ b/app/src/views/BullpenSummaryView.vue @@ -16,6 +16,7 @@ import { IonTitle, IonToolbar } from '@ionic/vue'; +import PitchType from "@/types/PitchType"; import {useRouter} from 'vue-router'; import {computed} from 'vue'; import {useStore} from 'vuex'; @@ -23,23 +24,36 @@ import {useStore} from 'vuex'; const router = useRouter(); const store = useStore(); +const isAuthenticated = computed(() => store.state.auth.isAuthenticated); const pitcher = computed(() => store.state.auth.user); -const bullpen = computed(() => store.state.bullpen.bullpen); +const pitchTypes = computed(() => store.state.pitchTypes.pitchTypes); +const bullpen = computed(() => store.state.bullpen); + +console.log(JSON.stringify(bullpen.value.bullpen, null, 2)); + +const determinePitchTypeName = (id: number): string => { + const pitchType = pitchTypes.value.find((pitchType: PitchType) => pitchType.id === id); + + return pitchType?.name ?? 'Unknown'; +} const gotoHome = () => { - router.push('/home'); -}; + store.dispatch("bullpen/finish", bullpen.value.bullpen); + router.push({path: '/home'}); +} +