2016-11-30 49 views
0

我有一个角1.5应用程序,使用双向电力嵌入JS库实例先进的过滤器,然后通过setFilters把它应用到嵌入式报告()函数Powerbi嵌入式高级过滤:如何申请使用日期

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是无效的。如果不满足类型约束”

  • “过滤器无效”

documentation判断虽然我认为我的过滤器结构正确......任何想法?我觉得它的东西很小,我很想念。

回答

1

我终于明白了这一点。在这里发布答案以防止其他人退出。在过滤器对象的日期从powerbi嵌入库已被格式化这样的:

“2016-12-01T18:52:11.148Z”

使用JavaScript日期对象.toISOString()或.toJSON()会做的伎俩。