var MOIST_LABELS=['問題なし','やや湿気','かなり湿気'];
var MOLD_LABELS=['カビなし','カビ少し','カビ多い'];
document.addEventListener('DOMContentLoaded',function(){
var today=new Date().toISOString().split('T')[0];
document.getElementById('checkDate').value=today;
renderRecords();
});
function loadSample(n){
var today=new Date().toISOString().split('T')[0];
if(n===1){
document.getElementById('checkDate').value=today;
document.getElementById('roomName').value='祖母の寝室';
document.getElementById('beddingType').value='布団(掛け布団)';
document.getElementById('moistureLevel').value='1';
document.getElementById('moldLevel').value='0';
document.getElementById('lastDryDate').value='';
document.getElementById('memoText').value='天気が続いていたのに少し湿り気があった。久しく干していない。';
}else if(n===2){
document.getElementById('checkDate').value=today;
document.getElementById('roomName').value='父の部屋(1階)';
document.getElementById('beddingType').value='マットレス';
document.getElementById('moistureLevel').value='2';
document.getElementById('moldLevel').value='1';
document.getElementById('lastDryDate').value='';
document.getElementById('memoText').value='マットレス裏に黒い点が数か所。少しカビ臭い気がする。';
}else{
document.getElementById('checkDate').value=today;
document.getElementById('roomName').value='祖父の部屋(2階)';
document.getElementById('beddingType').value='枕';
document.getElementById('moistureLevel').value='0';
document.getElementById('moldLevel').value='0';
document.getElementById('lastDryDate').value=today;
document.getElementById('memoText').value='先日新しい枕カバーに交換済み。異常なし。';
}
}
function saveRecord(){
var roomName=document.getElementById('roomName').value.trim();
var beddingType=document.getElementById('beddingType').value;
var moistureLevel=parseInt(document.getElementById('moistureLevel').value)||0;
var checkDate=document.getElementById('checkDate').value;
var moldLevel=parseInt(document.getElementById('moldLevel').value)||0;
var lastDryDate=document.getElementById('lastDryDate').value;
var memoText=document.getElementById('memoText').value.trim();
if(!checkDate){alert('点検日を入力してください');return;}
if(!beddingType){alert('寝具の種類を選択してください');return;}
var score=moistureLevel+moldLevel;
var levelClass,levelLabel,advice;
if(score===0){
levelClass='ok';levelLabel='✅ 問題なし';
advice='現状は良好です。引き続き定期的な点検と天日干しを続けましょう。梅雨・夏場は頻度を上げると安心です。';
}else if(score<=2){
levelClass='warn';levelLabel='⚠️ 注意';
advice='湿気またはカビの初期サインがあります。なるべく早く天日干しや布団乾燥機で乾燥させてください。改善しない場合は専門クリーニングを検討してください。';
}else{
levelClass='ng';levelLabel='🔴 要対応';
advice='湿気とカビが重なっています。使用を一旦控え、クリーニング業者に相談するとともに、ケアマネジャーや医師にも状況をお伝えください。';
}
var html='
'+levelLabel+'
'+
'
'+
'
寝具
'+esc(beddingType)+'
'+
'
場所
'+(roomName?esc(roomName):'未記入')+'
'+
'
湿気
'+MOIST_LABELS[moistureLevel]+'
'+
'
カビ
'+MOLD_LABELS[moldLevel]+'
'+
(lastDryDate?'
最終干した日
'+esc(lastDryDate)+'
':'')+
'
'+esc(advice)+'
'+
'
'+
(memoText?'
📝 メモ: '+esc(memoText)+'
':'')+
'';
document.getElementById('result').innerHTML=html;
document.getElementById('readresult').style.display='';
var records=getRecords();
records.unshift({
id:Date.now(),checkDate:checkDate,roomName:roomName,beddingType:beddingType,
moistureLevel:moistureLevel,moldLevel:moldLevel,score:score,levelClass:levelClass,
levelLabel:levelLabel,lastDryDate:lastDryDate,memo:memoText
});
if(records.length>30)records=records.slice(0,30);
localStorage.setItem('bedding_check_records',JSON.stringify(records));
renderRecords();
}
function copyResult(btn){
var checkDate=document.getElementById('checkDate').value;
var roomName=document.getElementById('roomName').value.trim()||'未記入';
var beddingType=document.getElementById('beddingType').value||'未選択';
var moistureLevel=parseInt(document.getElementById('moistureLevel').value)||0;
var moldLevel=parseInt(document.getElementById('moldLevel').value)||0;
var memoText=document.getElementById('memoText').value.trim();
var score=moistureLevel+moldLevel;
var levelText=score===0?'問題なし':score<=2?'注意':'要対応';
var text='【寝具湿気カビ点検メモ】\n点検日: '+checkDate+'\n場所: '+roomName+
'\n寝具: '+beddingType+'\n湿気: '+MOIST_LABELS[moistureLevel]+
'\nカビ: '+MOLD_LABELS[moldLevel]+'\n判定: '+levelText+
(memoText?'\nメモ: '+memoText:'');
navigator.clipboard.writeText(text).then(function(){
btn.textContent='コピーしました';
setTimeout(function(){btn.textContent='結果をコピー';},2000);
}
}).catch(function(){alert('コピーに失敗しました。手動でコピーしてください。');});
function getRecords(){
try{return JSON.parse(localStorage.getItem('bedding_check_records')||'[]');}
catch(e){return [];}
}
function renderRecords(){
var records=getRecords();
var el=document.getElementById('recordsList');
if(!records.length){el.innerHTML='