@contrail/data-grouping 1.0.28 → 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,
|
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,
|
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,28 +45,33 @@ class DataGroupGenerator {
|
|
43
45
|
});
|
44
46
|
const distinctValues = [...Object.values(map)];
|
45
47
|
distinctValues.sort((v1, v2) => {
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
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':
|
52
|
+
return val1 > val2 ? 1 : -1;
|
53
|
+
case 'desc':
|
54
|
+
return val1 < val2 ? 1 : -1;
|
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);
|
56
61
|
}
|
57
62
|
});
|
58
63
|
return distinctValues;
|
59
64
|
}
|
60
65
|
static buildChildDataGroups(data, parentGroup, groupingProperties, leafNodeDataCount, currentDepth, groupMultiSelectInSeparateFrame = false) {
|
66
|
+
var _a, _b;
|
61
67
|
const groupingProperty = groupingProperties[currentDepth];
|
62
68
|
const rootIndex = groupingProperty.typeRootSlug;
|
63
69
|
const slugIndex = groupingProperty.propertyDefinition.slug;
|
64
70
|
const rootAltIndex = util_1.StringUtil.convertToCamelCase(groupingProperty.typeRootSlug);
|
65
71
|
const slugAltIndex = groupingProperty.propertyDefinition.slug;
|
66
72
|
const sort = groupingProperty.sort || 'asc';
|
67
|
-
|
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 });
|
68
75
|
for (let val of distinctValues) {
|
69
76
|
const groupData = data.filter((obj) => {
|
70
77
|
const objVal = util_1.ObjectUtil.getBySlugs(obj, rootIndex, slugIndex) || util_1.ObjectUtil.getBySlugs(obj, rootAltIndex, slugAltIndex);
|
package/package.json
CHANGED