From 87f07f66213c471e8f89588403f0e1f85c8fe6f4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sascha=20K=C3=BChl?= Date: Tue, 3 Jun 2025 16:02:22 +0200 Subject: [PATCH 1/4] fixed version.js builder --- backend/config/version.js | 4 +++- backend/controllers/info.controller.js | 2 +- backend/package.json | 2 +- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/backend/config/version.js b/backend/config/version.js index d7d0eb0..28af7bd 100644 --- a/backend/config/version.js +++ b/backend/config/version.js @@ -1 +1,3 @@ -export const BULLPEN_VERSION = "1.1.0"; +const BULLPEN_VERSION = "1.1.0"; + +module.exports = BULLPEN_VERSION; diff --git a/backend/controllers/info.controller.js b/backend/controllers/info.controller.js index d7a46bb..bb04637 100644 --- a/backend/controllers/info.controller.js +++ b/backend/controllers/info.controller.js @@ -1,5 +1,5 @@ const process = require('process'); -const {BULLPEN_VERSION} = require("../config/version"); +const BULLPEN_VERSION = require("../config/version"); exports.info = (req, res) => { res.json({ diff --git a/backend/package.json b/backend/package.json index 434b572..3af4d6e 100644 --- a/backend/package.json +++ b/backend/package.json @@ -3,7 +3,7 @@ "version": "1.1.0", "main": "server.js", "scripts": { - "prebuild": "node -p \"'export const BULLPEN_VERSION = ' + JSON.stringify(require('./package.json').version) + ';'\" > config/version.js", + "prebuild": "node -p \"'const BULLPEN_VERSION = ' + JSON.stringify(require('./package.json').version) + ';'\"\n\nmodule.exports = BULLPEN_VERSION; > config/version.js", "test": "cross-env NODE_ENV=test jest", "pretest": "cross-env NODE_ENV=test npm run db:reset", "db:create:test": "cross-env NODE_ENV=test npx sequelize-cli db:create", From c64415e3a9710814d37f56e19e73bb8876ed65a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sascha=20K=C3=BChl?= Date: Tue, 3 Jun 2025 16:03:01 +0200 Subject: [PATCH 2/4] return created players in seeder --- backend/helper/seeder.helper.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/backend/helper/seeder.helper.js b/backend/helper/seeder.helper.js index 2b98080..57c904b 100644 --- a/backend/helper/seeder.helper.js +++ b/backend/helper/seeder.helper.js @@ -75,7 +75,9 @@ const createPlayer = async (queryInterface, roles, players) => { }; })); + const createdPlayers = await queryInterface.select(null, 'Players'); + return createdPlayers; } module.exports = { From 257fe247565bbeaedf272a25af41f7a2c7306af4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sascha=20K=C3=BChl?= Date: Tue, 3 Jun 2025 16:03:22 +0200 Subject: [PATCH 3/4] started bullpen demo data creator --- backend/seeders/05-bullpens.js | 83 ++++++++++++++++++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 backend/seeders/05-bullpens.js diff --git a/backend/seeders/05-bullpens.js b/backend/seeders/05-bullpens.js new file mode 100644 index 0000000..b6ebf91 --- /dev/null +++ b/backend/seeders/05-bullpens.js @@ -0,0 +1,83 @@ +const process = require('process'); +const {createPlayer, createUsers} = require("../helper/seeder.helper"); + +const createBullpen = async (queryInterface, demoPlayer) => { + const startDate = new Date(); + const endDate = new Date(new Date().setTime(startDate.getTime() + 10 * 60000)); + const bullpens = [...Array(20).keys()].map(key => { + return { + pitcherId: demoPlayer.user.id, + startedAt: new Date(new Date().setDate(startDate.getDate()-5)), + finishedAt: new Date(new Date().setDate(startDate.getDate()-5)), + createdAt: new Date(), + updatedAt: new Date() + } + }) + await queryInterface.bulkInsert('BullpenSessions', bullpens); + + const pitchTypeIds = await queryInterface + .select(null, 'PitchTypes') + .map(pitchType => pitchType.id); + + // red: 21-28 + // orange: 11-18: + // green: 1-9 + const bullpenChart = [ + [21,22,23,24,25,26,27,28], + [11,12,13,14,15,16,17,18], + [1,2,3,4,5,6,7,8,9] + ] + + const dbBullpens = await queryInterface.select(null, 'BullpenSessions', { + where: { + pitcherId: demoPlayer.user.id + } + }); + + [...Array(20).keys()].map(key => { + return { + pitchTypeId: pitchTypeIds[Math.floor(Math.random() * pitchTypeIds.length)], + pitchTime: new Date(2025, 3, 22, 16, 7, 21), + aimedArea: 11, + hitArea: 12 + } + + }); +} + +/** @type {import('sequelize-cli').Migration} */ +module.exports = { + async up (queryInterface, /*Sequelize*/) { + if (process.env.NODE_ENV !== 'development') return; + + const roles = await queryInterface.select(null, 'Roles'); + const players = [{ + email: 'demo@bullpen.com', + password: 'demo$123', + firstName: 'Demo', + lastName: 'Player', + dateOfBirth: new Date(1975, 6, 19), + jerseyNumber: 33, + height: 187, + weight: 85, + gender: 'male', + bats: 'right', + throws: 'right', + state: 'active' + }]; + + const dbPlayers = await createPlayer(queryInterface, roles, players); + const demoPlayer = dbPlayers + .filter(player => player.user.auth.email === 'demo@bullpen.com').shift(); + + for (let i = 0; i < 10; ++i) { + createBullpen(queryInterface, demoPlayer); + } + }, + + async down (queryInterface, /*Sequelize*/) { + if (process.env.NODE_ENV !== 'development') return; + + return; + } +}; From 1d96c9c54b067abb87f5a5d08e1b7e2b242fc697 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sascha=20K=C3=BChl?= Date: Tue, 3 Jun 2025 16:03:49 +0200 Subject: [PATCH 4/4] design refactoring progress --- app/src/App.vue | 114 +++++++++++++++++++++++++++- app/src/store/pitchType.ts | 13 +++- app/src/views/BullpenListView.vue | 9 ++- app/src/views/HomeView.vue | 120 +++++++++++++----------------- app/src/views/LoginView.vue | 25 ++----- app/src/views/ProfileView.vue | 25 +++---- 6 files changed, 198 insertions(+), 108 deletions(-) diff --git a/app/src/App.vue b/app/src/App.vue index 4efcc13..d55f1c9 100644 --- a/app/src/App.vue +++ b/app/src/App.vue @@ -1,11 +1,31 @@ + + diff --git a/app/src/store/pitchType.ts b/app/src/store/pitchType.ts index be9913c..659b2e8 100644 --- a/app/src/store/pitchType.ts +++ b/app/src/store/pitchType.ts @@ -1,4 +1,4 @@ -import pitchTypeService from '@/services/PitchTypeService' +import PitchTypeService from '@/services/PitchTypeService' import PitchType from "@/types/PitchType"; import { Module } from 'vuex'; @@ -11,9 +11,18 @@ export interface PitchTypeState { const pitchTypes: Module = { namespaced: true, state: {pitchTypes: []}, + actions: { + fetch({commit}: any) { + PitchTypeService.fetchAll().then((pitchTypes: PitchType[]) => { + commit('initialize', pitchTypes); + }, (error) => { + console.log(error); + }); + } + }, mutations: { initialize(state, pitchTypeList: PitchType[]) { - pitchTypeService.updateLocalPitchTypes(pitchTypeList); + // pitchTypeService.updateLocalPitchTypes(pitchTypeList); state.pitchTypes = pitchTypeList; } } diff --git a/app/src/views/BullpenListView.vue b/app/src/views/BullpenListView.vue index 079ea74..d89ec26 100644 --- a/app/src/views/BullpenListView.vue +++ b/app/src/views/BullpenListView.vue @@ -25,7 +25,7 @@ import { import PitchType from "@/types/PitchType"; import {useStore} from 'vuex'; import {useRouter} from 'vue-router'; -import {computed} from "vue"; +import {computed, onMounted} from "vue"; import dayjs from 'dayjs'; const router = useRouter(); @@ -36,10 +36,15 @@ const pitcher = computed(() => store.state.auth.user); const bullpens = computed(() => store.state.bullpen.bullpens); const pitchTypes = computed(() => store.state.pitchTypes.pitchTypes); +onMounted(() => { + store.dispatch('pitchTypes/fetch'); +}); + const formatDate = (date: Date) => { return dayjs(date).format('YYYY.MM.DD HH:mm'); } + const determinePitchTypeName = (id: number): string => { const pitchType = pitchTypes.value.find((pitchType: PitchType) => pitchType.id === id); @@ -87,4 +92,4 @@ const gotoHome = () => { \ No newline at end of file + diff --git a/app/src/views/HomeView.vue b/app/src/views/HomeView.vue index f116b78..880970e 100644 --- a/app/src/views/HomeView.vue +++ b/app/src/views/HomeView.vue @@ -1,13 +1,25 @@ @@ -137,8 +125,6 @@ const addPlayer = () => { .user-avatar { width: 120px; height: 120px; - border-radius: 50%; - border: 4px solid #ccc; overflow: hidden; display: flex; justify-content: center; diff --git a/app/src/views/LoginView.vue b/app/src/views/LoginView.vue index 99f73ff..09ac706 100644 --- a/app/src/views/LoginView.vue +++ b/app/src/views/LoginView.vue @@ -1,5 +1,5 @@