Files
gym-bro/frontend/js/logic/metrics.js
T

48 lines
1.8 KiB
JavaScript

import { state, saveState, genId } from '../state.js';
import { renderMainScreen } from '../render/main-screen.js';
import { showBodyMetricsDialog } from '../modals/metrics-modal.js';
export function showBodyMetrics() {
showBodyMetricsDialog(state.bodyMetrics, (newMetric) => {
if (!newMetric) return;
newMetric.id = genId();
state.bodyMetrics.unshift(newMetric);
state.bodyMetrics.sort((a, b) => new Date(b.date) - new Date(a.date));
saveState();
renderMainScreen();
alert('Замеры сохранены!');
});
}
export function editBodyMetric(metricId) {
const metric = state.bodyMetrics.find(m => m.id === metricId);
if (!metric) return;
showBodyMetricsDialog(state.bodyMetrics, (updatedData) => {
if (!updatedData) return;
Object.assign(metric, updatedData);
state.bodyMetrics.sort((a, b) => new Date(b.date) - new Date(a.date));
saveState();
// Если сейчас на экране настроек — перерисуем список
const list = document.getElementById('body-metrics-list');
if (list && typeof window.SettingsLogic !== 'undefined') {
window.SettingsLogic._renderBodyMetricsList();
} else {
renderMainScreen();
}
}, metric);
}
export function deleteMetric(id) {
if (!confirm('Удалить замер?')) return;
state.bodyMetrics = state.bodyMetrics.filter(m => m.id !== id);
saveState();
const list = document.getElementById('body-metrics-list');
if (list && typeof window.SettingsLogic !== 'undefined') {
window.SettingsLogic._renderBodyMetricsList();
} else {
renderMainScreen();
}
}
window.ML = { showBodyMetrics, editBodyMetric, deleteMetric };