Skip to content

Commit 4efb122

Browse files
author
Amit Shuster
committed
Merged PR 3562: Visual level filters
Visual level filters update
1 parent 7fe67bd commit 4efb122

9 files changed

+583
-8
lines changed

dist/powerbi-client.d.ts

+36-2
Original file line numberDiff line numberDiff line change
@@ -419,6 +419,7 @@ declare module "ifilterable" {
419419
}
420420
declare module "visualDescriptor" {
421421
import * as models from 'powerbi-models';
422+
import { IFilterable } from "ifilterable";
422423
import { IPageNode } from "page";
423424
/**
424425
* A Visual node within a report hierarchy
@@ -440,7 +441,7 @@ declare module "visualDescriptor" {
440441
* @class VisualDescriptor
441442
* @implements {IVisualNode}
442443
*/
443-
export class VisualDescriptor implements IVisualNode {
444+
export class VisualDescriptor implements IVisualNode, IFilterable {
444445
/**
445446
* The visual name
446447
*
@@ -472,6 +473,39 @@ declare module "visualDescriptor" {
472473
*/
473474
page: IPageNode;
474475
constructor(page: IPageNode, name: string, title: string, type: string, layout: models.IVisualLayout);
476+
/**
477+
* Gets all visual level filters of the current visual.
478+
*
479+
* ```javascript
480+
* visual.getFilters()
481+
* .then(filters => { ... });
482+
* ```
483+
*
484+
* @returns {(Promise<models.IFilter[]>)}
485+
*/
486+
getFilters(): Promise<models.IFilter[]>;
487+
/**
488+
* Removes all filters from the current visual.
489+
*
490+
* ```javascript
491+
* visual.removeFilters();
492+
* ```
493+
*
494+
* @returns {Promise<void>}
495+
*/
496+
removeFilters(): Promise<void>;
497+
/**
498+
* Sets the filters on the current visual to 'filters'.
499+
*
500+
* ```javascript
501+
* visual.setFilters(filters);
502+
* .catch(errors => { ... });
503+
* ```
504+
*
505+
* @param {(models.IFilter[])} filters
506+
* @returns {Promise<void>}
507+
*/
508+
setFilters(filters: models.IFilter[]): Promise<void>;
475509
}
476510
}
477511
declare module "page" {
@@ -536,7 +570,7 @@ declare module "page" {
536570
*
537571
* ```javascript
538572
* page.getFilters()
539-
* .then(pages => { ... });
573+
* .then(filters => { ... });
540574
* ```
541575
*
542576
* @returns {(Promise<models.IFilter[]>)}

dist/powerbi.js

+55-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/powerbi.min.js

+3-3
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/page.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ export class Page implements IPageNode, IFilterable {
7070
*
7171
* ```javascript
7272
* page.getFilters()
73-
* .then(pages => { ... });
73+
* .then(filters => { ... });
7474
* ```
7575
*
7676
* @returns {(Promise<models.IFilter[]>)}

src/service.ts

+11
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,17 @@ export class Service implements IService {
145145
this.handleEvent(event);
146146
});
147147

148+
this.router.post(`/reports/:uniqueId/pages/:pageName/visuals/:visualName/events/:eventName`, (req, res) => {
149+
const event: IEvent<any> = {
150+
type: 'report',
151+
id: req.params.uniqueId,
152+
name: req.params.eventName,
153+
value: req.body
154+
};
155+
156+
this.handleEvent(event);
157+
});
158+
148159
this.router.post(`/dashboards/:uniqueId/events/:eventName`, (req, res) => {
149160
const event: IEvent<any> = {
150161
type: 'dashboard',

src/visualDescriptor.ts

+50-1
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ export interface IVisualNode {
2323
* @class VisualDescriptor
2424
* @implements {IVisualNode}
2525
*/
26-
export class VisualDescriptor implements IVisualNode {
26+
export class VisualDescriptor implements IVisualNode, IFilterable {
2727
/**
2828
* The visual name
2929
*
@@ -66,4 +66,53 @@ export class VisualDescriptor implements IVisualNode {
6666
this.layout = layout;
6767
this.page = page;
6868
}
69+
70+
/**
71+
* Gets all visual level filters of the current visual.
72+
*
73+
* ```javascript
74+
* visual.getFilters()
75+
* .then(filters => { ... });
76+
* ```
77+
*
78+
* @returns {(Promise<models.IFilter[]>)}
79+
*/
80+
getFilters(): Promise<models.IFilter[]> {
81+
return this.page.report.service.hpm.get<models.IFilter[]>(`/report/pages/${this.page.name}/visuals/${this.name}/filters`, { uid: this.page.report.config.uniqueId }, this.page.report.iframe.contentWindow)
82+
.then(response => response.body,
83+
response => {
84+
throw response.body;
85+
});
86+
}
87+
88+
/**
89+
* Removes all filters from the current visual.
90+
*
91+
* ```javascript
92+
* visual.removeFilters();
93+
* ```
94+
*
95+
* @returns {Promise<void>}
96+
*/
97+
removeFilters(): Promise<void> {
98+
return this.setFilters([]);
99+
}
100+
101+
/**
102+
* Sets the filters on the current visual to 'filters'.
103+
*
104+
* ```javascript
105+
* visual.setFilters(filters);
106+
* .catch(errors => { ... });
107+
* ```
108+
*
109+
* @param {(models.IFilter[])} filters
110+
* @returns {Promise<void>}
111+
*/
112+
setFilters(filters: models.IFilter[]): Promise<void> {
113+
return this.page.report.service.hpm.put<models.IError[]>(`/report/pages/${this.page.name}/visuals/${this.name}/filters`, filters, { uid: this.page.report.config.uniqueId }, this.page.report.iframe.contentWindow)
114+
.catch(response => {
115+
throw response.body;
116+
});
117+
}
69118
}

0 commit comments

Comments
 (0)