scrapbox-local-graphのやることリスト兼ね作業ログ
バグ
mobileでzoomが効かない
opacityは変化しているので、 zoom().on("zoom")
は機能している
何かで拡大率が相殺されている?
mobileで頻繁にcrashする
初回hover時にsimulationがresetされる
描画までのラグが大きい
どこで時間食っている?
とりあえず読み込み中表示を入れるか?
2023-02-04 多分解消されている
タイトルのエスケープに失敗している
data属性に入れるには、 "
などをencodeする必要がある
あとで調べよう
やりたいこと
ラベルをもっといい感じにしたい
3段組みにするとか
リンク数の少ないNodeを非表示にする機能
nodeの大きさに linked
を使う?
✅preactで書きたい
dom変更頻度を減らす
描画処理を宣言的に書いて見やすくする
座標更新もD3にやらせる
DOM構築には元のデータを使う
✅git管理する
どこを変更したのかわからなくなってきた
d3.jsをCDNから引っ張ってくる
bundle size削減
大したファイルサイズじゃないのでいい
✅リンクの方向を矢印で示したい
D3で
<marker>
を構築するコードは
ここを参考にした
23:36:08 調整中
linkの色を薄めにすれば、矢印も目立たない
✅hoverしたnodeの関連nodeをハイライトする
:hoverを
:has(:hover)
のように選択できない
動的にスタイルを挿入しよう
18:05:23 実装できた
\
\
内では \"
ではなく \\"
とする必要があった
色合いがlight themeだと微妙……
バグをいくつか取り除いた
まあとりあえずこれで完成とする
2023-01-01 01:27:38 関連node以外の文字色を薄くする
だいぶ見やすくなったのではなかろうか
✅現在ページを別の色で表示する
20:05:03 実装したはずなんだけどデグレてしまった
20:14:22 単にCSSを削ってしまっていただけだった
opacityを50%にしてみた
✅SVG領域の大きさを変更できるようにする
一旦rollbackして調べている
19:24:29 nodeとlinkの動きにラグが生じるようになってた
必要なpropertyだけ指定し直したら直った
19:30:36 ResizeObserver
の処理の有無だけで現象の再現・消去ができるところまでコードを作った
19:38:23 同じ現象が発生した
わかった。 <div>
の高さをそれより小さい <svg>
の高さに設定してしまったせいで、無限に高さが増えるループに突入してしまったんだ
19:42:37 <svg>
から width
と height
を削除すれば、外の要素の大きさにあわせてresizeされるようになるみたい
この状態なら <svg>
にResizeObserverを適用できる
document.createElementNS("http://www.w3.org/2000/svg", "svg")
スクロールバーとpaddingがないなら同じだとしてよさそう
20:04:41 直った
2023-01-15
20:43:13 preactでrenderingするようにした
既存のDOMにデータをbindさせた
opacityやfont-sizeをCSS variablesから設定するようにし、なるべくJSによるスタイル操作を取り除いた
なぜか初回クリックでsimulationがrestartされるようになってしまった
いずれ調べる
16:57:29 codeをこのページからgitに移動した
2023-01-01
styleの調整をしている
なるべくCSS側で設定できるようにする
Nodeのtransitionまでは成功した
まだできていないもの
文字の大きさ変化
linkの色変化
変化はするのだが、transitionが効いてくれない
00:54:19 原因分かった
diff-transition: color,font-size,opacity 0.2s linear;
+transition: color 0.2s linear, font-size 0.2s linear, opacity 0.2s linear;
,
で一つの値に複数の値を詰め込むことはできないのか
2022-12-31
21:59:26 空リンクの計算を間違えていたので直した
outgoing linksを考慮していなかった
20:35:24 これでリリースする
16:25:34 CSSの調整中
見た目はいい感じになった
リンクが少ないページ
他の人のscrapboxで試す
複数の1 hop linksと繋がってる2 hop linkがわかるのが面白い(screenshot中の ブルーアーカイブ
)
.page
と同じ枠にしてみた
15:47:59 だいたい動くようになった
<a>
タグで遷移するようにしてみた
テスト用
console.jsawait (async()=>{
const {render}=await import("https://scrapbox.io/api/code/takker-dist/scrapbox-local-graph-min/script.js");
const relatedPages = document.querySelector(".related-page-list");
const root = document.createElement("div");
relatedPages.parentNode.insertBefore(root, relatedPages);
render(root, `#root {
--graph-link: gray;
}`);
})();