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