@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.
Files changed (65) hide show
  1. package/dist/cjs/dimensional-model/attributes.js +20 -1
  2. package/dist/cjs/dimensional-model/dimensions.d.ts +8 -0
  3. package/dist/cjs/dimensional-model/dimensions.js +4 -0
  4. package/dist/cjs/dimensional-model/filters/factory.d.ts +4 -2
  5. package/dist/cjs/dimensional-model/filters/factory.js +5 -3
  6. package/dist/cjs/dimensional-model/filters/filters.d.ts +16 -2
  7. package/dist/cjs/dimensional-model/filters/filters.js +41 -4
  8. package/dist/cjs/dimensional-model/filters/utils/condition-filter-util.js +2 -1
  9. package/dist/cjs/dimensional-model/filters/utils/filter-from-jaql-util.js +5 -2
  10. package/dist/cjs/dimensional-model/filters/utils/filter-types-util.js +1 -1
  11. package/dist/cjs/dimensional-model/interfaces.d.ts +14 -0
  12. package/dist/cjs/dimensional-model/types.d.ts +2 -0
  13. package/dist/cjs/dimensional-model/types.js +4 -0
  14. package/dist/cjs/interfaces.d.ts +1 -1
  15. package/dist/cjs/package.json +12 -0
  16. package/dist/cjs/translation/resources/en.js +1 -1
  17. package/dist/cjs/translation/resources/uk.js +1 -1
  18. package/dist/cjs/utils.js +6 -2
  19. package/dist/dimensional-model/attributes.js +20 -1
  20. package/dist/dimensional-model/dimensions.d.ts +8 -0
  21. package/dist/dimensional-model/dimensions.js +4 -0
  22. package/dist/dimensional-model/filters/factory.d.ts +4 -2
  23. package/dist/dimensional-model/filters/factory.js +5 -3
  24. package/dist/dimensional-model/filters/filters.d.ts +16 -2
  25. package/dist/dimensional-model/filters/filters.js +41 -4
  26. package/dist/dimensional-model/filters/utils/condition-filter-util.js +2 -1
  27. package/dist/dimensional-model/filters/utils/filter-from-jaql-util.js +5 -2
  28. package/dist/dimensional-model/filters/utils/filter-types-util.js +1 -1
  29. package/dist/dimensional-model/interfaces.d.ts +14 -0
  30. package/dist/dimensional-model/types.d.ts +2 -0
  31. package/dist/dimensional-model/types.js +4 -0
  32. package/dist/interfaces.d.ts +1 -1
  33. package/dist/translation/resources/en.js +1 -1
  34. package/dist/translation/resources/uk.js +1 -1
  35. package/dist/tsconfig.prod.cjs.tsbuildinfo +1 -0
  36. package/dist/utils.js +6 -2
  37. package/package.json +4 -9
  38. package/dist/cjs/dimensional-model/analytics/factory.test.d.ts +0 -1
  39. package/dist/cjs/dimensional-model/analytics/factory.test.js +0 -99
  40. package/dist/cjs/dimensional-model/attributes.test.d.ts +0 -1
  41. package/dist/cjs/dimensional-model/attributes.test.js +0 -154
  42. package/dist/cjs/dimensional-model/base.test.d.ts +0 -1
  43. package/dist/cjs/dimensional-model/base.test.js +0 -17
  44. package/dist/cjs/dimensional-model/dimensions.test.d.ts +0 -1
  45. package/dist/cjs/dimensional-model/dimensions.test.js +0 -54
  46. package/dist/cjs/dimensional-model/filters/factory.test.d.ts +0 -1
  47. package/dist/cjs/dimensional-model/filters/factory.test.js +0 -366
  48. package/dist/cjs/dimensional-model/filters/filters.test.d.ts +0 -1
  49. package/dist/cjs/dimensional-model/filters/filters.test.js +0 -225
  50. package/dist/cjs/dimensional-model/filters/utils/filter-code-util.test.d.ts +0 -1
  51. package/dist/cjs/dimensional-model/filters/utils/filter-code-util.test.js +0 -32
  52. package/dist/cjs/dimensional-model/filters/utils/filter-from-jaql-util.test.d.ts +0 -1
  53. package/dist/cjs/dimensional-model/filters/utils/filter-from-jaql-util.test.js +0 -623
  54. package/dist/cjs/dimensional-model/filters/utils/filter-matcher-utils.test.d.ts +0 -1
  55. package/dist/cjs/dimensional-model/filters/utils/filter-matcher-utils.test.js +0 -236
  56. package/dist/cjs/dimensional-model/measures/factory.test.d.ts +0 -1
  57. package/dist/cjs/dimensional-model/measures/factory.test.js +0 -481
  58. package/dist/cjs/dimensional-model/measures/measures.test.d.ts +0 -1
  59. package/dist/cjs/dimensional-model/measures/measures.test.js +0 -79
  60. package/dist/cjs/dimensional-model/simple-column-types.test.d.ts +0 -1
  61. package/dist/cjs/dimensional-model/simple-column-types.test.js +0 -85
  62. package/dist/cjs/dimensional-model/types.test.d.ts +0 -1
  63. package/dist/cjs/dimensional-model/types.test.js +0 -33
  64. package/dist/cjs/utils.test.d.ts +0 -1
  65. 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 _deactivatedMembers - [internal] Array of deactivated member values
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[], _deactivatedMembers?: string[], guid?: string): Filter;
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 _deactivatedMembers - [internal] Array of deactivated member values
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, _deactivatedMembers, guid) {
453
- return new filters_js_1.MembersFilter(attribute, members, _deactivatedMembers, guid);
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
- _deactivatedMembers: any[];
159
- constructor(attribute: Attribute, members?: any[], _deactivatedMembers?: any[], guid?: string);
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, _deactivatedMembers, guid) {
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._deactivatedMembers = _deactivatedMembers !== null && _deactivatedMembers !== void 0 ? _deactivatedMembers : [];
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
- return {
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
- return (0, filter_code_util_js_1.withComposeCode)(filterFactory.exclude)((0, filter_code_util_js_1.withComposeCode)(filterFactory.members)(attribute, ((_c = conditionFilterJaql.exclude) === null || _c === void 0 ? void 0 : _c.members) || [], undefined, guid), undefined, guid);
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
- return (0, filter_code_util_js_1.withComposeCode)(filterFactory.members)(attribute, [], [], guid);
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, deactivatedMembers, guid);
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) > 0; };
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
  *
@@ -144,6 +144,8 @@ export declare const DateLevels: {
144
144
  Hours: string;
145
145
  MinutesRoundTo30: string;
146
146
  MinutesRoundTo15: string;
147
+ Minutes: string;
148
+ Seconds: string;
147
149
  AggHours: string;
148
150
  AggMinutesRoundTo30: string;
149
151
  AggMinutesRoundTo15: string;
@@ -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,
@@ -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
  */
@@ -0,0 +1,12 @@
1
+ {
2
+ "main": "./index.js",
3
+ "module": "./index.js",
4
+ "types": "./index.d.ts",
5
+ "exports": {
6
+ ".": {
7
+ "types": "./index.d.ts",
8
+ "require": "./index.js",
9
+ "default": "./index.js"
10
+ }
11
+ }
12
+ }
@@ -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 jaqlInternal = jaql;
103
- return (0, filter_from_jaql_util_js_1.createFilterFromJaqlInternal)(jaqlInternal, instanceid);
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 _deactivatedMembers - [internal] Array of deactivated member values
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[], _deactivatedMembers?: string[], guid?: string): Filter;
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 _deactivatedMembers - [internal] Array of deactivated member values
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, _deactivatedMembers, guid) {
431
- return new MembersFilter(attribute, members, _deactivatedMembers, guid);
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
- _deactivatedMembers: any[];
159
- constructor(attribute: Attribute, members?: any[], _deactivatedMembers?: any[], guid?: string);
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
  */