massive frontend refactoring (works good)
This commit is contained in:
@@ -0,0 +1,44 @@
|
||||
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 };
|
||||
Reference in New Issue
Block a user