@qrvey/filters 0.2.1 → 0.2.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # [@qrvey/filters](https://bitbucket.org/qrvey/qrvey_filters/wiki/Home) *0.2.1*
1
+ # [@qrvey/filters](https://bitbucket.org/qrvey/qrvey_filters/wiki/Home) *0.2.3*
2
2
 
3
3
  > Helpers and logic for Filtering Data in Qrvey app
4
4
 
@@ -27,7 +27,7 @@ class FilterAdapter {
27
27
  return (0, filter_adapt_legacy_helpers_1.filterToLegacyVisual)(this._filters, this.datasets, this.interactiveTable);
28
28
  }
29
29
  filterToLogic() {
30
- return (0, filter_adapt_logic_helpers_1.filterToLogic)(this._filters);
30
+ return (0, filter_adapt_logic_helpers_1.filterToLogic)(this._filters, this.datasets);
31
31
  }
32
32
  filterToVisual() {
33
33
  return (0, filter_adapt_helpers_1.filterToVisual)(this._filters, this.datasets, this.interactiveTable);
@@ -90,6 +90,22 @@ class FilterResources {
90
90
  static getHierarchyScopes() {
91
91
  return filter_scopes_resources_1.FILTER_SCOPES;
92
92
  }
93
+ static getScopeIdentifiers(filters) {
94
+ if (!Array.isArray(filters) || (0, utils_1.isEmpty)(filters))
95
+ return [];
96
+ const seen = new Map();
97
+ for (const filter of filters) {
98
+ const key = `${filter.scope}|${filter.scopeId ?? ""}`;
99
+ if (!seen.has(key)) {
100
+ seen.set(key, {
101
+ datasetId: filter.datasetId,
102
+ scope: filter.scope,
103
+ scopeId: filter.scopeId,
104
+ });
105
+ }
106
+ }
107
+ return Array.from(seen.values());
108
+ }
93
109
  static getFiltersByTimezone(filters, timezone) {
94
110
  if ((0, utils_1.isEmpty)(filters) || !Array.isArray(filters))
95
111
  return [];
@@ -97,7 +97,9 @@ function buildFilter(filter, dataset) {
97
97
  collapsed: filter.collapsed ?? filters_resources_1.DEFAULT_FILTER.collapsed,
98
98
  datasetLabel: dataset?.label ?? filter_visual_resources_1.DEFAULT_UI_FILTER.datasetLabel,
99
99
  columnLabel: columnInfo?.label ?? filter_visual_resources_1.DEFAULT_UI_FILTER.columnLabel,
100
- formulaType: columnInfo?.formulaType,
100
+ formulaType: columnInfo?.formulaType ||
101
+ filter.formulaType ||
102
+ filter_visual_resources_1.DEFAULT_UI_FILTER.formulaType,
101
103
  icon: filter.icon ?? filter_visual_resources_1.DEFAULT_UI_FILTER.icon,
102
104
  iconTooltip: filter.iconTooltip ?? filter_visual_resources_1.DEFAULT_UI_FILTER.iconTooltip,
103
105
  };
@@ -13,10 +13,10 @@ const filter_logic_resources_1 = require("../resources/filter-logic.resources");
13
13
  const filter_operators_resources_1 = require("../resources/filter-operators.resources");
14
14
  const filter_validators_resources_1 = require("../resources/filter-validators.resources");
15
15
  const filters_resources_1 = require("../resources/filters.resources");
16
- function filterToLogic(filters) {
16
+ function filterToLogic(filters, datasets = []) {
17
17
  if ((0, utils_1.isEmpty)(filters))
18
18
  return [];
19
- const visual = (0, filter_adapt_helpers_1.filterToVisual)(filters);
19
+ const visual = (0, filter_adapt_helpers_1.filterToVisual)(filters, datasets);
20
20
  return visualToLogic(visual);
21
21
  }
22
22
  function visualToLogic(visual) {
@@ -24,7 +24,7 @@ export class FilterAdapter {
24
24
  return filterToLegacyVisual(this._filters, this.datasets, this.interactiveTable);
25
25
  }
26
26
  filterToLogic() {
27
- return filterToLogic(this._filters);
27
+ return filterToLogic(this._filters, this.datasets);
28
28
  }
29
29
  filterToVisual() {
30
30
  return filterToVisual(this._filters, this.datasets, this.interactiveTable);
@@ -1,7 +1,7 @@
1
1
  import { IColumnVsFormulaType, IDTimezone } from "@qrvey/utils";
2
2
  import { IFilterGroupingInfoByColumnTypeSettings, IFilterGroupingInfoByFilterSettings, IFilterGroupingInfoListByColumnSettings } from "../resources/filter-functions.resources";
3
3
  import { IFilterGrouping, IFilterGroupingInfo } from "../resources/filter-grouping.resources";
4
- import { IFilterScope } from "../resources/filter-scopes.resources";
4
+ import { IFilterScope, IFilterScopeIdentifier } from "../resources/filter-scopes.resources";
5
5
  import { IFilterValidator, IFilterValidatorInfo } from "../resources/filter-validators.resources";
6
6
  import { IFilter } from "../resources/filters.resources";
7
7
  export declare class FilterResources {
@@ -16,6 +16,7 @@ export declare class FilterResources {
16
16
  static getGroupings(): IFilterGrouping[];
17
17
  static getGroupingsInfoList(): IFilterGroupingInfo[];
18
18
  static getHierarchyScopes(): IFilterScope[];
19
+ static getScopeIdentifiers(filters: IFilter[]): IFilterScopeIdentifier[];
19
20
  static getFiltersByTimezone(filters: IFilter[], timezone: IDTimezone): IFilter[];
20
21
  static getValidatorInfo(validator: IFilterValidator): IFilterValidatorInfo;
21
22
  static getValidatorInfoList(): IFilterValidatorInfo[];
@@ -87,6 +87,22 @@ export class FilterResources {
87
87
  static getHierarchyScopes() {
88
88
  return FILTER_SCOPES;
89
89
  }
90
+ static getScopeIdentifiers(filters) {
91
+ if (!Array.isArray(filters) || isEmpty(filters))
92
+ return [];
93
+ const seen = new Map();
94
+ for (const filter of filters) {
95
+ const key = `${filter.scope}|${filter.scopeId ?? ""}`;
96
+ if (!seen.has(key)) {
97
+ seen.set(key, {
98
+ datasetId: filter.datasetId,
99
+ scope: filter.scope,
100
+ scopeId: filter.scopeId,
101
+ });
102
+ }
103
+ }
104
+ return Array.from(seen.values());
105
+ }
90
106
  static getFiltersByTimezone(filters, timezone) {
91
107
  if (isEmpty(filters) || !Array.isArray(filters))
92
108
  return [];
@@ -93,7 +93,9 @@ function buildFilter(filter, dataset) {
93
93
  collapsed: filter.collapsed ?? DEFAULT_FILTER.collapsed,
94
94
  datasetLabel: dataset?.label ?? DEFAULT_UI_FILTER.datasetLabel,
95
95
  columnLabel: columnInfo?.label ?? DEFAULT_UI_FILTER.columnLabel,
96
- formulaType: columnInfo?.formulaType,
96
+ formulaType: columnInfo?.formulaType ||
97
+ filter.formulaType ||
98
+ DEFAULT_UI_FILTER.formulaType,
97
99
  icon: filter.icon ?? DEFAULT_UI_FILTER.icon,
98
100
  iconTooltip: filter.iconTooltip ?? DEFAULT_UI_FILTER.iconTooltip,
99
101
  };
@@ -1,7 +1,8 @@
1
+ import { IDataset } from "@qrvey/utils";
1
2
  import { IFilterLogic, IFilterLogicExpression, IFilterLogicExpressionValue } from "../resources/filter-logic.resources";
2
3
  import { IFilterUI, IFilterVisual } from "../resources/filter-visual.resources";
3
4
  import { IFilter } from "../resources/filters.resources";
4
- export declare function filterToLogic(filters: IFilter[]): IFilterLogic[];
5
+ export declare function filterToLogic(filters: IFilter[], datasets?: IDataset[]): IFilterLogic[];
5
6
  export declare function visualToLogic(visual: IFilterVisual): IFilterLogic[];
6
7
  export declare function buildLogicExpression(filter: IFilterUI): IFilterLogicExpression;
7
8
  export declare function getFilterLogicValues(filter: IFilterUI): IFilterLogicExpressionValue[];
@@ -7,10 +7,10 @@ import { FILTER_LOGIC_VALIDATOR, } from "../resources/filter-logic.resources";
7
7
  import { FILTER_OPERATOR, } from "../resources/filter-operators.resources";
8
8
  import { FILTER_LOGIC_VALIDATOR_BY_VALIDATOR, FILTER_VALIDATOR, } from "../resources/filter-validators.resources";
9
9
  import { FILTER_TYPE } from "../resources/filters.resources";
10
- export function filterToLogic(filters) {
10
+ export function filterToLogic(filters, datasets = []) {
11
11
  if (isEmpty(filters))
12
12
  return [];
13
- const visual = filterToVisual(filters);
13
+ const visual = filterToVisual(filters, datasets);
14
14
  return visualToLogic(visual);
15
15
  }
16
16
  export function visualToLogic(visual) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@qrvey/filters",
3
- "version": "0.2.1",
3
+ "version": "0.2.3",
4
4
  "description": "Helpers and logic for Filtering Data in Qrvey app",
5
5
  "main": "dist/cjs/index.js",
6
6
  "module": "dist/index.js",