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