Add PTZ nudges, configurable monitoring wall and lunar family dates
This commit is contained in:
@@ -0,0 +1,38 @@
|
||||
'use strict';
|
||||
function dateHint(field,strict=false){
|
||||
const input=field.querySelector('[data-date-value]'),hint=field.querySelector('[data-date-hint]'),hidden=field.querySelector('input[type=hidden]');
|
||||
const mode=field.querySelector('[data-calendar]').value,value=input.value.trim(),leap=field.querySelector('[data-date-leap]').checked;
|
||||
field.querySelector('[data-leap-label]').hidden=mode!=='lunar';input.setCustomValidity('');
|
||||
if(!value){hidden.value='';hint.textContent='日期不详可留空';return;}
|
||||
try{
|
||||
const solar=mode==='solar'?(ZhaoCalendar.solarDate(value),value):ZhaoCalendar.solar(value,leap);
|
||||
hidden.value=solar;
|
||||
if(mode==='lunar')hint.textContent='公历 '+solar;
|
||||
else{try{const l=ZhaoCalendar.lunar(solar);hint.textContent=`农历 ${l.year}年${l.leap?'闰':''}${l.month}月${l.day}日`;}catch(e){hint.textContent=e.message;}}
|
||||
}catch(e){hidden.value='';input.setCustomValidity(e.message);hint.textContent=e.message;if(strict)throw e;}
|
||||
}
|
||||
function syncLifeStatus(){
|
||||
const deceased=$('#person-form').elements.lifeStatus.value==='deceased',field=$('[data-date-field="deathDate"]');field.hidden=!deceased;
|
||||
field.querySelectorAll('input,select').forEach(e=>e.disabled=!deceased);
|
||||
if(!deceased)field.querySelector('[data-date-value]').setCustomValidity('');
|
||||
}
|
||||
function initDateFields(){
|
||||
for(const field of $$('[data-date-field]')){
|
||||
field.querySelector('[data-calendar]').value='solar';field.querySelector('[data-date-leap]').checked=false;
|
||||
field.querySelector('[data-date-value]').value=field.querySelector('input[type=hidden]').value;dateHint(field);
|
||||
}syncLifeStatus();
|
||||
}
|
||||
function syncDateFields(strict=false){
|
||||
syncLifeStatus();for(const field of $$('[data-date-field]'))if(!field.hidden)dateHint(field,strict);
|
||||
if($('[data-date-field="deathDate"]').hidden)$('#person-form').elements.deathDate.value='';
|
||||
}
|
||||
for(const field of $$('[data-date-field]')){
|
||||
field.querySelector('[data-date-value]').addEventListener('input',()=>dateHint(field));
|
||||
field.querySelector('[data-date-leap]').addEventListener('change',()=>dateHint(field));
|
||||
field.querySelector('[data-calendar]').addEventListener('change',()=>{
|
||||
const hidden=field.querySelector('input[type=hidden]'),input=field.querySelector('[data-date-value]'),mode=field.querySelector('[data-calendar]');
|
||||
if(hidden.value){try{if(mode.value==='solar')input.value=hidden.value;else{const l=ZhaoCalendar.lunar(hidden.value);input.value=ZhaoCalendar.iso(l);field.querySelector('[data-date-leap]').checked=l.leap;}}catch(e){mode.value='solar';toast(e.message);}}
|
||||
dateHint(field);
|
||||
});
|
||||
}
|
||||
$('#person-form').elements.lifeStatus.addEventListener('change',syncLifeStatus);
|
||||
Reference in New Issue
Block a user