Power BI 組み込み js ライブラリを使用して高度なフィルターをインスタンス化し、それを setFilters() 関数を介して埋め込みレポートに適用する角度 1.5 アプリケーションがあります。
reportsCtrl.js
function onEmbedded(report) {
vm.embededReport = report;
if (vm.activeFilter) {
vm.embededReport.setFilters([vm.activeFilter]);
}
}
function buildFilter() {
var date1 = new Date(vm.selectedDate.toDateString());
var date2 = new Date(date1);
//add one day via mutator setDate function
date2.setDate(date1.getDate() + 1);
vm.activeFilter = new pbi.models.AdvancedFilter(
{
table: 'tblMessage',
column: 'event_timestamp'
},
'And',
[{
operator: 'GreaterThanOrEqual',
value: date1
},
{
operator: 'LessThan',
value: date2
}]
);
if (vm.embededReport) {
vm.embededReport.setFilters([vm.activeFilter]);
}
}
function loadReport(reportId) {
vm.reportConfig = null;
reportService.getReport(reportId, facilityId).then(function (response) {
//merge report with default configurations
vm.reportConfig = angular.merge({}, defaultReportConfig, response);
});
}
reports.tpl.html
<h1>{{vm.message}}</h1>
<div ng-repeat="report in vm.reports">
<pre>{{report | json}}</pre>
<button ng-click="vm.loadReport(report.id)">embed</button>
</div>
<button ng-click="vm.buildFilter()">
Add Filter
</button>
<h2>Acitve Filter!</h2>
<pre>{{vm.activeFilter | json}}</pre>
<div>
<powerbi-component ng-if="vm.reportConfig" options="vm.reportConfig" on-embedded="vm.onEmbedded($embed)" ></powerbi-component>
</div>
フィルターを適用すると、次の 3 つのエラーが発生します。
「.operator が無効です。必要な制約を満たしていません」
「.conditions.0.value が無効です。タイプの制約を満たしていません」
「フィルターが無効です」
ドキュメントから判断すると、フィルターは正しく構造化されていると思いますが、アイデアはありますか? 私が見逃している小さな何かのように感じます..