gym-nuxt3/composables/weightinput.ts

120 lines
3.3 KiB
TypeScript

import { defineStore } from 'pinia'
import { useLocalStorage } from '@vueuse/core'
interface ExerciseData {
workingSet: { workingSetReps: number[]; workingSetWeight: number[] }[]
warmUpSet: { warmSetReps: number[]; warmSetWeight: number[] }[]
}
interface MuscleExercises {
[muscle: string]: {
[selectedExercise: string]: ExerciseData
}
}
interface DateExercises {
[date: string]: MuscleExercises
}
export const useWeightInputStore = defineStore('weightInput', () => {
const exercises = useLocalStorage<DateExercises>('exercises', {})
function addWorkingSet(date: string, muscle: string, selectedExercise: string) {
if (!exercises.value[date])
exercises.value[date] = {}
if (!exercises.value[date][muscle])
exercises.value[date][muscle] = {}
if (!exercises.value[date][muscle][selectedExercise]) {
exercises.value[date][muscle][selectedExercise] = {
workingSet: [],
warmUpSet: [],
}
}
exercises.value[date][muscle][selectedExercise].workingSet.push({
workingSetReps: [],
workingSetWeight: [],
})
console.log('Added working set:', exercises.value[date][muscle][selectedExercise])
}
function addWarmUpSet(date: string, muscle: string, selectedExercise: string) {
if (!exercises.value[date])
exercises.value[date] = {}
if (!exercises.value[date][muscle])
exercises.value[date][muscle] = {}
if (!exercises.value[date][muscle][selectedExercise]) {
exercises.value[date][muscle][selectedExercise] = {
workingSet: [],
warmUpSet: [],
}
}
exercises.value[date][muscle][selectedExercise].warmUpSet.push({
warmSetReps: [],
warmSetWeight: [],
})
}
function removeWorkingSet(date: string, muscle: string, selectedExercise: string) {
if (!exercises.value[date]?.[muscle]?.[selectedExercise])
return
exercises.value[date][muscle][selectedExercise].workingSet.pop()
}
function removeWarmUpSet(date: string, muscle: string, selectedExercise: string) {
if (!exercises.value[date]?.[muscle]?.[selectedExercise])
return
exercises.value[date][muscle][selectedExercise].warmUpSet.pop()
}
function getWorkingSetCount(date: string, muscle: string, selectedExercise: string) {
if (exercises.value[date]?.[muscle]?.[selectedExercise])
return exercises.value[date][muscle][selectedExercise].workingSet.length
return 1
}
function getWarmUpSetCount(date: string, muscle: string, selectedExercise: string) {
if (exercises.value[date]?.[muscle]?.[selectedExercise])
return exercises.value[date][muscle][selectedExercise].warmUpSet.length
return 1
}
function initSetsInputs(date: string, muscle: string, selectedExercise: string) {
if (!exercises.value[date])
exercises.value[date] = {}
if (!exercises.value[date][muscle])
exercises.value[date][muscle] = {}
if (!exercises.value[date][muscle][selectedExercise]) {
exercises.value[date][muscle][selectedExercise] = {
workingSet: [],
warmUpSet: [],
}
}
console.log('Init sets inputs:', exercises.value[date][muscle][selectedExercise], selectedExercise)
}
return {
exercises,
addWorkingSet,
removeWorkingSet,
addWarmUpSet,
removeWarmUpSet,
getWorkingSetCount,
getWarmUpSetCount,
initSetsInputs,
}
})