Files
gym-bro/frontend/js/modals/metrics-modal.js
T

45 lines
2.5 KiB
JavaScript

import { showModal, closeModal, stepperHtml } from './modal-base.js';
import { toDatetimeLocal } from '../utils.js';
let _cb = null;
export function showBodyMetricsDialog(metrics, callback, editing = null) {
_cb = callback;
const src = editing || metrics[0] || {};
const isEdit = !!editing;
const dateVal = src.date ? toDatetimeLocal(src.date) : toDatetimeLocal(new Date().toISOString());
showModal(`<div class="modal-content">
<h3 class="modal-title">📏 Замеры ${isEdit ? '(ред.)' : ''}</h3>
<div class="field-group"><label>📅 Дата</label><input type="datetime-local" id="m-md" value="${dateVal}"></div>
<div class="field-row">
<div class="field-group"><label>⚖️ Вес</label>${stepperHtml('m-mw', src.weight??'', 0.1, 'кг')}</div>
<div class="field-group"><label>📏 Грудь</label>${stepperHtml('m-mc', src.chest??'', 1, 'см', 'numeric')}</div></div>
<div class="field-row">
<div class="field-group"><label>📏 Талия</label>${stepperHtml('m-mwa', src.waist??'', 1, 'см', 'numeric')}</div>
<div class="field-group"><label>📏 Бёдра</label>${stepperHtml('m-mh', src.hips??'', 1, 'см', 'numeric')}</div></div>
<div class="field-row">
<div class="field-group"><label>💪 Руки</label>${stepperHtml('m-ma', src.arms??'', 0.5, 'см')}</div>
<div class="field-group"><label>🦵 Ноги</label>${stepperHtml('m-ml', src.legs??'', 0.5, 'см')}</div></div>
<div class="btn-row">
<button class="btn btn-secondary" onclick="ModalBase.closeOnBg({target:document.querySelector('.modal-overlay')})">Отмена</button>
<button class="btn btn-success" onclick="MetricsModal.submit(${isEdit})">Сохранить</button></div>
</div>`);
}
export function submit(isEdit) {
const r = {
date: new Date(document.getElementById('m-md').value).toISOString(),
weight: parseFloat(document.getElementById('m-mw').value)||null,
chest: parseInt(document.getElementById('m-mc').value)||null,
waist: parseInt(document.getElementById('m-mwa').value)||null,
hips: parseInt(document.getElementById('m-mh').value)||null,
arms: parseFloat(document.getElementById('m-ma').value)||null,
legs: parseFloat(document.getElementById('m-ml').value)||null,
};
if (!Object.values(r).some((v,i) => i>0 && v!==null)) { alert('Заполните поле'); return; }
closeModal(); _cb?.(r, isEdit);
}
window.MetricsModal = { submit };