Linking Dashboards
The Reveal SDK supports dashboard linking, which allows users to navigate through dashboards. By moving from dashboard to dashboard, you can go from a high level overview of the business' reality to a more detailed view with the specifics.
From a Reveal SDK perspective, dashboard linking is invoked when an end-user clicks on a link in a visualization which invokes the loading of another dashboard.
Currently, dashboard links cannot be created with the Reveal SDK. You must use a native Reveal application such as Slingshot
Respond to a Dashboard Link
To respond to when a Dashboard Link is clicked within a dashboard, add an event handler to the RevealView.VisualizationLinkingDashboard
event.
<rv:RevealView x:Name="_revealView"
VisualizationLinkingDashboard="RevealView_VisualizationLinkingDashboard" />
private void RevealView_VisualizationLinkingDashboard(object sender, VisualizationLinkingDashboardEventArgs e)
{
}
The VisualizationLinkingDashboardEventArgs
has the following properties:
- DashboardId - the id of the dashboard being requested
- Title - the title of the dashboard being requested
- Url - the URL of the dashboard being requested (if applicable)
- Callback - this delegate is used to provide the
RVDashboard
stream back to theRevealView
to be loaded
Example: Linking to a Dashboard
In this example, we are handling the RevealView.VisualizationLinkingDashboard
event in response to an end-user clicking on a visualization in our Marketing dashboard. This link should take us to the Campaigns dashboard when clicked.
To do this, we get the file path to the Campaigns.rdash file from our Dashboards directory. Once we have the file path, we then create a new FileStream
using our path and provide that stream to the e.Callback
.
private void RevealView_VisualizationLinkingDashboard(object sender, VisualizationLinkingDashboardEventArgs e)
{
var path = Path.Combine(Environment.CurrentDirectory, "Dashboards/Campaigns.rdash");
using (var stream = File.OpenRead(path))
{
e.Callback(e.DashboardId, stream);
}
}
The source code to this sample can be found on GitHub