@pega/lists-core-utils 10.0.0-build.5.2 → 10.0.0-build.5.21
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.
package/lib/dataApi/Grouping.js
CHANGED
|
@@ -124,29 +124,29 @@ export default function grouping(state = {}, dataInput = [], meta = {}) {
|
|
|
124
124
|
switch (agg.type) {
|
|
125
125
|
case 'max':
|
|
126
126
|
if (typeof acc[name]._.agg[agg.name].max !== 'number') {
|
|
127
|
-
acc[name]._.agg[agg.name].max =
|
|
127
|
+
acc[name]._.agg[agg.name].max = aggValue;
|
|
128
128
|
}
|
|
129
129
|
else {
|
|
130
130
|
acc[name]._.agg[agg.name].max =
|
|
131
|
-
Math.max(acc[name]._.agg[agg.name].max,
|
|
131
|
+
Math.max(acc[name]._.agg[agg.name].max, aggValue) || null;
|
|
132
132
|
}
|
|
133
133
|
break;
|
|
134
134
|
case 'min':
|
|
135
135
|
if (typeof acc[name]._.agg[agg.name].min !== 'number') {
|
|
136
|
-
acc[name]._.agg[agg.name].min =
|
|
136
|
+
acc[name]._.agg[agg.name].min = aggValue;
|
|
137
137
|
}
|
|
138
138
|
else {
|
|
139
139
|
acc[name]._.agg[agg.name].min =
|
|
140
|
-
Math.min(acc[name]._.agg[agg.name].min,
|
|
140
|
+
Math.min(acc[name]._.agg[agg.name].min, aggValue) || null;
|
|
141
141
|
}
|
|
142
142
|
break;
|
|
143
143
|
case 'sum':
|
|
144
144
|
acc[name]._.agg[agg.name].sum =
|
|
145
|
-
Math.round(((acc[name]._.agg[agg.name].sum || 0) +
|
|
145
|
+
Math.round(((acc[name]._.agg[agg.name].sum || 0) + aggValue) * 100) / 100;
|
|
146
146
|
break;
|
|
147
147
|
case 'avg':
|
|
148
148
|
acc[name]._.agg[agg.name].nonNullCount += 1;
|
|
149
|
-
acc[name]._.agg[agg.name].sum = (acc[name]._.agg[agg.name].sum || 0) +
|
|
149
|
+
acc[name]._.agg[agg.name].sum = (acc[name]._.agg[agg.name].sum || 0) + aggValue;
|
|
150
150
|
acc[name]._.agg[agg.name].avg =
|
|
151
151
|
Math.round((acc[name]._.agg[agg.name].sum / acc[name]._.agg[agg.name].nonNullCount) * 100) / 100;
|
|
152
152
|
break;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Grouping.js","sourceRoot":"","sources":["../../dataApi/Grouping.js"],"names":[],"mappings":"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","sourcesContent":["import get from 'lodash-es/get';\n\nimport { getFieldsMap } from '../stateConversion/PrepareDatapageQuery';\n\nimport filter from './Filter';\nimport { getDateFunctionValue, getFormattedFields } from './utils';\nimport {\n getTextGroupingOrder,\n getTextGroupingValue,\n isTextGroupingCustomFunction\n} from './CustomGrouping';\n\n// eslint-disable-next-line default-param-last\nfunction insertSorted(arr, obj, key, order = 'asc', compareValuesAsNumbers, customOrder) {\n let inserted = false;\n for (let i = 0; i < arr.length; i += 1) {\n const input = arr[i];\n const getSortValue = value => {\n if (customOrder) {\n const customIndex = customOrder.indexOf(value);\n return customIndex === -1 ? customOrder.length : customIndex;\n }\n\n if (compareValuesAsNumbers) {\n return Number(value);\n }\n\n return value;\n };\n const objValue = getSortValue(obj[key]);\n const inputValue = getSortValue(input[key]);\n if (order === 'desc' ? objValue >= inputValue : objValue <= inputValue) {\n arr.splice(i, 0, obj);\n inserted = true;\n break;\n }\n }\n\n if (!arr.length || !inserted) {\n arr.push(obj);\n }\n}\n\n/** Returns the value of a group in the given data row */\nfunction getGroupValueInRow(dataRow, group, field, formattedFields) {\n if (isTextGroupingCustomFunction(group.customFunction)) {\n return getTextGroupingValue(dataRow, group.customFunction, formattedFields);\n }\n\n // If it's a regular group (i.e. without any dateFunction), return the field value directly\n if (!group.dateFunction) {\n return get(dataRow, field.name);\n }\n\n // When a dateFunction is present, format the value to match the conventions from the Data API\n return getDateFunctionValue(dataRow, field.name, group.dateFunction);\n}\n\n/**\n * Cleanup the distinctSet from aggregation info in group nodes.\n * @param groupNodes\n */\nconst cleanupDistinctSet = groupNodes => {\n groupNodes.forEach(node => {\n if (node.agg) {\n Object.keys(node.agg).forEach(aggName => {\n if (node.agg[aggName].distinctSet) {\n delete node.agg[aggName].distinctSet;\n }\n });\n }\n if (node.children) {\n cleanupDistinctSet(node.children);\n }\n });\n};\n\n// Provides grouped information when group state is provided with data.\n// Group information has following properties for each grouped value.\n// name,count:leafnodecount,level,groupBy: key generated using getGroupKey\nexport default function grouping(state = {}, dataInput = [], meta = {}) {\n // if filtered state is there, filter data and then\n // prepare your group info based on filtered data.\n const filteredData = filter(state, dataInput, meta);\n\n // get groups from state in sorted order of level.\n const originalGroups = [...state.groups];\n const groups = originalGroups.sort((g1, g2) => g1.level - g2.level);\n const result = [];\n const object = { _: { children: result } };\n const fieldsMap = getFieldsMap(meta.fieldDefs);\n const formattedFields = getFormattedFields(meta.fieldDefs);\n const aggregationInfo =\n state.aggregationInfo?.map(agg => ({\n ...agg,\n type: agg.type.toLowerCase(),\n name: agg.columnId\n })) || [];\n let hasDistinctCountAggregation = false;\n\n filteredData.forEach(d => {\n let includeDataRow = true;\n groups.reduce((acc, g) => {\n if (!includeDataRow) {\n return acc;\n }\n\n const field = fieldsMap.get(g.columnId);\n const name = getGroupValueInRow(d, g, field, formattedFields);\n\n if (isTextGroupingCustomFunction(g.customFunction) && name === undefined) {\n includeDataRow = false;\n return acc;\n }\n\n if (!acc[name]) {\n acc[name] = {\n _: {\n name,\n count: 0,\n agg: {},\n data: d\n }\n };\n aggregationInfo.forEach(agg => {\n acc[name]._.agg[agg.name] = {\n max: null,\n min: null,\n sum: null,\n avg: null,\n nonNullCount: 0\n };\n });\n acc._.children = acc._.children || [];\n\n const compareValuesAsNumbers = field.type === 'number'; // These need to be parsed as numbers before sorting. DataViews API returns everything as a string\n const customOrder = getTextGroupingOrder(g.customFunction, g.order);\n insertSorted(\n acc._.children,\n acc[name]._,\n 'name',\n g.order,\n compareValuesAsNumbers,\n customOrder\n );\n }\n acc[name]._.count += 1;\n\n aggregationInfo.forEach(agg => {\n const aggValue = get(d, agg.name);\n if (aggValue === null || aggValue === undefined) {\n return;\n }\n switch (agg.type) {\n case 'max':\n if (typeof acc[name]._.agg[agg.name].max !== 'number') {\n acc[name]._.agg[agg.name].max = get(d, agg.name);\n } else {\n acc[name]._.agg[agg.name].max =\n Math.max(acc[name]._.agg[agg.name].max, get(d, agg.name)) || null;\n }\n break;\n case 'min':\n if (typeof acc[name]._.agg[agg.name].min !== 'number') {\n acc[name]._.agg[agg.name].min = get(d, agg.name);\n } else {\n acc[name]._.agg[agg.name].min =\n Math.min(acc[name]._.agg[agg.name].min, get(d, agg.name)) || null;\n }\n break;\n case 'sum':\n acc[name]._.agg[agg.name].sum =\n Math.round(((acc[name]._.agg[agg.name].sum || 0) + get(d, agg.name)) * 100) / 100;\n break;\n case 'avg':\n acc[name]._.agg[agg.name].nonNullCount += 1;\n acc[name]._.agg[agg.name].sum = (acc[name]._.agg[agg.name].sum || 0) + get(d, agg.name);\n acc[name]._.agg[agg.name].avg =\n Math.round(\n (acc[name]._.agg[agg.name].sum / acc[name]._.agg[agg.name].nonNullCount) * 100\n ) / 100;\n break;\n case 'distinctcount': {\n hasDistinctCountAggregation = true;\n if (!acc[name]._.agg[agg.name].distinctSet) {\n acc[name]._.agg[agg.name].distinctSet = new Set();\n }\n acc[name]._.agg[agg.name].distinctSet.add(aggValue);\n acc[name]._.agg[agg.name].distinctCount = acc[name]._.agg[agg.name].distinctSet.size;\n break;\n }\n default:\n break;\n }\n });\n\n return acc[name];\n }, object);\n });\n\n if (hasDistinctCountAggregation) {\n // Cleanup the distinctSet from aggregation info before returning the result.\n cleanupDistinctSet(result);\n }\n\n return result;\n}\n\n// Sample output of grouping.\n\n// 0:\n// name: \"New\"\n// count: 9\n// expanded: true\n// children: Array(3)\n// 0: {name: \"10\", count: 5, expanded: true}\n// 1: {name: \"85\", count: 1, expanded: true}\n// 2: {name: \"86\", count: 3, expanded: true}\n// length: 3\n// __proto__: Array(0)\n// __proto__: Object\n// length: 1\n// __proto__: Array(0)\n"]}
|
|
1
|
+
{"version":3,"file":"Grouping.js","sourceRoot":"","sources":["../../dataApi/Grouping.js"],"names":[],"mappings":"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","sourcesContent":["import get from 'lodash-es/get';\n\nimport { getFieldsMap } from '../stateConversion/PrepareDatapageQuery';\n\nimport filter from './Filter';\nimport { getDateFunctionValue, getFormattedFields } from './utils';\nimport {\n getTextGroupingOrder,\n getTextGroupingValue,\n isTextGroupingCustomFunction\n} from './CustomGrouping';\n\n// eslint-disable-next-line default-param-last\nfunction insertSorted(arr, obj, key, order = 'asc', compareValuesAsNumbers, customOrder) {\n let inserted = false;\n for (let i = 0; i < arr.length; i += 1) {\n const input = arr[i];\n const getSortValue = value => {\n if (customOrder) {\n const customIndex = customOrder.indexOf(value);\n return customIndex === -1 ? customOrder.length : customIndex;\n }\n\n if (compareValuesAsNumbers) {\n return Number(value);\n }\n\n return value;\n };\n const objValue = getSortValue(obj[key]);\n const inputValue = getSortValue(input[key]);\n if (order === 'desc' ? objValue >= inputValue : objValue <= inputValue) {\n arr.splice(i, 0, obj);\n inserted = true;\n break;\n }\n }\n\n if (!arr.length || !inserted) {\n arr.push(obj);\n }\n}\n\n/** Returns the value of a group in the given data row */\nfunction getGroupValueInRow(dataRow, group, field, formattedFields) {\n if (isTextGroupingCustomFunction(group.customFunction)) {\n return getTextGroupingValue(dataRow, group.customFunction, formattedFields);\n }\n\n // If it's a regular group (i.e. without any dateFunction), return the field value directly\n if (!group.dateFunction) {\n return get(dataRow, field.name);\n }\n\n // When a dateFunction is present, format the value to match the conventions from the Data API\n return getDateFunctionValue(dataRow, field.name, group.dateFunction);\n}\n\n/**\n * Cleanup the distinctSet from aggregation info in group nodes.\n * @param groupNodes\n */\nconst cleanupDistinctSet = groupNodes => {\n groupNodes.forEach(node => {\n if (node.agg) {\n Object.keys(node.agg).forEach(aggName => {\n if (node.agg[aggName].distinctSet) {\n delete node.agg[aggName].distinctSet;\n }\n });\n }\n if (node.children) {\n cleanupDistinctSet(node.children);\n }\n });\n};\n\n// Provides grouped information when group state is provided with data.\n// Group information has following properties for each grouped value.\n// name,count:leafnodecount,level,groupBy: key generated using getGroupKey\nexport default function grouping(state = {}, dataInput = [], meta = {}) {\n // if filtered state is there, filter data and then\n // prepare your group info based on filtered data.\n const filteredData = filter(state, dataInput, meta);\n\n // get groups from state in sorted order of level.\n const originalGroups = [...state.groups];\n const groups = originalGroups.sort((g1, g2) => g1.level - g2.level);\n const result = [];\n const object = { _: { children: result } };\n const fieldsMap = getFieldsMap(meta.fieldDefs);\n const formattedFields = getFormattedFields(meta.fieldDefs);\n const aggregationInfo =\n state.aggregationInfo?.map(agg => ({\n ...agg,\n type: agg.type.toLowerCase(),\n name: agg.columnId\n })) || [];\n let hasDistinctCountAggregation = false;\n\n filteredData.forEach(d => {\n let includeDataRow = true;\n groups.reduce((acc, g) => {\n if (!includeDataRow) {\n return acc;\n }\n\n const field = fieldsMap.get(g.columnId);\n const name = getGroupValueInRow(d, g, field, formattedFields);\n\n if (isTextGroupingCustomFunction(g.customFunction) && name === undefined) {\n includeDataRow = false;\n return acc;\n }\n\n if (!acc[name]) {\n acc[name] = {\n _: {\n name,\n count: 0,\n agg: {},\n data: d\n }\n };\n aggregationInfo.forEach(agg => {\n acc[name]._.agg[agg.name] = {\n max: null,\n min: null,\n sum: null,\n avg: null,\n nonNullCount: 0\n };\n });\n acc._.children = acc._.children || [];\n\n const compareValuesAsNumbers = field.type === 'number'; // These need to be parsed as numbers before sorting. DataViews API returns everything as a string\n const customOrder = getTextGroupingOrder(g.customFunction, g.order);\n insertSorted(\n acc._.children,\n acc[name]._,\n 'name',\n g.order,\n compareValuesAsNumbers,\n customOrder\n );\n }\n acc[name]._.count += 1;\n\n aggregationInfo.forEach(agg => {\n const aggValue = get(d, agg.name);\n if (aggValue === null || aggValue === undefined) {\n return;\n }\n switch (agg.type) {\n case 'max':\n if (typeof acc[name]._.agg[agg.name].max !== 'number') {\n acc[name]._.agg[agg.name].max = aggValue;\n } else {\n acc[name]._.agg[agg.name].max =\n Math.max(acc[name]._.agg[agg.name].max, aggValue) || null;\n }\n break;\n case 'min':\n if (typeof acc[name]._.agg[agg.name].min !== 'number') {\n acc[name]._.agg[agg.name].min = aggValue;\n } else {\n acc[name]._.agg[agg.name].min =\n Math.min(acc[name]._.agg[agg.name].min, aggValue) || null;\n }\n break;\n case 'sum':\n acc[name]._.agg[agg.name].sum =\n Math.round(((acc[name]._.agg[agg.name].sum || 0) + aggValue) * 100) / 100;\n break;\n case 'avg':\n acc[name]._.agg[agg.name].nonNullCount += 1;\n acc[name]._.agg[agg.name].sum = (acc[name]._.agg[agg.name].sum || 0) + aggValue;\n acc[name]._.agg[agg.name].avg =\n Math.round(\n (acc[name]._.agg[agg.name].sum / acc[name]._.agg[agg.name].nonNullCount) * 100\n ) / 100;\n break;\n case 'distinctcount': {\n hasDistinctCountAggregation = true;\n if (!acc[name]._.agg[agg.name].distinctSet) {\n acc[name]._.agg[agg.name].distinctSet = new Set();\n }\n acc[name]._.agg[agg.name].distinctSet.add(aggValue);\n acc[name]._.agg[agg.name].distinctCount = acc[name]._.agg[agg.name].distinctSet.size;\n break;\n }\n default:\n break;\n }\n });\n\n return acc[name];\n }, object);\n });\n\n if (hasDistinctCountAggregation) {\n // Cleanup the distinctSet from aggregation info before returning the result.\n cleanupDistinctSet(result);\n }\n\n return result;\n}\n\n// Sample output of grouping.\n\n// 0:\n// name: \"New\"\n// count: 9\n// expanded: true\n// children: Array(3)\n// 0: {name: \"10\", count: 5, expanded: true}\n// 1: {name: \"85\", count: 1, expanded: true}\n// 2: {name: \"86\", count: 3, expanded: true}\n// length: 3\n// __proto__: Array(0)\n// __proto__: Object\n// length: 1\n// __proto__: Array(0)\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../dataApi/index.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../dataApi/index.js"],"names":[],"mappings":"AAoDO,iCALI,YAAY,CAAC,gBAAgB,QAC7B,YAAY,CAAC,IAAI,QACjB,YAAY,CAAC,IAAI,GACf,OAAO,UAAU,EAAE,YAAY,CAAC,iBAAiB,CA6B7D;AAUM,4CANI,YAAY,CAAC,gBAAgB,QAC7B,YAAY,CAAC,IAAI,SACjB,MAAM,QACN,YAAY,CAAC,IAAI,GACf,YAAY,CAAC,uBAAuB,CAwBhD;AASM,wCALI,YAAY,CAAC,gBAAgB,QAC7B,YAAY,CAAC,IAAI,uBACjB,YAAY,CAAC,IAAI,GACf,YAAY,CAAC,wBAAwB,CAUjD;AASM,6CALI,YAAY,CAAC,gBAAgB,QAC7B,YAAY,CAAC,IAAI,uBACjB,YAAY,CAAC,IAAI,GACf,YAAY,CAAC,uBAAuB,CAUhD;AAEM,4HAsBN;6BAnK4B,UAAU"}
|
package/lib/dataApi/index.js
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
|
+
import cloneDeep from 'lodash-es/cloneDeep';
|
|
1
2
|
import get from 'lodash-es/get';
|
|
3
|
+
import set from 'lodash-es/set';
|
|
2
4
|
// This should be converted to "import type" once this file is TS.
|
|
3
5
|
// eslint-disable-next-line no-unused-vars
|
|
4
6
|
import { DataApiTypes } from '../types';
|
|
@@ -11,6 +13,25 @@ import { isTextGroupingCustomFunction } from './CustomGrouping';
|
|
|
11
13
|
const hasUnsupportedCustomGrouping = query => {
|
|
12
14
|
return query?.query?.groupBy?.some(group => group.customFunction && !isTextGroupingCustomFunction(group.customFunction));
|
|
13
15
|
};
|
|
16
|
+
const normalizeNumericData = (data = [], fieldDefs = []) => {
|
|
17
|
+
const numericFieldNames = fieldDefs
|
|
18
|
+
.filter(field => field.type?.toLowerCase() === 'number')
|
|
19
|
+
.map(field => field.name);
|
|
20
|
+
if (numericFieldNames.length <= 0)
|
|
21
|
+
return data;
|
|
22
|
+
return data.map(row => {
|
|
23
|
+
let normalizedRow = row;
|
|
24
|
+
numericFieldNames.forEach(fieldName => {
|
|
25
|
+
const value = get(row, fieldName);
|
|
26
|
+
const numericValue = Number(value);
|
|
27
|
+
if (typeof value === 'string' && value.trim() !== '' && Number.isFinite(numericValue)) {
|
|
28
|
+
normalizedRow = normalizedRow === row ? cloneDeep(row) : normalizedRow;
|
|
29
|
+
set(normalizedRow, fieldName, numericValue);
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
return normalizedRow;
|
|
33
|
+
});
|
|
34
|
+
};
|
|
14
35
|
/**
|
|
15
36
|
* This api is used to fetch a list of raw data rows (excluding aggregations) for a given group or at the top level when no groups
|
|
16
37
|
* from the provided {@link data} using {@link query} and {@link meta}
|
|
@@ -23,9 +44,10 @@ export const fetchData = (query, meta, data) => {
|
|
|
23
44
|
if (hasUnsupportedCustomGrouping(query)) {
|
|
24
45
|
return Promise.resolve({ data: [], totalRecordCount: 0, filteredRecordCount: 0 });
|
|
25
46
|
}
|
|
26
|
-
const
|
|
47
|
+
const normalizedData = normalizeNumericData(data, meta.fieldDefs);
|
|
48
|
+
const stateFromTable = convertQueryToListState(query, normalizedData);
|
|
27
49
|
const serverData = {
|
|
28
|
-
data:
|
|
50
|
+
data: normalizedData
|
|
29
51
|
};
|
|
30
52
|
serverData.totalRecordCount = serverData.data.length;
|
|
31
53
|
serverData.filteredRecordCount = serverData.data.length;
|
|
@@ -89,9 +111,10 @@ export const fetchUniqueColValues = (query, meta, colId, data) => {
|
|
|
89
111
|
export const fetchGroupedInfo = (query, meta, clonedFormattedData) => {
|
|
90
112
|
if (hasUnsupportedCustomGrouping(query))
|
|
91
113
|
return Promise.resolve([]);
|
|
92
|
-
const
|
|
114
|
+
const normalizedData = normalizeNumericData(clonedFormattedData, meta.fieldDefs);
|
|
115
|
+
const state = convertQueryToListState(query, normalizedData);
|
|
93
116
|
return new Promise(resolve => {
|
|
94
|
-
resolve(grouping(state,
|
|
117
|
+
resolve(grouping(state, normalizedData, { ...meta, typeMap }));
|
|
95
118
|
});
|
|
96
119
|
};
|
|
97
120
|
/**
|
|
@@ -104,9 +127,10 @@ export const fetchGroupedInfo = (query, meta, clonedFormattedData) => {
|
|
|
104
127
|
export const fetchAggregatedValues = (query, meta, clonedFormattedData) => {
|
|
105
128
|
if (hasUnsupportedCustomGrouping(query))
|
|
106
129
|
return Promise.resolve({});
|
|
107
|
-
const
|
|
130
|
+
const normalizedData = normalizeNumericData(clonedFormattedData, meta.fieldDefs);
|
|
131
|
+
const state = convertQueryToListState(query, normalizedData);
|
|
108
132
|
return new Promise(resolve => {
|
|
109
|
-
resolve(aggregation(state,
|
|
133
|
+
resolve(aggregation(state, normalizedData, meta));
|
|
110
134
|
});
|
|
111
135
|
};
|
|
112
136
|
export const fetchGroupAdditionalFieldUniqueValues = (query, meta, additionalField, data) => {
|
package/lib/dataApi/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../dataApi/index.js"],"names":[],"mappings":"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","sourcesContent":["import get from 'lodash-es/get';\n\n// This should be converted to \"import type\" once this file is TS.\n// eslint-disable-next-line no-unused-vars\nimport { DataApiTypes } from '../types';\nimport convertQueryToListState from '../stateConversion/QueryToListsState';\n\nimport getDataFeatures from './DataFeatures';\nimport grouping from './Grouping';\nimport aggregation from './Aggregation';\nimport { typeMap } from './utils';\nimport { isTextGroupingCustomFunction } from './CustomGrouping';\n\nconst hasUnsupportedCustomGrouping = query => {\n return query?.query?.groupBy?.some(\n group => group.customFunction && !isTextGroupingCustomFunction(group.customFunction)\n );\n};\n\n/**\n * This api is used to fetch a list of raw data rows (excluding aggregations) for a given group or at the top level when no groups\n * from the provided {@link data} using {@link query} and {@link meta}\n * @param {DataApiTypes.DataViewsRequest} query A data view api request object used to query the {@link data}\n * @param {DataApiTypes.Meta} meta A metadata structure that is used to get extra information that is not present in the query.\n * @param {DataApiTypes.Data} data The whole dataset on which this {@link query} operation needs to be performed\n * @returns {import('../types').DataApiTypes.FetchDataResponse} {@link DataApiTypes.FetchDataResponse}\n */\nexport const fetchData = (query, meta, data) => {\n if (hasUnsupportedCustomGrouping(query)) {\n return Promise.resolve({ data: [], totalRecordCount: 0, filteredRecordCount: 0 });\n }\n\n const stateFromTable = convertQueryToListState(query, data);\n const serverData = {\n data: data || []\n };\n serverData.totalRecordCount = serverData.data.length;\n serverData.filteredRecordCount = serverData.data.length;\n const features = getDataFeatures();\n Object.entries(features).forEach(([key, feature]) => {\n if (key !== 'paginate' || (key === 'paginate' && stateFromTable.paginationOptions)) {\n if (key === 'paginate') {\n serverData.data = feature(stateFromTable, serverData.data, meta);\n } else {\n serverData.data = feature(stateFromTable, serverData.data, meta);\n serverData.totalRecordCount = serverData.data.length;\n serverData.filteredRecordCount = serverData.data.length;\n }\n }\n });\n return new Promise(resolve => {\n resolve(serverData);\n });\n};\n\n/**\n * This api is used to fetch the unique values for a given colId. The {@link colId} should be equal to {@link DataApiTypes.FieldDef.id fieldDef id} for which unique values needs to be fetched.\n * @param {DataApiTypes.DataViewsRequest} query A data view api request object used to query the {@link data}\n * @param {DataApiTypes.Meta} meta A metadata structure that is used to get extra information that is not present in the query.\n * @param {string} colId It should be equal to {@link DataApiTypes.FieldDef.id fieldDef id} for which unique values needs to be fetched.\n * @param {DataApiTypes.Data} data The whole dataset on which this {@link query} operation needs to be performed\n * @returns {DataApiTypes.UniqueColValuesResponse} {@link DataApiTypes.UniqueColValuesResponse}\n */\nexport const fetchUniqueColValues = (query, meta, colId, data) => {\n if (hasUnsupportedCustomGrouping(query)) return Promise.resolve([]);\n\n const column = meta.fieldDefs ? meta.fieldDefs.find(col => col.id === colId) : null;\n const colName = column ? column.name : null;\n if (!colName) return Promise.resolve([]);\n delete query.paging;\n delete query.query.filter;\n const resultSet = new Set();\n return new Promise((success, failure) => {\n fetchData(query, meta, data || [])\n .then(({ data: resData }) => {\n resData.forEach(obj => {\n const value = get(obj, colName);\n if (value !== null && value !== undefined) resultSet.add(value);\n });\n success([...resultSet]);\n })\n .catch(error => {\n failure(error);\n });\n });\n};\n\n/**\n * This api is used to fetch details for any group/sub-group for a given {@link clonedFormattedData}. It returns labels, counts, aggregation values at each group node.\n * @param {DataApiTypes.DataViewsRequest} query A data view api request object used to query the {@link clonedFormattedData}\n * @param {DataApiTypes.Meta} meta A metadata structure that is used to get extra information that is not present in the query.\n * @param {DataApiTypes.Data} clonedFormattedData The whole dataset on which this {@link query} operation needs to be performed\n * @returns {DataApiTypes.FetchGroupedInfoResponse} {@link DataApiTypes.FetchGroupedInfoResponse}\n */\nexport const fetchGroupedInfo = (query, meta, clonedFormattedData) => {\n if (hasUnsupportedCustomGrouping(query)) return Promise.resolve([]);\n\n const state = convertQueryToListState(query, clonedFormattedData || []);\n return new Promise(resolve => {\n resolve(grouping(state, clonedFormattedData || [], { ...meta, typeMap }));\n });\n};\n\n/**\n * This api is used to fetch aggregation results for a given aggregation type(sum/min/max/count) in the {@link query}.\n * @param {DataApiTypes.DataViewsRequest} query A data view api request object used to query the {@link clonedFormattedData}\n * @param {DataApiTypes.Meta} meta A metadata structure that is used to get extra information that is not present in the query.\n * @param {DataApiTypes.Data} clonedFormattedData The whole dataset on which this {@link query} operation needs to be performed\n * @returns {DataApiTypes.AggregateValuesResponse} {@link DataApiTypes.AggregateValuesResponse}\n */\nexport const fetchAggregatedValues = (query, meta, clonedFormattedData) => {\n if (hasUnsupportedCustomGrouping(query)) return Promise.resolve({});\n\n const state = convertQueryToListState(query, clonedFormattedData || []);\n return new Promise(resolve => {\n resolve(aggregation(state, clonedFormattedData || [], meta));\n });\n};\n\nexport const fetchGroupAdditionalFieldUniqueValues = (query, meta, additionalField, data) => {\n if (hasUnsupportedCustomGrouping(query)) {\n return Promise.resolve({ values: [], hasMore: false });\n }\n\n const column = meta.fieldDefs ? meta.fieldDefs.find(col => col.id === additionalField.id) : null;\n const colName = column ? column.name : null;\n if (!colName) return Promise.resolve({ values: [], hasMore: false });\n const resultSet = new Set();\n return new Promise((success, failure) => {\n fetchData(query, meta, data || [])\n .then(({ data: resData }) => {\n resData.forEach(obj => {\n const value = get(obj, colName);\n if (value !== null && value !== undefined) resultSet.add(value);\n });\n success({ values: [...resultSet], hasMore: false });\n })\n .catch(error => {\n failure(error);\n });\n });\n};\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../dataApi/index.js"],"names":[],"mappings":"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","sourcesContent":["import cloneDeep from 'lodash-es/cloneDeep';\nimport get from 'lodash-es/get';\nimport set from 'lodash-es/set';\n\n// This should be converted to \"import type\" once this file is TS.\n// eslint-disable-next-line no-unused-vars\nimport { DataApiTypes } from '../types';\nimport convertQueryToListState from '../stateConversion/QueryToListsState';\n\nimport getDataFeatures from './DataFeatures';\nimport grouping from './Grouping';\nimport aggregation from './Aggregation';\nimport { typeMap } from './utils';\nimport { isTextGroupingCustomFunction } from './CustomGrouping';\n\nconst hasUnsupportedCustomGrouping = query => {\n return query?.query?.groupBy?.some(\n group => group.customFunction && !isTextGroupingCustomFunction(group.customFunction)\n );\n};\n\nconst normalizeNumericData = (data = [], fieldDefs = []) => {\n const numericFieldNames = fieldDefs\n .filter(field => field.type?.toLowerCase() === 'number')\n .map(field => field.name);\n\n if (numericFieldNames.length <= 0) return data;\n\n return data.map(row => {\n let normalizedRow = row;\n\n numericFieldNames.forEach(fieldName => {\n const value = get(row, fieldName);\n const numericValue = Number(value);\n if (typeof value === 'string' && value.trim() !== '' && Number.isFinite(numericValue)) {\n normalizedRow = normalizedRow === row ? cloneDeep(row) : normalizedRow;\n set(normalizedRow, fieldName, numericValue);\n }\n });\n\n return normalizedRow;\n });\n};\n\n/**\n * This api is used to fetch a list of raw data rows (excluding aggregations) for a given group or at the top level when no groups\n * from the provided {@link data} using {@link query} and {@link meta}\n * @param {DataApiTypes.DataViewsRequest} query A data view api request object used to query the {@link data}\n * @param {DataApiTypes.Meta} meta A metadata structure that is used to get extra information that is not present in the query.\n * @param {DataApiTypes.Data} data The whole dataset on which this {@link query} operation needs to be performed\n * @returns {import('../types').DataApiTypes.FetchDataResponse} {@link DataApiTypes.FetchDataResponse}\n */\nexport const fetchData = (query, meta, data) => {\n if (hasUnsupportedCustomGrouping(query)) {\n return Promise.resolve({ data: [], totalRecordCount: 0, filteredRecordCount: 0 });\n }\n\n const normalizedData = normalizeNumericData(data, meta.fieldDefs);\n const stateFromTable = convertQueryToListState(query, normalizedData);\n const serverData = {\n data: normalizedData\n };\n serverData.totalRecordCount = serverData.data.length;\n serverData.filteredRecordCount = serverData.data.length;\n const features = getDataFeatures();\n Object.entries(features).forEach(([key, feature]) => {\n if (key !== 'paginate' || (key === 'paginate' && stateFromTable.paginationOptions)) {\n if (key === 'paginate') {\n serverData.data = feature(stateFromTable, serverData.data, meta);\n } else {\n serverData.data = feature(stateFromTable, serverData.data, meta);\n serverData.totalRecordCount = serverData.data.length;\n serverData.filteredRecordCount = serverData.data.length;\n }\n }\n });\n return new Promise(resolve => {\n resolve(serverData);\n });\n};\n\n/**\n * This api is used to fetch the unique values for a given colId. The {@link colId} should be equal to {@link DataApiTypes.FieldDef.id fieldDef id} for which unique values needs to be fetched.\n * @param {DataApiTypes.DataViewsRequest} query A data view api request object used to query the {@link data}\n * @param {DataApiTypes.Meta} meta A metadata structure that is used to get extra information that is not present in the query.\n * @param {string} colId It should be equal to {@link DataApiTypes.FieldDef.id fieldDef id} for which unique values needs to be fetched.\n * @param {DataApiTypes.Data} data The whole dataset on which this {@link query} operation needs to be performed\n * @returns {DataApiTypes.UniqueColValuesResponse} {@link DataApiTypes.UniqueColValuesResponse}\n */\nexport const fetchUniqueColValues = (query, meta, colId, data) => {\n if (hasUnsupportedCustomGrouping(query)) return Promise.resolve([]);\n\n const column = meta.fieldDefs ? meta.fieldDefs.find(col => col.id === colId) : null;\n const colName = column ? column.name : null;\n if (!colName) return Promise.resolve([]);\n delete query.paging;\n delete query.query.filter;\n const resultSet = new Set();\n return new Promise((success, failure) => {\n fetchData(query, meta, data || [])\n .then(({ data: resData }) => {\n resData.forEach(obj => {\n const value = get(obj, colName);\n if (value !== null && value !== undefined) resultSet.add(value);\n });\n success([...resultSet]);\n })\n .catch(error => {\n failure(error);\n });\n });\n};\n\n/**\n * This api is used to fetch details for any group/sub-group for a given {@link clonedFormattedData}. It returns labels, counts, aggregation values at each group node.\n * @param {DataApiTypes.DataViewsRequest} query A data view api request object used to query the {@link clonedFormattedData}\n * @param {DataApiTypes.Meta} meta A metadata structure that is used to get extra information that is not present in the query.\n * @param {DataApiTypes.Data} clonedFormattedData The whole dataset on which this {@link query} operation needs to be performed\n * @returns {DataApiTypes.FetchGroupedInfoResponse} {@link DataApiTypes.FetchGroupedInfoResponse}\n */\nexport const fetchGroupedInfo = (query, meta, clonedFormattedData) => {\n if (hasUnsupportedCustomGrouping(query)) return Promise.resolve([]);\n\n const normalizedData = normalizeNumericData(clonedFormattedData, meta.fieldDefs);\n const state = convertQueryToListState(query, normalizedData);\n return new Promise(resolve => {\n resolve(grouping(state, normalizedData, { ...meta, typeMap }));\n });\n};\n\n/**\n * This api is used to fetch aggregation results for a given aggregation type(sum/min/max/count) in the {@link query}.\n * @param {DataApiTypes.DataViewsRequest} query A data view api request object used to query the {@link clonedFormattedData}\n * @param {DataApiTypes.Meta} meta A metadata structure that is used to get extra information that is not present in the query.\n * @param {DataApiTypes.Data} clonedFormattedData The whole dataset on which this {@link query} operation needs to be performed\n * @returns {DataApiTypes.AggregateValuesResponse} {@link DataApiTypes.AggregateValuesResponse}\n */\nexport const fetchAggregatedValues = (query, meta, clonedFormattedData) => {\n if (hasUnsupportedCustomGrouping(query)) return Promise.resolve({});\n\n const normalizedData = normalizeNumericData(clonedFormattedData, meta.fieldDefs);\n const state = convertQueryToListState(query, normalizedData);\n return new Promise(resolve => {\n resolve(aggregation(state, normalizedData, meta));\n });\n};\n\nexport const fetchGroupAdditionalFieldUniqueValues = (query, meta, additionalField, data) => {\n if (hasUnsupportedCustomGrouping(query)) {\n return Promise.resolve({ values: [], hasMore: false });\n }\n\n const column = meta.fieldDefs ? meta.fieldDefs.find(col => col.id === additionalField.id) : null;\n const colName = column ? column.name : null;\n if (!colName) return Promise.resolve({ values: [], hasMore: false });\n const resultSet = new Set();\n return new Promise((success, failure) => {\n fetchData(query, meta, data || [])\n .then(({ data: resData }) => {\n resData.forEach(obj => {\n const value = get(obj, colName);\n if (value !== null && value !== undefined) resultSet.add(value);\n });\n success({ values: [...resultSet], hasMore: false });\n })\n .catch(error => {\n failure(error);\n });\n });\n};\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pega/lists-core-utils",
|
|
3
|
-
"version": "10.0.0-build.5.
|
|
3
|
+
"version": "10.0.0-build.5.21",
|
|
4
4
|
"description": "Data api for data operations like sort, filter, grouping etc. and query builder api's to build Data views api query",
|
|
5
5
|
"license": "SEE LICENSE IN LICENSE",
|
|
6
6
|
"author": "Pegasystems",
|
|
@@ -14,12 +14,12 @@
|
|
|
14
14
|
"build": "tsc -b tsconfig.build.json"
|
|
15
15
|
},
|
|
16
16
|
"dependencies": {
|
|
17
|
-
"@pega/cosmos-react-condition-builder": "10.0.0-build.5.
|
|
18
|
-
"@pega/cosmos-react-core": "10.0.0-build.5.
|
|
17
|
+
"@pega/cosmos-react-condition-builder": "10.0.0-build.5.21",
|
|
18
|
+
"@pega/cosmos-react-core": "10.0.0-build.5.21",
|
|
19
19
|
"@types/lodash-es": "^4.17.12",
|
|
20
20
|
"dayjs": "^1.11.13",
|
|
21
21
|
"lodash-es": "^4.18.1",
|
|
22
|
-
"pega-repeating-structures-core": "npm:@pega/lists-core@10.0.0-build.5.
|
|
22
|
+
"pega-repeating-structures-core": "npm:@pega/lists-core@10.0.0-build.5.21"
|
|
23
23
|
},
|
|
24
24
|
"devDependencies": {
|
|
25
25
|
"typescript": "~6.0.3"
|