89 lines
2.4 KiB
JavaScript
89 lines
2.4 KiB
JavaScript
import { state, saveState, genId } from '../state.js';
|
|
import { renderMainScreen } from '../render/main-screen.js';
|
|
import { showEditWorkoutDateDialog } from '../modals/edit-workout-date-modal.js';
|
|
import { showClientSelectModal } from '../modals/client-select-modal.js';
|
|
|
|
export function startWorkout() {
|
|
// В режиме тренера — сначала выбираем клиента
|
|
if (state.mode === 'trainer') {
|
|
showClientSelectModal((clientId) => {
|
|
_createWorkout(clientId);
|
|
});
|
|
} else {
|
|
_createWorkout(null);
|
|
}
|
|
}
|
|
|
|
function _createWorkout(clientId) {
|
|
const w = {
|
|
id: genId(),
|
|
client_id: clientId,
|
|
startTime: new Date().toISOString(),
|
|
endTime: null,
|
|
type: '',
|
|
exercises: [],
|
|
cardio: [],
|
|
notes: '',
|
|
synced: false,
|
|
};
|
|
state.workouts.unshift(w);
|
|
state.expandedWorkoutId = w.id;
|
|
saveState();
|
|
renderMainScreen();
|
|
}
|
|
|
|
export function finishWorkout(workoutId) {
|
|
if (!confirm('Завершить тренировку?')) return;
|
|
const w = getWorkout(workoutId);
|
|
w.endTime = new Date().toISOString();
|
|
saveState();
|
|
renderMainScreen();
|
|
}
|
|
|
|
export function deleteWorkout(workoutId) {
|
|
if (!confirm('Удалить тренировку полностью?')) return;
|
|
state.workouts = state.workouts.filter(w => w.id !== workoutId);
|
|
saveState();
|
|
renderMainScreen();
|
|
}
|
|
|
|
export function toggleWorkout(workoutId) {
|
|
state.expandedWorkoutId =
|
|
state.expandedWorkoutId === workoutId ? null : workoutId;
|
|
renderMainScreen();
|
|
}
|
|
|
|
export function getWorkout(id) {
|
|
return state.workouts.find(w => w.id === id);
|
|
}
|
|
|
|
export function getActiveWorkout() {
|
|
return state.workouts.find(w => !w.endTime);
|
|
}
|
|
|
|
export function editWorkoutDate(workoutId) {
|
|
const w = getWorkout(workoutId);
|
|
if (!w) return;
|
|
showEditWorkoutDateDialog(w, (newDates) => {
|
|
if (!newDates) return;
|
|
w.startTime = newDates.startTime;
|
|
w.endTime = newDates.endTime;
|
|
saveState();
|
|
renderMainScreen();
|
|
});
|
|
}
|
|
|
|
export function cancelEmptyWorkout(workoutId) {
|
|
if (!confirm('Отменить эту тренировку? Все данные будут удалены.')) return;
|
|
deleteWorkout(workoutId);
|
|
}
|
|
|
|
window.WL = {
|
|
startWorkout,
|
|
finishWorkout,
|
|
deleteWorkout,
|
|
toggleWorkout,
|
|
editWorkoutDate,
|
|
cancelEmptyWorkout
|
|
};
|