@sisense/sdk-data 1.10.1 → 1.12.0

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.
Files changed (109) hide show
  1. package/dist/cjs/dimensional-model/analytics/factory.d.ts +47 -0
  2. package/dist/cjs/dimensional-model/analytics/factory.js +151 -0
  3. package/dist/cjs/dimensional-model/analytics/factory.test.d.ts +1 -0
  4. package/dist/cjs/dimensional-model/analytics/factory.test.js +99 -0
  5. package/dist/cjs/dimensional-model/attributes.d.ts +139 -0
  6. package/dist/cjs/dimensional-model/attributes.js +342 -0
  7. package/dist/cjs/dimensional-model/attributes.test.d.ts +1 -0
  8. package/dist/cjs/dimensional-model/attributes.test.js +154 -0
  9. package/dist/cjs/dimensional-model/base.d.ts +43 -0
  10. package/dist/cjs/dimensional-model/base.js +58 -0
  11. package/dist/cjs/dimensional-model/base.test.d.ts +1 -0
  12. package/dist/cjs/dimensional-model/base.test.js +17 -0
  13. package/dist/cjs/dimensional-model/data-model.d.ts +13 -0
  14. package/dist/cjs/dimensional-model/data-model.js +37 -0
  15. package/dist/cjs/dimensional-model/dimensions.d.ts +167 -0
  16. package/dist/cjs/dimensional-model/dimensions.js +307 -0
  17. package/dist/cjs/dimensional-model/dimensions.test.d.ts +1 -0
  18. package/dist/cjs/dimensional-model/dimensions.test.js +54 -0
  19. package/dist/cjs/dimensional-model/factory.d.ts +17 -0
  20. package/dist/cjs/dimensional-model/factory.js +54 -0
  21. package/dist/cjs/dimensional-model/filters/factory.d.ts +796 -0
  22. package/dist/cjs/dimensional-model/filters/factory.js +962 -0
  23. package/dist/cjs/dimensional-model/filters/factory.test.d.ts +1 -0
  24. package/dist/cjs/dimensional-model/filters/factory.test.js +366 -0
  25. package/dist/cjs/dimensional-model/filters/filters.d.ts +321 -0
  26. package/dist/cjs/dimensional-model/filters/filters.js +614 -0
  27. package/dist/cjs/dimensional-model/filters/filters.test.d.ts +1 -0
  28. package/dist/cjs/dimensional-model/filters/filters.test.js +225 -0
  29. package/dist/cjs/dimensional-model/filters/utils/attribute-measure-util.d.ts +47 -0
  30. package/dist/cjs/dimensional-model/filters/utils/attribute-measure-util.js +111 -0
  31. package/dist/cjs/dimensional-model/filters/utils/condition-filter-util.d.ts +21 -0
  32. package/dist/cjs/dimensional-model/filters/utils/condition-filter-util.js +194 -0
  33. package/dist/cjs/dimensional-model/filters/utils/date-time-filter-util.d.ts +2 -0
  34. package/dist/cjs/dimensional-model/filters/utils/date-time-filter-util.js +12 -0
  35. package/dist/cjs/dimensional-model/filters/utils/filter-code-util.d.ts +13 -0
  36. package/dist/cjs/dimensional-model/filters/utils/filter-code-util.js +54 -0
  37. package/dist/cjs/dimensional-model/filters/utils/filter-code-util.test.d.ts +1 -0
  38. package/dist/cjs/dimensional-model/filters/utils/filter-code-util.test.js +32 -0
  39. package/dist/cjs/dimensional-model/filters/utils/filter-from-jaql-util.d.ts +73 -0
  40. package/dist/cjs/dimensional-model/filters/utils/filter-from-jaql-util.js +190 -0
  41. package/dist/cjs/dimensional-model/filters/utils/filter-from-jaql-util.test.d.ts +1 -0
  42. package/dist/cjs/dimensional-model/filters/utils/filter-from-jaql-util.test.js +558 -0
  43. package/dist/cjs/dimensional-model/filters/utils/filter-matcher-utils.d.ts +5 -0
  44. package/dist/cjs/dimensional-model/filters/utils/filter-matcher-utils.js +174 -0
  45. package/dist/cjs/dimensional-model/filters/utils/filter-matcher-utils.test.d.ts +1 -0
  46. package/dist/cjs/dimensional-model/filters/utils/filter-matcher-utils.test.js +236 -0
  47. package/dist/cjs/dimensional-model/filters/utils/filter-types-util.d.ts +17 -0
  48. package/dist/cjs/dimensional-model/filters/utils/filter-types-util.js +79 -0
  49. package/dist/cjs/dimensional-model/filters/utils/types.d.ts +200 -0
  50. package/dist/cjs/dimensional-model/filters/utils/types.js +99 -0
  51. package/dist/cjs/dimensional-model/interfaces.d.ts +512 -0
  52. package/dist/cjs/dimensional-model/interfaces.js +31 -0
  53. package/dist/cjs/dimensional-model/measures/factory.d.ts +920 -0
  54. package/dist/cjs/dimensional-model/measures/factory.js +1188 -0
  55. package/dist/cjs/dimensional-model/measures/factory.test.d.ts +1 -0
  56. package/dist/cjs/dimensional-model/measures/factory.test.js +481 -0
  57. package/dist/cjs/dimensional-model/measures/measures.d.ts +217 -0
  58. package/dist/cjs/dimensional-model/measures/measures.js +416 -0
  59. package/dist/cjs/dimensional-model/measures/measures.test.d.ts +1 -0
  60. package/dist/cjs/dimensional-model/measures/measures.test.js +79 -0
  61. package/dist/cjs/dimensional-model/simple-column-types.d.ts +39 -0
  62. package/dist/cjs/dimensional-model/simple-column-types.js +134 -0
  63. package/dist/cjs/dimensional-model/simple-column-types.test.d.ts +1 -0
  64. package/dist/cjs/dimensional-model/simple-column-types.test.js +85 -0
  65. package/dist/cjs/dimensional-model/types.d.ts +256 -0
  66. package/dist/cjs/dimensional-model/types.js +298 -0
  67. package/dist/cjs/dimensional-model/types.test.d.ts +1 -0
  68. package/dist/cjs/dimensional-model/types.test.js +33 -0
  69. package/dist/cjs/index.d.ts +93 -0
  70. package/dist/cjs/index.js +123 -0
  71. package/dist/cjs/interfaces.d.ts +367 -0
  72. package/dist/cjs/interfaces.js +21 -0
  73. package/dist/cjs/translation/initialize-i18n.d.ts +2 -0
  74. package/dist/cjs/translation/initialize-i18n.js +14 -0
  75. package/dist/cjs/translation/resources/en.d.ts +28 -0
  76. package/dist/cjs/translation/resources/en.js +30 -0
  77. package/dist/cjs/translation/resources/index.d.ts +53 -0
  78. package/dist/cjs/translation/resources/index.js +10 -0
  79. package/dist/cjs/translation/resources/uk.d.ts +5 -0
  80. package/dist/cjs/translation/resources/uk.js +30 -0
  81. package/dist/cjs/translation/translatable-error.d.ts +5 -0
  82. package/dist/cjs/translation/translatable-error.js +15 -0
  83. package/dist/cjs/utils.d.ts +37 -0
  84. package/dist/cjs/utils.js +105 -0
  85. package/dist/cjs/utils.test.d.ts +1 -0
  86. package/dist/cjs/utils.test.js +158 -0
  87. package/dist/dimensional-model/attributes.d.ts +1 -0
  88. package/dist/dimensional-model/attributes.js +31 -0
  89. package/dist/dimensional-model/filters/factory.d.ts +80 -42
  90. package/dist/dimensional-model/filters/factory.js +123 -85
  91. package/dist/dimensional-model/filters/filters.d.ts +40 -12
  92. package/dist/dimensional-model/filters/filters.js +75 -24
  93. package/dist/dimensional-model/filters/utils/attribute-measure-util.d.ts +2 -2
  94. package/dist/dimensional-model/filters/utils/attribute-measure-util.js +6 -3
  95. package/dist/dimensional-model/filters/utils/condition-filter-util.d.ts +4 -2
  96. package/dist/dimensional-model/filters/utils/condition-filter-util.js +34 -31
  97. package/dist/dimensional-model/filters/utils/filter-code-util.js +1 -1
  98. package/dist/dimensional-model/filters/utils/filter-from-jaql-util.d.ts +16 -10
  99. package/dist/dimensional-model/filters/utils/filter-from-jaql-util.js +34 -27
  100. package/dist/dimensional-model/filters/utils/filter-matcher-utils.d.ts +5 -0
  101. package/dist/dimensional-model/filters/utils/filter-matcher-utils.js +170 -0
  102. package/dist/dimensional-model/filters/utils/filter-types-util.d.ts +3 -1
  103. package/dist/dimensional-model/filters/utils/filter-types-util.js +2 -2
  104. package/dist/dimensional-model/filters/utils/types.d.ts +1 -1
  105. package/dist/dimensional-model/interfaces.d.ts +6 -0
  106. package/dist/dimensional-model/types.d.ts +9 -3
  107. package/dist/index.d.ts +1 -0
  108. package/dist/index.js +1 -0
  109. package/package.json +18 -9
@@ -4,16 +4,17 @@ import { createAttributeFilterFromConditionFilterJaql, createMeasureFilterFromCo
4
4
  import { extractFilterTypeFromFilterJaql } from './filter-types-util.js';
5
5
  import { withComposeCode } from './filter-code-util.js';
6
6
  import { createAttributeFromFilterJaql, createMeasureFromFilterJaql, } from './attribute-measure-util.js';
7
+ import { guidFast } from '../../../utils.js';
7
8
  /**
8
9
  * Creates a generic filter (aka pass-through JAQL filter) if the JAQL cannot be translated to a specific filter type.
9
10
  *
10
11
  * @param jaql - The JAQL object.
11
- * @param instanceid - The instance ID.
12
+ * @param guid - Optional GUID for the filter
12
13
  * @returns A generic Filter object.
13
14
  */
14
- export const createGenericFilter = (jaql, instanceid) => {
15
+ export const createGenericFilter = (jaql, guid) => {
15
16
  return {
16
- guid: instanceid,
17
+ guid: guid || guidFast(13),
17
18
  jaql: (nested) => {
18
19
  if (nested) {
19
20
  return jaql;
@@ -39,54 +40,59 @@ export const createGenericFilter = (jaql, instanceid) => {
39
40
  * Creates a filter that includes all members of the attribute.
40
41
  *
41
42
  * @param attribute - The attribute.
43
+ * @param guid - Optional GUID for the filter
42
44
  * @returns The created Filter object.
43
45
  */
44
- export const createFilterIncludeAll = (attribute) => {
45
- return withComposeCode(filterFactory.members)(attribute, []);
46
+ export const createFilterIncludeAll = (attribute, guid) => {
47
+ return withComposeCode(filterFactory.members)(attribute, [], guid);
46
48
  };
47
49
  /**
48
50
  * Creates a filter from a specific items filter JAQL object.
49
51
  *
50
52
  * @param attribute - attribute
51
53
  * @param specificItemsFilterJaql - Specific Items Filter Jaql
54
+ * @param guid - Optional GUID for the filter
52
55
  * @returns Filter object
53
56
  */
54
- export const createFilterFromSpecificItemsFilterJaql = (attribute, specificItemsFilterJaql) => {
55
- return withComposeCode(filterFactory.members)(attribute, specificItemsFilterJaql.members);
57
+ export const createFilterFromSpecificItemsFilterJaql = (attribute, specificItemsFilterJaql, guid) => {
58
+ return withComposeCode(filterFactory.members)(attribute, specificItemsFilterJaql.members, guid);
56
59
  };
57
60
  /**
58
61
  * Creates a filter from a date range filter JAQL object.
59
62
  *
60
63
  * @param attribute - attribute
61
64
  * @param rangeFilterJaql - Range Filter Jaql
65
+ * @param guid - Optional GUID for the filter
62
66
  * @returns Filter object
63
67
  */
64
- export const createFilterFromDateRangeFilterJaql = (attribute, rangeFilterJaql) => {
65
- return withComposeCode(filterFactory.dateRange)(attribute, rangeFilterJaql.from, rangeFilterJaql.to);
68
+ export const createFilterFromDateRangeFilterJaql = (attribute, rangeFilterJaql, guid) => {
69
+ return withComposeCode(filterFactory.dateRange)(attribute, rangeFilterJaql.from, rangeFilterJaql.to, guid);
66
70
  };
67
71
  /**
68
72
  * Creates a filter from a numeric range filter JAQL object.
69
73
  *
70
74
  * @param attribute - attribute
71
75
  * @param rangeFilterJaql - Range Filter Jaql
76
+ * @param guid - Optional GUID for the filter
72
77
  * @returns Filter object
73
78
  */
74
- export const createFilterFromNumericRangeJaql = (attribute, rangeFilterJaql) => {
75
- return withComposeCode(filterFactory.between)(attribute, rangeFilterJaql.from, rangeFilterJaql.to);
79
+ export const createFilterFromNumericRangeJaql = (attribute, rangeFilterJaql, guid) => {
80
+ return withComposeCode(filterFactory.between)(attribute, rangeFilterJaql.from, rangeFilterJaql.to, guid);
76
81
  };
77
82
  /**
78
83
  * Creates a filter from a period filter JAQL object.
79
84
  *
80
85
  * @param attribute - attribute
81
86
  * @param periodFilterJaql - Period Filter Jaql
87
+ * @param guid - Optional GUID for the filter
82
88
  * @returns Filter object
83
89
  */
84
- export const createFilterFromPeriodFilterJaql = (attribute, periodFilterJaql) => {
90
+ export const createFilterFromPeriodFilterJaql = (attribute, periodFilterJaql, guid) => {
85
91
  if (periodFilterJaql.last) {
86
- return withComposeCode(filterFactory.dateRelativeTo)(attribute, periodFilterJaql.last.offset, periodFilterJaql.last.count, periodFilterJaql.last.anchor);
92
+ return withComposeCode(filterFactory.dateRelativeTo)(attribute, periodFilterJaql.last.offset, periodFilterJaql.last.count, periodFilterJaql.last.anchor, guid);
87
93
  }
88
94
  else {
89
- return withComposeCode(filterFactory.dateRelativeFrom)(attribute, periodFilterJaql.next.offset, periodFilterJaql.next.count, periodFilterJaql.next.anchor);
95
+ return withComposeCode(filterFactory.dateRelativeFrom)(attribute, periodFilterJaql.next.offset, periodFilterJaql.next.count, periodFilterJaql.next.anchor, guid);
90
96
  }
91
97
  };
92
98
  /**
@@ -95,24 +101,25 @@ export const createFilterFromPeriodFilterJaql = (attribute, periodFilterJaql) =>
95
101
  * @param attribute - attribute
96
102
  * @param conditionFilterJaql - Condition Filter Jaql
97
103
  * @param measure - measure
104
+ * @param guid - Optional GUID for the filter
98
105
  * @returns Filter object
99
106
  */
100
- export const createFilterFromConditionFilterJaql = (attribute, conditionFilterJaql, measure) => {
107
+ export const createFilterFromConditionFilterJaql = (attribute, conditionFilterJaql, measure, guid) => {
101
108
  if (measure) {
102
- return createMeasureFilterFromConditionFilterJaql(measure, conditionFilterJaql);
109
+ return createMeasureFilterFromConditionFilterJaql(measure, conditionFilterJaql, guid);
103
110
  }
104
111
  else {
105
- return createAttributeFilterFromConditionFilterJaql(attribute, conditionFilterJaql);
112
+ return createAttributeFilterFromConditionFilterJaql(attribute, conditionFilterJaql, guid);
106
113
  }
107
114
  };
108
115
  /**
109
116
  * Creates a filter from a filter JAQL object.
110
117
  *
111
118
  * @param jaql - The filter JAQL object.
112
- * @param instanceid - The instance ID.
119
+ * @param guid - Optional GUID for the filter
113
120
  * @returns Filter object.
114
121
  */
115
- export const createFilterFromJaqlInternal = (jaql, instanceid) => {
122
+ export const createFilterFromJaqlInternal = (jaql, guid) => {
116
123
  try {
117
124
  if ('formula' in jaql) {
118
125
  // generic pass-through JAQL filter will be used instead
@@ -125,25 +132,25 @@ export const createFilterFromJaqlInternal = (jaql, instanceid) => {
125
132
  const measure = createMeasureFromFilterJaql(jaql);
126
133
  switch (filterType) {
127
134
  case FILTER_TYPES.INCLUDE_ALL:
128
- return createFilterIncludeAll(attribute);
135
+ return createFilterIncludeAll(attribute, guid);
129
136
  case FILTER_TYPES.SPECIFIC_ITEMS:
130
- return createFilterFromSpecificItemsFilterJaql(attribute, filterJaqlWithType);
137
+ return createFilterFromSpecificItemsFilterJaql(attribute, filterJaqlWithType, guid);
131
138
  case FILTER_TYPES.CONDITION:
132
- return createFilterFromConditionFilterJaql(attribute, filterJaqlWithType, measure);
139
+ return createFilterFromConditionFilterJaql(attribute, filterJaqlWithType, measure, guid);
133
140
  case FILTER_TYPES.DATE_RANGE:
134
- return createFilterFromDateRangeFilterJaql(attribute, filterJaqlWithType);
141
+ return createFilterFromDateRangeFilterJaql(attribute, filterJaqlWithType, guid);
135
142
  case FILTER_TYPES.PERIOD:
136
- return createFilterFromPeriodFilterJaql(attribute, filterJaqlWithType);
143
+ return createFilterFromPeriodFilterJaql(attribute, filterJaqlWithType, guid);
137
144
  case FILTER_TYPES.NUMERIC_RANGE:
138
- return createFilterFromNumericRangeJaql(attribute, filterJaqlWithType);
145
+ return createFilterFromNumericRangeJaql(attribute, filterJaqlWithType, guid);
139
146
  case FILTER_TYPES.ADVANCED:
140
147
  case FILTER_TYPES.INVALID:
141
- return createGenericFilter(jaql, instanceid);
148
+ return createGenericFilter(jaql, guid);
142
149
  }
143
150
  }
144
151
  catch (e) {
145
152
  // if a filter type is untranslatable, fall back to the generic pass-through JAQL filter
146
153
  // console.error(e);
147
154
  }
148
- return createGenericFilter(jaql, instanceid);
155
+ return createGenericFilter(jaql, guid);
149
156
  };
@@ -0,0 +1,5 @@
1
+ import { FilterJaql } from '../../types.js';
2
+ declare type FilterMatcher = (value?: string | number) => boolean;
3
+ /** @internal */
4
+ export declare function createFilterMatcher(filterJaql: FilterJaql): FilterMatcher;
5
+ export {};
@@ -0,0 +1,170 @@
1
+ import { getSelectedConditionOption } from './condition-filter-util.js';
2
+ import { isConditionFilter, isSpecificItemsFilter } from './filter-types-util.js';
3
+ import { ConditionFilterType, } from './types.js';
4
+ const defaultFormatter = (value) => {
5
+ if (value === undefined) {
6
+ return undefined;
7
+ }
8
+ return `${value}`;
9
+ };
10
+ const defaultDatetimeFormatter = (value) => {
11
+ if (value === undefined) {
12
+ return undefined;
13
+ }
14
+ return new Date(value).toISOString();
15
+ };
16
+ const defaultMatcher = () => false;
17
+ function createCombinedFilterMatcher(createFilterMatcherFn, filterJaql) {
18
+ const filter = filterJaql.filter;
19
+ if ('or' in filter) {
20
+ return (value) => {
21
+ return filter.or
22
+ .map((filterItem) => createFilterMatcherFn(Object.assign(Object.assign({}, filterJaql), { filter: filterItem })))
23
+ .reduce((acc, filterMatcher) => {
24
+ return acc || filterMatcher(value);
25
+ }, false);
26
+ };
27
+ }
28
+ if ('and' in filter) {
29
+ return (value) => {
30
+ return filter.and
31
+ .map((filterItem) => createFilterMatcherFn(Object.assign(Object.assign({}, filterJaql), { filter: filterItem })))
32
+ .reduce((acc, filterMatcher) => {
33
+ return acc && filterMatcher(value);
34
+ }, true);
35
+ };
36
+ }
37
+ return createFilterMatcherFn(filterJaql);
38
+ }
39
+ function createMembersFilterMatcher(filterJaql) {
40
+ const { datatype } = filterJaql;
41
+ const filter = filterJaql.filter;
42
+ const formatter = datatype === 'datetime' ? defaultDatetimeFormatter : defaultFormatter;
43
+ return (value) => {
44
+ const formattedMembers = filter.members.map(formatter);
45
+ const formattedValue = formatter(value);
46
+ return formattedMembers.includes(formattedValue);
47
+ };
48
+ }
49
+ function createExcludeMembersFilterMatcher(filterJaql) {
50
+ const { datatype } = filterJaql;
51
+ const filter = filterJaql.filter;
52
+ const formatter = datatype === 'datetime' ? defaultDatetimeFormatter : defaultFormatter;
53
+ return (value) => {
54
+ var _a, _b;
55
+ const formattedMembers = ((_b = (_a = filter.exclude) === null || _a === void 0 ? void 0 : _a.members) === null || _b === void 0 ? void 0 : _b.map(formatter)) || [];
56
+ const formattedValue = formatter(value);
57
+ return !formattedMembers.includes(formattedValue);
58
+ };
59
+ }
60
+ function createTextFilterMatcher(filterJaql) {
61
+ const filter = filterJaql.filter;
62
+ const conditionFilterType = getSelectedConditionOption(filter);
63
+ if (conditionFilterType === ConditionFilterType.STARTS_WITH) {
64
+ return (value) => {
65
+ return new RegExp(`^${filter.startsWith}`, 'i').test(value);
66
+ };
67
+ }
68
+ if (conditionFilterType === ConditionFilterType.ENDS_WITH) {
69
+ return (value) => {
70
+ return new RegExp(`${filter.endsWith}$`, 'i').test(value);
71
+ };
72
+ }
73
+ if (conditionFilterType === ConditionFilterType.CONTAINS) {
74
+ return (value) => {
75
+ return new RegExp(filter.contains, 'i').test(value);
76
+ };
77
+ }
78
+ if (conditionFilterType === ConditionFilterType.EQUALS) {
79
+ return (value) => {
80
+ return (value.localeCompare(filter.equals, undefined, {
81
+ sensitivity: 'base',
82
+ }) === 0);
83
+ };
84
+ }
85
+ if (conditionFilterType === ConditionFilterType.DOESNT_START_WITH) {
86
+ return (value) => {
87
+ return !new RegExp(`^${filter.doesntStartWith}`, 'i').test(value);
88
+ };
89
+ }
90
+ if (conditionFilterType === ConditionFilterType.DOESNT_END_WITH) {
91
+ return (value) => {
92
+ return !new RegExp(`${filter.doesntEndWith}$`, 'i').test(value);
93
+ };
94
+ }
95
+ if (conditionFilterType === ConditionFilterType.DOESNT_CONTAIN) {
96
+ return (value) => {
97
+ return !new RegExp(filter.doesntContain, 'i').test(value);
98
+ };
99
+ }
100
+ if (conditionFilterType === ConditionFilterType.DOESNT_EQUAL) {
101
+ return (value) => {
102
+ return (value.localeCompare(filter.doesntEqual, undefined, {
103
+ sensitivity: 'base',
104
+ }) !== 0);
105
+ };
106
+ }
107
+ return defaultMatcher;
108
+ }
109
+ function createNumericFilterMatcher(filterJaql) {
110
+ const filter = filterJaql.filter;
111
+ const conditionFilterType = getSelectedConditionOption(filter);
112
+ if (conditionFilterType === ConditionFilterType.EQUALS) {
113
+ return (value) => {
114
+ return Number(filter.equals) === Number(value);
115
+ };
116
+ }
117
+ if (conditionFilterType === ConditionFilterType.DOESNT_EQUAL) {
118
+ return (value) => {
119
+ return Number(filter.doesntEqual) !== Number(value);
120
+ };
121
+ }
122
+ if (conditionFilterType === ConditionFilterType.LESS_THAN) {
123
+ return (value) => {
124
+ return Number(value) < Number(filter.toNotEqual);
125
+ };
126
+ }
127
+ if (conditionFilterType === ConditionFilterType.GREATER_THAN) {
128
+ return (value) => {
129
+ return Number(value) > Number(filter.fromNotEqual);
130
+ };
131
+ }
132
+ if (conditionFilterType === ConditionFilterType.BETWEEN) {
133
+ return (value) => {
134
+ return Number(filter.to) >= Number(value) && Number(value) >= Number(filter.from);
135
+ };
136
+ }
137
+ if (conditionFilterType === ConditionFilterType.GREATER_THAN_OR_EQUAL) {
138
+ return (value) => {
139
+ return Number(value) >= Number(filter.from);
140
+ };
141
+ }
142
+ if (conditionFilterType === ConditionFilterType.LESS_THAN_OR_EQUAL) {
143
+ return (value) => {
144
+ return Number(filter.to) >= Number(value);
145
+ };
146
+ }
147
+ return defaultMatcher;
148
+ }
149
+ /** @internal */
150
+ export function createFilterMatcher(filterJaql) {
151
+ const filterJaqlInternal = filterJaql;
152
+ const { datatype } = filterJaqlInternal;
153
+ const filter = filterJaqlInternal.filter;
154
+ if (isSpecificItemsFilter(filter)) {
155
+ return createMembersFilterMatcher(filterJaqlInternal);
156
+ }
157
+ if (isConditionFilter(filter) &&
158
+ getSelectedConditionOption(filter) === ConditionFilterType.IS_NOT) {
159
+ return createExcludeMembersFilterMatcher(filterJaqlInternal);
160
+ }
161
+ // text filters
162
+ if (datatype === 'text') {
163
+ return createCombinedFilterMatcher(createTextFilterMatcher, filterJaqlInternal);
164
+ }
165
+ // // numeric filters
166
+ if (datatype === 'numeric') {
167
+ return createCombinedFilterMatcher(createNumericFilterMatcher, filterJaqlInternal);
168
+ }
169
+ return defaultMatcher;
170
+ }
@@ -1,5 +1,7 @@
1
- import { FilterModalType, AnyTypeFilterJaql, DatetimeLevel, FilterType, FilterJaqlInternal, FilterJaqlWrapperWithType } from './types.js';
1
+ import { FilterModalType, AnyTypeFilterJaql, DatetimeLevel, FilterType, SpecificItemsFilterJaql, ConditionFilterJaql, FilterJaqlInternal, FilterJaqlWrapperWithType } from './types.js';
2
+ export declare const isSpecificItemsFilter: (filter: AnyTypeFilterJaql) => filter is SpecificItemsFilterJaql;
2
3
  export declare const isNumericRangeFilter: (filter: AnyTypeFilterJaql) => boolean;
4
+ export declare const isConditionFilter: (filter: AnyTypeFilterJaql) => filter is ConditionFilterJaql;
3
5
  export declare const getFilterType: (filter: AnyTypeFilterJaql, dataType?: FilterModalType, timeData?: {
4
6
  level?: DatetimeLevel;
5
7
  bucket?: string;
@@ -4,7 +4,7 @@ import { getCorrectTimeLevel } from './date-time-filter-util.js';
4
4
  const isIncludeAllFilter = (filter) => filter === null || filter === void 0 ? void 0 : filter.all;
5
5
  const getInnerPeriodFilter = (filter) => (filter.last ? filter.last : filter.next);
6
6
  const isPeriodFilter = (filter) => { var _a; return ((_a = getInnerPeriodFilter(filter)) === null || _a === void 0 ? void 0 : _a.offset) < 2; };
7
- const isSpecificItemsFilter = (filter) => { var _a; return ((_a = filter === null || filter === void 0 ? void 0 : filter.members) === null || _a === void 0 ? void 0 : _a.length) > 0; };
7
+ export const isSpecificItemsFilter = (filter) => { var _a; return ((_a = filter === null || filter === void 0 ? void 0 : filter.members) === null || _a === void 0 ? void 0 : _a.length) > 0; };
8
8
  const isFromOrToDefined = (fromRange, toRange) => (fromRange && typeof fromRange === 'string') || (toRange && typeof toRange === 'string');
9
9
  const isFromAndToEmpty = (from, to) => from === '' && to === '';
10
10
  const isDateRangeFilter = (filter, dataType) => {
@@ -19,7 +19,7 @@ export const isNumericRangeFilter = (filter) => {
19
19
  const { from, to } = filter;
20
20
  return !!(from !== undefined && to !== undefined && !filter.isBetween);
21
21
  };
22
- const isConditionFilter = (filter) => getSelectedConditionOption(filter) !== ConditionFilterType.NONE;
22
+ export const isConditionFilter = (filter) => getSelectedConditionOption(filter) !== ConditionFilterType.NONE;
23
23
  const isAdvancedFilter = (filter) => Object.keys(filter).includes('isAdvanced');
24
24
  const isTimeLevelNotSupported = (timeData) => !!(timeData.level &&
25
25
  timeData.bucket &&
@@ -121,7 +121,7 @@ export declare type FilterJaqlInternal = {
121
121
  fiscal?: string;
122
122
  firstday?: string;
123
123
  merged?: boolean;
124
- table: string;
124
+ table?: string;
125
125
  filter?: AnyTypeFilterJaql;
126
126
  level?: DatetimeLevel;
127
127
  locale?: string;
@@ -340,6 +340,12 @@ export interface Filter extends Element {
340
340
  * Boolean flag whether the filter is a scope filter
341
341
  */
342
342
  isScope: boolean;
343
+ /**
344
+ * Boolean flag whether the filter is disabled
345
+ *
346
+ * @internal
347
+ */
348
+ disabled: boolean;
343
349
  /**
344
350
  * Gets JAQL representing this Filter instance
345
351
  *
@@ -1,3 +1,4 @@
1
+ import { type ConditionFilterJaql } from './filters/utils/types.js';
1
2
  /**
2
3
  * Different aggregation types
3
4
  */
@@ -175,13 +176,18 @@ export declare type PivotJaql = (BaseJaql | FormulaJaql) & {
175
176
  /** @internal */
176
177
  export declare type BaseJaql = {
177
178
  agg?: string;
178
- datatype: DataType;
179
+ datatype: `${DataType}`;
179
180
  dim: string;
180
181
  table: string;
181
182
  column: string;
182
183
  title: string;
183
184
  level?: 'years' | 'quarters' | 'months' | 'weeks' | 'minutes' | 'days';
184
- sort?: JaqlSortDirection;
185
+ sort?: `${JaqlSortDirection}`;
186
+ in?: {
187
+ selected?: {
188
+ jaql: FilterJaql;
189
+ };
190
+ };
185
191
  };
186
192
  /** @internal */
187
193
  export declare type FormulaID = string;
@@ -196,7 +202,7 @@ export declare type FormulaJaql = {
196
202
  context?: Record<FormulaID, FormulaContext>;
197
203
  };
198
204
  /** @internal */
199
- export declare type BaseFilter = IncludeAllFilter | IncludeMembersFilter | ExcludeMembersFilter | JaqlNumericFilter | AndFilter<JaqlNumericFilter> | OrFilter<JaqlNumericFilter>;
205
+ export declare type BaseFilter = IncludeAllFilter | IncludeMembersFilter | ExcludeMembersFilter | JaqlNumericFilter | ConditionFilterJaql | AndFilter<JaqlNumericFilter | ConditionFilterJaql> | OrFilter<JaqlNumericFilter | ConditionFilterJaql>;
200
206
  /** @internal */
201
207
  export declare type BackgroundFilter = BaseFilter & {
202
208
  level?: 'string';
package/dist/index.d.ts CHANGED
@@ -15,6 +15,7 @@ export * from './dimensional-model/attributes.js';
15
15
  export * from './dimensional-model/dimensions.js';
16
16
  export * from './dimensional-model/factory.js';
17
17
  export * from './dimensional-model/filters/filters.js';
18
+ export { createFilterMatcher } from './dimensional-model/filters/utils/filter-matcher-utils.js';
18
19
  /**
19
20
  * Functions to create date, text, or numeric filters on specified data.
20
21
  *
package/dist/index.js CHANGED
@@ -15,6 +15,7 @@ export * from './dimensional-model/attributes.js';
15
15
  export * from './dimensional-model/dimensions.js';
16
16
  export * from './dimensional-model/factory.js';
17
17
  export * from './dimensional-model/filters/filters.js';
18
+ export { createFilterMatcher } from './dimensional-model/filters/utils/filter-matcher-utils.js';
18
19
  /**
19
20
  * Functions to create date, text, or numeric filters on specified data.
20
21
  *
package/package.json CHANGED
@@ -11,20 +11,29 @@
11
11
  "Sisense",
12
12
  "Compose SDK"
13
13
  ],
14
- "version": "1.10.1",
14
+ "version": "1.12.0",
15
15
  "type": "module",
16
- "exports": {
17
- ".": "./dist/index.js",
18
- "./dist/dimensional-model/filters/filters": "./dist/dimensional-model/filters/filters.js"
19
- },
20
- "main": "./dist/index.js",
16
+ "main": "./dist/cjs/index.js",
21
17
  "module": "./dist/index.js",
22
18
  "types": "./dist/index.d.ts",
19
+ "exports": {
20
+ ".": {
21
+ "require": "./dist/cjs/index.js",
22
+ "import": "./dist/index.js",
23
+ "types": "./dist/index.d.ts",
24
+ "default": "./dist/index.js"
25
+ },
26
+ "./dist/dimensional-model/filters/filters": {
27
+ "default": "./dist/dimensional-model/filters/filters.js",
28
+ "import": "./dist/dimensional-model/filters/filters.js",
29
+ "require": "./dist/cjs/dimensional-model/filters/filters.js"
30
+ }
31
+ },
23
32
  "author": "Sisense",
24
33
  "license": "SEE LICENSE IN LICENSE.md",
25
34
  "dependencies": {
26
- "@sisense/sdk-common": "^1.10.1",
27
- "@sisense/sdk-rest-client": "^1.10.1",
35
+ "@sisense/sdk-common": "^1.12.0",
36
+ "@sisense/sdk-rest-client": "^1.12.0",
28
37
  "guid-typescript": "^1.0.9",
29
38
  "lodash": "^4.17.21",
30
39
  "numeral": "^2.0.6",
@@ -33,7 +42,7 @@
33
42
  "scripts": {
34
43
  "type-check": "tsc --noEmit",
35
44
  "build": "tsc --build tsconfig.build.json",
36
- "build:prod": "tsc --project tsconfig.prod.json",
45
+ "build:prod": "tsc --project tsconfig.prod.json && tsc --project tsconfig.cjs.json",
37
46
  "build.watch": "tsc --build --watch",
38
47
  "clean": "rm -rf dist coverage tsconfig.build.tsbuildinfo tsconfig.prod.tsbuildinfo",
39
48
  "lint": "eslint . --fix",