@sisense/sdk-data 1.13.0 → 1.15.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.
- package/dist/cjs/dimensional-model/attributes.js +20 -1
- package/dist/cjs/dimensional-model/dimensions.d.ts +8 -0
- package/dist/cjs/dimensional-model/dimensions.js +4 -0
- package/dist/cjs/dimensional-model/filters/factory.d.ts +4 -2
- package/dist/cjs/dimensional-model/filters/factory.js +5 -3
- package/dist/cjs/dimensional-model/filters/filters.d.ts +16 -2
- package/dist/cjs/dimensional-model/filters/filters.js +41 -4
- package/dist/cjs/dimensional-model/filters/utils/condition-filter-util.js +2 -1
- package/dist/cjs/dimensional-model/filters/utils/filter-from-jaql-util.js +5 -2
- package/dist/cjs/dimensional-model/filters/utils/filter-types-util.js +1 -1
- package/dist/cjs/dimensional-model/interfaces.d.ts +14 -0
- package/dist/cjs/dimensional-model/types.d.ts +2 -0
- package/dist/cjs/dimensional-model/types.js +4 -0
- package/dist/cjs/interfaces.d.ts +1 -1
- package/dist/cjs/package.json +12 -0
- package/dist/cjs/translation/resources/en.js +1 -1
- package/dist/cjs/translation/resources/uk.js +1 -1
- package/dist/cjs/utils.js +6 -2
- package/dist/dimensional-model/attributes.js +20 -1
- package/dist/dimensional-model/dimensions.d.ts +8 -0
- package/dist/dimensional-model/dimensions.js +4 -0
- package/dist/dimensional-model/filters/factory.d.ts +4 -2
- package/dist/dimensional-model/filters/factory.js +5 -3
- package/dist/dimensional-model/filters/filters.d.ts +16 -2
- package/dist/dimensional-model/filters/filters.js +41 -4
- package/dist/dimensional-model/filters/utils/condition-filter-util.js +2 -1
- package/dist/dimensional-model/filters/utils/filter-from-jaql-util.js +5 -2
- package/dist/dimensional-model/filters/utils/filter-types-util.js +1 -1
- package/dist/dimensional-model/interfaces.d.ts +14 -0
- package/dist/dimensional-model/types.d.ts +2 -0
- package/dist/dimensional-model/types.js +4 -0
- package/dist/interfaces.d.ts +1 -1
- package/dist/translation/resources/en.js +1 -1
- package/dist/translation/resources/uk.js +1 -1
- package/dist/tsconfig.prod.cjs.tsbuildinfo +1 -0
- package/dist/utils.js +6 -2
- package/package.json +4 -9
- package/dist/cjs/dimensional-model/analytics/factory.test.d.ts +0 -1
- package/dist/cjs/dimensional-model/analytics/factory.test.js +0 -99
- package/dist/cjs/dimensional-model/attributes.test.d.ts +0 -1
- package/dist/cjs/dimensional-model/attributes.test.js +0 -154
- package/dist/cjs/dimensional-model/base.test.d.ts +0 -1
- package/dist/cjs/dimensional-model/base.test.js +0 -17
- package/dist/cjs/dimensional-model/dimensions.test.d.ts +0 -1
- package/dist/cjs/dimensional-model/dimensions.test.js +0 -54
- package/dist/cjs/dimensional-model/filters/factory.test.d.ts +0 -1
- package/dist/cjs/dimensional-model/filters/factory.test.js +0 -366
- package/dist/cjs/dimensional-model/filters/filters.test.d.ts +0 -1
- package/dist/cjs/dimensional-model/filters/filters.test.js +0 -225
- package/dist/cjs/dimensional-model/filters/utils/filter-code-util.test.d.ts +0 -1
- package/dist/cjs/dimensional-model/filters/utils/filter-code-util.test.js +0 -32
- package/dist/cjs/dimensional-model/filters/utils/filter-from-jaql-util.test.d.ts +0 -1
- package/dist/cjs/dimensional-model/filters/utils/filter-from-jaql-util.test.js +0 -623
- package/dist/cjs/dimensional-model/filters/utils/filter-matcher-utils.test.d.ts +0 -1
- package/dist/cjs/dimensional-model/filters/utils/filter-matcher-utils.test.js +0 -236
- package/dist/cjs/dimensional-model/measures/factory.test.d.ts +0 -1
- package/dist/cjs/dimensional-model/measures/factory.test.js +0 -481
- package/dist/cjs/dimensional-model/measures/measures.test.d.ts +0 -1
- package/dist/cjs/dimensional-model/measures/measures.test.js +0 -79
- package/dist/cjs/dimensional-model/simple-column-types.test.d.ts +0 -1
- package/dist/cjs/dimensional-model/simple-column-types.test.js +0 -85
- package/dist/cjs/dimensional-model/types.test.d.ts +0 -1
- package/dist/cjs/dimensional-model/types.test.js +0 -33
- package/dist/cjs/utils.test.d.ts +0 -1
- package/dist/cjs/utils.test.js +0 -158
|
@@ -163,6 +163,7 @@ class DimensionalLevelAttribute extends DimensionalAttribute {
|
|
|
163
163
|
*/
|
|
164
164
|
translateGranularityToJaql() {
|
|
165
165
|
const MINUTES_LEVEL = 'minutes';
|
|
166
|
+
const SECONDS_LEVEL = 'seconds';
|
|
166
167
|
switch (this.granularity) {
|
|
167
168
|
case types_js_1.DateLevels.Years:
|
|
168
169
|
case types_js_1.DateLevels.Quarters:
|
|
@@ -185,6 +186,16 @@ class DimensionalLevelAttribute extends DimensionalAttribute {
|
|
|
185
186
|
dateTimeLevel: MINUTES_LEVEL,
|
|
186
187
|
bucket: '15',
|
|
187
188
|
};
|
|
189
|
+
case types_js_1.DateLevels.Minutes:
|
|
190
|
+
return {
|
|
191
|
+
dateTimeLevel: MINUTES_LEVEL,
|
|
192
|
+
bucket: '1',
|
|
193
|
+
};
|
|
194
|
+
case types_js_1.DateLevels.Seconds:
|
|
195
|
+
return {
|
|
196
|
+
dateTimeLevel: SECONDS_LEVEL,
|
|
197
|
+
bucket: '0',
|
|
198
|
+
};
|
|
188
199
|
case types_js_1.DateLevels.AggHours:
|
|
189
200
|
return {
|
|
190
201
|
level: MINUTES_LEVEL,
|
|
@@ -216,7 +227,7 @@ class DimensionalLevelAttribute extends DimensionalAttribute {
|
|
|
216
227
|
return lvl;
|
|
217
228
|
};
|
|
218
229
|
if (json.dateTimeLevel) {
|
|
219
|
-
if (json.dateTimeLevel !== 'minutes') {
|
|
230
|
+
if (json.dateTimeLevel !== 'minutes' && json.dateTimeLevel !== 'seconds') {
|
|
220
231
|
return returnUnsupported(json.dateTimeLevel);
|
|
221
232
|
}
|
|
222
233
|
switch (json.bucket) {
|
|
@@ -226,6 +237,10 @@ class DimensionalLevelAttribute extends DimensionalAttribute {
|
|
|
226
237
|
return types_js_1.DateLevels.MinutesRoundTo30;
|
|
227
238
|
case '15':
|
|
228
239
|
return types_js_1.DateLevels.MinutesRoundTo15;
|
|
240
|
+
case '1':
|
|
241
|
+
return types_js_1.DateLevels.Minutes;
|
|
242
|
+
case '0':
|
|
243
|
+
return types_js_1.DateLevels.Seconds;
|
|
229
244
|
default:
|
|
230
245
|
return returnUnsupported(json.dateTimeLevel);
|
|
231
246
|
}
|
|
@@ -277,6 +292,10 @@ class DimensionalLevelAttribute extends DimensionalAttribute {
|
|
|
277
292
|
return 'yyyy-MM-dd HH:mm';
|
|
278
293
|
case types_js_1.DateLevels.MinutesRoundTo15:
|
|
279
294
|
return 'yyyy-MM-dd HH:mm';
|
|
295
|
+
case types_js_1.DateLevels.Minutes:
|
|
296
|
+
return 'yyyy-MM-dd HH:mm';
|
|
297
|
+
case types_js_1.DateLevels.Seconds:
|
|
298
|
+
return 'yyyy-MM-dd HH:mm:ss';
|
|
280
299
|
case types_js_1.DateLevels.AggHours:
|
|
281
300
|
return 'HH:mm';
|
|
282
301
|
case types_js_1.DateLevels.AggMinutesRoundTo30:
|
|
@@ -94,6 +94,14 @@ export declare class DimensionalDateDimension extends DimensionalDimension imple
|
|
|
94
94
|
* Minutes (round to 15) level
|
|
95
95
|
*/
|
|
96
96
|
readonly MinutesRoundTo15: LevelAttribute;
|
|
97
|
+
/**
|
|
98
|
+
* Minutes level (for Live Models)
|
|
99
|
+
*/
|
|
100
|
+
readonly Minutes: LevelAttribute;
|
|
101
|
+
/**
|
|
102
|
+
* Seconds level (for Live Models)
|
|
103
|
+
*/
|
|
104
|
+
readonly Seconds: LevelAttribute;
|
|
97
105
|
/**
|
|
98
106
|
* Aggregated Hours level
|
|
99
107
|
*/
|
|
@@ -164,6 +164,8 @@ class DimensionalDateDimension extends DimensionalDimension {
|
|
|
164
164
|
this.Hours = new attributes_js_1.DimensionalLevelAttribute(types_js_1.DateLevels.Hours, expression, types_js_1.DateLevels.Hours, 'yyyy-MM-dd HH:mm');
|
|
165
165
|
this.MinutesRoundTo30 = new attributes_js_1.DimensionalLevelAttribute(types_js_1.DateLevels.MinutesRoundTo30, expression, types_js_1.DateLevels.MinutesRoundTo30, 'yyyy-MM-dd HH:mm');
|
|
166
166
|
this.MinutesRoundTo15 = new attributes_js_1.DimensionalLevelAttribute(types_js_1.DateLevels.MinutesRoundTo15, expression, types_js_1.DateLevels.MinutesRoundTo15, 'yyyy-MM-dd HH:mm');
|
|
167
|
+
this.Minutes = new attributes_js_1.DimensionalLevelAttribute(types_js_1.DateLevels.Minutes, expression, types_js_1.DateLevels.Minutes, 'yyyy-MM-dd HH:mm');
|
|
168
|
+
this.Seconds = new attributes_js_1.DimensionalLevelAttribute(types_js_1.DateLevels.Seconds, expression, types_js_1.DateLevels.Seconds, 'yyyy-MM-dd HH:mm:ss');
|
|
167
169
|
this.AggHours = new attributes_js_1.DimensionalLevelAttribute(types_js_1.DateLevels.AggHours, expression, types_js_1.DateLevels.AggHours, 'HH:mm');
|
|
168
170
|
this.AggMinutesRoundTo30 = new attributes_js_1.DimensionalLevelAttribute(types_js_1.DateLevels.AggMinutesRoundTo30, expression, types_js_1.DateLevels.AggMinutesRoundTo30, 'HH:mm');
|
|
169
171
|
this.AggMinutesRoundTo15 = new attributes_js_1.DimensionalLevelAttribute(types_js_1.DateLevels.AggMinutesRoundTo15, expression, types_js_1.DateLevels.AggMinutesRoundTo15, 'HH:mm');
|
|
@@ -177,6 +179,8 @@ class DimensionalDateDimension extends DimensionalDimension {
|
|
|
177
179
|
this.Hours,
|
|
178
180
|
this.MinutesRoundTo30,
|
|
179
181
|
this.MinutesRoundTo15,
|
|
182
|
+
this.Minutes,
|
|
183
|
+
this.Seconds,
|
|
180
184
|
this.AggHours,
|
|
181
185
|
this.AggMinutesRoundTo30,
|
|
182
186
|
this.AggMinutesRoundTo15,
|
|
@@ -373,11 +373,13 @@ export declare function numeric(attribute: Attribute, operatorA?: string, valueA
|
|
|
373
373
|
* ```
|
|
374
374
|
* @param attribute - Attribute to filter on
|
|
375
375
|
* @param members - Array of member values to filter by
|
|
376
|
-
* @param
|
|
376
|
+
* @param excludeMembers - Whether selected members are for exclusion
|
|
377
377
|
* @param guid - Optional GUID for the filter
|
|
378
|
+
* @param deactivatedMembers - Array of deactivated member values
|
|
379
|
+
* @param backgroundFilter - Optional background filter
|
|
378
380
|
* @returns A filter instance
|
|
379
381
|
*/
|
|
380
|
-
export declare function members(attribute: Attribute, members: string[],
|
|
382
|
+
export declare function members(attribute: Attribute, members: string[], excludeMembers?: boolean, guid?: string, deactivatedMembers?: string[], backgroundFilter?: Filter): Filter;
|
|
381
383
|
/**
|
|
382
384
|
* Creates a filter to isolate date values starting from and including the given date and level.
|
|
383
385
|
*
|
|
@@ -445,12 +445,14 @@ exports.numeric = numeric;
|
|
|
445
445
|
* ```
|
|
446
446
|
* @param attribute - Attribute to filter on
|
|
447
447
|
* @param members - Array of member values to filter by
|
|
448
|
-
* @param
|
|
448
|
+
* @param excludeMembers - Whether selected members are for exclusion
|
|
449
449
|
* @param guid - Optional GUID for the filter
|
|
450
|
+
* @param deactivatedMembers - Array of deactivated member values
|
|
451
|
+
* @param backgroundFilter - Optional background filter
|
|
450
452
|
* @returns A filter instance
|
|
451
453
|
*/
|
|
452
|
-
function members(attribute, members,
|
|
453
|
-
return new filters_js_1.MembersFilter(attribute, members,
|
|
454
|
+
function members(attribute, members, excludeMembers, guid, deactivatedMembers, backgroundFilter) {
|
|
455
|
+
return new filters_js_1.MembersFilter(attribute, members, excludeMembers, guid, deactivatedMembers, backgroundFilter);
|
|
454
456
|
}
|
|
455
457
|
exports.members = members;
|
|
456
458
|
// DATE FILTERS
|
|
@@ -95,6 +95,7 @@ declare abstract class AbstractFilter extends DimensionalElement implements Filt
|
|
|
95
95
|
*/
|
|
96
96
|
readonly guid: string;
|
|
97
97
|
private _disabled;
|
|
98
|
+
private _locked;
|
|
98
99
|
/**
|
|
99
100
|
* Boolean flag whether the filter is disabled
|
|
100
101
|
*
|
|
@@ -102,6 +103,13 @@ declare abstract class AbstractFilter extends DimensionalElement implements Filt
|
|
|
102
103
|
*/
|
|
103
104
|
get disabled(): boolean;
|
|
104
105
|
set disabled(value: boolean);
|
|
106
|
+
/**
|
|
107
|
+
* Boolean flag whether the filter is locked
|
|
108
|
+
*
|
|
109
|
+
* @internal
|
|
110
|
+
*/
|
|
111
|
+
get locked(): boolean;
|
|
112
|
+
set locked(value: boolean);
|
|
105
113
|
constructor(att: Attribute, filterType: string, guid?: string);
|
|
106
114
|
get name(): string;
|
|
107
115
|
/**
|
|
@@ -155,8 +163,12 @@ export declare class LogicalAttributeFilter extends AbstractFilter {
|
|
|
155
163
|
export declare class MembersFilter extends AbstractFilter {
|
|
156
164
|
readonly members: any[];
|
|
157
165
|
/** @internal */
|
|
158
|
-
|
|
159
|
-
|
|
166
|
+
excludeMembers: boolean;
|
|
167
|
+
/** @internal */
|
|
168
|
+
deactivatedMembers: any[];
|
|
169
|
+
/** @internal */
|
|
170
|
+
backgroundFilter?: Filter;
|
|
171
|
+
constructor(attribute: Attribute, members?: any[], excludeMembers?: boolean, guid?: string, deactivatedMembers?: any[], backgroundFilter?: Filter);
|
|
160
172
|
/**
|
|
161
173
|
* gets the element's ID
|
|
162
174
|
*/
|
|
@@ -182,6 +194,8 @@ export declare class CascadingFilter extends AbstractFilter {
|
|
|
182
194
|
get id(): string;
|
|
183
195
|
get disabled(): boolean;
|
|
184
196
|
set disabled(value: boolean);
|
|
197
|
+
get locked(): boolean;
|
|
198
|
+
set locked(value: boolean);
|
|
185
199
|
/**
|
|
186
200
|
* Gets a serializable representation of the element
|
|
187
201
|
*/
|
|
@@ -108,6 +108,7 @@ class AbstractFilter extends base_js_1.DimensionalElement {
|
|
|
108
108
|
this.attribute = att;
|
|
109
109
|
this.guid = guid || (0, utils_js_1.guidFast)(13);
|
|
110
110
|
this.disabled = false;
|
|
111
|
+
this.locked = false;
|
|
111
112
|
}
|
|
112
113
|
/**
|
|
113
114
|
* Boolean flag whether the filter is disabled
|
|
@@ -120,6 +121,17 @@ class AbstractFilter extends base_js_1.DimensionalElement {
|
|
|
120
121
|
set disabled(value) {
|
|
121
122
|
this._disabled = value;
|
|
122
123
|
}
|
|
124
|
+
/**
|
|
125
|
+
* Boolean flag whether the filter is locked
|
|
126
|
+
*
|
|
127
|
+
* @internal
|
|
128
|
+
*/
|
|
129
|
+
get locked() {
|
|
130
|
+
return this._locked;
|
|
131
|
+
}
|
|
132
|
+
set locked(value) {
|
|
133
|
+
this._locked = value;
|
|
134
|
+
}
|
|
123
135
|
get name() {
|
|
124
136
|
return (0, object_hash_1.default)(this.jaql());
|
|
125
137
|
}
|
|
@@ -161,7 +173,9 @@ class AbstractFilter extends base_js_1.DimensionalElement {
|
|
|
161
173
|
const { granularity } = attribute;
|
|
162
174
|
if (granularity === types_js_1.DateLevels.Hours ||
|
|
163
175
|
granularity === types_js_1.DateLevels.MinutesRoundTo30 ||
|
|
164
|
-
granularity === types_js_1.DateLevels.MinutesRoundTo15
|
|
176
|
+
granularity === types_js_1.DateLevels.MinutesRoundTo15 ||
|
|
177
|
+
granularity === types_js_1.DateLevels.Minutes ||
|
|
178
|
+
granularity === types_js_1.DateLevels.Seconds) {
|
|
165
179
|
throw new translatable_error_js_1.TranslatableError('errors.filter.unsupportedDatetimeLevel');
|
|
166
180
|
}
|
|
167
181
|
}
|
|
@@ -207,10 +221,12 @@ exports.LogicalAttributeFilter = LogicalAttributeFilter;
|
|
|
207
221
|
* @internal
|
|
208
222
|
*/
|
|
209
223
|
class MembersFilter extends AbstractFilter {
|
|
210
|
-
constructor(attribute, members,
|
|
224
|
+
constructor(attribute, members, excludeMembers, guid, deactivatedMembers, backgroundFilter) {
|
|
211
225
|
super(attribute, exports.FilterTypes.members, guid);
|
|
212
226
|
this.members = members !== null && members !== void 0 ? members : [];
|
|
213
|
-
this.
|
|
227
|
+
this.excludeMembers = excludeMembers !== null && excludeMembers !== void 0 ? excludeMembers : false;
|
|
228
|
+
this.deactivatedMembers = deactivatedMembers !== null && deactivatedMembers !== void 0 ? deactivatedMembers : [];
|
|
229
|
+
this.backgroundFilter = backgroundFilter;
|
|
214
230
|
if (this.members.filter((m) => m === null || m === undefined).length > 0) {
|
|
215
231
|
throw new translatable_error_js_1.TranslatableError('errors.filter.membersFilterNullMember', {
|
|
216
232
|
attributeId: attribute.id,
|
|
@@ -229,15 +245,25 @@ class MembersFilter extends AbstractFilter {
|
|
|
229
245
|
serializable() {
|
|
230
246
|
const result = super.serializable();
|
|
231
247
|
result.members = this.members;
|
|
248
|
+
if (this.backgroundFilter) {
|
|
249
|
+
result.backgroundFilter = this.backgroundFilter.serializable();
|
|
250
|
+
}
|
|
232
251
|
return result;
|
|
233
252
|
}
|
|
234
253
|
/**
|
|
235
254
|
* Gets JAQL representing this Filter instance
|
|
236
255
|
*/
|
|
237
256
|
filterJaql() {
|
|
238
|
-
|
|
257
|
+
const membersFilterJaql = {
|
|
239
258
|
members: this.members.map((m) => m.toString()),
|
|
240
259
|
};
|
|
260
|
+
const filterJaql = this.excludeMembers ? { exclude: membersFilterJaql } : membersFilterJaql;
|
|
261
|
+
if (this.backgroundFilter) {
|
|
262
|
+
return {
|
|
263
|
+
and: [filterJaql, this.backgroundFilter.filterJaql()],
|
|
264
|
+
};
|
|
265
|
+
}
|
|
266
|
+
return filterJaql;
|
|
241
267
|
}
|
|
242
268
|
}
|
|
243
269
|
exports.MembersFilter = MembersFilter;
|
|
@@ -266,6 +292,17 @@ class CascadingFilter extends AbstractFilter {
|
|
|
266
292
|
});
|
|
267
293
|
}
|
|
268
294
|
}
|
|
295
|
+
get locked() {
|
|
296
|
+
return super.locked;
|
|
297
|
+
}
|
|
298
|
+
set locked(value) {
|
|
299
|
+
super.locked = value;
|
|
300
|
+
if (this.filters) {
|
|
301
|
+
this.filters.forEach((filter) => {
|
|
302
|
+
filter.locked = value;
|
|
303
|
+
});
|
|
304
|
+
}
|
|
305
|
+
}
|
|
269
306
|
/**
|
|
270
307
|
* Gets a serializable representation of the element
|
|
271
308
|
*/
|
|
@@ -156,7 +156,8 @@ const createAttributeFilterFromConditionFilterJaql = (attribute, conditionFilter
|
|
|
156
156
|
}
|
|
157
157
|
break;
|
|
158
158
|
case types_js_1.ConditionFilterType.IS_NOT:
|
|
159
|
-
|
|
159
|
+
// use members filter with exclude instead of exclude filter
|
|
160
|
+
return (0, filter_code_util_js_1.withComposeCode)(filterFactory.members)(attribute, ((_c = conditionFilterJaql.exclude) === null || _c === void 0 ? void 0 : _c.members) || [], true, guid);
|
|
160
161
|
case types_js_1.ConditionFilterType.AFTER:
|
|
161
162
|
case types_js_1.ConditionFilterType.BEFORE:
|
|
162
163
|
case types_js_1.ConditionFilterType.IS_EMPTY:
|
|
@@ -71,7 +71,9 @@ exports.createGenericFilter = createGenericFilter;
|
|
|
71
71
|
* @returns The created Filter object.
|
|
72
72
|
*/
|
|
73
73
|
const createFilterIncludeAll = (attribute, guid) => {
|
|
74
|
-
|
|
74
|
+
// including all members is equivalent to excluding none
|
|
75
|
+
// so we can simply create a filter with no members and excludeMembers set to true
|
|
76
|
+
return (0, filter_code_util_js_1.withComposeCode)(filterFactory.members)(attribute, [], true, guid);
|
|
75
77
|
};
|
|
76
78
|
exports.createFilterIncludeAll = createFilterIncludeAll;
|
|
77
79
|
/**
|
|
@@ -85,7 +87,8 @@ exports.createFilterIncludeAll = createFilterIncludeAll;
|
|
|
85
87
|
const createFilterFromSpecificItemsFilterJaql = (attribute, specificItemsFilterJaql, guid) => {
|
|
86
88
|
const deactivatedMembers = getDeactivatedMembersFromFilterJaql(specificItemsFilterJaql);
|
|
87
89
|
const activeMembers = getActiveMembersFromFilterJaql(specificItemsFilterJaql, deactivatedMembers);
|
|
88
|
-
return (0, filter_code_util_js_1.withComposeCode)(filterFactory.members)(attribute, activeMembers,
|
|
90
|
+
return (0, filter_code_util_js_1.withComposeCode)(filterFactory.members)(attribute, activeMembers, undefined, // use undefined instead of false to avoid including the property in composeCode
|
|
91
|
+
guid, deactivatedMembers);
|
|
89
92
|
};
|
|
90
93
|
exports.createFilterFromSpecificItemsFilterJaql = createFilterFromSpecificItemsFilterJaql;
|
|
91
94
|
function getDeactivatedMembersFromFilterJaql(filterJaql) {
|
|
@@ -7,7 +7,7 @@ const date_time_filter_util_js_1 = require("./date-time-filter-util.js");
|
|
|
7
7
|
const isIncludeAllFilter = (filter) => filter === null || filter === void 0 ? void 0 : filter.all;
|
|
8
8
|
const getInnerPeriodFilter = (filter) => (filter.last ? filter.last : filter.next);
|
|
9
9
|
const isPeriodFilter = (filter) => { var _a; return ((_a = getInnerPeriodFilter(filter)) === null || _a === void 0 ? void 0 : _a.offset) < 2; };
|
|
10
|
-
const isSpecificItemsFilter = (filter) => { var _a; return ((_a = filter === null || filter === void 0 ? void 0 : filter.members) === null || _a === void 0 ? void 0 : _a.length)
|
|
10
|
+
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; };
|
|
11
11
|
exports.isSpecificItemsFilter = isSpecificItemsFilter;
|
|
12
12
|
const isFromOrToDefined = (fromRange, toRange) => (fromRange && typeof fromRange === 'string') || (toRange && typeof toRange === 'string');
|
|
13
13
|
const isFromAndToEmpty = (from, to) => from === '' && to === '';
|
|
@@ -249,6 +249,14 @@ export interface DateDimension extends Dimension {
|
|
|
249
249
|
* Minutes (round to 15) level (for Live Models)
|
|
250
250
|
*/
|
|
251
251
|
readonly MinutesRoundTo15: LevelAttribute;
|
|
252
|
+
/**
|
|
253
|
+
* Minutes level (for Live Models)
|
|
254
|
+
*/
|
|
255
|
+
readonly Minutes: LevelAttribute;
|
|
256
|
+
/**
|
|
257
|
+
* Seconds level (for Live Models)
|
|
258
|
+
*/
|
|
259
|
+
readonly Seconds: LevelAttribute;
|
|
252
260
|
/**
|
|
253
261
|
* Aggregated Hours level (for Live Models)
|
|
254
262
|
*/
|
|
@@ -346,6 +354,12 @@ export interface Filter extends Element {
|
|
|
346
354
|
* @internal
|
|
347
355
|
*/
|
|
348
356
|
disabled: boolean;
|
|
357
|
+
/**
|
|
358
|
+
* Boolean flag whether the filter is locked
|
|
359
|
+
*
|
|
360
|
+
* @internal
|
|
361
|
+
*/
|
|
362
|
+
locked: boolean;
|
|
349
363
|
/**
|
|
350
364
|
* Gets JAQL representing this Filter instance
|
|
351
365
|
*
|
|
@@ -261,6 +261,8 @@ exports.DateLevels = {
|
|
|
261
261
|
Hours: 'Hours',
|
|
262
262
|
MinutesRoundTo30: 'MinutesRoundTo30',
|
|
263
263
|
MinutesRoundTo15: 'MinutesRoundTo15',
|
|
264
|
+
Minutes: 'Minutes',
|
|
265
|
+
Seconds: 'Seconds',
|
|
264
266
|
AggHours: 'AggHours',
|
|
265
267
|
AggMinutesRoundTo30: 'AggMinutesRoundTo30',
|
|
266
268
|
AggMinutesRoundTo15: 'AggMinutesRoundTo15',
|
|
@@ -276,6 +278,8 @@ exports.DateLevels = {
|
|
|
276
278
|
exports.DateLevels.Hours,
|
|
277
279
|
exports.DateLevels.MinutesRoundTo30,
|
|
278
280
|
exports.DateLevels.MinutesRoundTo15,
|
|
281
|
+
exports.DateLevels.Minutes,
|
|
282
|
+
exports.DateLevels.Seconds,
|
|
279
283
|
exports.DateLevels.AggHours,
|
|
280
284
|
exports.DateLevels.AggMinutesRoundTo30,
|
|
281
285
|
exports.DateLevels.AggMinutesRoundTo15,
|
package/dist/cjs/interfaces.d.ts
CHANGED
|
@@ -288,7 +288,7 @@ export declare const EMPTY_PIVOT_QUERY_RESULT_DATA: PivotQueryResultData;
|
|
|
288
288
|
* @param arg
|
|
289
289
|
* @internal
|
|
290
290
|
*/
|
|
291
|
-
export declare function isDataSource(arg: DataSource | Data | undefined): arg is DataSource;
|
|
291
|
+
export declare function isDataSource(arg: DataSource | Data | undefined): arg is DataSource | undefined;
|
|
292
292
|
/**
|
|
293
293
|
* Trend formula options.
|
|
294
294
|
*/
|
|
@@ -22,7 +22,7 @@ exports.translation = {
|
|
|
22
22
|
},
|
|
23
23
|
filter: {
|
|
24
24
|
unsupportedType: 'Unsupported filter type: {{filterType}}',
|
|
25
|
-
unsupportedDatetimeLevel: 'Filters do not support the next "datetime" levels: Hours, MinutesRoundTo30, MinutesRoundTo15',
|
|
25
|
+
unsupportedDatetimeLevel: 'Filters do not support the next "datetime" levels: Hours, MinutesRoundTo30, MinutesRoundTo15, Minutes, Seconds',
|
|
26
26
|
membersFilterNullMember: 'MembersFilter of {{attributeId}} - member cannot be null',
|
|
27
27
|
},
|
|
28
28
|
unsupportedDimensionalElement: 'Unsupported dimensional element type',
|
|
@@ -22,7 +22,7 @@ exports.translation = {
|
|
|
22
22
|
},
|
|
23
23
|
filter: {
|
|
24
24
|
unsupportedType: 'Непідтримуваний тип фільтра: {{filterType}}',
|
|
25
|
-
unsupportedDatetimeLevel: 'Фільтри не підтримують наступні рівні "datetime": Hours, MinutesRoundTo30, MinutesRoundTo15',
|
|
25
|
+
unsupportedDatetimeLevel: 'Фільтри не підтримують наступні рівні "datetime": Hours, MinutesRoundTo30, MinutesRoundTo15, Minutes, Seconds',
|
|
26
26
|
membersFilterNullMember: 'MembersFilter у {{attributeId}} - member не може бути нульовим',
|
|
27
27
|
},
|
|
28
28
|
unsupportedDimensionalElement: 'Непідтримуваний тип елемента',
|
package/dist/cjs/utils.js
CHANGED
|
@@ -99,7 +99,11 @@ exports.isDataSourceInfo = isDataSourceInfo;
|
|
|
99
99
|
const createFilterFromJaql = (jaql, instanceid) => {
|
|
100
100
|
// translation logic is based on FilterJaqlInternal type (from internal modern-analytics-filters)
|
|
101
101
|
// TODO reconcile FilterJaql and FilterJaqlInternal
|
|
102
|
-
const
|
|
103
|
-
|
|
102
|
+
const hasBackgroundFilter = jaql.filter.filter && !('turnedOff' in jaql.filter.filter);
|
|
103
|
+
const filter = (0, filter_from_jaql_util_js_1.createFilterFromJaqlInternal)(jaql, instanceid);
|
|
104
|
+
if (hasBackgroundFilter) {
|
|
105
|
+
filter.backgroundFilter = (0, filter_from_jaql_util_js_1.createFilterFromJaqlInternal)(Object.assign(Object.assign({}, jaql), { filter: jaql.filter.filter }), `${instanceid}-bg`);
|
|
106
|
+
}
|
|
107
|
+
return filter;
|
|
104
108
|
};
|
|
105
109
|
exports.createFilterFromJaql = createFilterFromJaql;
|
|
@@ -158,6 +158,7 @@ export class DimensionalLevelAttribute extends DimensionalAttribute {
|
|
|
158
158
|
*/
|
|
159
159
|
translateGranularityToJaql() {
|
|
160
160
|
const MINUTES_LEVEL = 'minutes';
|
|
161
|
+
const SECONDS_LEVEL = 'seconds';
|
|
161
162
|
switch (this.granularity) {
|
|
162
163
|
case DateLevels.Years:
|
|
163
164
|
case DateLevels.Quarters:
|
|
@@ -180,6 +181,16 @@ export class DimensionalLevelAttribute extends DimensionalAttribute {
|
|
|
180
181
|
dateTimeLevel: MINUTES_LEVEL,
|
|
181
182
|
bucket: '15',
|
|
182
183
|
};
|
|
184
|
+
case DateLevels.Minutes:
|
|
185
|
+
return {
|
|
186
|
+
dateTimeLevel: MINUTES_LEVEL,
|
|
187
|
+
bucket: '1',
|
|
188
|
+
};
|
|
189
|
+
case DateLevels.Seconds:
|
|
190
|
+
return {
|
|
191
|
+
dateTimeLevel: SECONDS_LEVEL,
|
|
192
|
+
bucket: '0',
|
|
193
|
+
};
|
|
183
194
|
case DateLevels.AggHours:
|
|
184
195
|
return {
|
|
185
196
|
level: MINUTES_LEVEL,
|
|
@@ -211,7 +222,7 @@ export class DimensionalLevelAttribute extends DimensionalAttribute {
|
|
|
211
222
|
return lvl;
|
|
212
223
|
};
|
|
213
224
|
if (json.dateTimeLevel) {
|
|
214
|
-
if (json.dateTimeLevel !== 'minutes') {
|
|
225
|
+
if (json.dateTimeLevel !== 'minutes' && json.dateTimeLevel !== 'seconds') {
|
|
215
226
|
return returnUnsupported(json.dateTimeLevel);
|
|
216
227
|
}
|
|
217
228
|
switch (json.bucket) {
|
|
@@ -221,6 +232,10 @@ export class DimensionalLevelAttribute extends DimensionalAttribute {
|
|
|
221
232
|
return DateLevels.MinutesRoundTo30;
|
|
222
233
|
case '15':
|
|
223
234
|
return DateLevels.MinutesRoundTo15;
|
|
235
|
+
case '1':
|
|
236
|
+
return DateLevels.Minutes;
|
|
237
|
+
case '0':
|
|
238
|
+
return DateLevels.Seconds;
|
|
224
239
|
default:
|
|
225
240
|
return returnUnsupported(json.dateTimeLevel);
|
|
226
241
|
}
|
|
@@ -272,6 +287,10 @@ export class DimensionalLevelAttribute extends DimensionalAttribute {
|
|
|
272
287
|
return 'yyyy-MM-dd HH:mm';
|
|
273
288
|
case DateLevels.MinutesRoundTo15:
|
|
274
289
|
return 'yyyy-MM-dd HH:mm';
|
|
290
|
+
case DateLevels.Minutes:
|
|
291
|
+
return 'yyyy-MM-dd HH:mm';
|
|
292
|
+
case DateLevels.Seconds:
|
|
293
|
+
return 'yyyy-MM-dd HH:mm:ss';
|
|
275
294
|
case DateLevels.AggHours:
|
|
276
295
|
return 'HH:mm';
|
|
277
296
|
case DateLevels.AggMinutesRoundTo30:
|
|
@@ -94,6 +94,14 @@ export declare class DimensionalDateDimension extends DimensionalDimension imple
|
|
|
94
94
|
* Minutes (round to 15) level
|
|
95
95
|
*/
|
|
96
96
|
readonly MinutesRoundTo15: LevelAttribute;
|
|
97
|
+
/**
|
|
98
|
+
* Minutes level (for Live Models)
|
|
99
|
+
*/
|
|
100
|
+
readonly Minutes: LevelAttribute;
|
|
101
|
+
/**
|
|
102
|
+
* Seconds level (for Live Models)
|
|
103
|
+
*/
|
|
104
|
+
readonly Seconds: LevelAttribute;
|
|
97
105
|
/**
|
|
98
106
|
* Aggregated Hours level
|
|
99
107
|
*/
|
|
@@ -160,6 +160,8 @@ export class DimensionalDateDimension extends DimensionalDimension {
|
|
|
160
160
|
this.Hours = new DimensionalLevelAttribute(DateLevels.Hours, expression, DateLevels.Hours, 'yyyy-MM-dd HH:mm');
|
|
161
161
|
this.MinutesRoundTo30 = new DimensionalLevelAttribute(DateLevels.MinutesRoundTo30, expression, DateLevels.MinutesRoundTo30, 'yyyy-MM-dd HH:mm');
|
|
162
162
|
this.MinutesRoundTo15 = new DimensionalLevelAttribute(DateLevels.MinutesRoundTo15, expression, DateLevels.MinutesRoundTo15, 'yyyy-MM-dd HH:mm');
|
|
163
|
+
this.Minutes = new DimensionalLevelAttribute(DateLevels.Minutes, expression, DateLevels.Minutes, 'yyyy-MM-dd HH:mm');
|
|
164
|
+
this.Seconds = new DimensionalLevelAttribute(DateLevels.Seconds, expression, DateLevels.Seconds, 'yyyy-MM-dd HH:mm:ss');
|
|
163
165
|
this.AggHours = new DimensionalLevelAttribute(DateLevels.AggHours, expression, DateLevels.AggHours, 'HH:mm');
|
|
164
166
|
this.AggMinutesRoundTo30 = new DimensionalLevelAttribute(DateLevels.AggMinutesRoundTo30, expression, DateLevels.AggMinutesRoundTo30, 'HH:mm');
|
|
165
167
|
this.AggMinutesRoundTo15 = new DimensionalLevelAttribute(DateLevels.AggMinutesRoundTo15, expression, DateLevels.AggMinutesRoundTo15, 'HH:mm');
|
|
@@ -173,6 +175,8 @@ export class DimensionalDateDimension extends DimensionalDimension {
|
|
|
173
175
|
this.Hours,
|
|
174
176
|
this.MinutesRoundTo30,
|
|
175
177
|
this.MinutesRoundTo15,
|
|
178
|
+
this.Minutes,
|
|
179
|
+
this.Seconds,
|
|
176
180
|
this.AggHours,
|
|
177
181
|
this.AggMinutesRoundTo30,
|
|
178
182
|
this.AggMinutesRoundTo15,
|
|
@@ -373,11 +373,13 @@ export declare function numeric(attribute: Attribute, operatorA?: string, valueA
|
|
|
373
373
|
* ```
|
|
374
374
|
* @param attribute - Attribute to filter on
|
|
375
375
|
* @param members - Array of member values to filter by
|
|
376
|
-
* @param
|
|
376
|
+
* @param excludeMembers - Whether selected members are for exclusion
|
|
377
377
|
* @param guid - Optional GUID for the filter
|
|
378
|
+
* @param deactivatedMembers - Array of deactivated member values
|
|
379
|
+
* @param backgroundFilter - Optional background filter
|
|
378
380
|
* @returns A filter instance
|
|
379
381
|
*/
|
|
380
|
-
export declare function members(attribute: Attribute, members: string[],
|
|
382
|
+
export declare function members(attribute: Attribute, members: string[], excludeMembers?: boolean, guid?: string, deactivatedMembers?: string[], backgroundFilter?: Filter): Filter;
|
|
381
383
|
/**
|
|
382
384
|
* Creates a filter to isolate date values starting from and including the given date and level.
|
|
383
385
|
*
|
|
@@ -423,12 +423,14 @@ export function numeric(attribute, operatorA, valueA, operatorB, valueB, guid) {
|
|
|
423
423
|
* ```
|
|
424
424
|
* @param attribute - Attribute to filter on
|
|
425
425
|
* @param members - Array of member values to filter by
|
|
426
|
-
* @param
|
|
426
|
+
* @param excludeMembers - Whether selected members are for exclusion
|
|
427
427
|
* @param guid - Optional GUID for the filter
|
|
428
|
+
* @param deactivatedMembers - Array of deactivated member values
|
|
429
|
+
* @param backgroundFilter - Optional background filter
|
|
428
430
|
* @returns A filter instance
|
|
429
431
|
*/
|
|
430
|
-
export function members(attribute, members,
|
|
431
|
-
return new MembersFilter(attribute, members,
|
|
432
|
+
export function members(attribute, members, excludeMembers, guid, deactivatedMembers, backgroundFilter) {
|
|
433
|
+
return new MembersFilter(attribute, members, excludeMembers, guid, deactivatedMembers, backgroundFilter);
|
|
432
434
|
}
|
|
433
435
|
// DATE FILTERS
|
|
434
436
|
/**
|
|
@@ -95,6 +95,7 @@ declare abstract class AbstractFilter extends DimensionalElement implements Filt
|
|
|
95
95
|
*/
|
|
96
96
|
readonly guid: string;
|
|
97
97
|
private _disabled;
|
|
98
|
+
private _locked;
|
|
98
99
|
/**
|
|
99
100
|
* Boolean flag whether the filter is disabled
|
|
100
101
|
*
|
|
@@ -102,6 +103,13 @@ declare abstract class AbstractFilter extends DimensionalElement implements Filt
|
|
|
102
103
|
*/
|
|
103
104
|
get disabled(): boolean;
|
|
104
105
|
set disabled(value: boolean);
|
|
106
|
+
/**
|
|
107
|
+
* Boolean flag whether the filter is locked
|
|
108
|
+
*
|
|
109
|
+
* @internal
|
|
110
|
+
*/
|
|
111
|
+
get locked(): boolean;
|
|
112
|
+
set locked(value: boolean);
|
|
105
113
|
constructor(att: Attribute, filterType: string, guid?: string);
|
|
106
114
|
get name(): string;
|
|
107
115
|
/**
|
|
@@ -155,8 +163,12 @@ export declare class LogicalAttributeFilter extends AbstractFilter {
|
|
|
155
163
|
export declare class MembersFilter extends AbstractFilter {
|
|
156
164
|
readonly members: any[];
|
|
157
165
|
/** @internal */
|
|
158
|
-
|
|
159
|
-
|
|
166
|
+
excludeMembers: boolean;
|
|
167
|
+
/** @internal */
|
|
168
|
+
deactivatedMembers: any[];
|
|
169
|
+
/** @internal */
|
|
170
|
+
backgroundFilter?: Filter;
|
|
171
|
+
constructor(attribute: Attribute, members?: any[], excludeMembers?: boolean, guid?: string, deactivatedMembers?: any[], backgroundFilter?: Filter);
|
|
160
172
|
/**
|
|
161
173
|
* gets the element's ID
|
|
162
174
|
*/
|
|
@@ -182,6 +194,8 @@ export declare class CascadingFilter extends AbstractFilter {
|
|
|
182
194
|
get id(): string;
|
|
183
195
|
get disabled(): boolean;
|
|
184
196
|
set disabled(value: boolean);
|
|
197
|
+
get locked(): boolean;
|
|
198
|
+
set locked(value: boolean);
|
|
185
199
|
/**
|
|
186
200
|
* Gets a serializable representation of the element
|
|
187
201
|
*/
|