import { state, saveState } from '../state.js'; import { showEditExerciseDialog } from '../modals/edit-exercise-modal.js'; export function showSettings() { const app = document.getElementById('app'); app.innerHTML = ''; const screen = document.createElement('div'); screen.className = 'settings-screen'; screen.innerHTML = `

⚙️ Настройки

📋 Справочник упражнений

Управляйте списком упражнений и привязывайте их к типам тренировок.

📏 Замеры тела

🗑 Данные

`; app.appendChild(screen); _renderRefExercises(); _renderBodyMetricsList(); } export function addRefExercise() { const input = document.getElementById('new-ref-exercise'); const typeSelect = document.getElementById('new-ref-type'); const name = input.value.trim(); if (!name) return; const normalizedName = name.trim().toLowerCase(); const exists = state.exerciseRef.find( e => e.name.trim().toLowerCase() === normalizedName ); if (!exists) { state.exerciseRef.push({ id: (state.nextId++).toString(), name: name.trim(), workoutType: typeSelect.value, }); } saveState(); input.value = ''; typeSelect.value = ''; _renderRefExercises(); } export function deleteRefExercise(id) { if (!confirm('Удалить из справочника? (в тренировках останется)')) return; state.exerciseRef = state.exerciseRef.filter(e => e.id !== id); saveState(); _renderRefExercises(); } export function updateRefExerciseType(id, newType) { const ex = state.exerciseRef.find(e => e.id === id); if (ex) { ex.workoutType = newType; saveState(); } } export function editRefExercise(id) { const ex = state.exerciseRef.find(e => e.id === id); if (!ex) return; showEditExerciseDialog(ex, (updatedData) => { if (!updatedData) return; Object.assign(ex, updatedData); saveState(); _renderRefExercises(); }); } export function clearAllData() { if (!confirm('Удалить ВСЕ данные? Это действие необратимо!')) return; if (!confirm('Точно уверены?')) return; localStorage.clear(); location.reload(); } export function _renderRefExercises() { const list = document.getElementById('ref-exercises-list'); if (!list) return; if (state.exerciseRef.length === 0) { list.innerHTML = '

Справочник пуст

'; return; } const sorted = [...state.exerciseRef].sort((a, b) => { if (a.workoutType !== b.workoutType) return (a.workoutType || '').localeCompare(b.workoutType || ''); return a.name.localeCompare(b.name); }); list.innerHTML = sorted.map(ex => { let count = 0; state.workouts.forEach(w => { w.exercises.forEach(e => { if (e.name.trim().toLowerCase() === ex.name.trim().toLowerCase()) count++; }); }); return `
${ex.name} (${count}×) ${ex.workoutType ? `${ex.workoutType}` : ''}
`; }).join(''); } export function _renderBodyMetricsList() { const list = document.getElementById('body-metrics-list'); if (!list) return; if (state.bodyMetrics.length === 0) { list.innerHTML = '

Нет замеров

'; return; } list.innerHTML = state.bodyMetrics.map(m => { const date = new Date(m.date); const dateStr = date.toLocaleDateString('ru-RU') + ' ' + date.toLocaleTimeString('ru-RU', { hour: '2-digit', minute: '2-digit' }); const parts = []; if (m.weight) parts.push(`⚖️ ${m.weight} кг`); if (m.chest) parts.push(`📏 ${m.chest} см`); if (m.waist) parts.push(`📏 ${m.waist} см`); if (m.hips) parts.push(`📏 ${m.hips} см`); if (m.arms) parts.push(`💪 ${m.arms} см`); if (m.legs) parts.push(`🦵 ${m.legs} см`); return `
${dateStr}
${parts.join(' • ') || '—'}
`; }).join(''); } window.SettingsLogic = { show: showSettings, addRefExercise, deleteRefExercise, updateRefExerciseType, editRefExercise, clearAllData, _renderRefExercises, _renderBodyMetricsList, };