Kozaneba開発日記2021-12-22
しばらく色々な需要にKozanebaを使った
なのでその目的の利用を試してみた
分量が多くなると重たくなる問題
そもそもその状態でさらに追加していっても人間のキャパシティを超えるので自分の言葉でアウトプットするフェーズに進むべきでは
高負荷時グループ消滅問題
選択状態からグループをドラッグした時に、ドラッグ開始後に選択状態解除の再描画が走ることが最初の原因
このバグによって「ドラッグ中のものはドロップ対象にならない」が壊れ「トップレベルのXをXにドロップしたので、トップレベルの描画リストからXを削除して、Xの子にXを追加」が発生する、これによって画面上から消える
リリースノート
選択がある状態で選択範囲外のグループ上でドラッグをした場合にグループが非表示になるバグを修正しました
選択がある状態での選択範囲外のドラッグは単に選択を解除するだけになりました
選択範囲に何も選択対象がなかった場合、選択を自動で解除するようになりました
長い二項関係を半透明にする
https://gyazo.com/332d57d2df82a9b54635aec15209cc32
https://gyazo.com/5d6b761b9da4518ff40c5f51ce4262f3
https://gyazo.com/3d188c2e0df12805a388e79ea83e53e1
https://gyazo.com/e45792a1cccb534549a0386a44a8f7df
https://gyazo.com/496f0f14cb1678b80d148f3be5fc36c7https://gyazo.com/9cefcf1c5d31a7486b3e055cd58b1d6e
https://gyazo.com/4245a9bdefacdd730a79773f2bf52283
https://gyazo.com/ee21d37883a766abeb4ef519ee9f5984
https://gyazo.com/5383a098af350bf3ec1727fa19190b8f
あー、なるほど。
そしてもっと激しく壊す方法を発見した
https://gyazo.com/1019c8972558303dcb03d5ded37af1a4
まず前半の問題に関しては線とボーダーの交点を計算する時にボーダー自体の太さやヘッダーの高さが考慮に入っていないことが原因
後半に関してはネストされたグループの中のこざねの位置が更新された時に、親の親のグループのなんらかの値が更新されてない
今回複雑な文章の構造化をした時にこざねのジャンプが起きるなと思っていたがおそらくこの更新漏れが原因だろう
後者の方が影響範囲や問題が大きいのでまず直す
前者に関してはそもそも線の描画コードがグループのヘッダの高さとか知る必要があるのはおかしいのでバウンダリボックスを取得してそこから計算するといいのではないか
水曜日に入れた線を半透明にする機能をまだデプロイしてなかった
これはすごく有益だということがわかった
「線が下のものにかぶって読めないから動かそう」と考えなくて良くなる
全部つながって、これはまだ「元の文章で近接していた」という関係を保持している=既存の構造を保っている 今のこの状態はバックアップしたので、ここから「元の構造を保たなくて良い」=「離れたところ繋ぐ矢印が近接するように、元の構造を破壊して移動する」をやれば「苦痛を伴うジャンプなしに新しい構造へ到達できる」
これ機械的にアシストできないかな…つまり近接が弱いバネ、矢印が強いバネで、矢印が適度な長さになるように物理演算をかければ…
「選択範囲の90度回転」が欲しい