Skip to content

Commit 3c30261

Browse files
author
Omri Armstrong
committed
Adding create, edit and save capabilities
1 parent 25494f9 commit 3c30261

22 files changed

Lines changed: 1152 additions & 139 deletions

demo/code-demo/scripts/codesamples.js

Lines changed: 110 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ function _Embed_BasicEmbed() {
2525
accessToken: txtAccessToken,
2626
embedUrl: txtEmbedUrl,
2727
id: txtEmbedReportId,
28+
permissions: 3/*All*/,
2829
settings: {
2930
filterPaneEnabled: true,
3031
navContentPaneEnabled: true
@@ -77,6 +78,39 @@ function _Embed_EmbedWithDefaultFilter() {
7778
powerbi.embed(reportContainer, embedConfiguration);
7879
}
7980

81+
function _Embed_Create() {
82+
// Read embed application token from textbox
83+
var txtAccessToken = $('#txtAccessToken').val();
84+
85+
// Read embed URL from textbox
86+
var txtEmbedUrl = $('#txtReportEmbed').val();
87+
88+
// Read dataset Id from textbox
89+
var txtEmbedDatasetId = $('#txtEmbedDatasetId').val();
90+
91+
// Embed create configuration used to describe the what and how to create report.
92+
// This object is used when calling powerbi.createReport.
93+
var embedCreateConfiguration = {
94+
accessToken: txtAccessToken,
95+
embedUrl: txtEmbedUrl,
96+
datasetId: txtEmbedDatasetId,
97+
};
98+
99+
// Grab the reference to the div HTML element that will host the report
100+
var reportContainer = $('#reportContainer')[0];
101+
102+
// Create report
103+
var report = powerbi.createReport(reportContainer, embedCreateConfiguration);
104+
105+
// Report.off removes a given event handler if it exists.
106+
report.off("loaded");
107+
108+
// Report.on will add an event handler which prints to Log window.
109+
report.on("loaded", function() {
110+
Log.logText("Loaded");
111+
});
112+
}
113+
80114
// ---- Report Operations ----------------------------------------------------
81115

82116
function _Report_GetId() {
@@ -251,6 +285,82 @@ function _Report_ExitFullScreen() {
251285
report.exitFullscreen();
252286
}
253287

288+
function _Report_switchModeEdit() {
289+
// Get a reference to the embedded report.
290+
report = powerbi.embeds[0];
291+
292+
// Switch to edit mode.
293+
report.switchMode("edit");
294+
}
295+
296+
function _Report_switchModeView() {
297+
// Get a reference to the embedded report.
298+
report = powerbi.embeds[0];
299+
300+
// Switch to view mode.
301+
report.switchMode("view");
302+
}
303+
304+
function _Report_save() {
305+
// Get a reference to report.
306+
report = powerbi.embeds[0];
307+
308+
// Save report
309+
report.save();
310+
311+
// report.off removes a given event handler if it exists.
312+
report.off("saved");
313+
314+
// report.on will add an event handler which prints to Log window.
315+
report.on("saved", function() {
316+
var reportObjectId = event.detail.reportObjectId;
317+
var isSaveAs = event.detail.saveAs;
318+
Log.logText("Save Report Completed, reportObjectId: " + reportObjectId);
319+
Log.logText("Is saveAs: " + isSaveAs.toString());
320+
});
321+
}
322+
323+
function _Report_saveAs() {
324+
// Get a reference to report.
325+
report = powerbi.embeds[0];
326+
327+
var saveAsParameters = {
328+
name: "newReport"
329+
};
330+
331+
// SaveAs report
332+
report.saveAs(saveAsParameters);
333+
334+
// report.off removes a given event handler if it exists.
335+
report.off("saved");
336+
337+
// report.on will add an event handler which prints to Log window.
338+
report.on("saved", function() {
339+
var reportObjectId = event.detail.reportObjectId;
340+
var isSaveAs = event.detail.saveAs;
341+
var name = event.detail.reportName;
342+
Log.logText("Report name " + name);
343+
Log.logText("Save Report Completed, new reportObjectId: " + reportObjectId);
344+
Log.logText("Is saveAs: " + isSaveAs.toString());
345+
});
346+
}
347+
348+
function _Report_setAccessToken() {
349+
// Get a reference to report.
350+
report = powerbi.embeds[0];
351+
352+
// New AccessToken
353+
var newAccessToken = "newAccessToken";
354+
355+
// Set new AccessToken
356+
report.setAccessToken(newAccessToken).then(function (result) {
357+
Log.log("AccessToken set");
358+
})
359+
.catch(function (errors) {
360+
Log.log(errors);
361+
});
362+
}
363+
254364
// ---- Page Operations ----------------------------------------------------
255365

256366
function _Page_SetActive() {

demo/code-demo/scripts/report.js

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,3 +54,22 @@ function OpenInteractStep() {
5454
LoadCodeArea("#embedCodeDiv", _Report_GetId);
5555
});
5656
}
57+
58+
function OpenCreateStep() {
59+
$("#steps-auth a").removeClass(active_class);
60+
$('#steps-embed a').addClass(active_class);
61+
$('#steps-interact a').removeClass(active_class);
62+
63+
$("#steps-auth .step-div").removeClass(active_div);
64+
$('#steps-embed .step-div').addClass(active_div);
65+
$('#steps-interact .step-div').removeClass(active_div);
66+
67+
// Hide Embed view in authorization step.
68+
$("#authorize-step-wrapper").hide();
69+
$("#embed-and-interact-steps-wrapper").show();
70+
71+
$("#settings").load("settings_create.html", function() {
72+
SetTextBoxesFromSessionOrUrlParam("#txtAccessToken", "#txtReportEmbed", "#txtEmbedDatasetId");
73+
LoadCodeArea("#embedCodeDiv", _Embed_Create);
74+
});
75+
}

demo/code-demo/scripts/step_authorize.js

Lines changed: 33 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
11
function OpenEmbedStepWithSampleValues(accessToken, embedUrl, reportId)
22
{
3-
SetSession(SessionKeys.AccessToken, accessToken);
4-
SetSession(SessionKeys.EmbedUrl, embedUrl);
5-
SetSession(SessionKeys.EmbedId, reportId);
6-
3+
setSession(accessToken, embedUrl, reportId);
74
OpenEmbedStep();
85
}
96

7+
function OpenCleanEmbedStep()
8+
{
9+
OpenEmbedStepWithSampleValues("","","");
10+
}
11+
1012
function OpenEmbedStepWithSample() {
1113
var staticReportUrl = 'https://powerbi-embed-api.azurewebsites.net/api/reports/c52af8ab-0468-4165-92af-dc39858d66ad';
1214
fetch(staticReportUrl).then(function (response) {
@@ -20,4 +22,31 @@ function OpenEmbedStepWithSample() {
2022
var accessToken = "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ2ZXIiOiIwLjIuMCIsIndjbiI6IlBvd2VyQmlBenVyZVNhbXBsZXMiLCJ3aWQiOiJmODFjMTk2Ni1lZGVlLTQxMWItOGY4YS1mODQ0NjAxOWIwNDQiLCJyaWQiOiJjNTJhZjhhYi0wNDY4LTQxNjUtOTJhZi1kYzM5ODU4ZDY2YWQiLCJpc3MiOiJQb3dlckJJU0RLIiwiYXVkIjoiaHR0cHM6Ly9hbmFseXNpcy53aW5kb3dzLm5ldC9wb3dlcmJpL2FwaSIsImV4cCI6MTg5MzQ0ODgwMCwibmJmIjoxNDgxMDM3MTY5fQ.m4SwqmRWA9rJgfl72lEQ_G-Ijpw9Up5YwmBOfXi00YU";
2123

2224
OpenEmbedStepWithSampleValues(accessToken, embedUrl, reportId);
25+
}
26+
27+
function OpenEmbedStepCreateWithSampleValues(accessToken, embedUrl, datasetId)
28+
{
29+
setSession(accessToken, embedUrl, datasetId);
30+
OpenCreateStep();
31+
}
32+
33+
function OpenCleanEmbedStepCreate()
34+
{
35+
OpenEmbedStepCreateWithSampleValues("","","");
36+
}
37+
38+
function OpenEmbedStepCreateWithSample() {
39+
// Default values - report with embed token which expires on 1/1/2030.
40+
var embedUrl = 'https://dxt.powerbi.com/appTokenReportEmbed?reportEmbedEditingEnabled=true';
41+
var datasetId = '56603ccc-e43f-46ad-ba2f-b9e9a145f0b7';
42+
var accessToken = "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ3Y24iOiJTYWdlRFhUV0MiLCJ3aWQiOiIwZmI4MGMyNC05ODlmLTQ4NDEtOWU0OS1iOWFjOWNhMzRmZTIiLCJkaWQiOiI1NjYwM2NjYy1lNDNmLTQ2YWQtYmEyZi1iOWU5YTE0NWYwYjciLCJ2ZXIiOiIwLjIuMCIsInR5cGUiOiJlbWJlZCIsInNjcCI6IkRhdGFzZXQuUmVhZCBXb3Jrc3BhY2UuUmVwb3J0LkNyZWF0ZSIsImlzcyI6IlBvd2VyQklTREsiLCJhdWQiOiJodHRwczovL2FuYWx5c2lzLndpbmRvd3MubmV0L3Bvd2VyYmkvYXBpIiwiZXhwIjoxNDkzNzE3MTU2LCJuYmYiOjE0ODUwNzM1NTZ9.3V7S7JinkJygkXaLtyK_StfYSR53Mbc56-VPFJFlETI";
43+
44+
OpenEmbedStepCreateWithSampleValues(accessToken, embedUrl, datasetId);
45+
}
46+
47+
function setSession(accessToken, embedUrl, datasetId)
48+
{
49+
SetSession(SessionKeys.AccessToken, accessToken);
50+
SetSession(SessionKeys.EmbedUrl, embedUrl);
51+
SetSession(SessionKeys.EmbedId, datasetId);
2352
}

demo/code-demo/scripts/step_embed.js

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,3 +70,25 @@ function Events_PageChanged() {
7070
function Events_DataSelected() {
7171
SetCode(_Events_DataSelected);
7272
}
73+
74+
// ---- Edit and Save Operations ----------------------------------------------------
75+
76+
function Report_switchModeEdit() {
77+
SetCode(_Report_switchModeEdit);
78+
}
79+
80+
function Report_switchModeView() {
81+
SetCode(_Report_switchModeView);
82+
}
83+
84+
function Report_save() {
85+
SetCode(_Report_save);
86+
}
87+
88+
function Report_saveAs() {
89+
SetCode(_Report_saveAs);
90+
}
91+
92+
function Report_setAccessToken() {
93+
SetCode(_Report_setAccessToken);
94+
}

demo/code-demo/scripts/step_interact.js

Lines changed: 26 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,13 @@ function OpenReportOperations() {
22
$("#report-operations-div").show();
33
$("#page-operations-div").hide();
44
$("#events-operations-div").hide();
5-
5+
$("#editandsave-operations-div").hide();
6+
67
$("#report-operations-li").addClass('active');
78
$('#page-operations-li').removeClass('active');
89
$('#events-operations-li').removeClass('active');
9-
10+
$('#editandsave-operations-li').removeClass('active');
11+
1012
$("#report-operations-div .function-ul li.active").click()
1113

1214
$("#selected-catogory-button").html("Report operations");
@@ -17,10 +19,12 @@ function OpenPageOperations() {
1719
$("#page-operations-div").show();
1820
$("#report-operations-div").hide();
1921
$("#events-operations-div").hide();
22+
$("#editandsave-operations-div").hide();
2023

2124
$("#page-operations-li").addClass('active');
2225
$('#report-operations-li').removeClass('active');
2326
$('#events-operations-li').removeClass('active');
27+
$('#editandsave-operations-li').removeClass('active');
2428

2529
$("#page-operations-div .function-ul li.active").click();
2630

@@ -32,17 +36,36 @@ function OpenEventOperations() {
3236
$("#page-operations-div").hide();
3337
$("#report-operations-div").hide();
3438
$("#events-operations-div").show();
39+
$("#editandsave-operations-div").hide();
3540

3641
$("#page-operations-li").removeClass('active');
3742
$('#report-operations-li').removeClass('active');
3843
$('#events-operations-li').addClass('active');
39-
44+
$('#editandsave-operations-li').removeClass('active');
45+
4046
$("#events-operations-div .function-ul li.active").click();
4147

4248
$("#selected-catogory-button").html("Events Listener");
4349
HideCategoriesList();
4450
}
4551

52+
function OpenEditAndSaveOperations() {
53+
$("#page-operations-div").hide();
54+
$("#report-operations-div").hide();
55+
$("#events-operations-div").hide();
56+
$("#editandsave-operations-div").show();
57+
58+
$("#page-operations-li").removeClass('active');
59+
$('#report-operations-li').removeClass('active');
60+
$('#events-operations-li').removeClass('active');
61+
$('#editandsave-operations-li').addClass('active');
62+
63+
$("#editandsave-operations-div .function-ul li.active").click();
64+
65+
$("#selected-catogory-button").html("Edit and save operations");
66+
HideCategoriesList();
67+
}
68+
4669
function HideCategoriesList() {
4770
$("#operations-ul-wrapper").hide();
4871
}
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
<div id="report-embed-table">
2+
3+
<div class="tabContainer">
4+
<ul class="nav nav-tabs">
5+
<li id="steps-embed" onclick="OpenCleanEmbedStep();">
6+
<a data-toggle="tab" href="#Embed">Embed</a>
7+
</li>
8+
<li class="active" id="steps-embed" onclick="OpenCreateStep();">
9+
<a data-toggle="tab" href="#Create">Create</a>
10+
</li>
11+
</ul>
12+
</div>
13+
14+
<div class="pageTitle">
15+
<h4>Create Report</h4>
16+
<h8>Fill in the fields below to get the code to create your report.</h8>
17+
<div class="spacer" />
18+
</div>
19+
<div class="inputLine">
20+
<h8>Embed App Token</h8>
21+
<div><input type="text" id="txtAccessToken" onchange="UpdateSession(this, SessionKeys.AccessToken);" /></div>
22+
</div>
23+
<div class="inputLine">
24+
<h8>Embed URL</h8>
25+
<div><input type="text" id="txtReportEmbed" onchange="UpdateSession(this, SessionKeys.EmbedUrl);" value="https://embedded.powerbi.com/appTokenReportEmbed"/></div>
26+
</div>
27+
<div class="inputLine">
28+
<h8>Dataset Id</h8>
29+
<div><input type="text" id="txtEmbedDatasetId" onchange="UpdateSession(this, SessionKeys.EmbedId);"/></div>
30+
</div>
31+
</div>

demo/code-demo/settings_embed.html

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,16 @@
11
<div id="report-embed-table">
2+
3+
<div class="tabContainer">
4+
<ul class="nav nav-tabs">
5+
<li class="active" id="steps-embed" onclick="OpenEmbedStep();">
6+
<a data-toggle="tab" href="#Embed">Embed</a>
7+
</li>
8+
<li id="steps-embed" onclick="OpenCleanEmbedStepCreate();">
9+
<a data-toggle="tab" href="#Create">Create</a>
10+
</li>
11+
</ul>
12+
</div>
13+
214
<div class="pageTitle">
315
<h4>Embed Report</h4>
416
<h8>Fill in the fields below to get the code to embed your report.</h8>

demo/code-demo/settings_interact.html

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,9 @@
1616
<li id="events-operations-li" onclick="OpenEventOperations();"></span>
1717
<span><a href="#">Events listener</a>
1818
</li>
19+
<li id="editandsave-operations-li" onclick="OpenEditAndSaveOperations();"></span>
20+
<span><a href="#">Edit and save operations</a>
21+
</li>
1922
</ul>
2023
<img src="images/arrow_flipped.png" onclick="HideCategoriesList();" />
2124
</div>
@@ -51,6 +54,15 @@
5154
<li class="" onclick="Events_DataSelected()">Data Selected</li>
5255
</ul>
5356
</div>
57+
<div id="editandsave-operations-div" class="operations-div" style="display: none;">
58+
<ul class="function-ul">
59+
<li class="" onclick="Report_switchModeEdit()">Enter edit mode</li>
60+
<li class="" onclick="Report_switchModeView()">Enter view mode</li>
61+
<li class="" onclick="Report_save()">Save report</li>
62+
<li class="" onclick="Report_saveAs()">SaveAs report</li>
63+
<li class="" onclick="Report_setAccessToken()">Set AccessToken</li>
64+
</ul>
65+
</div>
5466
</div>
5567
</div>
5668
</div>

demo/code-demo/step_authorize.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ <h3>Sample Report</h3>
77
</div>
88
<div class="settings">
99
<button id="GoToEmbedStepButton" class="blueButton" onclick="OpenEmbedStepWithSample()">Embed sample report</button>
10+
<button id="GoToEmbedStepButton" class="blueButton" onclick="OpenEmbedStepCreateWithSample()">Create embeded report with sample dataset</button>
1011
</div>
1112
</div>
1213

0 commit comments

Comments
 (0)