jQuery: Cytoscape.js お試せた12 (wheelSensitivity、cytoscape.js-panzoom 拡張 + Font Awesome)

バラバラにみえるかもしれないが動機は全部ほぼ一緒。

最初に一つ前でやったことなのに書き忘れてた wheelSensitivity の件。やってみてわかったが、これ、「必ず設定した方がいい」と思った。

元はと言えばメジャーな SVG ビューワあたりからこの傾向があるんだけど、マウスホイールに「反応し過ぎる」のね。気を抜くと一気にズームアウト/インしちゃって迷子になっちゃう。心当たりあるでしょう。こうなると「リセット」手段が用意されてない場合「ページ(またはフレーム)を再読み込み」するしかない「気分になる」のよね。元に戻す気力をなくすほどの迷子になるでしょ。なので wheelSensitivity を小さめに、ワタシは 0.4 にしてみたが、こうすることで「ズーム速度が遅くな」って、迷子になりにくくなる。

Font Awesome の話は一つ前のヤツに追記の形で書いといたんで、興味あれば見といて。「効果抜群だが非常に簡単過ぎて…」なのであえて書き直すようなもんでもない。

一つ前のノンフィクション部分の話の中心にあったのは、「複雑になってきたので UI をコンパクトにしたい、また、パン・ズームの基本操作くらいはサクっと付けときたい」だったわけよ。なので cytoscape.js-toolbar を使ってみようと思ったわけなんだね。やっと cytoscape.js ドキュメントに慣れてきたんだけど、ここ見るだけで cytoscape.js 本体チーム自身の手によるものか、サードパーティ製なのかアイコンでわかるようになってたんだね。cytoscape.js-toolbar はそしてサードパーティ製。どうりで GitHub ページのノリがほかと違うし、やたらに不案内だったわけだわ。

で、cytoscape.js-panzoom は first party 製。CDN にもいるcytoscape-navigator と機能が被ってそうなのでどちらを採るか悩むとこなんだけれど、ひとまず cytoscape.js-panzoom がすぐに使えたのでね、こっちだけ。ワタシにとって最も重大な機能は「リセット(fit())」だったりする。正直それだけでもいいくらいなんだけど、でも一撃で追加出来るならそれはそれで嬉しかろう。懸念としては「目立ち過ぎて邪魔になったりしないかしら」なので、とにかくやってみる:

 1 <head jang="ja">
 2 <meta charset="UTF-8">
 3 <!-- ... -->
 4 
 5 <!--
 6   panzoom のデフォルトスタイルが Font Awesome に依存している。
 7   依存しないことも出来るが依存しちゃえば?
 8   (https://github.com/cytoscape/cytoscape.js-panzoom#api 参照。)
 9 -->
10 <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.0.3/css/font-awesome.min.css">
11 <!-- ... -->
12 <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/cytoscape-panzoom/2.5.2/cytoscape.js-panzoom.min.css">
13 
14 <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
15 
16 <!-- 使いたければ
17 <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script>
18 -->
19 
20 <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/cytoscape/3.2.7/cytoscape.min.js"></script>
21 
22 <!-- dagre レイアウトを使いたいなら
23 <script type="text/javascript" src="https://cdn.rawgit.com/cpettitt/dagre/v0.7.4/dist/dagre.min.js"></script>
24 <script type="text/javascript" src="https://cdn.rawgit.com/cytoscape/cytoscape.js-dagre/1.5.0/cytoscape-dagre.js"></script>
25 -->
26 <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/cytoscape-panzoom/2.5.2/cytoscape-panzoom.min.js"></script>
27 <!-- ... -->
28 </head>
29 <!-- ... -->
30 <script>
31     // ...
32     var cy = window.cy = cytoscape({
33       container: document.getElementById('cy'),
34       /* ... */
35     });
36     cy.panzoom(); // デフォルトで良ければこれだけ
37 // ...
38 </script>

というわけでこうなった:


うん、デフォルトで十分な感じがするね。「目立ち過ぎ」な感じもしないし。ただツールチップは出してくれないんであろうか、そこだけが唯一不満。API を読めばやり方はわかる…、か? icon class names だけ手にしてれば css でなんとか…なるっけか? i エレメントに id が付いてるんなら普通に jQuery で attr("title", ...) 出来ろうが、そういうこと? なんにしてもそんくらいはデフォルトでやって欲しいなぁ。

まぁなんであれ「リセット」が付いただけでも大進化だ。少なくともそうみえる。



Related Posts