Sporadic set logging added

This commit is contained in:
AG
2025-11-29 19:03:42 +02:00
parent d86abd6b1b
commit b5c8e8ac43
15 changed files with 1491 additions and 396 deletions

View File

@@ -158,6 +158,14 @@ const translations = {
type_to_filter: 'Type to filter...',
exercise_name_exists: 'An exercise with this name already exists',
profile_saved: 'Profile saved successfully',
// Sporadic Sets
quick_log: 'Quick Log',
sporadic_sets_title: 'Quick Logged Sets',
log_sporadic_success: 'Set logged successfully',
sporadic_set_note: 'Note (optional)',
done: 'Done',
saved: 'Saved',
},
ru: {
// Tabs
@@ -309,7 +317,15 @@ const translations = {
type_to_filter: 'Введите для фильтрации...',
exercise_name_exists: 'Упражнение с таким названием уже существует',
profile_saved: 'Профиль успешно сохранен',
}
// Sporadic Sets
quick_log: 'Быстрая запись',
sporadic_sets_title: 'Быстрые записи',
log_sporadic_success: 'Сет записан',
sporadic_set_note: 'Заметка (опц.)',
done: 'Готово',
saved: 'Сохранено',
},
};
export const t = (key: keyof typeof translations['en'], lang: Language) => {

68
services/sporadicSets.ts Normal file
View File

@@ -0,0 +1,68 @@
import { api } from './api';
import { SporadicSet } from '../types';
export async function getSporadicSets(): Promise<SporadicSet[]> {
try {
const response = await api.get('/sporadic-sets');
if (response.success) {
return response.sporadicSets || [];
}
return [];
} catch (error) {
console.error('Failed to fetch sporadic sets:', error);
return [];
}
}
export async function logSporadicSet(setData: {
exerciseId: string;
weight?: number;
reps?: number;
durationSeconds?: number;
distanceMeters?: number;
height?: number;
bodyWeightPercentage?: number;
note?: string;
}): Promise<SporadicSet | null> {
try {
const response = await api.post('/sporadic-sets', setData);
if (response.success) {
return response.sporadicSet;
}
return null;
} catch (error) {
console.error('Failed to log sporadic set:', error);
return null;
}
}
export async function updateSporadicSet(id: string, setData: {
weight?: number;
reps?: number;
durationSeconds?: number;
distanceMeters?: number;
height?: number;
bodyWeightPercentage?: number;
note?: string;
}): Promise<SporadicSet | null> {
try {
const response = await api.put(`/sporadic-sets/${id}`, setData);
if (response.success) {
return response.sporadicSet;
}
return null;
} catch (error) {
console.error('Failed to update sporadic set:', error);
return null;
}
}
export async function deleteSporadicSet(id: string): Promise<boolean> {
try {
const response = await api.delete(`/sporadic-sets/${id}`);
return response.success || false;
} catch (error) {
console.error('Failed to delete sporadic set:', error);
return false;
}
}