Metrics Manager は、Blockly ワークスペースに関連するすべての指標を収集してレポートします。このガイドでは、Metrics Manager から返される各指標セットの意味について説明します。Metrics Manager の詳細については、2021 年の指標の詳細もご覧ください。
指標
ツールボックスの指標
workspace.getMetricsManager().getToolboxMetrics();
ツールボックス指標は、カテゴリ ツールボックスの height
、width
、position
で構成されます。ツールボックスに付いているフライアウトの情報は含まれません。
ツールボックスの position
は Blockly.utils.toolbox.Position
型です。
フライアウトの指標
workspace.getMetricsManager().getFlyoutMetrics();
フライアウト指標は、フライアウト ツールボックスの height
、width
、position
で構成されます。これはカテゴリ ツールボックスに付随するフライアウトではないことに注意してください。これは、下の写真に示すように、フライアウト ツールボックスにのみ適用されます。
フライアウトの position
は Blockly.utils.toolbox.Position
型です。
SVG 指標
workspace.getMetricsManager().getSvgMetrics();
SVG 指標は、ワークスペースの親 SVG の width
と height
で構成されます。メイン ワークスペースの場合、これは blocklySvg
クラスの SVG です。この SVG には、表示されているワークスペースとツールボックスが含まれます。
指標を表示
workspace.getMetricsManager().getViewMetrics(opt_getWorkspaceCoordinates);
ビューの指標は、ビューポートの height
、width
、top
、left
で構成されます。ビューポートは、ワークスペースの表示部分です。このツールボックスには、どちらのタイプのツールボックスも含まれていません。
左上はワークスペースの原点を基準とした相対位置です。ワークスペースをドラッグすると、ビューポートの上と左の位置が更新されます。
絶対指標
workspace.getMetricsManager().getAbsoluteMetrics();
絶対指標は、親 SVG からのビューポートの top
オフセットと left
オフセットで構成されます。ワークスペースでのツールボックスの位置に応じて、通常はツールボックスの幅または高さになります。
コンテンツの統計情報
workspace.getMetricsManager().getContentMetrics(opt_getWorkspaceCoordinates);
コンテンツ指標は、ブロックまたはワークスペースのコメントの周囲のバウンディング ボックスの height
、width
、top
、left
で構成されます。
スクロールの指標
workspace.getMetricsManager().getScrollMetrics(opt_getWorkspaceCoordinates);
スクロール指標は、スクロール可能な領域の height
、width
、top
、left
で構成されます。移動可能なワークスペースの場合、スクロール可能な領域はコンテンツ領域とパディングです。
座標系
デフォルトでは、Metrics Manager によって計算されたすべての指標はピクセル座標として返されます。該当する場合は、true
を指標メソッドに渡すことで、ワークスペース座標で特定の指標を取得できます。例: metricsManager.getViewMetrics(true)
workspaceCoordinate = pixelCoordinates / workspace.scale
ワークスペース座標は通常、ブロックやワークスペースのコメントなど、ワークスペースに配置されるアイテムに使用されます。ユーザーがズームイン、ズームアウトしても、ワークスペースの座標は変わりません。
指標のオーバーライド
ワークスペースに独自の指標を提供したいデベロッパーは、IMetricsManager
インターフェースを実装するか Blockly.MetricsManager
を拡張する代替指標マネージャー オブジェクトを登録できます。
この例については、Continuous Toolbox プラグインまたは Fixed Edges プラグインをご覧ください。