メインコンテンツまでスキップ

ダッシュボードを読み込む

Reveal ダッシュボードはサーバーに保存されます。クライアント アプリケーションは $.ig.RVDashboard.loadDashboard メソッドを呼び出し、読み込むダッシュボードの名前を渡します。ダッシュボードの要求はサーバーに送信され、サーバーは要求されたダッシュボードをクライアントに返信します。クライアントはサーバーから返信されてきたダッシュボードを受け取り、RevealView.dashboard プロパティに設定します。

デフォルトでは Reveal SDK はファイル パスからダッシュボードをロードする規約を使用しています。具体的には、Reveal SDK はサーバー上の作業ディレクトリにある Dashboards フォルダー内でダッシュボードを探します。

1 - サーバー アプリケーションで、作業ディレクトリに Dashboards という名前のフォルダを作成しその中にダッシュボード ファイルを配置します。

2 - クライアント アプリケーションで、$.ig.RevealSdkSettings.setBaseUrlメソッドを呼び出しサーバーの URL を渡します。デバッグ時には、サーバーの URL は https://localhost の後にポート番号が付いたものになります。

例:

$.ig.RevealSdkSettings.setBaseUrl("https://localhost:5111/");   
注意

サーバーがクライアント アプリケーションと異なる URL で動作している場合、$.ig.RevealSdkSettings.setBaseUrl を呼び出すことが必要です。サーバー アプリケーションとクライアント アプリケーションの両方が同じ URL で実行されている場合、このメソッドは必要ありません。このメソッドは一度だけ呼び出す必要があります。

3 - $.ig.RVDashboard.loadDashboard メソッドを呼び出し、拡張子 .rdash を除いたダッシュボード ファイル名を渡します。このメソッドには要求したダッシュボードをサーバーから受け取るコールバックがあります。コールバックでダッシュボードを受け取ったら、$.ig.RevealView のインスタンスを取得し、サーバーからの応答にあるダッシュボードを RevealView.dashboard プロパティにセットします。

$.ig.RVDashboard.loadDashboard("Sales", (dashboard) => {
var revealView = new $.ig.RevealView("#revealView");
revealView.dashboard = dashboard;
});
コードの取得

このサンプルのソースコードは GitHub にあります。

カスタム ダッシュボード プロバイダー

デフォルトの Dashboards ディレクトリと異なる場所をアプリケーションで使用する場合、代わりにダッシュボードをロードするためのカスタム ダッシュボード プロバイダを提供することができます。

1 - ダッシュボード プロバイダーを作成します。

public class DashboardProvider : IRVDashboardProvider
{
public Task<Dashboard> GetDashboardAsync(IRVUserContext userContext, string dashboardId)
{
throw new NotImplementedException();
}

public Task SaveDashboardAsync(IRVUserContext userContext, string dashboardId, Dashboard dashboard)
{
throw new NotImplementedException();
}
}

2 - ダッシュボード プロバイダーを Reveal SDK に登録します。

builder.Services.AddControllers().AddReveal( builder =>
{
builder.AddDashboardProvider<DashboardProvider>();
});

例: ファイル パスから読み込む

public class DashboardProvider : IRVDashboardProvider
{
public Task<Dashboard> GetDashboardAsync(IRVUserContext userContext, string dashboardId)
{
var filePath = Path.Combine(Environment.CurrentDirectory, $"MyDashboardsFolder/{dashboardId}.rdash");
var dashboard = new Dashboard(filePath);
return Task.FromResult(dashboard);
}

public Task SaveDashboardAsync(IRVUserContext userContext, string dashboardId, Dashboard dashboard)
{
throw new NotImplementedException();
}
}
備考

このサンプルのソースコードは GitHub にあります。

例: リソースから読み込む

1 - サーバー アプリケーションにリソースとして Reveal ダッシュボード .rdash ファイルを埋め込む。

ASP.NET サーバー アプリケーションにリソースとして Reveal ダッシュボード .rdash ファイルを埋め込むには、Visual Studio でダッシュボード ファイルのプロパティを開き、.rdash ファイルの ビルド アクション埋め込みリソース に設定します。

2 - ダッシュボード プロバイダーを作成します。

public class DashboardProvider : IRVDashboardProvider
{
public Task<Dashboard> GetDashboardAsync(IRVUserContext userContext, string dashboardId)
{
var resource = Assembly.GetExecutingAssembly().GetManifestResourceStream($"RevealSdk.Server.Dashboards.{dashboardId}.rdash");
using (resource)
{
var dashboard = new Dashboard(resource);
return Task.FromResult(dashboard);
}
}

public Task SaveDashboardAsync(IRVUserContext userContext, string dashboardId, Dashboard dashboard)
{
throw new NotImplementedException();
}
}
注記

Assembly.GetManifestResourceStream メソッドで提供するリソースの name には、.rdash ファイルの namespace とファイル名を含める必要があります。

コードの取得

このサンプルのソースコードは GitHub にあります。

例: JSON から読み込む

上級ユーザーや、Reveal ダッシュボードを .rdash ファイルではなく .json ファイルにシリアライズするユーザーのために、サーバー アプリケーションで Dashboard.LoadFromJsonAsync メソッドを使用してこれらの JSON ベースのファイルをロードすることができます。

public class DashboardProvider : IRVDashboardProvider
{
public Task<Dashboard> GetDashboardAsync(IRVUserContext userContext, string dashboardId)
{
var filePath = Path.Combine(Environment.CurrentDirectory, $"Dashboards/{dashboardId}.json");
var json = File.ReadAllText(filePath);
var dashboard = Dashboard.FromJsonString(json);
return Task.FromResult(dashboard);
}

public Task SaveDashboardAsync(IRVUserContext userContext, string dashboardId, Dashboard dashboard)
{
throw new NotImplementedException();
}
}
注意

Reveal ダッシュボードが JSON にシリアライズされた後にその内容を操作または変更すると、ダッシュボードの整合性が失われ、ダッシュボードの内容に不可逆的な損傷が生じる可能性があります。その結果、ダッシュボードの読み込みエラーもしくは読み込み失敗によってアプリケーションで実行時例外がスローされる可能性があります。

コードの取得

このサンプルのソースコードは GitHub にあります。