fetch
をなくしたscript.jsconst intervalPeriod = 25*60*1000;
let isRunning = false;
let interval = undefined;
let endTime = undefined;
scrapbox.PageMenu.addMenu({
title: 'Pomodoro Timer',
image: 'https://gyazo.com/978797f03cb0112a0a4cafdf02dcdde8/raw'
});
showItems();
script.jsfunction showItems() {
scrapbox.PageMenu('Pomodoro Timer').addItem({
title: () => (isRunning)? '⏹Stop timer' : '▶Start timer',
onClick: () => {
if (isRunning) {
isRunning = false;
clearInterval(interval);
startTime = undefined;
}
else {
isRunning = true;
interval = setInterval(TimeUp, intervalPeriod);
endTime = new Date();
endTime.setTime(endTime.getTime() + intervalPeriod);
}
},
});
scrapbox.PageMenu('Pomodoro Timer').addItem({
title: () => {
if (!isRunning) return '---';
setTimeout(() => {
scrapbox.PageMenu('Pomodoro Timer').removeAllItems();
showItems();
}, 1000);
return restTime();
},
onClick: () => {},
});
}
script.jsfunction TimeUp() {
// タイマーをクリア
isRunning = false;
clearInterval(interval);
alert('🍅お時間です。');
}
script.jsconst zero = n => String(n).padStart(2, '0');
function restTime() {
const now = new Date();
const rest = endTime.getTime() - now.getTime();
const seconds = Math.round((rest % (60 * 1000)) / 1000);
const minutes = Math.floor(rest / (60 * 1000));
return `${minutes}'${zero(seconds)}'' remain.`;
}