эксплуатация: показания счётчиков, энергоактивы и РРО
Конфиг счётчиков и день/ночь-тарифы, учёт энергосистем (генераторы, инверторы), доступ к разделу РРО/ПРРО. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,68 @@
|
||||
function utilitiesPageRoot() {
|
||||
return document.getElementById('utilities-page');
|
||||
}
|
||||
|
||||
function utilitiesGetPharmacyId() {
|
||||
var root = utilitiesPageRoot();
|
||||
if (!root) return '';
|
||||
var select = document.getElementById('utilities-pharmacy-select');
|
||||
if (select && select.value) return select.value;
|
||||
return root.getAttribute('data-own-pharmacy') || '';
|
||||
}
|
||||
|
||||
function utilitiesGetReadingMode(pharmacyId, typeId) {
|
||||
var root = utilitiesPageRoot();
|
||||
if (!root || !typeId) return 'single';
|
||||
var configs = {};
|
||||
var typeModes = {};
|
||||
try {
|
||||
configs = JSON.parse(root.getAttribute('data-meter-configs') || '{}');
|
||||
typeModes = JSON.parse(root.getAttribute('data-type-modes') || '{}');
|
||||
} catch (e) {
|
||||
return 'single';
|
||||
}
|
||||
if (pharmacyId) {
|
||||
var key = pharmacyId + ':' + typeId;
|
||||
if (configs[key]) return configs[key];
|
||||
}
|
||||
return typeModes[typeId] || 'single';
|
||||
}
|
||||
|
||||
function utilitiesFormModeUpdate() {
|
||||
var typeSelect = document.getElementById('utilities-type-select');
|
||||
var singleWrap = document.getElementById('utilities-single-wrap');
|
||||
var dayNightWrap = document.getElementById('utilities-daynight-wrap');
|
||||
var hint = document.getElementById('utilities-mode-hint');
|
||||
if (!typeSelect || !singleWrap || !dayNightWrap) return;
|
||||
|
||||
var pharmacyId = utilitiesGetPharmacyId();
|
||||
var typeId = typeSelect.value;
|
||||
var mode = utilitiesGetReadingMode(pharmacyId, typeId);
|
||||
var isDayNight = mode === 'day_night';
|
||||
|
||||
singleWrap.style.display = isDayNight ? 'none' : '';
|
||||
dayNightWrap.style.display = isDayNight ? '' : 'none';
|
||||
|
||||
var valueInput = singleWrap.querySelector('input[name=value]');
|
||||
var dayInput = dayNightWrap.querySelector('input[name=value_day]');
|
||||
var nightInput = dayNightWrap.querySelector('input[name=value_night]');
|
||||
if (valueInput) valueInput.required = !isDayNight;
|
||||
if (dayInput) dayInput.required = isDayNight;
|
||||
if (nightInput) nightInput.required = isDayNight;
|
||||
|
||||
if (hint) {
|
||||
hint.textContent = isDayNight
|
||||
? 'Лічильник у режимі «день / ніч» — вкажіть обидва показники.'
|
||||
: (typeId ? 'Звичайний лічильник — одне показання.' : '');
|
||||
}
|
||||
}
|
||||
|
||||
document.body.addEventListener('htmx:afterSwap', function (evt) {
|
||||
if (document.getElementById('utilities-page')) {
|
||||
utilitiesFormModeUpdate();
|
||||
}
|
||||
});
|
||||
|
||||
if (document.getElementById('utilities-page')) {
|
||||
utilitiesFormModeUpdate();
|
||||
}
|
||||
Reference in New Issue
Block a user