めも、メモる

技術的メモ. VS Code Draw.io DOA

開発日記 2021/4/18

vertexにマウスオーバーしたとき、矢印が出てきてそこでCTL+Clickすると、vertexがコピーされるのだが、その時、データが空白でコピーできるようにしたいと思って調査。

ソースコードを旅することになる。マウスオーバーのときに表示されるメッセージから検索。ただ、コピーが前提となっていて、深いところで呼び出しているので、これは無理とあきらめる。

ふむ。なかなか進まないが。次はもう少しモデリングの写経をしながら、機能の調整をやってみる。そろそろ、コネクションの自動調整かな。

開発日記 2021/4/17

ドキュメントを読み返し、ソースコードを読んだが、コネクションポイントを増やす処理はよくわからず。読んでいくと、くっつけてからコネクションポイントの座標を設定しているようだ。ここはあきらめる。それに、接点はedgeのstyleで指定できるのだから、プログラム側で調整することは簡単にできるはずだ。

そして、やりたいことが見えてくる。

新規で作成したときにエンティティ名からフォーカスを当てるとか、editorを閉じる方法とかもう少し使い勝手を向上させて、次はコネクションポイントを自動で置き換える処理を書きたい。

開発メモ 2021/4/15

コネクションの追加が簡単と思いきやちょっと複雑で、mxGraphのサンプルを読むと図形ごとのclassのprototypeのconstraintsを上書きしている。仕組みは少し厄介で、インスタンスごとにコネクションを増やすことは簡単ではないかもしれない。ソースを読んでさまよっていて、これはドキュメントをちゃんと読むところからやるべしと思い至る。

開発メモ 2021/4/13

更新ウィドウの表示と、cellへの値の反映までできた。

タブ送りでフォーカス抜けたらウィンドウを閉じるようにする。ここまではよい。

コネクションの数が少ないな。

それができたら、渡辺幸三氏のコンセプトウェアを写経しつつ、気になった機能を作り込んでいこう。

dbc.in.coocan.jp

開発日記 2021/4/12

他のプラグインを参考にしつつ、セルをクリックしたときに編集用ウィンドウを出せるようになった。セル中の表示はHTMLで記載しているので、それを読み取って、編集できるようにする。

3つの編集枠があるので、tabでの移動を基本として、タブで最後のボックスからフォーカスが抜けたら閉じるようにする。この辺は使いこみやすいように作り込みたい。

途中までしかできていないので、今日は今のやり方で編集→反映をいったん完成させたい。

開発日記 2021/4/11

draw.ioのmermaidプラグインを読んだら色々とわかってきた。

Githubからソース落としてきて、ソースコードが実質2ファイルとわかった時の安ど感。そもそも、標準で用意されているプラグインがあって、それを読めばよかったのだった。

ずいぶんと遠回りしたが、ようやく開発環境ができてきた。

VS Codeのdraw.ioプラグインに組み込むには、VS Codeの拡張として登録すればよい仕組みになっていたようだ。プラグインの読み込み処理が複雑なのは、VS Code側の設定を読みに行っていたからで、その辺はまだ解読できていないが、当面不要である。

これからはとりあえず、思っている機能が動くところまでやりたい。

開発日記 2021/4/10

draw.io ditorUi.showDialogで表示させたDaillogをcancelBtnから呼び出したeditorUi.hideDialog();では実行できるのに、ditorUi.showDialogの引数でclosableをtrueにして閉じようとするとエラーになる。:this.onDialogClose is not a function

thisの渡し方に問題がありそう。

と思ってよく見たら、関数を渡すべきところにbooleanを渡していたことが原因だった。

そして、ではvscode版draw.ioに埋め込もうともう一度pluginシステムを見直してうまくいかない・・・

package.jsonからファイルパスを読んで、jsとして吐き出しているだけのはずなのだが、思った以上に複雑な処理をしていて、途中でjsonをstringに変換したりしている。よく見ていくと、まず、VS Codeの設定ファイルに書き出しているらしい。なるほど。

もう一つ、これはこの後考えようとしていたのだが、draw.ioにpluginシステムがある。なので、普通にこっちの枠組みで載せるべきのようだ。

VS Code以外でも色々と実行主体はある。なので、diagrams.net のpluginとして動かせるようにしておけた方が都合が良さそうだ。

で、昨年、draw.ioとdiagrams.net が分裂というかしているらしい。draw.ioはAtlassianファミリーの一部となったようだ。diagrams.net 側はオープンソースの開発元の会社として存在しているようだ。ウェブサイトをみると商業的な囲い込みに対して強い反対意見を表明している。

理念は素晴らしく、そのおかげで私も使えるわけなのだが、彼らの収益源が見えてこないのが気になる。ローカルで実行し、ファイルもどこにでも置けて、ソースコードオープンソースとなると、課金する場所が思い当たらない。これは不安材料である。自分が身を置くプラットフォームの先行きが不安なのは気になるところだが、ともかくも、最低、今サポートされているでは動かせるという点をよりどころにこれで進めることにする。

で、plugin開発のドキュメントが出てこない・・

Stack over followと、後はVSCodeプラグインとして公開されていたプラグインを見よう見まねするか。