diff --git a/demo/code-demo/scripts/codesamples.js b/demo/code-demo/scripts/codesamples.js
index af07529d..ef57249e 100644
--- a/demo/code-demo/scripts/codesamples.js
+++ b/demo/code-demo/scripts/codesamples.js
@@ -7,6 +7,7 @@
// ---- Embed Code ----------------------------------------------------
function _Embed_BasicEmbed() {
+
// Read embed application token from textbox
var txtAccessToken = $('#txtAccessToken').val();
@@ -16,6 +17,13 @@ function _Embed_BasicEmbed() {
// Read report Id from textbox
var txtEmbedReportId = $('#txtEmbedReportId').val();
+ // Get models. models contains enums that can be used.
+ var models = window['powerbi-client'].models;
+
+ // Embed report in View mode or Edit mode based or checkbox value.
+ var checked = $('#viewModeCheckbox')[0].checked;
+ var viewMode = checked ? models.ViewMode.Edit : models.ViewMode.View;
+
// Embed configuration used to describe the what and how to embed.
// This object is used when calling powerbi.embed.
// This also includes settings and options such as filters.
@@ -25,13 +33,15 @@ function _Embed_BasicEmbed() {
accessToken: txtAccessToken,
embedUrl: txtEmbedUrl,
id: txtEmbedReportId,
+ permissions: models.Permissions.All /*gives maximum permissions*/,
+ viewMode: viewMode,
settings: {
filterPaneEnabled: true,
navContentPaneEnabled: true
}
};
- // Grab the reference to the div HTML element that will host the report.
+ // Get a reference to the embedded report HTML element
var reportContainer = $('#reportContainer')[0];
// Embed the report and display it within the div container.
@@ -44,6 +54,11 @@ function _Embed_BasicEmbed() {
report.on("loaded", function() {
Log.logText("Loaded");
});
+ report.on("error", function(event) {
+ Log.log(event.detail);
+
+ report.off("error");
+ });
}
function _Embed_EmbedWithDefaultFilter() {
@@ -77,11 +92,53 @@ function _Embed_EmbedWithDefaultFilter() {
powerbi.embed(reportContainer, embedConfiguration);
}
+function _Embed_Create() {
+ // Read embed application token from textbox
+ var txtAccessToken = $('#txtAccessToken').val();
+
+ // Read embed URL from textbox
+ var txtEmbedUrl = $('#txtReportEmbed').val();
+
+ // Read dataset Id from textbox
+ var txtEmbedDatasetId = $('#txtEmbedDatasetId').val();
+
+ // Embed create configuration used to describe the what and how to create report.
+ // This object is used when calling powerbi.createReport.
+ var embedCreateConfiguration = {
+ accessToken: txtAccessToken,
+ embedUrl: txtEmbedUrl,
+ datasetId: txtEmbedDatasetId,
+ };
+
+ // Grab the reference to the div HTML element that will host the report
+ var reportContainer = $('#reportContainer')[0];
+
+ // Create report
+ var report = powerbi.createReport(reportContainer, embedCreateConfiguration);
+
+ // Report.off removes a given event handler if it exists.
+ report.off("loaded");
+
+ // Report.on will add an event handler which prints to Log window.
+ report.on("loaded", function() {
+ Log.logText("Loaded");
+ });
+
+ report.on("error", function(event) {
+ Log.log(event.detail);
+
+ report.off("error");
+ });
+}
+
// ---- Report Operations ----------------------------------------------------
function _Report_GetId() {
+ // Get a reference to the embedded report HTML element
+ var reportContainer = $('#reportContainer')[0];
+
// Get a reference to the embedded report.
- report = powerbi.embeds[0];
+ report = powerbi.get(reportContainer);
// Retrieve the report id.
var reportId = report.getId();
@@ -96,8 +153,11 @@ function _Report_UpdateSettings() {
filterPaneEnabled: false
};
+ // Get a reference to the embedded report HTML element
+ var reportContainer = $('#reportContainer')[0];
+
// Get a reference to the embedded report.
- report = powerbi.embeds[0];
+ report = powerbi.get(reportContainer);
// Update the settings by passing in the new settings you have configured.
report.updateSettings(newSettings)
@@ -110,8 +170,11 @@ function _Report_UpdateSettings() {
}
function _Report_GetPages() {
+ // Get a reference to the embedded report HTML element
+ var reportContainer = $('#reportContainer')[0];
+
// Get a reference to the embedded report.
- report = powerbi.embeds[0];
+ report = powerbi.get(reportContainer);
// Retrieve the page collection and loop through to collect the
// page name and display name of each page and display the value.
@@ -128,8 +191,11 @@ function _Report_GetPages() {
}
function _Report_SetPage() {
+ // Get a reference to the embedded report HTML element
+ var reportContainer = $('#reportContainer')[0];
+
// Get a reference to the embedded report.
- report = powerbi.embeds[0];
+ report = powerbi.get(reportContainer);
// setPage will change the selected view to the page you indicate.
// This is the actual page name not the display name.
@@ -153,8 +219,11 @@ function _Report_SetPage() {
}
function _Report_GetFilters() {
+ // Get a reference to the embedded report HTML element
+ var reportContainer = $('#reportContainer')[0];
+
// Get a reference to the embedded report.
- report = powerbi.embeds[0];
+ report = powerbi.get(reportContainer);
// Get the filters applied to the report.
report.getFilters()
@@ -179,8 +248,11 @@ function _Report_SetFilters() {
values: ["Lindseys"]
};
+ // Get a reference to the embedded report HTML element
+ var reportContainer = $('#reportContainer')[0];
+
// Get a reference to the embedded report.
- report = powerbi.embeds[0];
+ report = powerbi.get(reportContainer);
// Set the filter for the report.
// Pay attention that setFilters receives an array.
@@ -194,8 +266,11 @@ function _Report_SetFilters() {
}
function _Report_RemoveFilters() {
+ // Get a reference to the embedded report HTML element
+ var reportContainer = $('#reportContainer')[0];
+
// Get a reference to the embedded report.
- report = powerbi.embeds[0];
+ report = powerbi.get(reportContainer);
// Remove the filters currently applied to the report.
report.removeFilters()
@@ -208,8 +283,11 @@ function _Report_RemoveFilters() {
}
function _Report_PrintCurrentReport() {
+ // Get a reference to the embedded report HTML element
+ var reportContainer = $('#reportContainer')[0];
+
// Get a reference to the embedded report.
- report = powerbi.embeds[0];
+ report = powerbi.get(reportContainer);
// Trigger the print dialog for your browser.
report.print()
@@ -222,8 +300,11 @@ function _Report_PrintCurrentReport() {
}
function _Report_Reload() {
+ // Get a reference to the embedded report HTML element
+ var reportContainer = $('#reportContainer')[0];
+
// Get a reference to the embedded report.
- report = powerbi.embeds[0];
+ report = powerbi.get(reportContainer);
// Reload the displayed report
report.reload()
@@ -236,26 +317,99 @@ function _Report_Reload() {
}
function _Report_FullScreen() {
+ // Get a reference to the embedded report HTML element
+ var reportContainer = $('#reportContainer')[0];
+
// Get a reference to the embedded report.
- report = powerbi.embeds[0];
+ report = powerbi.get(reportContainer);
// Displays the report in full screen mode.
report.fullscreen();
}
function _Report_ExitFullScreen() {
+ // Get a reference to the embedded report HTML element
+ var reportContainer = $('#reportContainer')[0];
+
// Get a reference to the embedded report.
- report = powerbi.embeds[0];
+ report = powerbi.get(reportContainer);
// Exits full screen mode.
report.exitFullscreen();
}
+function _Report_switchModeEdit() {
+ // Get a reference to the embedded report HTML element
+ var reportContainer = $('#reportContainer')[0];
+
+ // Get a reference to the embedded report.
+ report = powerbi.get(reportContainer);
+
+ // Switch to edit mode.
+ report.switchMode("edit");
+}
+
+function _Report_switchModeView() {
+ // Get a reference to the embedded report HTML element
+ var reportContainer = $('#reportContainer')[0];
+
+ // Get a reference to the embedded report.
+ report = powerbi.get(reportContainer);
+
+ // Switch to view mode.
+ report.switchMode("view");
+}
+
+function _Report_save() {
+ // Get a reference to the embedded report HTML element
+ var reportContainer = $('#reportContainer')[0];
+
+ // Get a reference to the embedded report.
+ report = powerbi.get(reportContainer);
+
+ // Save report
+ report.save();
+
+ // report.on will add an event handler which prints to Log window.
+ report.on("saved", function(event) {
+ Log.log(event.detail);
+
+ // report.off removes a given event handler if it exists.
+ report.off("saved");
+ });
+}
+
+function _Report_saveAs() {
+ // Get a reference to the embedded report HTML element
+ var reportContainer = $('#reportContainer')[0];
+
+ // Get a reference to the embedded report.
+ report = powerbi.get(reportContainer);
+
+ var saveAsParameters = {
+ name: "newReport"
+ };
+
+ // SaveAs report
+ report.saveAs(saveAsParameters);
+
+ // report.on will add an event handler which prints to Log window.
+ report.on("saved", function(event) {
+ Log.log(event.detail);
+
+ // report.off removes a given event handler if it exists.
+ report.off("saved");
+ });
+}
+
// ---- Page Operations ----------------------------------------------------
function _Page_SetActive() {
+ // Get a reference to the embedded report HTML element
+ var reportContainer = $('#reportContainer')[0];
+
// Get a reference to the embedded report.
- report = powerbi.embeds[0];
+ report = powerbi.get(reportContainer);
// Retrieve the page collection, and then set the second page to be active.
report.getPages()
@@ -270,8 +424,11 @@ function _Page_SetActive() {
}
function _Page_GetFilters() {
+ // Get a reference to the embedded report HTML element
+ var reportContainer = $('#reportContainer')[0];
+
// Get a reference to the embedded report.
- report = powerbi.embeds[0];
+ report = powerbi.get(reportContainer);
// Retrieve the page collection and get the filters for the first page.
report.getPages()
@@ -290,8 +447,11 @@ function _Page_GetFilters() {
}
function _Page_SetFilters() {
+ // Get a reference to the embedded report HTML element
+ var reportContainer = $('#reportContainer')[0];
+
// Get a reference to the embedded report.
- report = powerbi.embeds[0];
+ report = powerbi.get(reportContainer);
// Build the filter you want to use. For more information, see Constructing
// Filters in https://github.com/Microsoft/PowerBI-JavaScript/wiki/Filters.
@@ -323,8 +483,11 @@ function _Page_SetFilters() {
}
function _Page_RemoveFilters() {
+ // Get a reference to the embedded report HTML element
+ var reportContainer = $('#reportContainer')[0];
+
// Get a reference to the embedded report.
- report = powerbi.embeds[0];
+ report = powerbi.get(reportContainer);
// Retrieve the page collection and remove the filters for the first page.
report.getPages()
@@ -345,8 +508,11 @@ function _Page_RemoveFilters() {
// ---- Event Listener ----------------------------------------------------
function _Events_PageChanged() {
+ // Get a reference to the embedded report HTML element
+ var reportContainer = $('#reportContainer')[0];
+
// Get a reference to the embedded report.
- report = powerbi.embeds[0];
+ report = powerbi.get(reportContainer);
// Report.off removes a given event listener if it exists.
report.off("pageChanged");
@@ -364,8 +530,11 @@ function _Events_PageChanged() {
}
function _Events_DataSelected() {
+ // Get a reference to the embedded report HTML element
+ var reportContainer = $('#reportContainer')[0];
+
// Get a reference to the embedded report.
- report = powerbi.embeds[0];
+ report = powerbi.get(reportContainer);
// Report.off removes a given event listener if it exists.
report.off("dataSelected");
@@ -380,4 +549,25 @@ function _Events_DataSelected() {
// For example, a bar in a bar chart. You should see an entry in the Log window.
Log.logText("Select data to see events in Log window.");
+}
+
+function _Events_SaveAsTriggered() {
+ // Get a reference to the embedded report HTML element
+ var reportContainer = $('#reportContainer')[0];
+
+ // Get a reference to the embedded report.
+ report = powerbi.get(reportContainer);
+
+ // Report.off removes a given event listener if it exists.
+ report.off("saveAsTriggered");
+
+ // Report.on will add an event listener.
+ report.on("saveAsTriggered", function(event) {
+ Log.log(event);
+ });
+
+ // Select Run and then select SaveAs.
+ // You should see an entry in the Log window.
+
+ Log.logText("Select SaveAs to see events in Log window.");
}
\ No newline at end of file
diff --git a/demo/code-demo/scripts/report.js b/demo/code-demo/scripts/report.js
index 8b83e877..6ecd4b6d 100644
--- a/demo/code-demo/scripts/report.js
+++ b/demo/code-demo/scripts/report.js
@@ -54,3 +54,22 @@ function OpenInteractStep() {
LoadCodeArea("#embedCodeDiv", _Report_GetId);
});
}
+
+function OpenCreateStep() {
+ $("#steps-auth a").removeClass(active_class);
+ $('#steps-embed a').addClass(active_class);
+ $('#steps-interact a').removeClass(active_class);
+
+ $("#steps-auth .step-div").removeClass(active_div);
+ $('#steps-embed .step-div').addClass(active_div);
+ $('#steps-interact .step-div').removeClass(active_div);
+
+ // Hide Embed view in authorization step.
+ $("#authorize-step-wrapper").hide();
+ $("#embed-and-interact-steps-wrapper").show();
+
+ $("#settings").load("settings_create.html", function() {
+ SetTextBoxesFromSessionOrUrlParam("#txtAccessToken", "#txtReportEmbed", "#txtEmbedDatasetId");
+ LoadCodeArea("#embedCodeDiv", _Embed_Create);
+ });
+}
\ No newline at end of file
diff --git a/demo/code-demo/scripts/step_authorize.js b/demo/code-demo/scripts/step_authorize.js
index 2e1e4cad..d28d1f02 100644
--- a/demo/code-demo/scripts/step_authorize.js
+++ b/demo/code-demo/scripts/step_authorize.js
@@ -1,12 +1,14 @@
function OpenEmbedStepWithSampleValues(accessToken, embedUrl, reportId)
{
- SetSession(SessionKeys.AccessToken, accessToken);
- SetSession(SessionKeys.EmbedUrl, embedUrl);
- SetSession(SessionKeys.EmbedId, reportId);
-
+ setSession(accessToken, embedUrl, reportId);
OpenEmbedStep();
}
+function OpenCleanEmbedStep()
+{
+ OpenEmbedStepWithSampleValues("","","");
+}
+
function OpenEmbedStepWithSample() {
var staticReportUrl = 'https://powerbi-embed-api.azurewebsites.net/api/reports/c52af8ab-0468-4165-92af-dc39858d66ad';
fetch(staticReportUrl).then(function (response) {
@@ -20,4 +22,31 @@ function OpenEmbedStepWithSample() {
var accessToken = "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ2ZXIiOiIwLjIuMCIsIndjbiI6IlBvd2VyQmlBenVyZVNhbXBsZXMiLCJ3aWQiOiJmODFjMTk2Ni1lZGVlLTQxMWItOGY4YS1mODQ0NjAxOWIwNDQiLCJyaWQiOiJjNTJhZjhhYi0wNDY4LTQxNjUtOTJhZi1kYzM5ODU4ZDY2YWQiLCJpc3MiOiJQb3dlckJJU0RLIiwiYXVkIjoiaHR0cHM6Ly9hbmFseXNpcy53aW5kb3dzLm5ldC9wb3dlcmJpL2FwaSIsImV4cCI6MTg5MzQ0ODgwMCwibmJmIjoxNDgxMDM3MTY5fQ.m4SwqmRWA9rJgfl72lEQ_G-Ijpw9Up5YwmBOfXi00YU";
OpenEmbedStepWithSampleValues(accessToken, embedUrl, reportId);
+}
+
+function OpenEmbedStepCreateWithSampleValues(accessToken, embedUrl, datasetId)
+{
+ setSession(accessToken, embedUrl, datasetId);
+ OpenCreateStep();
+}
+
+function OpenCleanEmbedStepCreate()
+{
+ OpenEmbedStepCreateWithSampleValues("","","");
+}
+
+function OpenEmbedStepCreateWithSample() {
+ // Default values - report with embed token which expires on 1/1/2030.
+ var embedUrl = 'https://embedded.powerbi.com/appTokenReportEmbed?reportEmbedEditingEnabled=true';
+ var datasetId = '8f94aa87-a12b-4afa-9ff3-a0f78cd434b9';
+ var accessToken = "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ3Y24iOiJEYmctV0FCSS1QQUFTLTEtU0NVUyIsIndpZCI6IjhhMGNlZTNlLTc3ZmEtNGM1Ny1hZTQ4LWM4NzliOTkwMjQyNSIsImRpZCI6IjhmOTRhYTg3LWExMmItNGFmYS05ZmYzLWEwZjc4Y2Q0MzRiOSIsInZlciI6IjAuMi4wIiwidHlwZSI6ImVtYmVkIiwic2NwIjoiRGF0YXNldC5SZWFkIiwiaXNzIjoiUG93ZXJCSVNESyIsImF1ZCI6Imh0dHBzOi8vYW5hbHlzaXMud2luZG93cy5uZXQvcG93ZXJiaS9hcGkiLCJleHAiOjE0OTU1MzE5MjEsIm5iZiI6MTQ4Njg4ODMyMX0.Lzug-8hFwPEWNgCJovk338Fc6Y6lrAZOcOruDRzT-Qw";
+
+ OpenEmbedStepCreateWithSampleValues(accessToken, embedUrl, datasetId);
+}
+
+function setSession(accessToken, embedUrl, datasetId)
+{
+ SetSession(SessionKeys.AccessToken, accessToken);
+ SetSession(SessionKeys.EmbedUrl, embedUrl);
+ SetSession(SessionKeys.EmbedId, datasetId);
}
\ No newline at end of file
diff --git a/demo/code-demo/scripts/step_embed.js b/demo/code-demo/scripts/step_embed.js
index 1149557d..823c6249 100644
--- a/demo/code-demo/scripts/step_embed.js
+++ b/demo/code-demo/scripts/step_embed.js
@@ -70,3 +70,25 @@ function Events_PageChanged() {
function Events_DataSelected() {
SetCode(_Events_DataSelected);
}
+
+function Events_SaveAsTriggered() {
+ SetCode(_Events_SaveAsTriggered);
+}
+
+// ---- Edit and Save Operations ----------------------------------------------------
+
+function Report_switchModeEdit() {
+ SetCode(_Report_switchModeEdit);
+}
+
+function Report_switchModeView() {
+ SetCode(_Report_switchModeView);
+}
+
+function Report_save() {
+ SetCode(_Report_save);
+}
+
+function Report_saveAs() {
+ SetCode(_Report_saveAs);
+}
\ No newline at end of file
diff --git a/demo/code-demo/scripts/step_interact.js b/demo/code-demo/scripts/step_interact.js
index c6c85a11..5c7cc191 100644
--- a/demo/code-demo/scripts/step_interact.js
+++ b/demo/code-demo/scripts/step_interact.js
@@ -2,11 +2,13 @@ function OpenReportOperations() {
$("#report-operations-div").show();
$("#page-operations-div").hide();
$("#events-operations-div").hide();
-
+ $("#editandsave-operations-div").hide();
+
$("#report-operations-li").addClass('active');
$('#page-operations-li').removeClass('active');
$('#events-operations-li').removeClass('active');
-
+ $('#editandsave-operations-li').removeClass('active');
+
$("#report-operations-div .function-ul li.active").click()
$("#selected-catogory-button").html("Report operations");
@@ -17,10 +19,12 @@ function OpenPageOperations() {
$("#page-operations-div").show();
$("#report-operations-div").hide();
$("#events-operations-div").hide();
+ $("#editandsave-operations-div").hide();
$("#page-operations-li").addClass('active');
$('#report-operations-li').removeClass('active');
$('#events-operations-li').removeClass('active');
+ $('#editandsave-operations-li').removeClass('active');
$("#page-operations-div .function-ul li.active").click();
@@ -32,17 +36,36 @@ function OpenEventOperations() {
$("#page-operations-div").hide();
$("#report-operations-div").hide();
$("#events-operations-div").show();
+ $("#editandsave-operations-div").hide();
$("#page-operations-li").removeClass('active');
$('#report-operations-li').removeClass('active');
$('#events-operations-li').addClass('active');
-
+ $('#editandsave-operations-li').removeClass('active');
+
$("#events-operations-div .function-ul li.active").click();
$("#selected-catogory-button").html("Events Listener");
HideCategoriesList();
}
+function OpenEditAndSaveOperations() {
+ $("#page-operations-div").hide();
+ $("#report-operations-div").hide();
+ $("#events-operations-div").hide();
+ $("#editandsave-operations-div").show();
+
+ $("#page-operations-li").removeClass('active');
+ $('#report-operations-li').removeClass('active');
+ $('#events-operations-li').removeClass('active');
+ $('#editandsave-operations-li').addClass('active');
+
+ $("#editandsave-operations-div .function-ul li.active").click();
+
+ $("#selected-catogory-button").html("Edit and save operations");
+ HideCategoriesList();
+}
+
function HideCategoriesList() {
$("#operations-ul-wrapper").hide();
}
diff --git a/demo/code-demo/settings_create.html b/demo/code-demo/settings_create.html
new file mode 100644
index 00000000..b62f884f
--- /dev/null
+++ b/demo/code-demo/settings_create.html
@@ -0,0 +1,31 @@
+
+ Fill in the fields below to get the code to create your report.
+
+
+
+ Embed App Token
+
+
+
+ Embed URL
+
+
+
+ Dataset Id
+
+
+
\ No newline at end of file
diff --git a/demo/code-demo/settings_embed.html b/demo/code-demo/settings_embed.html
index 8aded0e2..4010e078 100644
--- a/demo/code-demo/settings_embed.html
+++ b/demo/code-demo/settings_embed.html
@@ -1,4 +1,16 @@
Fill in the fields below to get the code to embed your report.
@@ -16,4 +28,7 @@
Embed Report
Report Id
+
+
+
\ No newline at end of file
diff --git a/demo/code-demo/settings_interact.html b/demo/code-demo/settings_interact.html
index 4910f444..232a697b 100644
--- a/demo/code-demo/settings_interact.html
+++ b/demo/code-demo/settings_interact.html
@@ -16,6 +16,9 @@