Skip to content

Commit

Permalink
Merge pull request #61 from RevealBi/filter-improvements
Browse files Browse the repository at this point in the history
Improve dashboard filter API
  • Loading branch information
brianlagunas authored Sep 5, 2024
2 parents 8529fc7 + 334df14 commit 80e9fc0
Show file tree
Hide file tree
Showing 11 changed files with 148 additions and 107 deletions.
52 changes: 25 additions & 27 deletions e2e/Sandbox/Factories/CampaignsDashboard.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using Reveal.Sdk.Dom;
using DocumentFormat.OpenXml.Spreadsheet;
using Reveal.Sdk.Dom;
using Reveal.Sdk.Dom.Data;
using Reveal.Sdk.Dom.Filters;
using Reveal.Sdk.Dom.Visualizations;
Expand All @@ -21,10 +22,11 @@ internal static RdashDocument CreateDashboard()
UseAutoLayout = false,
};

document.Filters.Add(new DashboardDateFilter()
var dateFilter = new DashboardDateFilter()
{
RuleType = DateRuleType.TrailingTwelveMonths
});
};
document.Filters.Add(dateFilter);

var campaignIdFilter = new DashboardDataFilter(excelDataSourceItem)
{
Expand All @@ -35,23 +37,19 @@ internal static RdashDocument CreateDashboard()
};
document.Filters.Add(campaignIdFilter);


var globalDateFilterBinding = new DashboardDateFilterBinding("Date");
var territoryFilterBinding = new DashboardDataFilterBinding(campaignIdFilter);

document.Visualizations.Add(CreateKpiTargetVisualization(excelDataSourceItem, territoryFilterBinding));
document.Visualizations.Add(CreateIndicatorVisualization("Website Traffic", "Traffic", excelDataSourceItem, territoryFilterBinding));
document.Visualizations.Add(CreateIndicatorVisualization("Conversions", "Conversions", excelDataSourceItem, territoryFilterBinding));
document.Visualizations.Add(CreateIndicatorVisualization("New Seats", "New Seats", excelDataSourceItem, territoryFilterBinding));
document.Visualizations.Add(CreateSplineAreaChartVisualization(excelDataSourceItem, globalDateFilterBinding, territoryFilterBinding));
document.Visualizations.Add(CreateStackedColumnChartVisualization(excelDataSourceItem, globalDateFilterBinding, territoryFilterBinding));
document.Visualizations.Add(CreateLineChartVisualization(excelDataSourceItem, globalDateFilterBinding, territoryFilterBinding));
document.Visualizations.Add(CreateDoughnutChartVisualization(excelDataSourceItem, globalDateFilterBinding, territoryFilterBinding));
document.Visualizations.Add(CreateKpiTargetVisualization(excelDataSourceItem, campaignIdFilter));
document.Visualizations.Add(CreateIndicatorVisualization("Website Traffic", "Traffic", excelDataSourceItem, campaignIdFilter));
document.Visualizations.Add(CreateIndicatorVisualization("Conversions", "Conversions", excelDataSourceItem, campaignIdFilter));
document.Visualizations.Add(CreateIndicatorVisualization("New Seats", "New Seats", excelDataSourceItem, campaignIdFilter));
document.Visualizations.Add(CreateSplineAreaChartVisualization(excelDataSourceItem, dateFilter, campaignIdFilter));
document.Visualizations.Add(CreateStackedColumnChartVisualization(excelDataSourceItem, dateFilter, campaignIdFilter));
document.Visualizations.Add(CreateLineChartVisualization(excelDataSourceItem, dateFilter, campaignIdFilter));
document.Visualizations.Add(CreateDoughnutChartVisualization(excelDataSourceItem, dateFilter, campaignIdFilter));

return document;
}

private static Visualization CreateKpiTargetVisualization(DataSourceItem excelDataSourceItem, Binding territoryFilterBinding)
private static Visualization CreateKpiTargetVisualization(DataSourceItem excelDataSourceItem, DashboardDataFilter filter)
{
var visualization = new KpiTargetVisualization(excelDataSourceItem)
{
Expand All @@ -60,7 +58,7 @@ private static Visualization CreateKpiTargetVisualization(DataSourceItem excelDa
RowSpan = 13,
};

visualization.FilterBindings.Add(territoryFilterBinding);
visualization.ConnectDashboardFilter(filter);

visualization.Date = new DimensionColumn()
{
Expand All @@ -83,7 +81,7 @@ private static Visualization CreateKpiTargetVisualization(DataSourceItem excelDa
return visualization;
}

private static Visualization CreateIndicatorVisualization(string title, string field, DataSourceItem excelDataSourceItem, Binding territoryFilterBinding)
private static Visualization CreateIndicatorVisualization(string title, string field, DataSourceItem excelDataSourceItem, DashboardDataFilter filter)
{
var visualization = new KpiTimeVisualization(excelDataSourceItem)
{
Expand All @@ -92,7 +90,7 @@ private static Visualization CreateIndicatorVisualization(string title, string f
RowSpan = 13,
};

visualization.FilterBindings.Add(territoryFilterBinding);
visualization.ConnectDashboardFilter(filter);

visualization.Date = new DimensionColumn()
{
Expand All @@ -110,7 +108,7 @@ private static Visualization CreateIndicatorVisualization(string title, string f
return visualization;
}

private static Visualization CreateSplineAreaChartVisualization(DataSourceItem excelDataSourceItem, params Binding[] filterBindings)
private static Visualization CreateSplineAreaChartVisualization(DataSourceItem excelDataSourceItem, params DashboardFilter[] filters)
{
var visualization = new SplineAreaChartVisualization(excelDataSourceItem)
{
Expand All @@ -119,7 +117,7 @@ private static Visualization CreateSplineAreaChartVisualization(DataSourceItem e
RowSpan = 28,
};

visualization.FilterBindings.AddRange(filterBindings);
visualization.ConnectDashboardFilters(filters);

visualization.Labels.Add(new DimensionColumn()
{
Expand All @@ -141,7 +139,7 @@ private static Visualization CreateSplineAreaChartVisualization(DataSourceItem e
return visualization;
}

private static Visualization CreateStackedColumnChartVisualization(DataSourceItem excelDataSourceItem, params Binding[] filterBindings)
private static Visualization CreateStackedColumnChartVisualization(DataSourceItem excelDataSourceItem, params DashboardFilter[] filters)
{
var visualization = new StackedColumnChartVisualization(excelDataSourceItem)
{
Expand All @@ -150,7 +148,7 @@ private static Visualization CreateStackedColumnChartVisualization(DataSourceIte
RowSpan = 28,
};

visualization.FilterBindings.AddRange(filterBindings);
visualization.ConnectDashboardFilters(filters);

visualization.Labels.Add(new DimensionColumn()
{
Expand All @@ -176,7 +174,7 @@ private static Visualization CreateStackedColumnChartVisualization(DataSourceIte
return visualization;
}

private static Visualization CreateLineChartVisualization(DataSourceItem excelDataSourceItem, params Binding[] filterBindings)
private static Visualization CreateLineChartVisualization(DataSourceItem excelDataSourceItem, params DashboardFilter[] filters)
{
var visualization = new LineChartVisualization(excelDataSourceItem)
{
Expand All @@ -185,7 +183,7 @@ private static Visualization CreateLineChartVisualization(DataSourceItem excelDa
RowSpan = 19,
};

visualization.FilterBindings.AddRange(filterBindings);
visualization.ConnectDashboardFilters(filters);

visualization.Labels.Add(new DimensionColumn()
{
Expand All @@ -203,7 +201,7 @@ private static Visualization CreateLineChartVisualization(DataSourceItem excelDa
return visualization;
}

private static Visualization CreateDoughnutChartVisualization(DataSourceItem excelDataSourceItem, params Binding[] filterBindings)
private static Visualization CreateDoughnutChartVisualization(DataSourceItem excelDataSourceItem, params DashboardFilter[] filters)
{
var visualization = new DoughnutChartVisualization(excelDataSourceItem)
{
Expand All @@ -212,7 +210,7 @@ private static Visualization CreateDoughnutChartVisualization(DataSourceItem exc
RowSpan = 19,
};

visualization.FilterBindings.AddRange(filterBindings);
visualization.ConnectDashboardFilters(filters);

visualization.Labels.Add(new DimensionColumn()
{
Expand Down
56 changes: 27 additions & 29 deletions e2e/Sandbox/Factories/SalesDashboard.cs
Original file line number Diff line number Diff line change
Expand Up @@ -21,10 +21,11 @@ internal static RdashDocument CreateDashboard()
UseAutoLayout = false,
};

document.Filters.Add(new DashboardDateFilter()
var dateFilter = new DashboardDateFilter()
{
Title = "My Date Filter"
});
};
document.Filters.Add(dateFilter);

var territoryFilter = new DashboardDataFilter(excelDataSourceItem)
{
Expand All @@ -35,22 +36,19 @@ internal static RdashDocument CreateDashboard()
};
document.Filters.Add(territoryFilter);

var globalDateFilterBinding = new DashboardDateFilterBinding("Date");
var territoryFilterBinding = new DashboardDataFilterBinding(territoryFilter);

document.Visualizations.Add(CreateKpiTargetVisualization(excelDataSourceItem, territoryFilterBinding));
document.Visualizations.Add(CreateSplineAreaChartVisualization(excelDataSourceItem, globalDateFilterBinding, territoryFilterBinding));
document.Visualizations.Add(CreateStackedColumnChartVisualization(excelDataSourceItem, globalDateFilterBinding, territoryFilterBinding));
document.Visualizations.Add(CreateIndicatorVisualization(excelDataSourceItem, territoryFilterBinding));
document.Visualizations.Add(CreateSparklineVisualization(excelDataSourceItem, globalDateFilterBinding, territoryFilterBinding));
document.Visualizations.Add(CreateBarChartVisualization(excelDataSourceItem, globalDateFilterBinding, territoryFilterBinding));
document.Visualizations.Add(CreateColumnChartVisualization(excelDataSourceItem, globalDateFilterBinding, territoryFilterBinding));
document.Visualizations.Add(CreateGaugeVisualization(excelDataSourceItem, globalDateFilterBinding, territoryFilterBinding));
document.Visualizations.Add(CreateKpiTargetVisualization(excelDataSourceItem, territoryFilter));
document.Visualizations.Add(CreateSplineAreaChartVisualization(excelDataSourceItem, dateFilter, territoryFilter));
document.Visualizations.Add(CreateStackedColumnChartVisualization(excelDataSourceItem, dateFilter, territoryFilter));
document.Visualizations.Add(CreateIndicatorVisualization(excelDataSourceItem, territoryFilter));
document.Visualizations.Add(CreateSparklineVisualization(excelDataSourceItem, dateFilter, territoryFilter));
document.Visualizations.Add(CreateBarChartVisualization(excelDataSourceItem, dateFilter, territoryFilter));
document.Visualizations.Add(CreateColumnChartVisualization(excelDataSourceItem, dateFilter, territoryFilter));
document.Visualizations.Add(CreateGaugeVisualization(excelDataSourceItem, dateFilter, territoryFilter));

return document;
}

private static Visualization CreateKpiTargetVisualization(DataSourceItem excelDataSourceItem, params Binding[] filterBindings)
private static Visualization CreateKpiTargetVisualization(DataSourceItem excelDataSourceItem, params DashboardFilter[] filters)
{
return new KpiTargetVisualization("Sales", excelDataSourceItem)
.SetDate("Date")
Expand All @@ -69,38 +67,38 @@ private static Visualization CreateKpiTargetVisualization(DataSourceItem excelDa
}
})
.SetTarget("Forecasted")
.AddFilterBindings(filterBindings)
.ConnectDashboardFilters(filters)
.SetPosition(20, 11);
}

private static Visualization CreateSplineAreaChartVisualization(DataSourceItem excelDataSourceItem, params Binding[] filterBindings)
private static Visualization CreateSplineAreaChartVisualization(DataSourceItem excelDataSourceItem, params DashboardFilter[] filters)
{
return new SplineAreaChartVisualization("New vs Renewal Sales", excelDataSourceItem)
.SetLabel(new DateDataField("Date") { AggregationType = DateAggregationType.Month })
.SetValues("New Sales", "Renewal Sales ")
.AddFilterBindings(filterBindings)
.ConnectDashboardFilters(filters)
.SetPosition(39, 31);
}

private static Visualization CreateStackedColumnChartVisualization(DataSourceItem excelDataSourceItem, params Binding[] filterBindings)
private static Visualization CreateStackedColumnChartVisualization(DataSourceItem excelDataSourceItem, params DashboardFilter[] filters)
{
return new StackedColumnChartVisualization("Sales by Product", excelDataSourceItem)
.SetLabel("Product")
.SetValues("New Sales", "Renewal Sales ")
.AddFilterBindings(filterBindings)
.ConnectDashboardFilters(filters)
.SetPosition(39, 18);
}

private static Visualization CreateIndicatorVisualization(DataSourceItem excelDataSourceItem, params Binding[] filterBindings)
private static Visualization CreateIndicatorVisualization(DataSourceItem excelDataSourceItem, params DashboardFilter[] filters)
{
return new KpiTimeVisualization("Total Opportunities", excelDataSourceItem)
.SetDate(new DateDataField("Date") { AggregationType = DateAggregationType.Year })
.SetValue("Total Opportunites")
.AddFilterBindings(filterBindings)
.ConnectDashboardFilters(filters)
.SetPosition(19, 11);
}

private static Visualization CreateSparklineVisualization(DataSourceItem excelDataSourceItem, params Binding[] filterBindings)
private static Visualization CreateSparklineVisualization(DataSourceItem excelDataSourceItem, params DashboardFilter[] filters)
{
return new SparklineVisualization("New Seats by Product", excelDataSourceItem)
.SetDate(new DateDataField("Date") { AggregationType = DateAggregationType.Month })
Expand All @@ -124,11 +122,11 @@ private static Visualization CreateSparklineVisualization(DataSourceItem excelDa
settings.DateFieldAlignment = Alignment.Left;
settings.AggregationType = SparklineAggregationType.Months;
})
.AddFilterBindings(filterBindings)
.ConnectDashboardFilters(filters)
.SetPosition(30, 31);
}

private static Visualization CreateBarChartVisualization(DataSourceItem excelDataSourceItem, params Binding[] filterBindings)
private static Visualization CreateBarChartVisualization(DataSourceItem excelDataSourceItem, params DashboardFilter[] filters)
{
return new BarChartVisualization("Sales", excelDataSourceItem)
.SetLabel("Employee")
Expand All @@ -143,20 +141,20 @@ private static Visualization CreateBarChartVisualization(DataSourceItem excelDat
ApplyMkFormat = true,
}
})
.AddFilterBindings(filterBindings)
.ConnectDashboardFilters(filters)
.SetPosition(43, 29);
}

private static Visualization CreateColumnChartVisualization(DataSourceItem excelDataSourceItem, params Binding[] filterBindings)
private static Visualization CreateColumnChartVisualization(DataSourceItem excelDataSourceItem, params DashboardFilter[] filters)
{
return new ColumnChartVisualization("", excelDataSourceItem)
.SetLabel(new DateDataField("Date") { AggregationType = DateAggregationType.Month })
.SetValues("Leads", "Hot Leads")
.AddFilterBindings(filterBindings)
.ConnectDashboardFilters(filters)
.SetPosition(46, 31);
}

private static Visualization CreateGaugeVisualization(DataSourceItem excelDataSourceItem, params Binding[] filterBindings)
private static Visualization CreateGaugeVisualization(DataSourceItem excelDataSourceItem, params DashboardFilter[] filters)
{
var visualization = new BulletGraphVisualization("Quotas by Sales Rep", excelDataSourceItem)
.SetLabel("Employee")
Expand Down Expand Up @@ -185,7 +183,7 @@ private static Visualization CreateGaugeVisualization(DataSourceItem excelDataSo
RuleType = NumberRuleType.TopItems,
Value = 10.0
})
.AddFilterBindings(filterBindings)
.ConnectDashboardFilters(filters)
.SetPosition(33, 29);

return visualization;
Expand Down
1 change: 1 addition & 0 deletions e2e/Sandbox/Helpers/DataSourceFactory.cs
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,7 @@ internal static DataSourceItem GetSalesDataSourceItem()
IsAnonymous = true,
Fields = GetSalesDataSourceFields(),
};
excelDataSourceItem.UseExcel("Sales");

return excelDataSourceItem;
}
Expand Down
13 changes: 8 additions & 5 deletions e2e/Sandbox/MainWindow.xaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
using Reveal.Sdk.Data.Snowflake;
using Reveal.Sdk.Dom;
using Reveal.Sdk.Dom.Data;
using Reveal.Sdk.Dom.Filters;
using Reveal.Sdk.Dom.Visualizations;
using Sandbox.Factories;
using Sandbox.Helpers;
Expand All @@ -34,6 +35,7 @@
using System.Threading.Tasks;
using System.Windows;
using Windows.Management.Deployment;
using Windows.Storage.Streams;

namespace Sandbox
{
Expand All @@ -44,8 +46,8 @@ public partial class MainWindow : Window
{
static readonly string _dashboardFilePath = Path.Combine(Environment.CurrentDirectory, "Dashboards");

//readonly string _readFilePath = Path.Combine(_dashboardFilePath, DashboardFileNames.Marketing);
readonly string _readFilePath = Path.Combine(_dashboardFilePath, "My Dashboard.rdash");
readonly string _readFilePath = Path.Combine(_dashboardFilePath, DashboardFileNames.Sales);
//readonly string _readFilePath = Path.Combine(_dashboardFilePath, "My Dashboard.rdash");

readonly string _saveJsonToPath = Path.Combine(_dashboardFilePath, "MyDashboard.json");
readonly string _saveRdashToPath = Path.Combine(_dashboardFilePath, DashboardFileNames.MyDashboard);
Expand Down Expand Up @@ -208,21 +210,22 @@ private void Clear_Dashboard(object sender, RoutedEventArgs e)

private async void Read_Dashboard(object sender, RoutedEventArgs e)
{
var document = RdashDocument.Load(_readFilePath);
var document = RdashDocument.Load(_readFilePath);

var json = document.ToJsonString();
_revealView.Dashboard = await RVDashboard.LoadFromJsonAsync(json);
}

private async void Create_Dashboard(object sender, RoutedEventArgs e)
{
//var document = MarketingDashboard.CreateDashboard();
//var document = SalesDashboard.CreateDashboard();
var document = SalesDashboard.CreateDashboard();
//var document = CampaignsDashboard.CreateDashboard();
//var document = HealthcareDashboard.CreateDashboard();
//var document = ManufacturingDashboard.CreateDashboard();
//var document = CustomDashboard.CreateDashboard();
//var document = RestDataSourceDashboards.CreateDashboard();
var document = SqlServerDataSourceDashboards.CreateDashboard();
//var document = SqlServerDataSourceDashboards.CreateDashboard();
//var document = DashboardLinkingDashboard.CreateDashboard();

var json = document.ToJsonString();
Expand Down
Loading

0 comments on commit 80e9fc0

Please sign in to comment.