@sisense/sdk-data 2.11.0 → 2.13.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 (34) hide show
  1. package/dist/cjs/dimensional-model/attributes.js +1 -1
  2. package/dist/cjs/dimensional-model/base.js +1 -0
  3. package/dist/cjs/dimensional-model/data-model.js +1 -0
  4. package/dist/cjs/dimensional-model/filters/factory.d.ts +140 -0
  5. package/dist/cjs/dimensional-model/filters/factory.js +162 -15
  6. package/dist/cjs/dimensional-model/filters/filter-relations.d.ts +1 -1
  7. package/dist/cjs/dimensional-model/filters/filter-relations.js +31 -6
  8. package/dist/cjs/dimensional-model/filters/filters.d.ts +35 -1
  9. package/dist/cjs/dimensional-model/filters/filters.js +68 -10
  10. package/dist/cjs/dimensional-model/filters/helpers.d.ts +1 -1
  11. package/dist/cjs/dimensional-model/filters/helpers.js +8 -9
  12. package/dist/cjs/dimensional-model/filters/utils/condition-filter-util.js +4 -0
  13. package/dist/cjs/dimensional-model/measures/factory.js +1 -0
  14. package/dist/cjs/dimensional-model/measures/measures.js +1 -1
  15. package/dist/cjs/dimensional-model/types.d.ts +4 -0
  16. package/dist/cjs/dimensional-model/types.js +24 -5
  17. package/dist/cjs/utils.js +1 -1
  18. package/dist/dimensional-model/base.js +1 -0
  19. package/dist/dimensional-model/data-model.js +1 -0
  20. package/dist/dimensional-model/filters/factory.d.ts +140 -0
  21. package/dist/dimensional-model/filters/factory.js +161 -14
  22. package/dist/dimensional-model/filters/filter-relations.d.ts +1 -1
  23. package/dist/dimensional-model/filters/filter-relations.js +3 -1
  24. package/dist/dimensional-model/filters/filters.d.ts +35 -1
  25. package/dist/dimensional-model/filters/filters.js +65 -9
  26. package/dist/dimensional-model/filters/helpers.d.ts +1 -1
  27. package/dist/dimensional-model/filters/helpers.js +1 -2
  28. package/dist/dimensional-model/filters/utils/condition-filter-util.js +4 -0
  29. package/dist/dimensional-model/measures/factory.js +1 -0
  30. package/dist/dimensional-model/types.d.ts +4 -0
  31. package/dist/dimensional-model/types.js +24 -5
  32. package/dist/tsconfig.prod.cjs.tsbuildinfo +1 -1
  33. package/dist/utils.js +2 -2
  34. package/package.json +3 -3
@@ -77,6 +77,7 @@ export const FilterTypes = {
77
77
  exclude: 'exclude',
78
78
  measure: 'measure',
79
79
  ranking: 'ranking',
80
+ measureRanking: 'measure-ranking',
80
81
  text: 'text',
81
82
  numeric: 'numeric',
82
83
  dateRange: 'dateRange',
@@ -517,6 +518,59 @@ export class RankingFilter extends AbstractFilter {
517
518
  return result;
518
519
  }
519
520
  }
521
+ /**
522
+ * @internal
523
+ */
524
+ export class MeasureRankingFilter extends AbstractFilter {
525
+ constructor(measure, operator, count, config, composeCode) {
526
+ super(measure.attribute, FilterTypes.measureRanking, config, composeCode);
527
+ /**
528
+ * @internal
529
+ */
530
+ this.__serializable = 'MeasureRankingFilter';
531
+ this.count = count;
532
+ this.operator = operator;
533
+ this.measure = measure;
534
+ }
535
+ /**
536
+ * gets the element's ID
537
+ */
538
+ get id() {
539
+ return `${this.operator}_${this.count}_measure_${this.measure.id}`;
540
+ }
541
+ /**
542
+ * Gets a serializable representation of the element
543
+ */
544
+ serialize() {
545
+ const result = super.serialize();
546
+ result.measure = this.measure.serialize();
547
+ result.count = this.count;
548
+ result.operator = this.operator;
549
+ return result;
550
+ }
551
+ /**
552
+ * Gets JAQL representing this Filter instance
553
+ */
554
+ filterJaql() {
555
+ const result = {};
556
+ result[this.operator] = this.count;
557
+ return result;
558
+ }
559
+ jaql(nested) {
560
+ if (this.config.disabled) {
561
+ return AbstractFilter.disabledJaql(nested);
562
+ }
563
+ const result = super.jaql(nested);
564
+ if (isDimensionalBaseMeasure(this.measure)) {
565
+ Object.entries(this.measure.jaql().jaql).forEach(([key, value]) => {
566
+ result.jaql[key] = value;
567
+ });
568
+ }
569
+ // Add type: 'measure' for measure-based filters
570
+ result.jaql.type = 'measure';
571
+ return result;
572
+ }
573
+ }
520
574
  /**
521
575
  * @internal
522
576
  */
@@ -734,6 +788,15 @@ export function isNumericFilter(filter) {
734
788
  export function isRankingFilter(filter) {
735
789
  return filter && filter.__serializable === 'RankingFilter';
736
790
  }
791
+ /**
792
+ * Checks if a filter is a MeasureRankingFilter.
793
+ *
794
+ * @param filter - The filter to check.
795
+ * @internal
796
+ */
797
+ export function isMeasureRankingFilter(filter) {
798
+ return filter && filter.__serializable === 'MeasureRankingFilter';
799
+ }
737
800
  /**
738
801
  * Checks if a filter is a MeasureFilter.
739
802
  *
@@ -805,31 +868,24 @@ export function createFilter(json) {
805
868
  switch (json.filterType) {
806
869
  case FilterTypes.logicalAttribute:
807
870
  return new LogicalAttributeFilter(json.filters.map((f) => createFilter(f)), json.operator);
808
- break;
809
871
  case FilterTypes.members:
810
872
  return new MembersFilter(create(json.attribute), json.members);
811
- break;
812
873
  case FilterTypes.exclude:
813
874
  return new ExcludeFilter(createFilter(json.filter), json.input && createFilter(json.input));
814
- break;
815
875
  case FilterTypes.measure:
816
876
  return new MeasureFilter(create(json.attribute), create(json.measure), json.operatorA, json.valueA, json.operatorB, json.valueB);
817
- break;
818
877
  case FilterTypes.ranking:
819
878
  return new RankingFilter(create(json.attribute), create(json.measure), json.operator, json.count);
820
- break;
879
+ case FilterTypes.measureRanking:
880
+ return new MeasureRankingFilter(create(json.measure), json.operator, json.count);
821
881
  case FilterTypes.numeric:
822
882
  return new NumericFilter(create(json.attribute), json.operatorA, json.valueA, json.operatorB, json.valueB);
823
- break;
824
883
  case FilterTypes.text:
825
884
  return new TextFilter(create(json.attribute), json.operatorA, json.valueA);
826
- break;
827
885
  case FilterTypes.relativeDate:
828
886
  return new RelativeDateFilter(create(json.attribute), json.offset, json.count, json.operator, json.anchor);
829
- break;
830
887
  case FilterTypes.dateRange:
831
888
  return new DateRangeFilter(create(json.attribute), json.valueA, json.valueB);
832
- break;
833
889
  }
834
890
  throw new TranslatableError('errors.filter.unsupportedType', {
835
891
  filterType: json.filterType,
@@ -1,4 +1,4 @@
1
- import { Filter, FilterRelations } from '../../index.js';
1
+ import { Filter, FilterRelations } from '../interfaces.js';
2
2
  /**
3
3
  * Returns a function that adds a filter to existing filters or filter relations.
4
4
  *
@@ -1,6 +1,5 @@
1
1
  import omit from 'lodash-es/omit.js';
2
- import { isFilterRelations } from '../../index.js';
3
- import { calculateNewRelations, combineFiltersAndRelations, getFiltersArray, getRelationsWithReplacedFilter, splitFiltersAndRelations, } from './filter-relations.js';
2
+ import { calculateNewRelations, combineFiltersAndRelations, getFiltersArray, getRelationsWithReplacedFilter, isFilterRelations, splitFiltersAndRelations, } from './filter-relations.js';
4
3
  /**
5
4
  * Returns a function that adds a filter to existing filters or filter relations.
6
5
  *
@@ -181,6 +181,10 @@ export const createMeasureFilterFromConditionFilterJaql = (measure, conditionFil
181
181
  return filterFactory.measureBetween(measure, conditionFilterJaql.from, conditionFilterJaql.to, { guid });
182
182
  case ConditionFilterType.IS_NOT_BETWEEN:
183
183
  return filterFactory.exclude(filterFactory.measureBetween(measure, (_a = conditionFilterJaql.exclude) === null || _a === void 0 ? void 0 : _a.from, (_b = conditionFilterJaql.exclude) === null || _b === void 0 ? void 0 : _b.to, { guid }), undefined, { guid });
184
+ case ConditionFilterType.TOP:
185
+ return filterFactory.measureTopRanking(measure, conditionFilterJaql[ConditionFilterType.TOP], { guid });
186
+ case ConditionFilterType.BOTTOM:
187
+ return filterFactory.measureBottomRanking(measure, conditionFilterJaql[ConditionFilterType.BOTTOM], { guid });
184
188
  }
185
189
  throw new TranslatableError('errors.filter.unsupportedConditionFilter', {
186
190
  filter: JSON.stringify(conditionFilterJaql),
@@ -1,3 +1,4 @@
1
+ /* eslint-disable max-lines */
1
2
  import { normalizeName } from '../base.js';
2
3
  import { withComposeCodeForMeasure } from '../compose-code-utils.js';
3
4
  import { AggregationTypes, MetadataTypes } from '../types.js';
@@ -157,6 +157,10 @@ export declare const DateLevels: {
157
157
  readonly AggMinutesRoundTo1: "AggMinutesRoundTo1";
158
158
  /** @internal */
159
159
  readonly all: string[];
160
+ /** @internal */
161
+ readonly dateOnly: string[];
162
+ /** @internal */
163
+ readonly timeOnly: string[];
160
164
  };
161
165
  /** @internal */
162
166
  export declare type DateLevel = Exclude<(typeof DateLevels)[keyof typeof DateLevels], typeof DateLevels.all>;
@@ -1,9 +1,4 @@
1
1
  /* eslint-disable @typescript-eslint/no-unsafe-return */
2
- /* eslint-disable @typescript-eslint/no-unsafe-member-access */
3
- /* eslint-disable @typescript-eslint/no-unsafe-assignment */
4
- /*
5
- * Types
6
- */
7
2
  /**
8
3
  * Different aggregation types
9
4
  */
@@ -286,6 +281,30 @@ export const DateLevels = {
286
281
  DateLevels.AggMinutesRoundTo1,
287
282
  ];
288
283
  },
284
+ /** @internal */
285
+ get dateOnly() {
286
+ return [
287
+ DateLevels.Years,
288
+ DateLevels.Quarters,
289
+ DateLevels.Months,
290
+ DateLevels.Weeks,
291
+ DateLevels.Days,
292
+ ];
293
+ },
294
+ /** @internal */
295
+ get timeOnly() {
296
+ return [
297
+ DateLevels.Hours,
298
+ DateLevels.MinutesRoundTo30,
299
+ DateLevels.MinutesRoundTo15,
300
+ DateLevels.Minutes,
301
+ DateLevels.Seconds,
302
+ DateLevels.AggHours,
303
+ DateLevels.AggMinutesRoundTo30,
304
+ DateLevels.AggMinutesRoundTo15,
305
+ DateLevels.AggMinutesRoundTo1,
306
+ ];
307
+ },
289
308
  };
290
309
  /** @internal */
291
310
  export var DataType;