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

52 lines
2.0 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() {
// В личном режиме — замеры без клиента
const personalMetrics = state.bodyMetrics.filter(m => !m.client_id);
showBodyMetricsDialog(personalMetrics, (newMetric) => {
if (!newMetric) return;
newMetric.id = genId();
newMetric.client_id = null; // личный замер
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._renderPersonalMetricsList();
} 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._renderPersonalMetricsList();
} else {
renderMainScreen();
}
}
window.ML = { showBodyMetrics, editBodyMetric, deleteMetric };