Kozane-clone-tear-merge
2023-02-12
Kozanebaに線を引く機能が入ってどんどん線を引くようになっか思ったんだけど、この機能が必要では
どうやって実現するんだ?
むしろ、こうか?
まず6つに引き裂く
選択範囲のこざねを一つにまとめる
この時に同じ文字列ならまとめる、そうでないなら空白かスラッシュを挟んでつなげる
二重線は後から描く
update_annotation_after_deletion
"leave from line"の実装
参考にする
一旦保留
2本以上の線が繋がっている時だけメニューを表示
線のつながっている方向に動かす
できた
しかし予想通り「完全に重なってるとどれに繋がってるものかわからない」が発生している
2個目のXをAに繋がってると思って動かして、実はCに繋がっていた
線のつながっている方向に動かすできた
次はマージ
同一内容テキストは一つに
異なる内容のテキストはスラッシュ区切り
同じページへのScrapboxこざねは一つに
では、混ざっていたら?
そういうことするのやめろよ…
線の両端をマージしたら?
一旦保留
Scrapboxこざねのマージ
異常系
マージしたこざねを作るところまではできた
左にあるものを先にする
次に必要なこと
線の付け替え
マージ前のこざねの削除
二重のグループの内側をungroupした時に座標がズレるバグ
できた
Tear 引き裂き
2本以上の線がつながっているこざねを引き裂きます
Merge 併合
選択範囲のこざねを一つにまとめます
Split Kozane機能を削除
まだどういう機能が必要か明確になっていなかった時代に作られた、過度に抽象的な機能でした
Edit Kozane機能とClone機能で十分です
Edit Kozane機能で編集するとこざねが置き換わります
この時に複数行にすれば複数枚になります
なので「追加したものを後から複数枚に分割したい」というニーズははEdit Kozane機能で実現できる
Split Kozaneダイアログには「replace」と「add」の二つのボタンがありました
これは「既存のものを残しつつ、それを分割したものを追加したいこともあるよな」という考えでした
Clone機能が追加されて「これは残しておきたいな」と思った時点でcloneするようになったので必要なくなりました
現時点での仕様上の注意点
こざねを編集した場合、テキストが一行なら表示テキストの編集と解釈している
なので引かれた線は維持される
テキストが複数行ならこざねの分割と解釈している
この時には「古いこざね」が消滅して「複数行テキストのインポート」が行われる
なので古い付箋に引かれていた線は消える
cloneは「同じ内容のこざねを新しく追加する」と解釈しているので、線は引かれない
解説を書いていて引っかかるかもなと思ったので明記しました。
西尾はこの仕様で今のところ困っていないです
デフォルトで線が増える仕様と、増えない仕様とを選べる場合、増えない方を選んでいると言えます
人間は線が多すぎると混乱するので、増えない方が良いと思っています
use case