45 lines
2.5 KiB
JavaScript
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 };
|