integrated front and back

This commit is contained in:
2026-10-01 23:52:12 +03:00
parent 1f81632083
commit 3e966c9ff6
15 changed files with 634 additions and 72 deletions
+28 -12
View File
@@ -1,28 +1,44 @@
// Рендеринг главного экрана: список тренировок.
// Получает данные из state, возвращает DOM.
import { state } from '../state.js';
import { state, DEFAULT_COLOR } from '../state.js';
import { renderWorkoutCard } from './workout-card.js';
import { startWorkout } from '../logic/workout.js';
export function renderMainScreen() {
const app = document.getElementById('app');
if (!app) return;
app.innerHTML = '';
if (state.workouts.length === 0) {
// В режиме тренера — подсказка сверху
if (state.mode === 'trainer') {
const hint = document.createElement('div');
hint.className = 'card mb-10';
hint.style.background = 'rgba(187, 134, 252, 0.1)';
hint.style.borderColor = 'var(--primary)';
hint.innerHTML = `
<div style="display:flex; justify-content:space-between; align-items:center;">
<div>
<div style="font-weight:600;">👨‍🏫 Режим тренера</div>
<div class="text-small text-muted">При создании тренировки выберите клиента</div>
</div>
<button class="btn btn-small" onclick="WL.startWorkout()">▶ Новая тренировка</button>
</div>
`;
app.appendChild(hint);
}
// Все тренировки (в обоих режимах)
const workoutsToShow = state.workouts;
if (workoutsToShow.length === 0) {
app.innerHTML = `
<div class="empty-state">
<h3>🏋️ Нет тренировок</h3>
<p>Начните первую тренировку</p>
<button class="btn" id="btn-start-first">▶ Начать тренировку</button>
<p>${state.mode === 'trainer' ? 'Создайте первую тренировку для клиента' : 'Начните первую тренировку'}</p>
<button class="btn" onclick="WL.startWorkout()">▶ Начать тренировку</button>
</div>
`;
document.getElementById('btn-start-first').onclick = startWorkout;
return;
}
// Сортировка: активные сверху, завершённые снизу
const sorted = [...state.workouts].sort((a, b) => {
const sorted = [...workoutsToShow].sort((a, b) => {
if (!a.endTime && b.endTime) return -1;
if (a.endTime && !b.endTime) return 1;
return new Date(b.startTime) - new Date(a.startTime);
@@ -33,7 +49,7 @@ export function renderMainScreen() {
const btn = document.createElement('button');
btn.className = 'btn mb-10';
btn.textContent = '▶ Начать новую тренировку';
btn.onclick = startWorkout;
btn.onclick = () => window.WL.startWorkout();
app.appendChild(btn);
}