120 lines
3.3 KiB
TypeScript
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,
|
|
}
|
|
})
|