Skip to content

Commit 1264c1f

Browse files
author
Anchal Gupta
committed
Merged PR 178954: Add target object different methods and test cases
**This PR adds the following features in JS SDK:** 1. Added below methods: withColumnTarget withMeasureTarget withHierarchyLevelTarget WithColumnAggregation withHierarchyLevelAggregationTarget 2. Added test cases **Checklist** - [X] Build and test scripts are passing, if available - [X] Open errors/warning details are shared with the reviewer - [X] There are no violations to the applicable coding guidelines - [X] Application has a consistent exception management setup - [X] Code does not contain commented code - [X] Is testing performed and results captured in ADO and list of test cases executed shared in PR? - [X] Generic exception type is not handled - [X] Stacktrace of error is not returned - [X] All external packages/libraries are installed from an online package manager Related work items: #605702
1 parent 3c87656 commit 1264c1f

File tree

10 files changed

+1023
-394
lines changed

10 files changed

+1023
-394
lines changed

dist/powerbi-client.d.ts

Lines changed: 89 additions & 107 deletions
Original file line numberDiff line numberDiff line change
@@ -2290,47 +2290,95 @@ declare module "factories" {
22902290
export const routerFactory: IRouterFactory;
22912291
}
22922292
declare module "FilterBuilders/filterBuilder" {
2293-
import { Filter, IFilterTarget } from "powerbi-models";
2293+
import { IFilterTarget } from "powerbi-models";
22942294
/**
22952295
* Generic filter builder for BasicFilter, AdvancedFilter, RelativeDate, RelativeTime and TopN
22962296
*
2297-
* @interface IFilterBuilder
2297+
* @class
22982298
*/
2299-
export interface IFilterBuilder {
2300-
withTargetObject(target: IFilterTarget): IFilterBuilder;
2301-
build(): Filter;
2299+
export class FilterBuilder {
2300+
target: IFilterTarget;
2301+
/**
2302+
* Sets target property for filter with target object
2303+
*
2304+
* ```javascript
2305+
* const target = {
2306+
* table: 'table1',
2307+
* column: 'column1'
2308+
* };
2309+
*
2310+
* const filterBuilder = new FilterBuilder().withTargetObject(target);
2311+
* ```
2312+
*
2313+
* @returns {FilterBuilder}
2314+
*/
2315+
withTargetObject(target: IFilterTarget): this;
2316+
/**
2317+
* Sets target property for filter with column target object
2318+
*
2319+
* ```
2320+
* const filterBuilder = new FilterBuilder().withColumnTarget(tableName, columnName);
2321+
* ```
2322+
*
2323+
* @returns {FilterBuilder}
2324+
*/
2325+
withColumnTarget(tableName: string, columnName: string): this;
2326+
/**
2327+
* Sets target property for filter with measure target object
2328+
*
2329+
* ```
2330+
* const filterBuilder = new FilterBuilder().withMeasureTarget(tableName, measure);
2331+
* ```
2332+
*
2333+
* @returns {FilterBuilder}
2334+
*/
2335+
withMeasureTarget(tableName: string, measure: string): this;
2336+
/**
2337+
* Sets target property for filter with hierarchy level target object
2338+
*
2339+
* ```
2340+
* const filterBuilder = new FilterBuilder().withHierarchyLevelTarget(tableName, hierarchy, hierarchyLevel);
2341+
* ```
2342+
*
2343+
* @returns {FilterBuilder}
2344+
*/
2345+
withHierarchyLevelTarget(tableName: string, hierarchy: string, hierarchyLevel: string): this;
2346+
/**
2347+
* Sets target property for filter with column aggregation target object
2348+
*
2349+
* ```
2350+
* const filterBuilder = new FilterBuilder().withColumnAggregation(tableName, columnName, aggregationFunction);
2351+
* ```
2352+
*
2353+
* @returns {FilterBuilder}
2354+
*/
2355+
withColumnAggregation(tableName: string, columnName: string, aggregationFunction: string): this;
2356+
/**
2357+
* Sets target property for filter with hierarchy level aggregation target object
2358+
*
2359+
* ```
2360+
* const filterBuilder = new FilterBuilder().withHierarchyLevelAggregationTarget(tableName, hierarchy, hierarchyLevel, aggregationFunction);
2361+
* ```
2362+
*
2363+
* @returns {FilterBuilder}
2364+
*/
2365+
withHierarchyLevelAggregationTarget(tableName: string, hierarchy: string, hierarchyLevel: string, aggregationFunction: string): this;
23022366
}
23032367
}
23042368
declare module "FilterBuilders/basicFilterBuilder" {
2305-
import { BasicFilter, IFilterTarget } from "powerbi-models";
2306-
import { IFilterBuilder } from "FilterBuilders/filterBuilder";
2369+
import { BasicFilter } from "powerbi-models";
2370+
import { FilterBuilder } from "FilterBuilders/filterBuilder";
23072371
/**
23082372
* Power BI Basic filter builder component
23092373
*
23102374
* @export
23112375
* @class BasicFilterBuilder
2312-
* @implements {IFilterBuilder}
2376+
* @extends {FilterBuilder}
23132377
*/
2314-
export class BasicFilterBuilder implements IFilterBuilder {
2315-
private target;
2378+
export class BasicFilterBuilder extends FilterBuilder {
23162379
private values;
23172380
private operator;
23182381
private isRequireSingleSelection;
2319-
/**
2320-
* Sets target property for Basic filter with target object
2321-
*
2322-
* ```javascript
2323-
* const target = {
2324-
* table: 'table1',
2325-
* column: 'column1'
2326-
* };
2327-
*
2328-
* const basicFilterBuilder = new BasicFilterBuilder().withTargetObject(target);
2329-
* ```
2330-
*
2331-
* @returns {BasicFilterBuilder}
2332-
*/
2333-
withTargetObject(target: IFilterTarget): BasicFilterBuilder;
23342382
/**
23352383
* Sets In as operator for Basic filter
23362384
*
@@ -2389,34 +2437,18 @@ declare module "FilterBuilders/basicFilterBuilder" {
23892437
}
23902438
}
23912439
declare module "FilterBuilders/advancedFilterBuilder" {
2392-
import { AdvancedFilter, IFilterTarget, AdvancedFilterConditionOperators } from "powerbi-models";
2393-
import { IFilterBuilder } from "FilterBuilders/filterBuilder";
2440+
import { AdvancedFilter, AdvancedFilterConditionOperators } from "powerbi-models";
2441+
import { FilterBuilder } from "FilterBuilders/filterBuilder";
23942442
/**
23952443
* Power BI Advanced filter builder component
23962444
*
23972445
* @export
23982446
* @class AdvancedFilterBuilder
2399-
* @implements {IFilterBuilder}
2447+
* @extends {FilterBuilder}
24002448
*/
2401-
export class AdvancedFilterBuilder implements IFilterBuilder {
2402-
private target;
2449+
export class AdvancedFilterBuilder extends FilterBuilder {
24032450
private logicalOperator;
24042451
private conditions;
2405-
/**
2406-
* Sets target property for Advanced filter with target object
2407-
*
2408-
* ```javascript
2409-
* const target = {
2410-
* table: 'table1',
2411-
* column: 'column1'
2412-
* };
2413-
*
2414-
* const advancedFilterBuilder = new AdvancedFilterBuilder().withTargetObject(target);
2415-
* ```
2416-
*
2417-
* @returns {AdvancedFilterBuilder}
2418-
*/
2419-
withTargetObject(target: IFilterTarget): AdvancedFilterBuilder;
24202452
/**
24212453
* Sets And as logical operator for Advanced filter
24222454
*
@@ -2465,35 +2497,19 @@ declare module "FilterBuilders/advancedFilterBuilder" {
24652497
}
24662498
}
24672499
declare module "FilterBuilders/topNFilterBuilder" {
2468-
import { IFilterTarget, ITarget, TopNFilter } from "powerbi-models";
2469-
import { IFilterBuilder } from "FilterBuilders/filterBuilder";
2500+
import { ITarget, TopNFilter } from "powerbi-models";
2501+
import { FilterBuilder } from "FilterBuilders/filterBuilder";
24702502
/**
24712503
* Power BI Top N filter builder component
24722504
*
24732505
* @export
24742506
* @class TopNFilterBuilder
2475-
* @implements {IFilterBuilder}
2507+
* @extends {FilterBuilder}
24762508
*/
2477-
export class TopNFilterBuilder implements IFilterBuilder {
2478-
private target;
2509+
export class TopNFilterBuilder extends FilterBuilder {
24792510
private itemCount;
24802511
private operator;
24812512
private orderByTargetValue;
2482-
/**
2483-
* Sets target property for Top N filter with target object
2484-
*
2485-
* ```javascript
2486-
* const target = {
2487-
* table: 'table1',
2488-
* column: 'column1'
2489-
* };
2490-
*
2491-
* const topNFilterBuilder = new TopNFilterBuilder().withTargetObject(target);
2492-
* ```
2493-
*
2494-
* @returns {TopNFilterBuilder}
2495-
*/
2496-
withTargetObject(target: IFilterTarget): TopNFilterBuilder;
24972513
/**
24982514
* Sets Top as operator for Top N filter
24992515
*
@@ -2541,37 +2557,20 @@ declare module "FilterBuilders/topNFilterBuilder" {
25412557
}
25422558
}
25432559
declare module "FilterBuilders/relativeDateFilterBuilder" {
2544-
import { IFilterTarget, RelativeDateFilter, RelativeDateFilterTimeUnit } from "powerbi-models";
2545-
import { IFilterBuilder } from "FilterBuilders/filterBuilder";
2560+
import { RelativeDateFilter, RelativeDateFilterTimeUnit } from "powerbi-models";
2561+
import { FilterBuilder } from "FilterBuilders/filterBuilder";
25462562
/**
25472563
* Power BI Relative Date filter builder component
25482564
*
25492565
* @export
25502566
* @class RelativeDateFilterBuilder
2551-
* @implements {IFilterBuilder}
2567+
* @extends {FilterBuilder}
25522568
*/
2553-
export class RelativeDateFilterBuilder implements IFilterBuilder {
2554-
private target;
2569+
export class RelativeDateFilterBuilder extends FilterBuilder {
25552570
private operator;
25562571
private timeUnitsCount;
25572572
private timeUnitType;
25582573
private isTodayIncluded;
2559-
/**
2560-
* Sets target property for Relative Date filter with target object
2561-
*
2562-
* ```javascript
2563-
* const target = {
2564-
* table: 'table1',
2565-
* column: 'column1'
2566-
* };
2567-
*
2568-
* const relativeDateFilterBuilder = new RelativeDateFilterBuilder().withTargetObject(target);
2569-
* ```
2570-
*
2571-
* @param {IFilterTarget} target - Defines the target property
2572-
* @returns {RelativeDateFilterBuilder}
2573-
*/
2574-
withTargetObject(target: IFilterTarget): RelativeDateFilterBuilder;
25752574
/**
25762575
* Sets inLast as operator for Relative Date filter
25772576
*
@@ -2637,36 +2636,19 @@ declare module "FilterBuilders/relativeDateFilterBuilder" {
26372636
}
26382637
}
26392638
declare module "FilterBuilders/relativeTimeFilterBuilder" {
2640-
import { IFilterTarget, RelativeTimeFilter, RelativeDateFilterTimeUnit } from "powerbi-models";
2641-
import { IFilterBuilder } from "FilterBuilders/filterBuilder";
2639+
import { RelativeTimeFilter, RelativeDateFilterTimeUnit } from "powerbi-models";
2640+
import { FilterBuilder } from "FilterBuilders/filterBuilder";
26422641
/**
26432642
* Power BI Relative Time filter builder component
26442643
*
26452644
* @export
26462645
* @class RelativeTimeFilterBuilder
2647-
* @implements {IFilterBuilder}
2646+
* @extends {FilterBuilder}
26482647
*/
2649-
export class RelativeTimeFilterBuilder implements IFilterBuilder {
2650-
private target;
2648+
export class RelativeTimeFilterBuilder extends FilterBuilder {
26512649
private operator;
26522650
private timeUnitsCount;
26532651
private timeUnitType;
2654-
/**
2655-
* Sets target property for Relative Time filter with target object
2656-
*
2657-
* ```javascript
2658-
* const target = {
2659-
* table: 'table1',
2660-
* column: 'column1'
2661-
* };
2662-
*
2663-
* const relativeTimeFilterBuilder = new RelativeTimeFilterBuilder().withTargetObject(target);
2664-
* ```
2665-
*
2666-
* @param {IFilterTarget} target - Defines the target property
2667-
* @returns {RelativeTimeFilterBuilder}
2668-
*/
2669-
withTargetObject(target: IFilterTarget): RelativeTimeFilterBuilder;
26702652
/**
26712653
* Sets inLast as operator for Relative Time filter
26722654
*

0 commit comments

Comments
 (0)