フューチャーログ
code:script.js
const newDate = (yyyy, offset) => {
const dt = yyyy ? new Date(yyyy) : new Date()
dt.setFullYear(dt.getFullYear() + offset)
return dt.getFullYear()
}
const listDates = yyyy => {
const result = []
const dt = yyyy ? new Date(yyyy) : new Date()
const y = dt.getFullYear()
for (const index of Array.from(Array(12).keys())) {
dt.setMonth(index)
if (dt.getFullYear() !== y) { break }
result.push([${dt.toISOString().substring(0, 7)}])
result.push('')
}
return result
}
scrapbox.PageMenu().addItem({
title: 'フューチャーログ',
image: null,
onClick: (e) => {
const thisYear = window.prompt('フューチャーログを作ります: yyyy', newDate('', 0))
if (!thisYear) { return }
const prevYear = newDate(thisYear, -1)
const nextYear = newDate(thisYear, +1)
const title = encodeURIComponent(thisYear)
const body = encodeURIComponent([
[${prevYear}] | [${nextYear}],
''
].concat(listDates(thisYear)).concat([
'',
'#フューチャーログ'
]).join('\n'))
const created = scrapbox.Project.pages.some(p => p.exists && p.title === thisYear)
if (created) {
window.open(/${scrapbox.Project.name}/${title})
} else {
window.open(/${scrapbox.Project.name}/${title}?body=${body})
}
}
})