Skip to content

Commit 7fe67bd

Browse files
committed
Merged PR 3652: Add support for SaaS Embed:
Add support for SaaS Embed: 1. Adding radio button to select the embed type 2. Support embed type via URL parametrer
1 parent cb7164a commit 7fe67bd

File tree

7 files changed

+91
-33
lines changed

7 files changed

+91
-33
lines changed

demo/v2-demo/report.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@
4646

4747
if (GetParameterByName("embedUrl") || GetParameterByName("embedId") || GetParameterByName("accessToken") || GetParameterByName("entityType"))
4848
{
49-
OpenEmbedStep(mode, entityType);
49+
OpenEmbedStep(mode, entityType, 0);
5050
}
5151
else
5252
{

demo/v2-demo/scripts/codesamples.js

Lines changed: 28 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,9 @@ function _Embed_BasicEmbed() {
1616
// Read report Id from textbox
1717
var txtEmbedReportId = $('#txtEmbedReportId').val();
1818

19+
// Read embed type from radio
20+
var tokenType = $('input:radio[name=tokenType]:checked').val();
21+
1922
// Get models. models contains enums that can be used.
2023
var models = window['powerbi-client'].models;
2124

@@ -28,7 +31,7 @@ function _Embed_BasicEmbed() {
2831
// You can find more information at https://github.com/Microsoft/PowerBI-JavaScript/wiki/Embed-Configuration-Details.
2932
var config= {
3033
type: 'report',
31-
tokenType: models.TokenType.Embed,
34+
tokenType: tokenType == '0' ? models.TokenType.Aad : models.TokenType.Embed,
3235
accessToken: txtAccessToken,
3336
embedUrl: txtEmbedUrl,
3437
id: txtEmbedReportId,
@@ -78,6 +81,9 @@ function _Embed_DashboardEmbed() {
7881
// Read dashboard Id from textbox
7982
var txtEmbedDashboardId = $('#txtEmbedDashboardId').val();
8083

84+
// Read embed type from radio
85+
var tokenType = $('input:radio[name=tokenType]:checked').val();
86+
8187
// Get models. models contains enums that can be used.
8288
var models = window['powerbi-client'].models;
8389

@@ -87,7 +93,7 @@ function _Embed_DashboardEmbed() {
8793
// You can find more information at https://github.com/Microsoft/PowerBI-JavaScript/wiki/Embed-Configuration-Details.
8894
var config = {
8995
type: 'dashboard',
90-
tokenType: models.TokenType.Embed,
96+
tokenType: tokenType == '0' ? models.TokenType.Aad : models.TokenType.Embed,
9197
accessToken: txtAccessToken,
9298
embedUrl: txtEmbedUrl,
9399
id: txtEmbedDashboardId
@@ -129,6 +135,9 @@ function _Mock_Embed_BasicEmbed(isEdit) {
129135
// Read report Id from textbox
130136
var txtEmbedReportId = $('#txtEmbedReportId').val();
131137

138+
// Read embed type from radio
139+
var tokenType = $('input:radio[name=tokenType]:checked').val();
140+
132141
// Get models. models contains enums that can be used.
133142
var models = window['powerbi-client'].models;
134143
var permissions = models.Permissions.All;
@@ -140,7 +149,7 @@ function _Mock_Embed_BasicEmbed(isEdit) {
140149
// You can find more information at https://github.com/Microsoft/PowerBI-JavaScript/wiki/Embed-Configuration-Details.
141150
var config= {
142151
type: 'report',
143-
tokenType: models.TokenType.Embed,
152+
tokenType: tokenType == '0' ? models.TokenType.Aad : models.TokenType.Embed,
144153
accessToken: txtAccessToken,
145154
embedUrl: txtEmbedUrl,
146155
id: txtEmbedReportId,
@@ -204,6 +213,9 @@ function _Embed_BasicEmbed_EditMode() {
204213
// Read report Id from textbox
205214
var txtEmbedReportId = $('#txtEmbedReportId').val();
206215

216+
// Read embed type from radio
217+
var tokenType = $('input:radio[name=tokenType]:checked').val();
218+
207219
// Get models. models contains enums that can be used.
208220
var models = window['powerbi-client'].models;
209221

@@ -213,7 +225,7 @@ function _Embed_BasicEmbed_EditMode() {
213225
// You can find more information at https://github.com/Microsoft/PowerBI-JavaScript/wiki/Embed-Configuration-Details.
214226
var config = {
215227
type: 'report',
216-
tokenType: models.TokenType.Embed,
228+
tokenType: tokenType == '0' ? models.TokenType.Aad : models.TokenType.Embed,
217229
accessToken: txtAccessToken,
218230
embedUrl: txtEmbedUrl,
219231
id: txtEmbedReportId,
@@ -301,6 +313,9 @@ function _Embed_TileEmbed() {
301313
// Read tile Id from textbox
302314
var txtEmbedTileId = $('#txtEmbedTileId').val();
303315

316+
// Read embed type from radio
317+
var tokenType = $('input:radio[name=tokenType]:checked').val();
318+
304319
// Get models. models contains enums that can be used.
305320
var models = window['powerbi-client'].models;
306321

@@ -309,7 +324,7 @@ function _Embed_TileEmbed() {
309324
// You can find more information at https://github.com/Microsoft/PowerBI-JavaScript/wiki/Embed-Configuration-Details.
310325
var config= {
311326
type: 'tile',
312-
tokenType: models.TokenType.Embed,
327+
tokenType: tokenType == '0' ? models.TokenType.Aad : models.TokenType.Embed,
313328
accessToken: txtAccessToken,
314329
embedUrl: txtEmbedUrl,
315330
id: txtEmbedTileId,
@@ -350,14 +365,17 @@ function _Embed_Create() {
350365

351366
// Read dataset Id from textbox
352367
var txtEmbedDatasetId = $('#txtEmbedDatasetId').val();
368+
369+
// Read embed type from radio
370+
var tokenType = $('input:radio[name=tokenType]:checked').val();
353371

354372
// Get models. models contains enums that can be used.
355373
var models = window['powerbi-client'].models;
356374

357375
// Embed create configuration used to describe the what and how to create report.
358376
// This object is used when calling powerbi.createReport.
359377
var embedCreateConfiguration = {
360-
tokenType: models.TokenType.Embed,
378+
tokenType: tokenType == '0' ? models.TokenType.Aad : models.TokenType.Embed,
361379
accessToken: txtAccessToken,
362380
embedUrl: txtEmbedUrl,
363381
datasetId: txtEmbedDatasetId,
@@ -399,14 +417,17 @@ function _Mock_Embed_Create() {
399417

400418
// Read dataset Id from textbox
401419
var txtEmbedDatasetId = $('#txtEmbedDatasetId').val();
420+
421+
// Read embed type from radio
422+
var tokenType = $('input:radio[name=tokenType]:checked').val();
402423

403424
// Get models. models contains enums that can be used.
404425
var models = window['powerbi-client'].models;
405426

406427
// Embed create configuration used to describe the what and how to create report.
407428
// This object is used when calling powerbi.createReport.
408429
var embedCreateConfiguration = {
409-
tokenType: models.TokenType.Embed,
430+
tokenType: tokenType == '0' ? models.TokenType.Aad : models.TokenType.Embed,
410431
accessToken: txtAccessToken,
411432
embedUrl: txtEmbedUrl,
412433
datasetId: txtEmbedDatasetId,

demo/v2-demo/scripts/report.js

Lines changed: 30 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,12 @@ function OpenEmbedStepFromNavPane()
2121
{
2222
var mode = GetSession(SessionKeys.EmbedMode);
2323
var entityType = GetSession(SessionKeys.EntityType);
24+
var tokenType = GetSession(SessionKeys.TokenType);
2425

25-
OpenEmbedStep(mode, entityType);
26+
OpenEmbedStep(mode, entityType, tokenType);
2627
}
2728

28-
function OpenEmbedStep(mode, entityType) {
29+
function OpenEmbedStep(mode, entityType, tokenType) {
2930
$('#steps-ul a').removeClass(active_class);
3031
$(".steps-li-active").removeClass(active_li);
3132

@@ -44,7 +45,7 @@ function OpenEmbedStep(mode, entityType) {
4445
if (entityType == EntityType.Report)
4546
{
4647
$("#settings").load("settings_embed.html", function() {
47-
OpenEmbedMode(mode, entityType);
48+
OpenEmbedMode(mode, entityType, tokenType);
4849

4950
// Fix report size ratio
5051
embedContainer.height(embedContainer.width() * 0.59);
@@ -58,7 +59,7 @@ function OpenEmbedStep(mode, entityType) {
5859
else if (entityType == EntityType.Dashboard)
5960
{
6061
$("#settings").load("settings_embed_dashboard.html", function() {
61-
OpenEmbedMode(mode, entityType);
62+
OpenEmbedMode(mode, entityType, tokenType);
6263

6364
// Fix report size ratio
6465
dashboardContainer.height(dashboardContainer.width() * 0.59);
@@ -72,7 +73,7 @@ function OpenEmbedStep(mode, entityType) {
7273
else if (entityType == EntityType.Tile)
7374
{
7475
$("#settings").load("settings_embed_tile.html", function() {
75-
OpenEmbedMode(mode, entityType);
76+
OpenEmbedMode(mode, entityType, tokenType);
7677

7778
tileContainer.height(tileContainer.width() * 0.59);
7879

@@ -85,7 +86,7 @@ function OpenEmbedStep(mode, entityType) {
8586
else if (entityType == EntityType.Qna)
8687
{
8788
$("#settings").load("settings_embed_qna.html", function() {
88-
OpenEmbedMode(mode, entityType);
89+
OpenEmbedMode(mode, entityType,tokenType);
8990

9091
qnaContainer.height(qnaContainer.width() * 0.59);
9192

@@ -180,7 +181,7 @@ function setCodeArea(mode, entityType)
180181
}
181182
}
182183

183-
function showEmbedSettings(mode, entityType)
184+
function showEmbedSettings(mode, entityType, tokenType)
184185
{
185186
if (entityType == EntityType.Report)
186187
{
@@ -197,15 +198,23 @@ function showEmbedSettings(mode, entityType)
197198
$(inputDivToHide).hide();
198199

199200
var embedModeRadios = $('input:radio[name=embedMode]');
200-
embedModeRadios.filter('[value='+ mode + ']').prop('checked', true);
201+
embedModeRadios.filter('[value=' + mode + ']').prop('checked', true);
202+
203+
var embedTypeRadios = $('input:radio[name=tokenType]');
204+
embedTypeRadios.filter('[value=' + tokenType + ']').prop('checked', true);
201205
}
202206
else if (entityType == EntityType.Dashboard)
203207
{
204208
// Do nothing.
205209
}
206210
}
207211

208-
function OpenEmbedMode(mode, entityType)
212+
function SetEmbedTypeToEmbedToken(tokenType)
213+
{
214+
SetSession(SessionKeys.TokenType, tokenType);
215+
}
216+
217+
function OpenEmbedMode(mode, entityType, tokenType)
209218
{
210219
if (entityType == EntityType.Report)
211220
{
@@ -215,13 +224,13 @@ function OpenEmbedMode(mode, entityType)
215224
{
216225
LoadSampleDatasetIntoSession().then(function (response) {
217226
SetTextBoxesFromSessionOrUrlParam("#txtCreateAccessToken", "#txtCreateReportEmbed", "#txtEmbedDatasetId");
218-
setCodeAndShowEmbedSettings(mode, entityType);
227+
setCodeAndShowEmbedSettings(mode, entityType, tokenType);
219228
});
220229
}
221230
else
222231
{
223232
SetTextBoxesFromSessionOrUrlParam("#txtCreateAccessToken", "#txtCreateReportEmbed", "#txtEmbedDatasetId");
224-
setCodeAndShowEmbedSettings(mode, entityType);
233+
setCodeAndShowEmbedSettings(mode, entityType, tokenType);
225234
}
226235
}
227236
else
@@ -230,13 +239,13 @@ function OpenEmbedMode(mode, entityType)
230239
{
231240
LoadSampleReportIntoSession().then(function (response) {
232241
SetTextBoxesFromSessionOrUrlParam("#txtAccessToken", "#txtReportEmbed", "#txtEmbedReportId");
233-
setCodeAndShowEmbedSettings(mode, entityType);
242+
setCodeAndShowEmbedSettings(mode, entityType, tokenType);
234243
});
235244
}
236245
else
237246
{
238247
SetTextBoxesFromSessionOrUrlParam("#txtAccessToken", "#txtReportEmbed", "#txtEmbedReportId");
239-
setCodeAndShowEmbedSettings(mode, entityType);
248+
setCodeAndShowEmbedSettings(mode, entityType, tokenType);
240249
}
241250
}
242251
}
@@ -246,13 +255,13 @@ function OpenEmbedMode(mode, entityType)
246255
{
247256
LoadSampleDashboardIntoSession().then(function (response) {
248257
SetTextBoxesFromSessionOrUrlParam("#txtAccessToken", "#txtDashboardEmbed", "#txtEmbedDashboardId");
249-
setCodeAndShowEmbedSettings(mode, entityType);
258+
setCodeAndShowEmbedSettings(mode, entityType, tokenType);
250259
});
251260
}
252261
else
253262
{
254263
SetTextBoxesFromSessionOrUrlParam("#txtAccessToken", "#txtDashboardEmbed", "#txtEmbedDashboardId");
255-
setCodeAndShowEmbedSettings(mode, entityType);
264+
setCodeAndShowEmbedSettings(mode, entityType, tokenType);
256265
}
257266
}
258267
else if (entityType == EntityType.Tile)
@@ -261,13 +270,13 @@ function OpenEmbedMode(mode, entityType)
261270
{
262271
LoadSampleTileIntoSession().then(function (response) {
263272
SetTextBoxesFromSessionOrUrlParam("#txtAccessToken", "#txtTileEmbed", "#txtEmbedTileId", "#txtEmbedDashboardId");
264-
setCodeAndShowEmbedSettings(mode, entityType);
273+
setCodeAndShowEmbedSettings(mode, entityType, tokenType);
265274
});
266275
}
267276
else
268277
{
269278
SetTextBoxesFromSessionOrUrlParam("#txtAccessToken", "#txtTileEmbed", "#txtEmbedTileId", "#txtEmbedDashboardId");
270-
setCodeAndShowEmbedSettings(mode, entityType);
279+
setCodeAndShowEmbedSettings(mode, entityType, tokenType);
271280
}
272281
}
273282
else if (entityType == EntityType.Qna)
@@ -276,20 +285,20 @@ function OpenEmbedMode(mode, entityType)
276285
{
277286
LoadSampleQnaIntoSession().then(function (response) {
278287
SetTextBoxesFromSessionOrUrlParam("#txtAccessToken", "#txtQnaEmbed", "#txtDatasetId");
279-
setCodeAndShowEmbedSettings(mode, entityType);
288+
setCodeAndShowEmbedSettings(mode, entityType, tokenType);
280289
});
281290
}
282291
else
283292
{
284293
SetTextBoxesFromSessionOrUrlParam("#txtAccessToken", "#txtQnaEmbed", "#txtDatasetId");
285-
setCodeAndShowEmbedSettings(mode, entityType);
294+
setCodeAndShowEmbedSettings(mode, entityType, tokenType);
286295
}
287296
}
288297
}
289298

290-
function setCodeAndShowEmbedSettings(mode, entityType) {
299+
function setCodeAndShowEmbedSettings(mode, entityType, tokenType) {
291300
setCodeArea(mode, entityType);
292-
showEmbedSettings(mode, entityType);
301+
showEmbedSettings(mode, entityType, tokenType);
293302
}
294303

295304
function OpenViewMode() {

demo/v2-demo/scripts/session_utils.js

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ const SessionKeys = {
1111
IsSampleTile: "IsSampleTile",
1212
IsSampleQna: "IsSampleQna",
1313
EmbedMode: "embedMode",
14+
TokenType: "tokenType",
1415
EntityType: "entityType",
1516
SampleId: "SampleId"
1617
};
@@ -75,6 +76,12 @@ function SetTextBoxesFromSessionOrUrlParam(accessTokenSelector, embedUrlSelector
7576
embedId = GetSession(SessionKeys.EmbedId);
7677
}
7778

79+
var tokenType = GetParameterByName(SessionKeys.TokenType);
80+
if (!tokenType)
81+
{
82+
tokenType = GetSession(SessionKeys.TokenType);
83+
}
84+
7885
var dashboardId = GetParameterByName(SessionKeys.DashboardId);
7986
if (!dashboardId) {
8087
dashboardId = GetSession(SessionKeys.DashboardId);
@@ -84,4 +91,10 @@ function SetTextBoxesFromSessionOrUrlParam(accessTokenSelector, embedUrlSelector
8491
$(embedUrlSelector).val(embedUrl);
8592
$(embedIdSelector).val(embedId);
8693
$(dashboardIdSelector).val(dashboardId);
94+
95+
//
96+
// Set the embed type (Saas or Embed token)
97+
//
98+
var embedTypeRadios = $('input:radio[name=tokenType]');
99+
embedTypeRadios.filter('[value=' + tokenType + ']').prop('checked', true);
87100
}

demo/v2-demo/settings_embed.html

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,22 @@ <h4>Embed Report</h4>
44
</div>
55

66
<h8>Select mode to embed your report in:</h8>
7-
<div class="spacer" />
87
<div id="modeSelector">
98
<div onclick="OpenViewMode();"><input type="radio" name="embedMode" value="view" checked="checked"> View mode </input></div>
109
<div onclick="OpenEditMode();"><input type="radio" name="embedMode" value="edit"> Edit mode</input></div>
1110
<div onclick="OpenCreateMode();"><input type="radio" name="embedMode" value="create"> Create mode</input></div>
1211
</div>
1312

14-
<div id="embedModeInput">
15-
<h8>Fill in the fields below to get the code to embed your report.</h8>
16-
<div class="spacer" />
13+
<h8>Select token type:</h8>
1714

15+
<div id="typeSelector">
16+
<div onclick="SetEmbedTypeToEmbedToken(1);"><input type="radio" name="tokenType" value="1" checked="checked"> Embed token </input></div>
17+
<div onclick="SetEmbedTypeToEmbedToken(0);"><input type="radio" name="tokenType" value="0"> Aad token</input></div>
18+
</div>
19+
20+
<div class="spacer" />
21+
<h8>Fill in the fields below to get the code to embed your report.</h8>
22+
<div id="embedModeInput">
1823
<div class="inputLine">
1924
<div class="inputLineTitle">Embed Token</div>
2025
<input type="text" id="txtAccessToken" onchange="UpdateSession(this, SessionKeys.AccessToken);" />

demo/v2-demo/settings_embed_dashboard.html

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,12 @@
22
<div class="pageTitle">
33
<h4>Embed Dashboard</h4>
44
</div>
5+
<h8>Select token type:</h8>
56

7+
<div id="typeSelector">
8+
<div onclick="SetSession(SessionKeys.TokenType, 1);"><input type="radio" name="tokenType" value="1" checked="checked"> Embed token </input></div>
9+
<div onclick="SetSession(SessionKeys.TokenType, 0);"><input type="radio" name="tokenType" value="0">Aad token</input></div>
10+
</div>
611
<div id="embedModeInput">
712
<h8>Fill in the fields below to get the code to embed your dashboard.</h8>
813
<div class="spacer" />

0 commit comments

Comments
 (0)