Skip to content

Commit e58b2e9

Browse files
author
Matt Mazzola
committed
Rewrite demo application to be split each scenario to separate file to match how the angular and ember demos work. This improves load times and allows easier linking.
1 parent a43d98a commit e58b2e9

File tree

13 files changed

+1313
-1068
lines changed

13 files changed

+1313
-1068
lines changed

demo/app/app.js

Lines changed: 0 additions & 767 deletions
This file was deleted.

demo/app/defaults.js

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
$(function () {
2+
var models = window['powerbi-client'].models;
3+
4+
console.log('Scenario 5: Default Page and/or Filter');
5+
6+
var staticReportUrl = 'https://powerbiembedapi.azurewebsites.net/api/dxt/reports/c4d31ef0-7b34-4d80-9bcb-5974d1405572';
7+
var $defaultPageReportContainer = $('#reportdefaults');
8+
var defaultPageReport;
9+
var defaultPageName = 'ReportSection2';
10+
var defaultFilter = new models.AdvancedFilter({
11+
table: "Store",
12+
column: "Name"
13+
}, "Or", [
14+
{
15+
operator: "Contains",
16+
value: "Wash"
17+
},
18+
{
19+
operator: "Contains",
20+
value: "Park"
21+
}
22+
]);
23+
24+
// Init
25+
fetch(staticReportUrl)
26+
.then(function (response) {
27+
if (response.ok) {
28+
return response.json()
29+
.then(function (embedConfig) {
30+
var defaultsEmbedConfig = $.extend({}, embedConfig, {
31+
pageName: defaultPageName,
32+
filter: defaultFilter.toJSON(),
33+
settings: {
34+
filterPaneEnabled: true,
35+
navContentPaneEnabled: true
36+
}
37+
});
38+
39+
defaultPageReport = powerbi.embed($defaultPageReportContainer.get(0), defaultsEmbedConfig);
40+
return defaultPageReport;
41+
});
42+
}
43+
else {
44+
return response.json()
45+
.then(error => {
46+
throw new Error(error);
47+
});
48+
}
49+
});
50+
});

demo/app/dynamic.js

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
$(function () {
2+
var models = window['powerbi-client'].models;
3+
4+
console.log('Scenario 2: Dynamic Embed');
5+
6+
// Declare Variables
7+
var allReportsUrl = 'https://powerbiembedapi.azurewebsites.net/api/reports';
8+
var $reportsList = $('#reportslist');
9+
var $resetButton = $('#resetButton');
10+
var $dynamicReportContainer = $('#reportdynamic');
11+
12+
// When report button is clicked embed the report
13+
$reportsList.on('click', 'button', function (event) {
14+
var button = event.target;
15+
var report = $(button).data('report');
16+
var url = allReportsUrl + '/' + report.id;
17+
18+
fetch(url)
19+
.then(function (response) {
20+
if (response.ok) {
21+
return response.json()
22+
.then(function (embedConfig) {
23+
return powerbi.embed($dynamicReportContainer.get(0), embedConfig);
24+
});
25+
}
26+
else {
27+
return response.json()
28+
.then(function (error) {
29+
throw new Error(error);
30+
});
31+
}
32+
});
33+
});
34+
35+
// When reset button is clicked reset container
36+
$resetButton.on('click', function (event) {
37+
powerbi.reset($dynamicReportContainer.get(0));
38+
});
39+
40+
// Helper function to generate HTML for each report
41+
function generateReportListItem(report) {
42+
var button = $('<button>')
43+
.attr({
44+
type: 'button'
45+
})
46+
.addClass('btn btn-success')
47+
.data('report', report)
48+
.text('Embed!');
49+
50+
var reportName = $('<span />')
51+
.addClass('report-name')
52+
.text(report.name)
53+
54+
var element = $('<li>')
55+
.append(reportName)
56+
.append(button);
57+
58+
return element;
59+
}
60+
61+
// Init
62+
fetch(allReportsUrl)
63+
.then(function (response) {
64+
if (response.ok) {
65+
return response.json()
66+
.then(function (reports) {
67+
reports
68+
.map(generateReportListItem)
69+
.forEach(function (element) {
70+
$reportsList.append(element);
71+
});
72+
});
73+
}
74+
});
75+
});

0 commit comments

Comments
 (0)