ダッシュボードを読み込む
Reveal ダッシュボードはサーバーに保存されます。クライアント アプリケーションは $.ig.RVDashboard.loadDashboard メソッドを呼び出し、読み込むダッシュボードの名前を渡します。ダッシュボードの要求はサーバーに送信され、サーバーは要求されたダッシュボードをクライアントに返信します。クライアントはサーバーから返信されてきたダッシュボードを受け取り、RevealView.dashboard プロパティに設定します。
デフォルトでは Reveal SDK はファイル パスからダッシュボードをロードする規約を使用しています。具体的には、Reveal SDK はサーバー上の作業ディレクトリにある Dashboards フォルダー内でダッシュボードを探します。
1 - サーバー アプリケーションで、作業ディレクトリに Dashboards という名前のフォルダを作成しその中にダッシュボード ファイルを配置します。
- ASP.NET
 - Java
 - Node.js
 

Java では現在デフォルトのダッシュボード ローダーはサポートされていません。カスタムのダッシュボード プ ロバイダーを作成する必要があります。

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 - ダッシュボード プロバイダーを作成します。
- ASP.NET
 - Java
 - Node.js
 
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();
    }
}
public class DashboardProvider implements IRVDashboardProvider {
    @Override
    public InputStream getDashboard(IRVUserContext userContext, String dashboardId) throws IOException {
        return null;
    }
    @Override
    public void saveDashboard(IRVUserContext arg0, String arg1, InputStream arg2) throws IOException {
        return null;
    }	
}
const dashboardProvider = async (userContext:IRVUserContext | null, dashboardId: string) => {
	return null;
}
2 - ダッシュボード プロバイダーを Reveal SDK に登録します。
- ASP.NET
 - Java
 - Node.js
 
builder.Services.AddControllers().AddReveal( builder =>
{
    builder.AddDashboardProvider<DashboardProvider>();
});
RevealEngineInitializer.initialize(new InitializeParameterBuilder().
    setDashboardProvider(new DashboardProvider()).
    build());
const revealOptions: RevealOptions = {
	dashboardProvider: dashboardProvider,
};
app.use("/", reveal(revealOptions));
例: ファイル パスから読み込む
- ASP.NET
 - Java
 - Node.js
 
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();
    }
}
public class RevealDashboardProvider implements IRVDashboardProvider {
    @Override
    public InputStream getDashboard(IRVUserContext userContext, String dashboardId) throws IOException {
        InputStream dashboardStream = new FileInputStream("dashboards/" + dashboardId + ".rdash");
        return dashboardStream;
    }
    @Override
    public void saveDashboard(IRVUserContext arg0, String arg1, InputStream arg2) throws IOException {
        
    }	
}
const dashboardProvider = async (userContext:IRVUserContext | null, dashboardId: string) => {
	return fs.createReadStream(`myDashboards/${dashboardId}.rdash`);
}
このサンプルのソースコードは GitHub にあります。
例: リソースから読み込む
1 - サーバー アプリケーションにリソースとして Reveal ダッシュボード .rdash ファイルを埋め込む。
- ASP.NET
 - Java
 
ASP.NET サーバー アプリケーションにリソースとして Reveal ダッシュボード .rdash ファイルを埋め込むには、Visual Studio でダッシュボード ファイルのプロパティを開き、.rdash ファイルの ビルド アクション を 埋め込みリソース に設定します。

Reveal ダッシュボード .rdash ファイルを Java サーバー アプリケーションのリソースとして埋め込むには、ダッシュボード ファイルを resources ディレクトリに配置します。

2 - ダッシュボード プロバイダーを作成します 。
- ASP.NET
 - Java
 
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 とファイル名を含める必要があります。
public class RevealDashboardProvider implements IRVDashboardProvider {
    @Override
    public InputStream getDashboard(IRVUserContext userContext, String dashboardId) throws IOException {
        InputStream dashboardStream = getClass().getResourceAsStream("/dashboards/" + dashboardId + ".rdash");
		return dashboardStream;
    }
    @Override
    public void saveDashboard(IRVUserContext arg0, String arg1, InputStream arg2) throws IOException {
        
    }	
}
このサンプルのソースコードは GitHub にあります。
例: JSON から読み込む
上級ユーザーや、Reveal ダッシュボードを .rdash ファイルではなく .json ファイルにシリアライズするユーザーのために、サーバー アプリケーションで Dashboard.LoadFromJsonAsync メソッドを使用してこれらの JSON ベースのファイルをロードすることができます。
- ASP.NET
 - Java
 - Node.js
 
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();
    }
}
この機能は現在 Java ではサポートされていません。
この機能は現在 Node.jsではサポートされていません。
Reveal ダッシュボードが JSON にシリアライズされた後にその内容を操作または変更すると、ダッシュボードの整合性が失われ、ダッシュボードの内容に不可逆的な損傷が生じる可能性があります。その結果、ダッシュボードの読み込みエラーもしくは読み込み失敗によってアプリケーションで実行時例外がスローされる可能性があります。
このサンプルのソースコードは GitHub にあります。