@contrail/data-grouping 1.0.28 → 1.0.29

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,6 +1,6 @@
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): any[];
3
+ static getDistinctValues(data: any, rootIndex: any, slugIndex?: any, rootAltIndex?: any, slugAltIndex?: any, groupMultiSelectInSeparateFrame?: boolean, sortKey?: string, options?: any): any[];
4
4
  static buildChildDataGroups(data: any, parentGroup: DataGroup, groupingProperties: Array<DataGroupingProperty>, leafNodeDataCount: any, currentDepth: any, groupMultiSelectInSeparateFrame?: boolean): void;
5
5
  static buildDataGroupStructure(data: Array<any>, groupingProperties: Array<DataGroupingProperty>, leafNodeDataCount: number, groupMultiSelectInSeparateFrame?: boolean): DataGroupStructure;
6
6
  static createPartitionedGroupsFromData(parentGroup: DataGroup, data: Array<any>, leafNodeDataCount: number): Array<DataGroup>;
@@ -4,7 +4,7 @@ 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') {
7
+ static getDistinctValues(data, rootIndex, slugIndex = null, rootAltIndex = null, slugAltIndex = null, groupMultiSelectInSeparateFrame = false, sortKey = 'asc', options = null) {
8
8
  const map = new Map();
9
9
  const sortingArray = [];
10
10
  data.forEach((obj) => {
@@ -45,11 +45,22 @@ class DataGroupGenerator {
45
45
  distinctValues.sort((v1, v2) => {
46
46
  let val1 = v1 && typeof v1 === 'object' ? v1.name : v1;
47
47
  let val2 = v2 && typeof v2 === 'object' ? v2.name : v2;
48
+ console.log('OPTIONS', options);
48
49
  if (sortKey === 'asc') {
49
- return val1 > val2 ? 1 : -1;
50
+ if (options) {
51
+ return options.indexOf(val1) - options.indexOf(val2);
52
+ }
53
+ else {
54
+ return val1 > val2 ? 1 : -1;
55
+ }
50
56
  }
51
57
  else if (sortKey === 'desc') {
52
- return val1 < val2 ? 1 : -1;
58
+ if (options) {
59
+ return options.indexOf(val2) - options.indexOf(val1);
60
+ }
61
+ else {
62
+ return val1 < val2 ? 1 : -1;
63
+ }
53
64
  }
54
65
  else {
55
66
  return sortingArray.indexOf(val1) - sortingArray.indexOf(val2);
@@ -58,13 +69,16 @@ class DataGroupGenerator {
58
69
  return distinctValues;
59
70
  }
60
71
  static buildChildDataGroups(data, parentGroup, groupingProperties, leafNodeDataCount, currentDepth, groupMultiSelectInSeparateFrame = false) {
72
+ var _a;
61
73
  const groupingProperty = groupingProperties[currentDepth];
62
74
  const rootIndex = groupingProperty.typeRootSlug;
63
75
  const slugIndex = groupingProperty.propertyDefinition.slug;
64
76
  const rootAltIndex = util_1.StringUtil.convertToCamelCase(groupingProperty.typeRootSlug);
65
77
  const slugAltIndex = groupingProperty.propertyDefinition.slug;
66
78
  const sort = groupingProperty.sort || 'asc';
67
- let distinctValues = this.getDistinctValues(data, rootIndex, slugIndex, rootAltIndex, slugAltIndex, groupMultiSelectInSeparateFrame, sort);
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);
68
82
  for (let val of distinctValues) {
69
83
  const groupData = data.filter((obj) => {
70
84
  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.28",
3
+ "version": "1.0.29",
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",