PowerBI-JavaScript学习日记(嵌入二:嵌入视图中创建和编辑报表、Service Details)

如何在嵌入视图中创建和编辑报表

Embed Token

创建报表所需相关的访问Token
Token具有以下作用范围:Dataset.Read Workspace.Report.Create

使用JS创建一个新的空白报表

var embedCreateConfiguration = {
    accessToken: 'eyJ0eXAiO...Qron7qYpY9MI',
    embedUrl: 'https://embedded.powerbi.com/ReportEmbed',
    datasetId: '5dac7a4a-4452-46b3-99f6-a25915e0fe55',
};

// 获取div元素
var reportContainer = $('#reportContainer')[0];

// 创建报表
var report = powerbi.createReport(reportContainer, embedCreateConfiguration);

保存报表

除非调用另存为操作,否则不会创建该报表,可以通过文件菜单或者JS来完成

var saveAsParameters = {
    name: "newReport"
};

// SaveAs report
report.saveAs(saveAsParameters);
important

仅在保存后才会创建此报表,保存后仍会以编辑模式显示数据集,而不是报表。需要重新加载新的报表

加载新的报表

为了与新报表交互,需要做嵌入,所以需要 新的token,然后调用embed方法

var embedConfiguration = {
    accessToken: 'eyJ0eXAiO...Qron7qYpY9MJ',
    embedUrl: 'https://embedded.powerbi.com/ReportEmbed',
    reportId: '5dac7a4a-4452-46b3-99f6-a25915e0fe54',
    viewMode: 'edit'
};

var reportContainer = $('#reportContainer')[0];
var report = powerbi.embed(reportContainer, embedConfiguration);
可使用“saved”事件自动保存和加载报表

实现自动触发saveAs然后加载报表,可以用saved事件
保存操作完成后会触发此事件,并且该事件会返回一个Json对象,其中包括新的reportId,reportName,以及操作是saveAs还是save

{
  "reportObjectId": "5dac7a4a-4452-46b3-99f6-a25915e0fe54",
  "reportName": "newReport",
  "saveAs": true,
  "originalReportObjectId": null
}

保存操作完成后触发的事件

<div id="reportContainer"></div>
<script>
var embedCreateConfiguration = {
        accessToken: 'eyJ0eXAiO...Qron7qYpY9MI',
        embedUrl: 'https://embedded.powerbi.com/appTokenReportEmbed',
        datasetId: '5dac7a4a-4452-46b3-99f6-a25915e0fe55',
    };
 
    var reportContainer = $('#reportContainer')[0];
    var report = powerbi.createReport(reportContainer, embedCreateConfiguration);


   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) {
        
         // get new Token
         var newReportId =  event.detail.reportObjectId;

        // create new Token. This is a function that the application should provide
        var newToken = createAccessToken(newReportId,scopes /*provide the wanted scopes*/);
        
        
    var embedConfiguration = {
        accessToken: newToken ,
        embedUrl: 'https://embedded.powerbi.com/appTokenReportEmbed',
        reportId: newReportId,
    };

    // Embed report
    var report = powerbi.embed(reportContainer, embedConfiguration);
       
   // report.off removes a given event handler if it exists.
   report.off("saved");
    });
</script>
Save Report

可以调用report.save()来保存用户的更改

await report.save();
检查报表是否保存

可以调用report.isSaved()来检查报表是否已经保存,可以避免客户丢失为保存的更改

bool isSaved = await report.isSaved();

Service Details

2.0版本以后,PBI不会在页面加载时自动在程序的DOM中搜索PBI嵌入的组建,需要做一些配置
1,如果在DOM渲染之前执行,可运行以下代码来设置DOM ready事件监听器,它将调用powerbi.init()

powerbi.enableAutoEmbed();

如果在DOM渲染之后执行可以调用:

powerbi.init();

这波操作会搜索具有powerbi-embed-url属性的元素,并嵌入

引用现有给定元素的PBI组件
var report = powerbi.get(element);
通过唯一的ID或name查找做嵌入
var report = powerbi.find('customReportName');
重置

如果想将已经嵌入元素的报表重置为初始状态,则调用powerbi.reset(element);
此方法会从service中删除嵌入并删除iframe,一般需要在父元素从DOM中移除所包含元素之前调用reset

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JavaScript嵌入C代码是通过使用WebAssembly技术实现的。WebAssembly是一种低级字节码,可以在Web浏览器运行高性能的编译语言,例如C、C++和Rust。 首先,我们需要使用C编译器将C代码转换为WebAssembly进制格式。可以使用诸如Emscripten之类的工具将C源代码编译为WebAssembly进制文件。这个工具链使我们能够将C代码编译成与WebAssembly兼容的格式。 接下来,我们可以使用JavaScript的WebAssembly API来加载和执行这些进制文件。WebAssembly提供了一组API,使我们可以加载WebAssembly模块,实例化模块,并在JavaScript调用其导出的函数。 在JavaScript,我们可以使用fetch函数来异步加载WebAssembly模块。加载完成后,我们可以使用WebAssembly.instantiate函数实例化WebAssembly模块。这将创建一个包含所有导出函数的实例。 一旦实例化了WebAssembly模块,我们可以使用JavaScript来调用C代码定义的函数。我们可以通过使用实例的exports对象来访问这些函数。在JavaScript,我们可以像调用普通的JavaScript函数一样调用这些导出函数。 总而言之,JavaScript嵌入C代码可以通过将C代码编译为WebAssembly进制文件,并使用WebAssembly API在JavaScript加载和实例化模块来实现。然后,我们可以使用JavaScript来调用C代码定义的函数。这为我们提供了一种在Web浏览器运行高性能C代码的方式。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值