Visio Services ECMAScript API のオブジェクト
最終更新日: 2013年12月3日
適用対象: SharePoint Server 2010
この記事の内容
VwaControl オブジェクト
Page オブジェクト
ShapeCollection オブジェクト
Shape オブジェクト
Visio ServicesJavaScript API には、4 つのオブジェクトとそれぞれのメンバーのみが含まれます。
さらに、Visio ServicesJavaScript API には 4 つの列挙体が含まれます。
VwaControl オブジェクト
VwaControl オブジェクトは、Visio Web Access Web パーツのインスタンスを表します。VwaControl オブジェクトのメソッドを使用すると、Web パーツに関する情報、および Web パーツに表示された Visio 図面に関する情報にアクセスできます。また、このメソッドを使用すると、Web パーツ内での Visio ドキュメントの開始、表示するアクティブなページの取得と設定、イベント ハンドラーの追加や削除、カスタム メッセージの表示や非表示など、さまざまなアクションを実行できます。
JavaScript コードでは、ASP.NET AJAX の Sys.Application クラスの load イベントにハンドラーを接続することで、VwaControl オブジェクトへの参照を取得できます。そのハンドラーを実装する関数では、オブジェクトをホストする Visio Web Access Web パーツの HTML 識別子 (ID) をそのオブジェクトに渡すことで、そのオブジェクトを初期化できます。この ID を取得するには、Web パーツをホストする HTML ページのソースコードを調べて、文字列 class="VisioWebAccess" を探します。ID の形式は "WebPartWPQ#"であり、この # が Web パーツの識別番号を表します。次のコード例は、この処理方法を示しています。この例は、Web パーツ ID が WebPartWPQ3 であることが確認されており、Web パーツで .vdw ファイルとして発行する Visio 図面が開かれていることを前提とします。これは、次のコードで示されます。
Sys.Application.add_load(onApplicationLoad)
var webPartElementID = "WebPartWPQ3";
var vwaControl;
function onApplicationLoad() {
try{
vwaControl= new Vwa.VwaControl(webPartElementID)
vwaControl.addHandler("diagramcomplete", onDiagramComplete);
}
catch(err){
}
}
VwaControl オブジェクトのインスタンスへの参照を取得すると、その openDiagram メソッドを使用して、発行された Visio .vdw ファイルに基づいて、新しい図を Visio Web Access Web パーツに開くことができます。ただし、openDiagram メソッドを呼び出した後に、VwaControl の同じインスタンスまたは Vwa 名前空間内の他のオブジェクトに対処することはできません。これは、openDiagram メソッドが、サーバーで図を開いた後に直ちに戻る非同期操作になっているためです。また、非同期操作では、現在の VwaControl オブジェクトが無効になります。詳細については、「Vwa.VwaControl.openDiagram Method」を参照してください。
openDiagram の呼び出しを扱う最良の方法は、Visio Web Access Web パーツが Visio 図面の読み込みを完了したときに発生する Vwa.diagramcomplete Event のためのハンドラーを作成して、そのイベント ハンドラーにユーザーのコードを含めることです。diagramcomplete イベントのためのイベント ハンドラーを追加するために Vwa.VwaControl.addHandler Method を使用することができます。ベスト プラクティスは、このコントロールへのユーザー アクションによって発生したイベントに対応するこれらのイベント ハンドラーを作成することにより、VwaControl オブジェクトをプログラムすることです。VwaControl オブジェクトによって公開されるその他のイベントには、ユーザーのマウス操作に対応する Vwa.shapemouseenter Event、Vwa.shapemouseleave Event、および Vwa.shapeselectionchanged Event、そして SharePoint Server 2010 が返すエラーに対応できるようにする Vwa.diagramerror Event が含まれます。
diagramcomplete イベントのためのハンドラーで、Page オブジェクト、Shape オブジェクト、および ShapeCollection コレクションを含め、API によって公開されたその他のオブジェクトへの参照を取得することができます。同じハンドラーで、以下のコード例に示すように、その他のイベントのためのハンドラーを作成することができます。
function onDiagramComplete() {
try {
vwaPage = vwaControl.getActivePage();
vwaShapes = vwaPage.getShapes();
vwaShape = vwaShapes.getItemAtIndex(0);
vwaControl.addHandler("shapeselectionchanged", onShapeSelectionChanged);
}
catch(err) {
}
}
このコード例は、以下のプログラミング タスクを完了する方法を示しています。
Vwa.VwaControl.getActivePage Method を使用して、アクティブなページを表す Page オブジェクトのインスタンスへの参照を取得する方法
Page オブジェクトの Vwa.Page.getShapes Method を使用して、アクティブなページ上の図形のコレクションを表す ShapeCollection コレクションのインスタンスを取得する方法
そのコレクションの Vwa.ShapeCollection.getItemAtIndex Method を使用して、アクティブなページ上の図形のコレクション内の 1 番目の図形のインスタンスを取得する方法
shapeselectionchanged イベントのハンドラーを追加する方法
Web パーツに表示される図面についての詳細を取得するために、VwaControl オブジェクトのいくつかのメソッドを使用することができます。たとえば、図が含まれるすべてのページの名前を取得するために Vwa.VwaControl.getAllPageIds Method を使用することができます。また Vwa.VwaControl.getDiagramUrl Method を使用して Web パーツに現在表示されている図の URL を取得することができます。そして Vwa.VwaControl.getDisplayMode Method を使用して、現在の Web 図面ページがラスター テクノロジと Microsoft Silverlight テクノロジのどちらで表示されているか判断できます。また Vwa.VwaControl.getVersion Method を使用して Web パーツのバージョンを取得することができます。
Vwa.VwaControl.removeHandler Method を使用すると、追加したイベント ハンドラーを削除できます。また、Vwa.VwaControl.clearHandlers Method では、すべてのハンドラーを削除できます。独自の HTML エラー メッセージのページを表示したり、非表示にしたりするには、Vwa.VwaControl.displayCustomMessage Method および Vwa.VwaControl.hideCustomMessage Method を使用します。また、Vwa.VwaControl.setActivePage Method を使用して、Web パーツに現在表示されているページを変更したり、Vwa.VwaControl.refreshDiagram Method を使用して、現在の Web 図面ページを、サーバーからのデータを使用して更新したりできます。
Page オブジェクト
Page オブジェクトは Visio Web Access Web パーツのレンダリング領域で現在表示されているアクティブな Web 図面ページを示しています。Page オブジェクトのメソッドを使用して、図形の ID、図形の位置、および図形の周りの境界ボックスのサイズなどの、図形についての情報にアクセスし、ページ上で図形を選択することができます。また、表示されているページのズーム レベルと位置の取得および設定をすることができます。
Page オブジェクトのメソッドには、以下が含まれます。
前のコード例で示した getShapes メソッドに加えて、Vwa.Page.getSelectedShape Method、Vwa.Page.setSelectedShape Method、Vwa.Page.centerViewOnShape Method、および Vwa.Page.isShapeInView Method を使用して、ページ上の図形の情報にアクセスするか、操作をすることができます。
Vwa.Page.getZoom Method を使用するとページのズーム レベルを取得でき、Vwa.Page.setZoom Method を使用するとページのズーム レベルを設定できます。
Vwa.Page.getPosition Method を使用すると表示されているページの位置を取得でき、Vwa.Page.setPosition Method を使用すると表示されているページの位置を設定できます。
Vwa.Page.getId Method は現在表示されているページの ID を取得し、Vwa.Page.getSize Method はレンダリングされたページの高さと幅を取得します。
ShapeCollection オブジェクト
ShapeCollection オブジェクトは Visio Web Access Web パーツのレンダリング領域に現在表示されている Web 図面の、アクティブなページ上での図形オブジェクトのコレクションを示しています。
ShapeCollection オブジェクトのメソッドには、以下が含まれます。
アクティブなページ上での図形の数を返す Vwa.ShapeCollection.getCount Method。
Visio 図形名 (Vwa.ShapeCollection.getItemByName Method)、Web 図面図形 ID (Vwa.ShapeCollection.getItemById Method)、Visio 固有 ID (Vwa.ShapeCollection.getItemByGuid Method)、コレクション内のインデックス位置 (Vwa.ShapeCollection.getItemAtIndex Method) によってコレクション内の固有の図形を取得できるようにする 4 つのメソッド。
Shape オブジェクト
Shape オブジェクトは、アクティブな Web 図面ページ上での単一の図形を示しています。Shape オブジェクトのメソッドは、アクティブなページ上で特定の図形の情報を取得し、その図形の情報を処理できるようにします。
図形情報を提供するメソッドには、Visio の図形の名前を返す Vwa.Shape.getName Method、Web 図面内の図形の ID を返す Vwa.Shape.getId Method、Visio の図形の GUID を返す Vwa.Shape.getGuid Method、図形に関連するハイパーリンクの配列を返す Vwa.Shape.getHyperlinks Method、図形の境界ボックスの位置、高さ、および幅を返す Vwa.Shape.getBounds Method、そして図形に関連する図形データ アイテムの配列を返す Vwa.Shape.getShapeData Method があります。
図形を操作するメソッドには、図形のハイライトを追加あるいは削除する Vwa.Shape.addHighlight Method と Vwa.Shape.removeHighlight Method、そして視覚的図形オーバーレイを追加あるいは削除する Vwa.Shape.addOverlay Method、Vwa.Shape.addPredefinedOverlay Method、および Vwa.Shape.removeOverlay Method があります。