今日のページをnavbarから開くUserScript
/programming-notes/今日のページをnavbarから開くUserScript
今日のページをnavbarから開くUserScript
navbar(画面右上)にボタンを表示して、「今日のページ」を開く
日付ページ、日記ページとも
今日のページを取得してみて、内容がまだ空ならテンプレート(空行と日付リンク)を書くが、空でなければ単に開く
https://gyazo.com/041073718de5e9fdbab091bf6567db89
現在のデザインは空行数行 + 前後の日付へのリンク
日付リンクは下においている
関連ページリストに表示された時に、日付リンクしか見えないのが残念なので
空白をあらかじめ置くことで、好きに書けるスペースを確保している気持ち
真っ白なノート的な
好きに変えて下さい
TODO
黄色い行選択を解除しておく
(方法はわからない)
更新履歴
2021/1/5
開くタブを選べるようにした
ページ遷移をwindow.openからa.hrefに変えた
普通にクリックしたら現在のタブ、右クリック→新しいタブで開くとかをしたら新しいタブで開く
すでになにか書いてあっても日付タグがなければ挿入するようにした
2021/1/6:onclickが繰り返し発火するバグ修正
UserScript
code:script.js
(() => {
const navbar = document.getElementsByClassName('navbar-menu')0;
const todayButton = document.createElement('li');
const a = document.createElement('a');
const span = document.createElement('span');
span.setAttribute('class', 'kamon kamon-pencil'); // see https://nota.github.io/kamon/example/
a.appendChild(span);
todayButton.setAttribute('class', 'today-btn');
todayButton.appendChild(a);
navbar.appendChild(todayButton);
function getDate(i) {
const d = new Date(); d.setDate(d.getDate() + i);
return [${d.getFullYear()}, ${d.getMonth() + 1}, ${d.getDate()}];
}
const today = getDate(0);
const prev = getDate(-1);
const next = getDate(1);
const title = encodeURIComponent(${today[0]}/${today[1]}/${today[2]});
const dateTag = [${prev[0]}/${prev[1]}/${prev[2]}] -> [${today[0]}/${today[1]}]/${today[2]} -> [${next[0]}/${next[1]}/${next[2]}];
todayButton.addEventListener('click', async (e) => {
const json = await (await fetch(/api/pages/${scrapbox.Project.name}/${title})).json();
let body = '';
if (json.lines.every(line => !line.text.includes(dateTag))) {
body = encodeURIComponent(
dateTag
+ '\n'.repeat(4) // 書く場所
+ '\n'
);
}
a.href = ./${title}?body=${body};
let obj = {};
for (const key in e) {
objkey = key != 'bubbles' ? ekey : false;
}
const e_ = new MouseEvent(e.type, obj);
a.dispatchEvent(e_);
//a.click();
});
})();
開発メモ
2021/6/28
/villagepump/未読のページにランダムジャンプするUserScript:ページを開かずに未読を判定&PageMenuのItemにログを表示するver#6041eb6a1280f00000a2ffc1のようにしているはずなのにSPAを維持してページ遷移できない
PageMenuだけ?addEventListenerだとだめ?
PageMenu.addMenuでなにか処理されている?
2021/1/6
onclickが何回も発生してしまうバグ
もらったeventをそのままdispatchEventしていたので、bubbleされてまたliのclick eventが発火してループになっていた
eventはsetterをもたないらしいので、for文で書き写しつつbubblesだけfalseにして新しいイベントをつくり、そっちをdispatch
Javascript: event objectの一部の値を変える
もっといいやり方がありそう...
Promise.all
eventのクローンづくりとfetch処理とでPromiseしてみた
後者が圧倒的に遅いので、結局速度的には同じかsequentialのほうが少し速い感じだった
#日記
#Scrapbox