@sisense/sdk-data 1.18.1 → 1.19.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 (26) hide show
  1. package/dist/cjs/dimensional-model/attributes.js +1 -1
  2. package/dist/cjs/dimensional-model/dimensions.js +9 -8
  3. package/dist/cjs/dimensional-model/filters/factory.d.ts +9 -9
  4. package/dist/cjs/dimensional-model/filters/factory.js +9 -9
  5. package/dist/cjs/dimensional-model/filters/filters.d.ts +79 -1
  6. package/dist/cjs/dimensional-model/filters/filters.js +115 -4
  7. package/dist/cjs/dimensional-model/filters/utils/attribute-measure-util.d.ts +3 -2
  8. package/dist/cjs/dimensional-model/filters/utils/attribute-measure-util.js +9 -8
  9. package/dist/cjs/dimensional-model/interfaces.d.ts +4 -0
  10. package/dist/cjs/dimensional-model/measures/factory.d.ts +1 -1
  11. package/dist/cjs/dimensional-model/measures/factory.js +1 -1
  12. package/dist/cjs/dimensional-model/types.d.ts +5 -0
  13. package/dist/dimensional-model/attributes.js +1 -1
  14. package/dist/dimensional-model/dimensions.js +9 -8
  15. package/dist/dimensional-model/filters/factory.d.ts +9 -9
  16. package/dist/dimensional-model/filters/factory.js +9 -9
  17. package/dist/dimensional-model/filters/filters.d.ts +79 -1
  18. package/dist/dimensional-model/filters/filters.js +103 -3
  19. package/dist/dimensional-model/filters/utils/attribute-measure-util.d.ts +3 -2
  20. package/dist/dimensional-model/filters/utils/attribute-measure-util.js +9 -8
  21. package/dist/dimensional-model/interfaces.d.ts +4 -0
  22. package/dist/dimensional-model/measures/factory.d.ts +1 -1
  23. package/dist/dimensional-model/measures/factory.js +1 -1
  24. package/dist/dimensional-model/types.d.ts +5 -0
  25. package/dist/tsconfig.prod.cjs.tsbuildinfo +1 -1
  26. package/package.json +3 -3
@@ -14,7 +14,7 @@ exports.jaqlSimpleColumnType = jaqlSimpleColumnType;
14
14
  */
15
15
  class DimensionalAttribute extends base_js_1.DimensionalElement {
16
16
  constructor(name, expression, type, desc, sort) {
17
- super((0, base_js_1.normalizeName)(name), type || types_js_1.MetadataTypes.Attribute, desc);
17
+ super(name, type || types_js_1.MetadataTypes.Attribute, desc);
18
18
  this._sort = types_js_1.Sort.None;
19
19
  this.expression = expression;
20
20
  this._sort = sort || types_js_1.Sort.None;
@@ -35,13 +35,14 @@ class DimensionalDimension extends base_js_1.DimensionalElement {
35
35
  return types_js_1.MetadataTypes.TextDimension;
36
36
  }
37
37
  getAttachedName(name, expression) {
38
- let result = (0, base_js_1.normalizeName)(name);
38
+ let result = name;
39
39
  // if exists fallback to expression
40
- if (result === 'id' ||
41
- result === 'name' ||
42
- Object.getOwnPropertyDescriptor(this, result) !== undefined ||
43
- this[result] !== undefined) {
44
- result = (0, base_js_1.normalizeName)(expression.replace('.', '_').replace('[', '').replace(']', ''));
40
+ const normalizedName = (0, base_js_1.normalizeName)(name);
41
+ if (normalizedName === 'id' ||
42
+ normalizedName === 'name' ||
43
+ Object.getOwnPropertyDescriptor(this, normalizedName) !== undefined ||
44
+ this[normalizedName] !== undefined) {
45
+ result = expression;
45
46
  }
46
47
  return result;
47
48
  }
@@ -49,7 +50,7 @@ class DimensionalDimension extends base_js_1.DimensionalElement {
49
50
  this._dimensions = dimensions;
50
51
  for (let i = 0; i < dimensions.length; i++) {
51
52
  const n = this.getAttachedName(dimensions[i].name, dimensions[i].attributes[0].expression);
52
- this[n] = dimensions[i];
53
+ this[(0, base_js_1.normalizeName)(n)] = dimensions[i];
53
54
  if (n != dimensions[i].name) {
54
55
  dimensions[i].name = n;
55
56
  }
@@ -59,7 +60,7 @@ class DimensionalDimension extends base_js_1.DimensionalElement {
59
60
  this._attributes = attributes || [];
60
61
  for (let i = 0; i < attributes.length; i++) {
61
62
  const n = this.getAttachedName(attributes[i].name, attributes[i].expression);
62
- this[n] = attributes[i];
63
+ this[(0, base_js_1.normalizeName)(n)] = attributes[i];
63
64
  if (attributes[i].name != n) {
64
65
  attributes[i].name = n;
65
66
  }
@@ -562,7 +562,7 @@ export declare function measureBase(attribute: Attribute, measure: Measure, oper
562
562
  * Filter for categories that have an average revenue equal 50 in the Sample ECommerce data model.
563
563
  * ```ts
564
564
  * filterFactory.measureEquals(
565
- * measures.average(DM.Commerce.Revenue),
565
+ * measureFactory.average(DM.Commerce.Revenue),
566
566
  * 50
567
567
  * )
568
568
  * ```
@@ -580,7 +580,7 @@ export declare function measureEquals(measure: BaseMeasure, value: number, guid?
580
580
  * to 50 in the Sample ECommerce data model.
581
581
  * ```ts
582
582
  * filterFactory.measureGreaterThan(
583
- * measures.average(DM.Commerce.Revenue),
583
+ * measureFactory.average(DM.Commerce.Revenue),
584
584
  * 50
585
585
  * )
586
586
  * ```
@@ -598,7 +598,7 @@ export declare function measureGreaterThan(measure: BaseMeasure, value: number,
598
598
  * or equal to 50 in the Sample ECommerce data model.
599
599
  * ```ts
600
600
  * filterFactory.measureGreaterThanOrEqual(
601
- * measures.average(DM.Commerce.Revenue),
601
+ * measureFactory.average(DM.Commerce.Revenue),
602
602
  * 50
603
603
  * )
604
604
  * ```
@@ -616,7 +616,7 @@ export declare function measureGreaterThanOrEqual(measure: BaseMeasure, value: n
616
616
  * or equal to 100 in the Sample ECommerce data model.
617
617
  * ```ts
618
618
  * filterFactory.measureLessThanOrEqual(
619
- * measures.average(DM.Commerce.Revenue),
619
+ * measureFactory.average(DM.Commerce.Revenue),
620
620
  * 100
621
621
  * )
622
622
  * ```
@@ -633,7 +633,7 @@ export declare function measureLessThanOrEqual(measure: BaseMeasure, value: numb
633
633
  * Filter for categories that have an average revenue less than 100 in the Sample ECommerce data model.
634
634
  * ```ts
635
635
  * filterFactory.measureLessThan(
636
- * measures.average(DM.Commerce.Revenue),
636
+ * measureFactory.average(DM.Commerce.Revenue),
637
637
  * 100
638
638
  * )
639
639
  * ```
@@ -651,7 +651,7 @@ export declare function measureLessThan(measure: BaseMeasure, value: number, gui
651
651
  * or equal to 100 in the Sample ECommerce data model.
652
652
  * ```ts
653
653
  * filterFactory.measureBetween(
654
- * measures.average(DM.Commerce.Revenue),
654
+ * measureFactory.average(DM.Commerce.Revenue),
655
655
  * 50,
656
656
  * 100
657
657
  * )
@@ -671,7 +671,7 @@ export declare function measureBetween(measure: BaseMeasure, valueA: number, val
671
671
  * 100 in the Sample ECommerce data model.
672
672
  * ```ts
673
673
  * filterFactory.measureBetweenNotEqual(
674
- * measures.average(DM.Commerce.Revenue),
674
+ * measureFactory.average(DM.Commerce.Revenue),
675
675
  * 50,
676
676
  * 100
677
677
  * )
@@ -691,7 +691,7 @@ export declare function measureBetweenNotEqual(measure: BaseMeasure, valueA: num
691
691
  * ```ts
692
692
  * filterFactory.topRanking(
693
693
  * DM.Commerce.AgeRange,
694
- * measures.sum(DM.Commerce.Revenue),
694
+ * measureFactory.sum(DM.Commerce.Revenue),
695
695
  * 3
696
696
  * )
697
697
  * ```
@@ -710,7 +710,7 @@ export declare function topRanking(attribute: Attribute, measure: Measure, count
710
710
  * ```ts
711
711
  * filterFactory.bottomRanking(
712
712
  * DM.Commerce.AgeRange,
713
- * measures.sum(DM.Commerce.Revenue),
713
+ * measureFactory.sum(DM.Commerce.Revenue),
714
714
  * 3
715
715
  * )
716
716
  * ```
@@ -672,7 +672,7 @@ exports.measureBase = measureBase;
672
672
  * Filter for categories that have an average revenue equal 50 in the Sample ECommerce data model.
673
673
  * ```ts
674
674
  * filterFactory.measureEquals(
675
- * measures.average(DM.Commerce.Revenue),
675
+ * measureFactory.average(DM.Commerce.Revenue),
676
676
  * 50
677
677
  * )
678
678
  * ```
@@ -693,7 +693,7 @@ exports.measureEquals = measureEquals;
693
693
  * to 50 in the Sample ECommerce data model.
694
694
  * ```ts
695
695
  * filterFactory.measureGreaterThan(
696
- * measures.average(DM.Commerce.Revenue),
696
+ * measureFactory.average(DM.Commerce.Revenue),
697
697
  * 50
698
698
  * )
699
699
  * ```
@@ -714,7 +714,7 @@ exports.measureGreaterThan = measureGreaterThan;
714
714
  * or equal to 50 in the Sample ECommerce data model.
715
715
  * ```ts
716
716
  * filterFactory.measureGreaterThanOrEqual(
717
- * measures.average(DM.Commerce.Revenue),
717
+ * measureFactory.average(DM.Commerce.Revenue),
718
718
  * 50
719
719
  * )
720
720
  * ```
@@ -735,7 +735,7 @@ exports.measureGreaterThanOrEqual = measureGreaterThanOrEqual;
735
735
  * or equal to 100 in the Sample ECommerce data model.
736
736
  * ```ts
737
737
  * filterFactory.measureLessThanOrEqual(
738
- * measures.average(DM.Commerce.Revenue),
738
+ * measureFactory.average(DM.Commerce.Revenue),
739
739
  * 100
740
740
  * )
741
741
  * ```
@@ -755,7 +755,7 @@ exports.measureLessThanOrEqual = measureLessThanOrEqual;
755
755
  * Filter for categories that have an average revenue less than 100 in the Sample ECommerce data model.
756
756
  * ```ts
757
757
  * filterFactory.measureLessThan(
758
- * measures.average(DM.Commerce.Revenue),
758
+ * measureFactory.average(DM.Commerce.Revenue),
759
759
  * 100
760
760
  * )
761
761
  * ```
@@ -776,7 +776,7 @@ exports.measureLessThan = measureLessThan;
776
776
  * or equal to 100 in the Sample ECommerce data model.
777
777
  * ```ts
778
778
  * filterFactory.measureBetween(
779
- * measures.average(DM.Commerce.Revenue),
779
+ * measureFactory.average(DM.Commerce.Revenue),
780
780
  * 50,
781
781
  * 100
782
782
  * )
@@ -799,7 +799,7 @@ exports.measureBetween = measureBetween;
799
799
  * 100 in the Sample ECommerce data model.
800
800
  * ```ts
801
801
  * filterFactory.measureBetweenNotEqual(
802
- * measures.average(DM.Commerce.Revenue),
802
+ * measureFactory.average(DM.Commerce.Revenue),
803
803
  * 50,
804
804
  * 100
805
805
  * )
@@ -823,7 +823,7 @@ exports.measureBetweenNotEqual = measureBetweenNotEqual;
823
823
  * ```ts
824
824
  * filterFactory.topRanking(
825
825
  * DM.Commerce.AgeRange,
826
- * measures.sum(DM.Commerce.Revenue),
826
+ * measureFactory.sum(DM.Commerce.Revenue),
827
827
  * 3
828
828
  * )
829
829
  * ```
@@ -845,7 +845,7 @@ exports.topRanking = topRanking;
845
845
  * ```ts
846
846
  * filterFactory.bottomRanking(
847
847
  * DM.Commerce.AgeRange,
848
- * measures.sum(DM.Commerce.Revenue),
848
+ * measureFactory.sum(DM.Commerce.Revenue),
849
849
  * 3
850
850
  * )
851
851
  * ```
@@ -1,5 +1,6 @@
1
1
  import { LevelAttribute, Attribute, Measure, Filter } from '../interfaces.js';
2
2
  import { DimensionalElement } from '../base.js';
3
+ import { AnyObject } from '../types.js';
3
4
  /**
4
5
  * Different text operators that can be used with text filters
5
6
  *
@@ -71,7 +72,7 @@ export declare const FilterTypes: {
71
72
  ranking: string;
72
73
  text: string;
73
74
  numeric: string;
74
- date: string;
75
+ dateRange: string;
75
76
  relativeDate: string;
76
77
  cascading: string;
77
78
  advanced: string;
@@ -350,6 +351,83 @@ export declare class CustomFilter extends AbstractFilter {
350
351
  */
351
352
  filterJaql(): any;
352
353
  }
354
+ /**
355
+ * Checks if a filter is a CustomFilter.
356
+ *
357
+ * @param filter - The filter to check.
358
+ * @internal
359
+ */
360
+ export declare function isCustomFilter(filter: Filter & AnyObject): filter is CustomFilter;
361
+ /**
362
+ * Checks if a filter is a MembersFilter.
363
+ *
364
+ * @param filter - The filter to check.
365
+ * @internal
366
+ */
367
+ export declare function isMembersFilter(filter: Filter & AnyObject): filter is MembersFilter;
368
+ /**
369
+ * Checks if a filter is a NumericFilter.
370
+ *
371
+ * @param filter - The filter to check.
372
+ * @internal
373
+ */
374
+ export declare function isNumericFilter(filter: Filter & AnyObject): filter is NumericFilter;
375
+ /**
376
+ * Checks if a filter is a TextFilter.
377
+ *
378
+ * @param filter - The filter to check.
379
+ * @internal
380
+ */
381
+ export declare function isRankingFilter(filter: Filter & AnyObject): filter is RankingFilter;
382
+ /**
383
+ * Checks if a filter is a MeasureFilter.
384
+ *
385
+ * @param filter - The filter to check.
386
+ * @internal
387
+ */
388
+ export declare function isMeasureFilter(filter: Filter & AnyObject): filter is MeasureFilter;
389
+ /**
390
+ * Checks if a filter is a ExcludeFilter.
391
+ *
392
+ * @param filter - The filter to check.
393
+ * @internal
394
+ */
395
+ export declare function isExcludeFilter(filter: Filter & AnyObject): filter is ExcludeFilter;
396
+ /**
397
+ * Checks if a filter is a LogicalAttributeFilter.
398
+ *
399
+ * @param filter - The filter to check.
400
+ * @internal
401
+ */
402
+ export declare function isLogicalAttributeFilter(filter: Filter & AnyObject): filter is LogicalAttributeFilter;
403
+ /**
404
+ * Checks if a filter is a CascadingFilter.
405
+ *
406
+ * @param filter - The filter to check.
407
+ * @internal
408
+ */
409
+ export declare function isCascadingFilter(filter: Filter & AnyObject): filter is CascadingFilter;
410
+ /**
411
+ * Checks if a filter is a RelativeDateFilter.
412
+ *
413
+ * @param filter - The filter to check.
414
+ * @internal
415
+ */
416
+ export declare function isRelativeDateFilter(filter: Filter & AnyObject): filter is RelativeDateFilter;
417
+ /**
418
+ * Checks if a filter is a TextFilter.
419
+ *
420
+ * @param filter - The filter to check.
421
+ * @internal
422
+ */
423
+ export declare function isTextFilter(filter: Filter & AnyObject): filter is TextFilter;
424
+ /**
425
+ * Checks if a filter is a DateRangeFilter.
426
+ *
427
+ * @param filter - The filter to check.
428
+ * @internal
429
+ */
430
+ export declare function isDateRangeFilter(filter: Filter & AnyObject): filter is DateRangeFilter;
353
431
  /**
354
432
  * @param json - Filter JSON representation
355
433
  * @internal
@@ -3,7 +3,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.createFilter = exports.CustomFilter = exports.RelativeDateFilter = exports.DateRangeFilter = exports.TextFilter = exports.NumericFilter = exports.RankingFilter = exports.MeasureFilter = exports.DoubleOperatorFilter = exports.ExcludeFilter = exports.CascadingFilter = exports.MembersFilter = exports.LogicalAttributeFilter = exports.FilterTypes = exports.RankingOperators = exports.LogicalOperators = exports.DateOperators = exports.NumericOperators = exports.TextOperators = void 0;
6
+ exports.createFilter = exports.isDateRangeFilter = exports.isTextFilter = exports.isRelativeDateFilter = exports.isCascadingFilter = exports.isLogicalAttributeFilter = exports.isExcludeFilter = exports.isMeasureFilter = exports.isRankingFilter = exports.isNumericFilter = exports.isMembersFilter = exports.isCustomFilter = exports.CustomFilter = exports.RelativeDateFilter = exports.DateRangeFilter = exports.TextFilter = exports.NumericFilter = exports.RankingFilter = exports.MeasureFilter = exports.DoubleOperatorFilter = exports.ExcludeFilter = exports.CascadingFilter = exports.MembersFilter = exports.LogicalAttributeFilter = exports.FilterTypes = exports.RankingOperators = exports.LogicalOperators = exports.DateOperators = exports.NumericOperators = exports.TextOperators = void 0;
7
+ /* eslint-disable max-lines */
7
8
  /* eslint-disable @typescript-eslint/no-unsafe-assignment */
8
9
  /* eslint-disable @typescript-eslint/no-unsafe-member-access */
9
10
  /* eslint-disable @typescript-eslint/no-unsafe-return */
@@ -89,7 +90,7 @@ exports.FilterTypes = {
89
90
  ranking: 'ranking',
90
91
  text: 'text',
91
92
  numeric: 'numeric',
92
- date: 'date',
93
+ dateRange: 'dateRange',
93
94
  relativeDate: 'relativeDate',
94
95
  cascading: 'cascading',
95
96
  advanced: 'advanced',
@@ -546,7 +547,7 @@ exports.TextFilter = TextFilter;
546
547
  */
547
548
  class DateRangeFilter extends DoubleOperatorFilter {
548
549
  constructor(l, valueFrom, valueTo, guid) {
549
- super(l, exports.FilterTypes.date, exports.DateOperators.From, valueFrom, exports.DateOperators.To, valueTo, guid);
550
+ super(l, exports.FilterTypes.dateRange, exports.DateOperators.From, valueFrom, exports.DateOperators.To, valueTo, guid);
550
551
  if (typeof valueFrom === 'object') {
551
552
  this.valueA = valueFrom.toISOString();
552
553
  }
@@ -663,6 +664,116 @@ class CustomFilter extends AbstractFilter {
663
664
  }
664
665
  }
665
666
  exports.CustomFilter = CustomFilter;
667
+ /**
668
+ * Checks if a filter is a CustomFilter.
669
+ *
670
+ * @param filter - The filter to check.
671
+ * @internal
672
+ */
673
+ function isCustomFilter(filter) {
674
+ return 'filterType' in filter && filter.filterType === exports.FilterTypes.advanced;
675
+ }
676
+ exports.isCustomFilter = isCustomFilter;
677
+ /**
678
+ * Checks if a filter is a MembersFilter.
679
+ *
680
+ * @param filter - The filter to check.
681
+ * @internal
682
+ */
683
+ function isMembersFilter(filter) {
684
+ return 'filterType' in filter && filter.filterType === exports.FilterTypes.members;
685
+ }
686
+ exports.isMembersFilter = isMembersFilter;
687
+ /**
688
+ * Checks if a filter is a NumericFilter.
689
+ *
690
+ * @param filter - The filter to check.
691
+ * @internal
692
+ */
693
+ function isNumericFilter(filter) {
694
+ return 'filterType' in filter && filter.filterType === exports.FilterTypes.numeric;
695
+ }
696
+ exports.isNumericFilter = isNumericFilter;
697
+ /**
698
+ * Checks if a filter is a TextFilter.
699
+ *
700
+ * @param filter - The filter to check.
701
+ * @internal
702
+ */
703
+ function isRankingFilter(filter) {
704
+ return 'filterType' in filter && filter.filterType === exports.FilterTypes.ranking;
705
+ }
706
+ exports.isRankingFilter = isRankingFilter;
707
+ /**
708
+ * Checks if a filter is a MeasureFilter.
709
+ *
710
+ * @param filter - The filter to check.
711
+ * @internal
712
+ */
713
+ function isMeasureFilter(filter) {
714
+ return 'filterType' in filter && filter.filterType === exports.FilterTypes.measure;
715
+ }
716
+ exports.isMeasureFilter = isMeasureFilter;
717
+ /**
718
+ * Checks if a filter is a ExcludeFilter.
719
+ *
720
+ * @param filter - The filter to check.
721
+ * @internal
722
+ */
723
+ function isExcludeFilter(filter) {
724
+ return 'filterType' in filter && filter.filterType === exports.FilterTypes.exclude;
725
+ }
726
+ exports.isExcludeFilter = isExcludeFilter;
727
+ /**
728
+ * Checks if a filter is a LogicalAttributeFilter.
729
+ *
730
+ * @param filter - The filter to check.
731
+ * @internal
732
+ */
733
+ function isLogicalAttributeFilter(filter) {
734
+ return 'filterType' in filter && filter.filterType === exports.FilterTypes.logicalAttribute;
735
+ }
736
+ exports.isLogicalAttributeFilter = isLogicalAttributeFilter;
737
+ /**
738
+ * Checks if a filter is a CascadingFilter.
739
+ *
740
+ * @param filter - The filter to check.
741
+ * @internal
742
+ */
743
+ function isCascadingFilter(filter) {
744
+ return 'filterType' in filter && filter.filterType === exports.FilterTypes.cascading;
745
+ }
746
+ exports.isCascadingFilter = isCascadingFilter;
747
+ /**
748
+ * Checks if a filter is a RelativeDateFilter.
749
+ *
750
+ * @param filter - The filter to check.
751
+ * @internal
752
+ */
753
+ function isRelativeDateFilter(filter) {
754
+ return 'filterType' in filter && filter.filterType === exports.FilterTypes.relativeDate;
755
+ }
756
+ exports.isRelativeDateFilter = isRelativeDateFilter;
757
+ /**
758
+ * Checks if a filter is a TextFilter.
759
+ *
760
+ * @param filter - The filter to check.
761
+ * @internal
762
+ */
763
+ function isTextFilter(filter) {
764
+ return 'filterType' in filter && filter.filterType === exports.FilterTypes.text;
765
+ }
766
+ exports.isTextFilter = isTextFilter;
767
+ /**
768
+ * Checks if a filter is a DateRangeFilter.
769
+ *
770
+ * @param filter - The filter to check.
771
+ * @internal
772
+ */
773
+ function isDateRangeFilter(filter) {
774
+ return 'filterType' in filter && filter.filterType === exports.FilterTypes.dateRange;
775
+ }
776
+ exports.isDateRangeFilter = isDateRangeFilter;
666
777
  /**
667
778
  * @param json - Filter JSON representation
668
779
  * @internal
@@ -693,7 +804,7 @@ function createFilter(json) {
693
804
  case exports.FilterTypes.relativeDate:
694
805
  return new RelativeDateFilter((0, factory_js_1.create)(json.attribute), json.offset, json.count, json.operator, json.anchor);
695
806
  break;
696
- case exports.FilterTypes.date:
807
+ case exports.FilterTypes.dateRange:
697
808
  return new DateRangeFilter((0, factory_js_1.create)(json.attribute), json.valueA, json.valueB);
698
809
  break;
699
810
  }
@@ -9,9 +9,10 @@ import { FilterJaqlInternal, RankingFilterJaql } from './types.js';
9
9
  * @param column - Column name
10
10
  * @param level - Date level
11
11
  * @param dataType - Data type
12
+ * @param title - Attribute title
12
13
  * @returns attribute or level attribute
13
14
  */
14
- export declare const createAttributeHelper: (dim: string, table: string | undefined, column: string, level: string | undefined, dataType: string) => Attribute | LevelAttribute;
15
+ export declare const createAttributeHelper: (dim: string, table: string | undefined, column: string, level: string | undefined, dataType: string, title?: string) => Attribute | LevelAttribute;
15
16
  /**
16
17
  * Creates an attribute or level attribute from the provided filter JAQL object
17
18
  *
@@ -30,7 +31,7 @@ export declare const createAttributeFromFilterJaql: (jaql: FilterJaql | FilterJa
30
31
  * @param agg - Aggregation function
31
32
  * @returns measure
32
33
  */
33
- export declare const createMeasureHelper: (dim: string, table: string | undefined, column: string, level: string | undefined, dataType: string, agg: string) => BaseMeasure;
34
+ export declare const createMeasureHelper: (dim: string, table: string | undefined, column: string, level: string | undefined, dataType: string, agg: string, title?: string) => BaseMeasure;
34
35
  /**
35
36
  * Creates a measure from the provided filter JAQL object
36
37
  *
@@ -37,22 +37,23 @@ const DATA_MODEL_MODULE_NAME = 'DM';
37
37
  * @param column - Column name
38
38
  * @param level - Date level
39
39
  * @param dataType - Data type
40
+ * @param title - Attribute title
40
41
  * @returns attribute or level attribute
41
42
  */
42
- const createAttributeHelper = (dim, table, column, level, dataType) => {
43
+ const createAttributeHelper = (dim, table, column, level, dataType, title) => {
43
44
  // if table is undefined, extract it from dim
44
45
  const dimTable = table !== null && table !== void 0 ? table : dim.slice(1, -1).split('.')[0];
45
46
  if (level) {
46
47
  const dateLevel = attributes_js_1.DimensionalLevelAttribute.translateJaqlToGranularity({ level });
47
48
  const format = attributes_js_1.DimensionalLevelAttribute.getDefaultFormatForGranularity(dateLevel);
48
- const levelAttribute = new attributes_js_1.DimensionalLevelAttribute(column, dim, dateLevel, format);
49
+ const levelAttribute = new attributes_js_1.DimensionalLevelAttribute(title !== null && title !== void 0 ? title : column, dim, dateLevel, format);
49
50
  levelAttribute.composeCode = (0, attributes_js_1.normalizeAttributeName)(dimTable, column, level, DATA_MODEL_MODULE_NAME);
50
51
  return levelAttribute;
51
52
  }
52
53
  const attributeType = (0, simple_column_types_js_1.isNumber)(dataType)
53
54
  ? types_js_1.MetadataTypes.NumericAttribute
54
55
  : types_js_1.MetadataTypes.TextAttribute;
55
- const attribute = new attributes_js_1.DimensionalAttribute(column, dim, attributeType);
56
+ const attribute = new attributes_js_1.DimensionalAttribute(title !== null && title !== void 0 ? title : column, dim, attributeType);
56
57
  attribute.composeCode = (0, attributes_js_1.normalizeAttributeName)(dimTable, column, undefined, DATA_MODEL_MODULE_NAME);
57
58
  return attribute;
58
59
  };
@@ -64,7 +65,7 @@ exports.createAttributeHelper = createAttributeHelper;
64
65
  * @returns attribute or level attribute
65
66
  */
66
67
  const createAttributeFromFilterJaql = (jaql) => {
67
- return (0, exports.createAttributeHelper)(jaql.dim, jaql.table, jaql.column, jaql.level, jaql.datatype);
68
+ return (0, exports.createAttributeHelper)(jaql.dim, jaql.table, jaql.column, jaql.level, jaql.datatype, jaql.title);
68
69
  };
69
70
  exports.createAttributeFromFilterJaql = createAttributeFromFilterJaql;
70
71
  /**
@@ -78,8 +79,8 @@ exports.createAttributeFromFilterJaql = createAttributeFromFilterJaql;
78
79
  * @param agg - Aggregation function
79
80
  * @returns measure
80
81
  */
81
- const createMeasureHelper = (dim, table, column, level, dataType, agg) => {
82
- const attribute = (0, exports.createAttributeHelper)(dim, table, column, level, dataType);
82
+ const createMeasureHelper = (dim, table, column, level, dataType, agg, title) => {
83
+ const attribute = (0, exports.createAttributeHelper)(dim, table, column, level, dataType, title);
83
84
  const measure = measureFactory.aggregate(attribute, agg);
84
85
  measure.composeCode = `measureFactory.${agg}(${attribute.composeCode})`;
85
86
  return measure;
@@ -92,10 +93,10 @@ exports.createMeasureHelper = createMeasureHelper;
92
93
  * @returns Measure
93
94
  */
94
95
  const createMeasureFromFilterJaql = (jaql) => {
95
- const { dim, table, column, level, datatype: dataType, agg } = jaql;
96
+ const { dim, table, column, title, level, datatype: dataType, agg } = jaql;
96
97
  if (!agg)
97
98
  return undefined;
98
- return (0, exports.createMeasureHelper)(dim, table, column, level, dataType, agg);
99
+ return (0, exports.createMeasureHelper)(dim, table, column, level, dataType, agg, title);
99
100
  };
100
101
  exports.createMeasureFromFilterJaql = createMeasureFromFilterJaql;
101
102
  /**
@@ -344,6 +344,10 @@ export interface Filter extends Element {
344
344
  * Attribute this filter instance is filtering
345
345
  */
346
346
  readonly attribute: Attribute;
347
+ /**
348
+ * Filter type
349
+ */
350
+ readonly filterType: string;
347
351
  /**
348
352
  * Boolean flag whether the filter is a scope filter
349
353
  */
@@ -258,7 +258,7 @@ export declare function countDistinct(attribute: Attribute, name?: string, forma
258
258
  * ```ts
259
259
  * measureFactory.measuredValue(
260
260
  * measureFactory.sum(DM.Commerce.Cost),
261
- * [filters.greaterThan(DM.Commerce.Cost, 100)],
261
+ * [filterFactory.greaterThan(DM.Commerce.Cost, 100)],
262
262
  * 'Cost Greater Than 100'
263
263
  * ),
264
264
  * ```
@@ -398,7 +398,7 @@ exports.countDistinct = countDistinct;
398
398
  * ```ts
399
399
  * measureFactory.measuredValue(
400
400
  * measureFactory.sum(DM.Commerce.Cost),
401
- * [filters.greaterThan(DM.Commerce.Cost, 100)],
401
+ * [filterFactory.greaterThan(DM.Commerce.Cost, 100)],
402
402
  * 'Cost Greater Than 100'
403
403
  * ),
404
404
  * ```
@@ -190,6 +190,7 @@ export declare type BaseJaql = {
190
190
  jaql: FilterJaql;
191
191
  };
192
192
  };
193
+ merged?: boolean;
193
194
  };
194
195
  /** @internal */
195
196
  export declare type FormulaID = string;
@@ -255,4 +256,8 @@ declare type AndFilter<FilterItem> = {
255
256
  export declare type OrFilter<FilterItem> = {
256
257
  or: FilterItem[];
257
258
  };
259
+ /**
260
+ * Abstract object with any unknown values
261
+ */
262
+ export declare type AnyObject = Record<string, any>;
258
263
  export {};
@@ -10,7 +10,7 @@ export const jaqlSimpleColumnType = (datatype) => simpleColumnType(datatype).rep
10
10
  */
11
11
  export class DimensionalAttribute extends DimensionalElement {
12
12
  constructor(name, expression, type, desc, sort) {
13
- super(normalizeName(name), type || MetadataTypes.Attribute, desc);
13
+ super(name, type || MetadataTypes.Attribute, desc);
14
14
  this._sort = Sort.None;
15
15
  this.expression = expression;
16
16
  this._sort = sort || Sort.None;
@@ -32,13 +32,14 @@ export class DimensionalDimension extends DimensionalElement {
32
32
  return MetadataTypes.TextDimension;
33
33
  }
34
34
  getAttachedName(name, expression) {
35
- let result = normalizeName(name);
35
+ let result = name;
36
36
  // if exists fallback to expression
37
- if (result === 'id' ||
38
- result === 'name' ||
39
- Object.getOwnPropertyDescriptor(this, result) !== undefined ||
40
- this[result] !== undefined) {
41
- result = normalizeName(expression.replace('.', '_').replace('[', '').replace(']', ''));
37
+ const normalizedName = normalizeName(name);
38
+ if (normalizedName === 'id' ||
39
+ normalizedName === 'name' ||
40
+ Object.getOwnPropertyDescriptor(this, normalizedName) !== undefined ||
41
+ this[normalizedName] !== undefined) {
42
+ result = expression;
42
43
  }
43
44
  return result;
44
45
  }
@@ -46,7 +47,7 @@ export class DimensionalDimension extends DimensionalElement {
46
47
  this._dimensions = dimensions;
47
48
  for (let i = 0; i < dimensions.length; i++) {
48
49
  const n = this.getAttachedName(dimensions[i].name, dimensions[i].attributes[0].expression);
49
- this[n] = dimensions[i];
50
+ this[normalizeName(n)] = dimensions[i];
50
51
  if (n != dimensions[i].name) {
51
52
  dimensions[i].name = n;
52
53
  }
@@ -56,7 +57,7 @@ export class DimensionalDimension extends DimensionalElement {
56
57
  this._attributes = attributes || [];
57
58
  for (let i = 0; i < attributes.length; i++) {
58
59
  const n = this.getAttachedName(attributes[i].name, attributes[i].expression);
59
- this[n] = attributes[i];
60
+ this[normalizeName(n)] = attributes[i];
60
61
  if (attributes[i].name != n) {
61
62
  attributes[i].name = n;
62
63
  }