@contrail/data-grouping 1.0.29 → 1.0.30

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,6 +1,9 @@
1
1
  import { DataGroup, DataGroupStructure, DataGroupingProperty } from '../interfaces';
2
2
  export declare class DataGroupGenerator {
3
- static getDistinctValues(data: any, rootIndex: any, slugIndex?: any, rootAltIndex?: any, slugAltIndex?: any, groupMultiSelectInSeparateFrame?: boolean, sortKey?: string, options?: any): any[];
3
+ static getDistinctValues(data: any, rootIndex: any, slugIndex?: any, rootAltIndex?: any, slugAltIndex?: any, groupMultiSelectInSeparateFrame?: boolean, sort?: {
4
+ sortKey: string;
5
+ options: any;
6
+ }): any[];
4
7
  static buildChildDataGroups(data: any, parentGroup: DataGroup, groupingProperties: Array<DataGroupingProperty>, leafNodeDataCount: any, currentDepth: any, groupMultiSelectInSeparateFrame?: boolean): void;
5
8
  static buildDataGroupStructure(data: Array<any>, groupingProperties: Array<DataGroupingProperty>, leafNodeDataCount: number, groupMultiSelectInSeparateFrame?: boolean): DataGroupStructure;
6
9
  static createPartitionedGroupsFromData(parentGroup: DataGroup, data: Array<any>, leafNodeDataCount: number): Array<DataGroup>;
@@ -4,7 +4,9 @@ exports.DataGroupGenerator = void 0;
4
4
  const util_1 = require("@contrail/util");
5
5
  const types_1 = require("@contrail/types");
6
6
  class DataGroupGenerator {
7
- static getDistinctValues(data, rootIndex, slugIndex = null, rootAltIndex = null, slugAltIndex = null, groupMultiSelectInSeparateFrame = false, sortKey = 'asc', options = null) {
7
+ static getDistinctValues(data, rootIndex, slugIndex = null, rootAltIndex = null, slugAltIndex = null, groupMultiSelectInSeparateFrame = false, sort = { sortKey: 'asc', options: null }) {
8
+ const sortKey = (sort === null || sort === void 0 ? void 0 : sort.sortKey) || 'asc';
9
+ const options = (sort === null || sort === void 0 ? void 0 : sort.options) || null;
8
10
  const map = new Map();
9
11
  const sortingArray = [];
10
12
  data.forEach((obj) => {
@@ -43,42 +45,33 @@ class DataGroupGenerator {
43
45
  });
44
46
  const distinctValues = [...Object.values(map)];
45
47
  distinctValues.sort((v1, v2) => {
46
- let val1 = v1 && typeof v1 === 'object' ? v1.name : v1;
47
- let val2 = v2 && typeof v2 === 'object' ? v2.name : v2;
48
- console.log('OPTIONS', options);
49
- if (sortKey === 'asc') {
50
- if (options) {
51
- return options.indexOf(val1) - options.indexOf(val2);
52
- }
53
- else {
48
+ const val1 = v1 && typeof v1 === 'object' ? v1.name : v1;
49
+ const val2 = v2 && typeof v2 === 'object' ? v2.name : v2;
50
+ switch (sortKey) {
51
+ case 'asc':
54
52
  return val1 > val2 ? 1 : -1;
55
- }
56
- }
57
- else if (sortKey === 'desc') {
58
- if (options) {
59
- return options.indexOf(val2) - options.indexOf(val1);
60
- }
61
- else {
53
+ case 'desc':
62
54
  return val1 < val2 ? 1 : -1;
63
- }
64
- }
65
- else {
66
- return sortingArray.indexOf(val1) - sortingArray.indexOf(val2);
55
+ case 'list_order_asc':
56
+ return options.indexOf(val1) - options.indexOf(val2);
57
+ case 'list_order_desc':
58
+ return options.indexOf(val2) - options.indexOf(val1);
59
+ default:
60
+ return sortingArray.indexOf(val1) - sortingArray.indexOf(val2);
67
61
  }
68
62
  });
69
63
  return distinctValues;
70
64
  }
71
65
  static buildChildDataGroups(data, parentGroup, groupingProperties, leafNodeDataCount, currentDepth, groupMultiSelectInSeparateFrame = false) {
72
- var _a;
66
+ var _a, _b;
73
67
  const groupingProperty = groupingProperties[currentDepth];
74
68
  const rootIndex = groupingProperty.typeRootSlug;
75
69
  const slugIndex = groupingProperty.propertyDefinition.slug;
76
70
  const rootAltIndex = util_1.StringUtil.convertToCamelCase(groupingProperty.typeRootSlug);
77
71
  const slugAltIndex = groupingProperty.propertyDefinition.slug;
78
72
  const sort = groupingProperty.sort || 'asc';
79
- const options = ((_a = groupingProperty.propertyDefinition) === null || _a === void 0 ? void 0 : _a.options) || null;
80
- console.log('GROUPING PROPERTIES', groupingProperty);
81
- let distinctValues = this.getDistinctValues(data, rootIndex, slugIndex, rootAltIndex, slugAltIndex, groupMultiSelectInSeparateFrame, sort, options);
73
+ const options = ((_b = (_a = groupingProperty.propertyDefinition) === null || _a === void 0 ? void 0 : _a.options) === null || _b === void 0 ? void 0 : _b.map((x) => x.value)) || null;
74
+ let distinctValues = this.getDistinctValues(data, rootIndex, slugIndex, rootAltIndex, slugAltIndex, groupMultiSelectInSeparateFrame, { sortKey: sort, options });
82
75
  for (let val of distinctValues) {
83
76
  const groupData = data.filter((obj) => {
84
77
  const objVal = util_1.ObjectUtil.getBySlugs(obj, rootIndex, slugIndex) || util_1.ObjectUtil.getBySlugs(obj, rootAltIndex, slugAltIndex);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@contrail/data-grouping",
3
- "version": "1.0.29",
3
+ "version": "1.0.30",
4
4
  "description": "Utilities and interfaces for grouping data into hierarchial data structures based on properties.",
5
5
  "main": "lib/index.js",
6
6
  "types": "lib/index.d.ts",