簡単家計簿
簡単お試し方法
開発コンソールか自分のページに↓を貼り付けて実行する
code:js
import('/api/code/villagepump/簡単家計簿2/script.js');
2021-10-09 11:18:58 update→簡単家計簿2 code:script.js
const id = "userscript-kakeibo";
const updateKakeibo = () => {
const total = scrapbox.Page.lines
.map(({ text }) => {
const money = Number(text.split(/\s/).pop());
return isNaN(money) ? 0 : money;
})
.reduce((amount, money) => amount + money);
const viewer = document.getElementById(id);
if (viewer) {
viewer.textContent = ${total}円;
} else {
document.getElementById("editor").insertAdjacentHTML(
"beforeend",
`<div
id="${id}"
class="total"
style="text-align:right;font-weight:bold;font-size:1.5em;border-top:lightblue solid 2px;line-height:1.8">
${total}円
</div>`,
);
}
};
const observer = new MutationObserver(updateKakeibo);
code:script.js
const onPageChange = (records) => {
if (records?.0?.target?.classList?.contains?.("enter")) { document.getElementById(id)?.remove?.();
observer.disconnect();
return;
}
if (!targetTitles.includes(scrapbox.Page.title)) return;
updateKakeibo();
observer.observe(
document.getElementsByClassName("lines")0, { childList: true, subtree: true },
);
};
const pageChangeObserver = new MutationObserver(onPageChange);
pageChangeObserver.observe(
document.getElementsByClassName("page-wrapper")0, { attributes: true, attributeFilter: "class" }, );
// initialize
onPageChange();
2021-07-01
05:35:18 バグつぶし
05:23:01 実行対象でないページに遷移した時、簡単家計簿を除去していなかった
05:19:26 ページ遷移処理でreturnが抜けてた
05:12:08 現金計算をミスってた
05:08:40 バグつぶし
05:04:19
実行対象のページ名を複数指定できるようにした
実行対象のページでのみscriptを発動する
編集されるたびに再計算する
04:46:15 refactoring
行の一番最後に書き込まれた数字を合計しているだけ
多分table記法でも計算できる
https://gyazo.com/c3104d570a0f6eff6b9ef702629dce05
https://i.imgur.com/okeWiv9.png
特定の形式だと自動的に計算してしまうというのは便利かも! 増井俊之.icon