@pega/lists-core-utils 9.0.0-build.15.1 → 9.0.0-build.16.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.
@@ -1,4 +1,4 @@
1
- import get from 'lodash.get';
1
+ import get from 'lodash-es/get';
2
2
  import filter from './Filter';
3
3
  /* eslint-disable no-console */
4
4
  const sum = (data, prop) => Math.round(data.reduce((acc, d) => (parseFloat(get(d, prop), 10) || 0) + acc, 0) * 100) / 100;
@@ -1 +1 @@
1
- {"version":3,"file":"Aggregation.js","sourceRoot":"","sources":["../../dataApi/Aggregation.js"],"names":[],"mappings":"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","sourcesContent":["import get from 'lodash.get';\n\nimport filter from './Filter';\n\n/* eslint-disable no-console */\nconst sum = (data, prop) =>\n Math.round(data.reduce((acc, d) => (parseFloat(get(d, prop), 10) || 0) + acc, 0) * 100) / 100;\nconst max = (data, prop) =>\n Math.max(...data.filter(d => get(d, prop) !== undefined).map(d => parseFloat(get(d, prop), 10)));\nconst min = (data, prop) =>\n Math.min(...data.filter(d => get(d, prop) !== undefined).map(d => parseFloat(get(d, prop), 10)));\nconst avg = (data, prop) =>\n Math.round((sum(data, prop) / data.filter(d => get(d, prop) !== undefined).length) * 100) / 100;\n\nconst aggregators = {\n number: { sum, min, max, avg },\n string: {}\n};\n\nfunction aggregate(type, col, data) {\n // based on column type find if we have required function support.\n // TODO: Need to provide support for server side from default aggregation.\n if (aggregators[col.type] && aggregators[col.type][type]) {\n return aggregators[col.type][type](data, col.name);\n }\n console.log(`We are not supporting ${type} for ${col.type} type column.`);\n return undefined;\n}\n\nexport default function aggregation(state = {}, dataInput = [], meta = {}) {\n // if filtered state is there, filter data and then do the aggregation\n const filteredData = filter(state, dataInput, meta);\n\n const result = {};\n const { aggregationInfo } = state;\n meta.fieldDefs.forEach(col => {\n const aggregationItem = aggregationInfo?.find(\n a => a.columnId === col.id || a.columnId === col.name\n );\n if (aggregationItem) {\n result[col.id] = aggregate(aggregationItem?.type?.toLowerCase(), col, filteredData);\n }\n });\n return result;\n}\n\n// Sample output of Aggregated values.\n// {112: \"178\", 114: \"2.37\", 116: \"4\"}\n"]}
1
+ {"version":3,"file":"Aggregation.js","sourceRoot":"","sources":["../../dataApi/Aggregation.js"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,eAAe,CAAC;AAEhC,OAAO,MAAM,MAAM,UAAU,CAAC;AAE9B,+BAA+B;AAC/B,MAAM,GAAG,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CACzB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;AAChG,MAAM,GAAG,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CACzB,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;AACnG,MAAM,GAAG,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CACzB,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;AACnG,MAAM,GAAG,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CACzB,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,SAAS,CAAC,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;AAElG,MAAM,WAAW,GAAG;IAClB,MAAM,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;IAC9B,MAAM,EAAE,EAAE;CACX,CAAC;AAEF,SAAS,SAAS,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI;IAChC,kEAAkE;IAClE,0EAA0E;IAC1E,IAAI,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;QACzD,OAAO,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACrD,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,yBAAyB,IAAI,QAAQ,GAAG,CAAC,IAAI,eAAe,CAAC,CAAC;IAC1E,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,KAAK,GAAG,EAAE,EAAE,SAAS,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE;IACvE,sEAAsE;IACtE,MAAM,YAAY,GAAG,MAAM,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;IAEpD,MAAM,MAAM,GAAG,EAAE,CAAC;IAClB,MAAM,EAAE,eAAe,EAAE,GAAG,KAAK,CAAC;IAClC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;QAC3B,MAAM,eAAe,GAAG,eAAe,EAAE,IAAI,CAC3C,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,QAAQ,KAAK,GAAG,CAAC,IAAI,CACtD,CAAC;QACF,IAAI,eAAe,EAAE,CAAC;YACpB,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,eAAe,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,GAAG,EAAE,YAAY,CAAC,CAAC;QACtF,CAAC;IACH,CAAC,CAAC,CAAC;IACH,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,sCAAsC;AACtC,sCAAsC","sourcesContent":["import get from 'lodash-es/get';\n\nimport filter from './Filter';\n\n/* eslint-disable no-console */\nconst sum = (data, prop) =>\n Math.round(data.reduce((acc, d) => (parseFloat(get(d, prop), 10) || 0) + acc, 0) * 100) / 100;\nconst max = (data, prop) =>\n Math.max(...data.filter(d => get(d, prop) !== undefined).map(d => parseFloat(get(d, prop), 10)));\nconst min = (data, prop) =>\n Math.min(...data.filter(d => get(d, prop) !== undefined).map(d => parseFloat(get(d, prop), 10)));\nconst avg = (data, prop) =>\n Math.round((sum(data, prop) / data.filter(d => get(d, prop) !== undefined).length) * 100) / 100;\n\nconst aggregators = {\n number: { sum, min, max, avg },\n string: {}\n};\n\nfunction aggregate(type, col, data) {\n // based on column type find if we have required function support.\n // TODO: Need to provide support for server side from default aggregation.\n if (aggregators[col.type] && aggregators[col.type][type]) {\n return aggregators[col.type][type](data, col.name);\n }\n console.log(`We are not supporting ${type} for ${col.type} type column.`);\n return undefined;\n}\n\nexport default function aggregation(state = {}, dataInput = [], meta = {}) {\n // if filtered state is there, filter data and then do the aggregation\n const filteredData = filter(state, dataInput, meta);\n\n const result = {};\n const { aggregationInfo } = state;\n meta.fieldDefs.forEach(col => {\n const aggregationItem = aggregationInfo?.find(\n a => a.columnId === col.id || a.columnId === col.name\n );\n if (aggregationItem) {\n result[col.id] = aggregate(aggregationItem?.type?.toLowerCase(), col, filteredData);\n }\n });\n return result;\n}\n\n// Sample output of Aggregated values.\n// {112: \"178\", 114: \"2.37\", 116: \"4\"}\n"]}
@@ -1,4 +1,4 @@
1
- import get from 'lodash.get';
1
+ import get from 'lodash-es/get';
2
2
  import { getFieldsMap } from '../stateConversion/PrepareDatapageQuery';
3
3
  import filter from './Filter';
4
4
  import { getDateFunctionValue } from './utils';
@@ -1 +1 @@
1
- {"version":3,"file":"Grouping.js","sourceRoot":"","sources":["../../dataApi/Grouping.js"],"names":[],"mappings":"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","sourcesContent":["import get from 'lodash.get';\n\nimport { getFieldsMap } from '../stateConversion/PrepareDatapageQuery';\n\nimport filter from './Filter';\nimport { getDateFunctionValue } from './utils';\n\n// eslint-disable-next-line default-param-last\nfunction insertSorted(arr, obj, key, order = 'asc', compareValuesAsNumbers) {\n let inserted = false;\n for (let i = 0; i < arr.length; i += 1) {\n const input = arr[i];\n const objValue = compareValuesAsNumbers ? Number(obj[key]) : obj[key];\n const inputValue = compareValuesAsNumbers ? Number(input[key]) : input[key];\n if (order === 'asc' ? 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) {\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 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 groups.reduce((acc, g) => {\n const field = fieldsMap.get(g.columnId);\n const name = getGroupValueInRow(d, g, field);\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 insertSorted(acc._.children, acc[name]._, 'name', g.order, compareValuesAsNumbers);\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 } from './utils';\n\n// eslint-disable-next-line default-param-last\nfunction insertSorted(arr, obj, key, order = 'asc', compareValuesAsNumbers) {\n let inserted = false;\n for (let i = 0; i < arr.length; i += 1) {\n const input = arr[i];\n const objValue = compareValuesAsNumbers ? Number(obj[key]) : obj[key];\n const inputValue = compareValuesAsNumbers ? Number(input[key]) : input[key];\n if (order === 'asc' ? 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) {\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 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 groups.reduce((acc, g) => {\n const field = fieldsMap.get(g.columnId);\n const name = getGroupValueInRow(d, g, field);\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 insertSorted(acc._.children, acc[name]._, 'name', g.order, compareValuesAsNumbers);\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,4 +1,4 @@
1
- import get from 'lodash.get';
1
+ import get from 'lodash-es/get';
2
2
  import { evaluateCondition } from '@pega/cosmos-react-condition-builder';
3
3
  import { getFieldsMap } from '../stateConversion/PrepareDatapageQuery';
4
4
  import { getGroupFromKey } from '../stateConversion/utils';
@@ -1 +1 @@
1
- {"version":3,"file":"Paginate.js","sourceRoot":"","sources":["../../dataApi/Paginate.js"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,YAAY,CAAC;AAE7B,OAAO,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AAEzE,OAAO,EAAE,YAAY,EAAE,MAAM,yCAAyC,CAAC;AACvE,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAE3D,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAEjD,8CAA8C;AAC9C,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,KAAK,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE,IAAI;IAC1D,IAAI,aAAa,GAAG,EAAE,CAAC;IACvB,IAAI,IAAI,CAAC,QAAQ,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACzD,MAAM,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC/C,CAAC,KAAK,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;YAC5C,IAAI,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;gBACnC,mFAAmF;gBACnF,OAAO,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,EAAE;oBACjE,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,eAAe,CAAC,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;oBAC1E,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;oBAEtC,6GAA6G;oBAC7G,IAAI,YAAY,EAAE,CAAC;wBACjB,MAAM,SAAS,GAAG;4BAChB,SAAS,EAAE;gCACT,GAAG,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE;gCAC1B,UAAU,EAAE,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;gCACpE,GAAG,CAAC,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,IAAI,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,EAAE,CAAC;6BAC/E;yBACF,CAAC;wBACF,OAAO,iBAAiB,CACtB,SAAS,EACT,GAAG,EACH,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,EACjE,aAAa,CACd,CAAC;oBACJ,CAAC;oBAED,uCAAuC;oBACvC,OAAO,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC;gBACxC,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;YACH,YAAY,GAAG,YAAY,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;YACxE,aAAa,GAAG,CAAC,GAAG,aAAa,EAAE,GAAG,YAAY,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC;IACL,CAAC;SAAM,CAAC;QACN,aAAa,GAAG,IAAI,CAAC,KAAK,CACxB,KAAK,CAAC,iBAAiB,CAAC,eAAe,CAAC,UAAU,EAClD,KAAK,CAAC,iBAAiB,CAAC,eAAe,CAAC,QAAQ,GAAG,CAAC,CACrD,CAAC;IACJ,CAAC;IACD,OAAO,aAAa,CAAC;AACvB,CAAC;AAED;;;;;;;;;;;KAWK","sourcesContent":["import get from 'lodash.get';\n\nimport { evaluateCondition } from '@pega/cosmos-react-condition-builder';\n\nimport { getFieldsMap } from '../stateConversion/PrepareDatapageQuery';\nimport { getGroupFromKey } from '../stateConversion/utils';\n\nimport { typeMap, DOT_DELIMITER } from './utils';\n\n// eslint-disable-next-line default-param-last\nexport default function paginate(state = {}, data = [], meta) {\n let paginatedData = [];\n if (meta.grouping && state.groups && state.groups.length) {\n const fieldsMap = getFieldsMap(meta.fieldDefs);\n (state.groupFilters || []).forEach(groupOpt => {\n let filteredData = data.filter(row => {\n // Identify the rows where all the criteria from a given groupFilter are applicable\n return Object.entries(groupOpt.filters).every(([groupBy, value]) => {\n const { columnId, dateFunction } = getGroupFromKey(groupBy, state.groups);\n const field = fieldsMap.get(columnId);\n\n // If grouping by a dateFunction, use the ConditionBuilder utility to see if the row is matching the criteria\n if (dateFunction) {\n const condition = {\n condition: {\n lhs: { field: field.name },\n comparator: value !== null && value !== undefined ? 'EQ' : 'IS_NULL',\n ...(value !== null && value !== undefined && { rhs: { value, dateFunction } })\n }\n };\n return evaluateCondition(\n condition,\n row,\n [{ id: field.name, name: field.name, type: typeMap[field.type] }],\n DOT_DELIMITER\n );\n }\n\n // Otherwise, simply check for equality\n return get(row, field.name) === value;\n });\n });\n filteredData = filteredData.slice(groupOpt.groupFrom, groupOpt.groupTo);\n paginatedData = [...paginatedData, ...filteredData];\n });\n } else {\n paginatedData = data.slice(\n state.paginationOptions.rootVirtualiser.startIndex,\n state.paginationOptions.rootVirtualiser.endIndex + 1\n );\n }\n return paginatedData;\n}\n\n/* const processData = (paginationOptions, virtualizeIns, data) => {\n let newData = data;\n if (paginationOptions) {\n if (paginationOptions.action === 'append') {\n newData = virtualizeIns.oldData.slice(paginationOptions.rowsToDelete).concat(data);\n } else if (paginationOptions.action === 'prepend') {\n newData = data.concat(virtualizeIns.oldData);\n newData = newData.slice(0, newData.length - paginationOptions.rowsToDelete);\n }\n }\n return newData;\n}; */\n"]}
1
+ {"version":3,"file":"Paginate.js","sourceRoot":"","sources":["../../dataApi/Paginate.js"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,eAAe,CAAC;AAEhC,OAAO,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AAEzE,OAAO,EAAE,YAAY,EAAE,MAAM,yCAAyC,CAAC;AACvE,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAE3D,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAEjD,8CAA8C;AAC9C,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,KAAK,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE,IAAI;IAC1D,IAAI,aAAa,GAAG,EAAE,CAAC;IACvB,IAAI,IAAI,CAAC,QAAQ,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACzD,MAAM,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC/C,CAAC,KAAK,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;YAC5C,IAAI,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;gBACnC,mFAAmF;gBACnF,OAAO,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,EAAE;oBACjE,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,eAAe,CAAC,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;oBAC1E,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;oBAEtC,6GAA6G;oBAC7G,IAAI,YAAY,EAAE,CAAC;wBACjB,MAAM,SAAS,GAAG;4BAChB,SAAS,EAAE;gCACT,GAAG,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE;gCAC1B,UAAU,EAAE,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;gCACpE,GAAG,CAAC,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,IAAI,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,EAAE,CAAC;6BAC/E;yBACF,CAAC;wBACF,OAAO,iBAAiB,CACtB,SAAS,EACT,GAAG,EACH,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,EACjE,aAAa,CACd,CAAC;oBACJ,CAAC;oBAED,uCAAuC;oBACvC,OAAO,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC;gBACxC,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;YACH,YAAY,GAAG,YAAY,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;YACxE,aAAa,GAAG,CAAC,GAAG,aAAa,EAAE,GAAG,YAAY,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC;IACL,CAAC;SAAM,CAAC;QACN,aAAa,GAAG,IAAI,CAAC,KAAK,CACxB,KAAK,CAAC,iBAAiB,CAAC,eAAe,CAAC,UAAU,EAClD,KAAK,CAAC,iBAAiB,CAAC,eAAe,CAAC,QAAQ,GAAG,CAAC,CACrD,CAAC;IACJ,CAAC;IACD,OAAO,aAAa,CAAC;AACvB,CAAC;AAED;;;;;;;;;;;KAWK","sourcesContent":["import get from 'lodash-es/get';\n\nimport { evaluateCondition } from '@pega/cosmos-react-condition-builder';\n\nimport { getFieldsMap } from '../stateConversion/PrepareDatapageQuery';\nimport { getGroupFromKey } from '../stateConversion/utils';\n\nimport { typeMap, DOT_DELIMITER } from './utils';\n\n// eslint-disable-next-line default-param-last\nexport default function paginate(state = {}, data = [], meta) {\n let paginatedData = [];\n if (meta.grouping && state.groups && state.groups.length) {\n const fieldsMap = getFieldsMap(meta.fieldDefs);\n (state.groupFilters || []).forEach(groupOpt => {\n let filteredData = data.filter(row => {\n // Identify the rows where all the criteria from a given groupFilter are applicable\n return Object.entries(groupOpt.filters).every(([groupBy, value]) => {\n const { columnId, dateFunction } = getGroupFromKey(groupBy, state.groups);\n const field = fieldsMap.get(columnId);\n\n // If grouping by a dateFunction, use the ConditionBuilder utility to see if the row is matching the criteria\n if (dateFunction) {\n const condition = {\n condition: {\n lhs: { field: field.name },\n comparator: value !== null && value !== undefined ? 'EQ' : 'IS_NULL',\n ...(value !== null && value !== undefined && { rhs: { value, dateFunction } })\n }\n };\n return evaluateCondition(\n condition,\n row,\n [{ id: field.name, name: field.name, type: typeMap[field.type] }],\n DOT_DELIMITER\n );\n }\n\n // Otherwise, simply check for equality\n return get(row, field.name) === value;\n });\n });\n filteredData = filteredData.slice(groupOpt.groupFrom, groupOpt.groupTo);\n paginatedData = [...paginatedData, ...filteredData];\n });\n } else {\n paginatedData = data.slice(\n state.paginationOptions.rootVirtualiser.startIndex,\n state.paginationOptions.rootVirtualiser.endIndex + 1\n );\n }\n return paginatedData;\n}\n\n/* const processData = (paginationOptions, virtualizeIns, data) => {\n let newData = data;\n if (paginationOptions) {\n if (paginationOptions.action === 'append') {\n newData = virtualizeIns.oldData.slice(paginationOptions.rowsToDelete).concat(data);\n } else if (paginationOptions.action === 'prepend') {\n newData = data.concat(virtualizeIns.oldData);\n newData = newData.slice(0, newData.length - paginationOptions.rowsToDelete);\n }\n }\n return newData;\n}; */\n"]}
@@ -1,4 +1,4 @@
1
- import get from 'lodash.get';
1
+ import get from 'lodash-es/get';
2
2
  import { dateFuncsWithNumericValues } from '../stateConversion/utils';
3
3
  import { getDateFunctionValue } from './utils';
4
4
  function sorter(direction, a, b) {
@@ -1 +1 @@
1
- {"version":3,"file":"Sort.js","sourceRoot":"","sources":["../../dataApi/Sort.js"],"names":[],"mappings":"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","sourcesContent":["import get from 'lodash.get';\n\nimport { dateFuncsWithNumericValues } from '../stateConversion/utils';\n\nimport { getDateFunctionValue } from './utils';\n\nfunction sorter(direction, a, b) {\n if (a === b) return 0;\n if (a === undefined || a === null) return direction;\n if (b === undefined || b === null) return -direction;\n if (a < b) return -direction;\n\n return direction;\n}\n\n/**\n * Used with 'by' sorter when we have sorting in multiple direction\n * @example sort(users).asc(['firstName', 'lastName'])\n */\nfunction multiPropObjectSorter(sortByObj, thenBy, depth, _direction, a, b) {\n const sortBy = sortByObj.asc || sortByObj.desc;\n const direction = sortByObj.asc ? 1 : -1;\n\n if (!sortBy) {\n throw Error(`sort: Invalid 'by' sorting configuration.\n Expecting object with 'asc' or 'desc' key`);\n }\n\n // eslint-disable-next-line no-use-before-define\n const multiSorter = getMultiPropertySorter(sortByObj);\n return multiSorter(sortBy, thenBy, depth, direction, a, b);\n}\n\nfunction multiPropEqualityHandler(valA, valB, thenBy, depth, direction, a, b) {\n valA = typeof valA === 'string' ? valA.toLowerCase() : valA;\n valB = typeof valB === 'string' ? valB.toLowerCase() : valB;\n if (valA === valB || (valA === null && valB === null)) {\n if (thenBy.length > depth) {\n return multiPropObjectSorter(thenBy[depth], thenBy, depth + 1, direction, a, b);\n }\n return 0;\n }\n\n return sorter(direction, valA, valB);\n}\n\n/**\n * Used when we have sorting by multiple properties and when current sorter is function\n * @example sort(users).asc([p => p.address.city, p => p.firstName])\n */\nfunction multiPropFunctionSorter(sortBy, thenBy, depth, direction, a, b) {\n return multiPropEqualityHandler(sortBy(a), sortBy(b), thenBy, depth, direction, a, b);\n}\n\n/**\n * Used when we have sorting by multiple properties and when current sorter is string\n * @example sort(users).asc(['firstName', 'lastName'])\n */\nfunction multiPropStringSorter(sortBy, thenBy, depth, direction, a, b) {\n return multiPropEqualityHandler(get(a, sortBy), get(b, sortBy), thenBy, depth, direction, a, b);\n}\n\n/**\n * Used when we have sorting by multiple properties and when current sorter is number\n */\nfunction multiPropNumberSorter(sortBy, thenBy, depth, direction, a, b) {\n return multiPropEqualityHandler(\n get(a, sortBy) && parseFloat(get(a, sortBy)),\n get(b, sortBy) && parseFloat(get(b, sortBy)),\n thenBy,\n depth,\n direction,\n a,\n b\n );\n}\n\n/**\n * Used when we have sorting by multiple properties and when current sorter is date\n */\nfunction multiPropDateSorter(sortBy, thenBy, depth, direction, a, b) {\n return multiPropEqualityHandler(get(a, sortBy), get(b, sortBy), thenBy, depth, direction, a, b);\n}\n\n/**\n * Return multiProperty sort handler based on sortBy value\n */\nfunction getMultiPropertySorter(sortByObj) {\n const type = sortByObj.type.toLowerCase();\n if (type === 'string' || type === 'text' || type === 'boolean' || type === 'url') {\n return multiPropStringSorter;\n }\n if (type === 'date' || type === 'datetime' || type === 'time') {\n return multiPropDateSorter;\n }\n if (type === 'number') {\n return multiPropNumberSorter;\n }\n if (type === 'function') {\n return multiPropFunctionSorter;\n }\n return multiPropObjectSorter;\n}\n\nfunction sortUtil(ctx) {\n return {\n by: sortBy => {\n if (!Array.isArray(ctx)) return ctx;\n\n if (!Array.isArray(sortBy)) {\n throw Error(`sort: Invalid usage of 'by' sorter. Array syntax is required.\n Did you mean to use 'asc' or 'desc' sorter instead?`);\n }\n\n const s = multiPropObjectSorter.bind(undefined, sortBy.shift(), sortBy, 0, undefined);\n return ctx.slice().sort(s);\n }\n };\n}\n\nexport default function Sort(state = {}, data = [], meta = {}) {\n const { sortingOrder = [] } = state;\n const { fieldDefs } = meta;\n\n const sortBy = [];\n const transientColumns = []; // Ad-hoc column names set up to handle date functions\n\n for (let seq = 1; seq <= sortingOrder.length; seq += 1) {\n // Get sequence object in order.\n const sortingInfo = sortingOrder.find(s => s.sequence === seq);\n const sortColumn = fieldDefs.find(col => col.name === sortingInfo.columnId);\n const sortOrder = sortingInfo.order;\n\n // Construct sortBy object.\n if (sortingInfo.dateFunction) {\n // If sorting by a dateFunction (which is needed when grouping by a dateFunction),\n // Set up an ad-hoc column on each data row for the dateFunction so that the sortUtil can simply treat it as any other literal value\n const newDataColId = `${sortingInfo.columnId}||${sortingInfo.dateFunction}`; // Using `||` to avoid any ambiguities with regular columns\n data.forEach(row => {\n row[newDataColId] = getDateFunctionValue(\n row,\n sortingInfo.columnId,\n sortingInfo.dateFunction\n );\n });\n transientColumns.push(newDataColId);\n\n // Set up configuration to sort by the ad-hoc column\n sortBy.push({\n [sortOrder]: newDataColId,\n comparer: sortColumn.comparer,\n type: dateFuncsWithNumericValues.includes(sortingInfo.dateFunction) ? 'number' : 'text' // RFC-3339 date strings can be sorted using alpha-sort\n });\n } else {\n sortBy.push({\n [sortOrder]: sortColumn.sortPropFunc || sortColumn.name, // TODO: Need to remove it . Added for demo purpose.\n comparer: sortColumn.comparer,\n type: sortColumn.sortPropTypeFunc || sortColumn.type\n });\n }\n }\n\n if (data && sortBy.length) {\n const sortedData = sortUtil(data).by(sortBy);\n\n // Remove any transient data set up to handle date functions\n transientColumns.forEach(colId => {\n sortedData.forEach(row => {\n delete row[colId];\n });\n });\n\n return sortedData;\n }\n return data;\n}\n"]}
1
+ {"version":3,"file":"Sort.js","sourceRoot":"","sources":["../../dataApi/Sort.js"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,eAAe,CAAC;AAEhC,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AAEtE,OAAO,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAE/C,SAAS,MAAM,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC;IAC7B,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IACtB,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,IAAI;QAAE,OAAO,SAAS,CAAC;IACpD,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,IAAI;QAAE,OAAO,CAAC,SAAS,CAAC;IACrD,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,CAAC,SAAS,CAAC;IAE7B,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;GAGG;AACH,SAAS,qBAAqB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC;IACvE,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC;IAC/C,MAAM,SAAS,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAEzC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,KAAK,CAAC;gDACgC,CAAC,CAAC;IAChD,CAAC;IAED,gDAAgD;IAChD,MAAM,WAAW,GAAG,sBAAsB,CAAC,SAAS,CAAC,CAAC;IACtD,OAAO,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAC7D,CAAC;AAED,SAAS,wBAAwB,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC;IAC1E,IAAI,GAAG,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IAC5D,IAAI,GAAG,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IAC5D,IAAI,IAAI,KAAK,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;QACtD,IAAI,MAAM,CAAC,MAAM,GAAG,KAAK,EAAE,CAAC;YAC1B,OAAO,qBAAqB,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,KAAK,GAAG,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAClF,CAAC;QACD,OAAO,CAAC,CAAC;IACX,CAAC;IAED,OAAO,MAAM,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AACvC,CAAC;AAED;;;GAGG;AACH,SAAS,uBAAuB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC;IACrE,OAAO,wBAAwB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACxF,CAAC;AAED;;;GAGG;AACH,SAAS,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC;IACnE,OAAO,wBAAwB,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAClG,CAAC;AAED;;GAEG;AACH,SAAS,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC;IACnE,OAAO,wBAAwB,CAC7B,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,EAC5C,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,EAC5C,MAAM,EACN,KAAK,EACL,SAAS,EACT,CAAC,EACD,CAAC,CACF,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC;IACjE,OAAO,wBAAwB,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAClG,CAAC;AAED;;GAEG;AACH,SAAS,sBAAsB,CAAC,SAAS;IACvC,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;IAC1C,IAAI,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;QACjF,OAAO,qBAAqB,CAAC;IAC/B,CAAC;IACD,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,UAAU,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;QAC9D,OAAO,mBAAmB,CAAC;IAC7B,CAAC;IACD,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;QACtB,OAAO,qBAAqB,CAAC;IAC/B,CAAC;IACD,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;QACxB,OAAO,uBAAuB,CAAC;IACjC,CAAC;IACD,OAAO,qBAAqB,CAAC;AAC/B,CAAC;AAED,SAAS,QAAQ,CAAC,GAAG;IACnB,OAAO;QACL,EAAE,EAAE,MAAM,CAAC,EAAE;YACX,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;gBAAE,OAAO,GAAG,CAAC;YAEpC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC3B,MAAM,KAAK,CAAC;8DAC0C,CAAC,CAAC;YAC1D,CAAC;YAED,MAAM,CAAC,GAAG,qBAAqB,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;YACtF,OAAO,GAAG,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7B,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,OAAO,UAAU,IAAI,CAAC,KAAK,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE;IAC3D,MAAM,EAAE,YAAY,GAAG,EAAE,EAAE,GAAG,KAAK,CAAC;IACpC,MAAM,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC;IAE3B,MAAM,MAAM,GAAG,EAAE,CAAC;IAClB,MAAM,gBAAgB,GAAG,EAAE,CAAC,CAAC,sDAAsD;IAEnF,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,IAAI,YAAY,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;QACvD,gCAAgC;QAChC,MAAM,WAAW,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,GAAG,CAAC,CAAC;QAC/D,MAAM,UAAU,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,WAAW,CAAC,QAAQ,CAAC,CAAC;QAC5E,MAAM,SAAS,GAAG,WAAW,CAAC,KAAK,CAAC;QAEpC,2BAA2B;QAC3B,IAAI,WAAW,CAAC,YAAY,EAAE,CAAC;YAC7B,kFAAkF;YAClF,oIAAoI;YACpI,MAAM,YAAY,GAAG,GAAG,WAAW,CAAC,QAAQ,KAAK,WAAW,CAAC,YAAY,EAAE,CAAC,CAAC,2DAA2D;YACxI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;gBACjB,GAAG,CAAC,YAAY,CAAC,GAAG,oBAAoB,CACtC,GAAG,EACH,WAAW,CAAC,QAAQ,EACpB,WAAW,CAAC,YAAY,CACzB,CAAC;YACJ,CAAC,CAAC,CAAC;YACH,gBAAgB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAEpC,oDAAoD;YACpD,MAAM,CAAC,IAAI,CAAC;gBACV,CAAC,SAAS,CAAC,EAAE,YAAY;gBACzB,QAAQ,EAAE,UAAU,CAAC,QAAQ;gBAC7B,IAAI,EAAE,0BAA0B,CAAC,QAAQ,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,uDAAuD;aAChJ,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,CAAC;gBACV,CAAC,SAAS,CAAC,EAAE,UAAU,CAAC,YAAY,IAAI,UAAU,CAAC,IAAI,EAAE,oDAAoD;gBAC7G,QAAQ,EAAE,UAAU,CAAC,QAAQ;gBAC7B,IAAI,EAAE,UAAU,CAAC,gBAAgB,IAAI,UAAU,CAAC,IAAI;aACrD,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,IAAI,IAAI,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAC1B,MAAM,UAAU,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;QAE7C,4DAA4D;QAC5D,gBAAgB,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YAC/B,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;gBACvB,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC;YACpB,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,OAAO,UAAU,CAAC;IACpB,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC","sourcesContent":["import get from 'lodash-es/get';\n\nimport { dateFuncsWithNumericValues } from '../stateConversion/utils';\n\nimport { getDateFunctionValue } from './utils';\n\nfunction sorter(direction, a, b) {\n if (a === b) return 0;\n if (a === undefined || a === null) return direction;\n if (b === undefined || b === null) return -direction;\n if (a < b) return -direction;\n\n return direction;\n}\n\n/**\n * Used with 'by' sorter when we have sorting in multiple direction\n * @example sort(users).asc(['firstName', 'lastName'])\n */\nfunction multiPropObjectSorter(sortByObj, thenBy, depth, _direction, a, b) {\n const sortBy = sortByObj.asc || sortByObj.desc;\n const direction = sortByObj.asc ? 1 : -1;\n\n if (!sortBy) {\n throw Error(`sort: Invalid 'by' sorting configuration.\n Expecting object with 'asc' or 'desc' key`);\n }\n\n // eslint-disable-next-line no-use-before-define\n const multiSorter = getMultiPropertySorter(sortByObj);\n return multiSorter(sortBy, thenBy, depth, direction, a, b);\n}\n\nfunction multiPropEqualityHandler(valA, valB, thenBy, depth, direction, a, b) {\n valA = typeof valA === 'string' ? valA.toLowerCase() : valA;\n valB = typeof valB === 'string' ? valB.toLowerCase() : valB;\n if (valA === valB || (valA === null && valB === null)) {\n if (thenBy.length > depth) {\n return multiPropObjectSorter(thenBy[depth], thenBy, depth + 1, direction, a, b);\n }\n return 0;\n }\n\n return sorter(direction, valA, valB);\n}\n\n/**\n * Used when we have sorting by multiple properties and when current sorter is function\n * @example sort(users).asc([p => p.address.city, p => p.firstName])\n */\nfunction multiPropFunctionSorter(sortBy, thenBy, depth, direction, a, b) {\n return multiPropEqualityHandler(sortBy(a), sortBy(b), thenBy, depth, direction, a, b);\n}\n\n/**\n * Used when we have sorting by multiple properties and when current sorter is string\n * @example sort(users).asc(['firstName', 'lastName'])\n */\nfunction multiPropStringSorter(sortBy, thenBy, depth, direction, a, b) {\n return multiPropEqualityHandler(get(a, sortBy), get(b, sortBy), thenBy, depth, direction, a, b);\n}\n\n/**\n * Used when we have sorting by multiple properties and when current sorter is number\n */\nfunction multiPropNumberSorter(sortBy, thenBy, depth, direction, a, b) {\n return multiPropEqualityHandler(\n get(a, sortBy) && parseFloat(get(a, sortBy)),\n get(b, sortBy) && parseFloat(get(b, sortBy)),\n thenBy,\n depth,\n direction,\n a,\n b\n );\n}\n\n/**\n * Used when we have sorting by multiple properties and when current sorter is date\n */\nfunction multiPropDateSorter(sortBy, thenBy, depth, direction, a, b) {\n return multiPropEqualityHandler(get(a, sortBy), get(b, sortBy), thenBy, depth, direction, a, b);\n}\n\n/**\n * Return multiProperty sort handler based on sortBy value\n */\nfunction getMultiPropertySorter(sortByObj) {\n const type = sortByObj.type.toLowerCase();\n if (type === 'string' || type === 'text' || type === 'boolean' || type === 'url') {\n return multiPropStringSorter;\n }\n if (type === 'date' || type === 'datetime' || type === 'time') {\n return multiPropDateSorter;\n }\n if (type === 'number') {\n return multiPropNumberSorter;\n }\n if (type === 'function') {\n return multiPropFunctionSorter;\n }\n return multiPropObjectSorter;\n}\n\nfunction sortUtil(ctx) {\n return {\n by: sortBy => {\n if (!Array.isArray(ctx)) return ctx;\n\n if (!Array.isArray(sortBy)) {\n throw Error(`sort: Invalid usage of 'by' sorter. Array syntax is required.\n Did you mean to use 'asc' or 'desc' sorter instead?`);\n }\n\n const s = multiPropObjectSorter.bind(undefined, sortBy.shift(), sortBy, 0, undefined);\n return ctx.slice().sort(s);\n }\n };\n}\n\nexport default function Sort(state = {}, data = [], meta = {}) {\n const { sortingOrder = [] } = state;\n const { fieldDefs } = meta;\n\n const sortBy = [];\n const transientColumns = []; // Ad-hoc column names set up to handle date functions\n\n for (let seq = 1; seq <= sortingOrder.length; seq += 1) {\n // Get sequence object in order.\n const sortingInfo = sortingOrder.find(s => s.sequence === seq);\n const sortColumn = fieldDefs.find(col => col.name === sortingInfo.columnId);\n const sortOrder = sortingInfo.order;\n\n // Construct sortBy object.\n if (sortingInfo.dateFunction) {\n // If sorting by a dateFunction (which is needed when grouping by a dateFunction),\n // Set up an ad-hoc column on each data row for the dateFunction so that the sortUtil can simply treat it as any other literal value\n const newDataColId = `${sortingInfo.columnId}||${sortingInfo.dateFunction}`; // Using `||` to avoid any ambiguities with regular columns\n data.forEach(row => {\n row[newDataColId] = getDateFunctionValue(\n row,\n sortingInfo.columnId,\n sortingInfo.dateFunction\n );\n });\n transientColumns.push(newDataColId);\n\n // Set up configuration to sort by the ad-hoc column\n sortBy.push({\n [sortOrder]: newDataColId,\n comparer: sortColumn.comparer,\n type: dateFuncsWithNumericValues.includes(sortingInfo.dateFunction) ? 'number' : 'text' // RFC-3339 date strings can be sorted using alpha-sort\n });\n } else {\n sortBy.push({\n [sortOrder]: sortColumn.sortPropFunc || sortColumn.name, // TODO: Need to remove it . Added for demo purpose.\n comparer: sortColumn.comparer,\n type: sortColumn.sortPropTypeFunc || sortColumn.type\n });\n }\n }\n\n if (data && sortBy.length) {\n const sortedData = sortUtil(data).by(sortBy);\n\n // Remove any transient data set up to handle date functions\n transientColumns.forEach(colId => {\n sortedData.forEach(row => {\n delete row[colId];\n });\n });\n\n return sortedData;\n }\n return data;\n}\n"]}
@@ -1,4 +1,4 @@
1
- import get from 'lodash.get';
1
+ import get from 'lodash-es/get';
2
2
  // This should be converted to "import type" once this file is TS.
3
3
  // eslint-disable-next-line no-unused-vars
4
4
  import { DataApiTypes } from '../types';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../dataApi/index.js"],"names":[],"mappings":"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","sourcesContent":["import get from 'lodash.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';\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 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 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) 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 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 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 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 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';\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 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 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) 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 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 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 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,6 +1,6 @@
1
1
  import dayjs from 'dayjs';
2
2
  import quarterOfYear from 'dayjs/plugin/quarterOfYear';
3
- import get from 'lodash.get';
3
+ import get from 'lodash-es/get';
4
4
  import { splitConditionTree } from '@pega/cosmos-react-condition-builder';
5
5
  import { isEmpty } from 'pega-repeating-structures-core';
6
6
  // This should be converted to "import type" once this file is TS.
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../dataApi/utils.js"],"names":[],"mappings":"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","sourcesContent":["import dayjs from 'dayjs';\nimport quarterOfYear from 'dayjs/plugin/quarterOfYear';\nimport get from 'lodash.get';\n\nimport { splitConditionTree } from '@pega/cosmos-react-condition-builder';\nimport { isEmpty } from 'pega-repeating-structures-core';\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';\n\ndayjs.extend(quarterOfYear);\n\nexport const DOT_DELIMITER = '.';\n\nexport const typeMap = {\n text: 'TEXT',\n number: 'DECIMAL',\n boolean: 'BOOLEAN',\n datetime: 'DATE_TIME',\n date: 'DATE_ONLY',\n time: 'TIME_ONLY'\n};\n\n/**\n * This api is used to transform the {@link fieldDefs} to a condition builder fields structure\n * @param {DataApiTypes.FieldDef[]} fieldDefs meta fieldDefs which needs to be transformed to condition builder fields structure\n * @param {string} [defaultType='text'] default field type to set if not found in typeMap\n * @returns {Array} condition builder fields structure\n */\n\nexport function getFormattedFields(fieldDefs, defaultType = 'text') {\n if (!fieldDefs) return [];\n return fieldDefs.map(field => {\n const type = typeMap[field.type.toLowerCase()] ?? typeMap[defaultType];\n return {\n id: field.name ? field.name : field.label,\n name: field.name ? field.name : field.label,\n label: field.label ? field.label : field.name,\n type\n };\n });\n}\n\n/*\n It returns currently applied filters by operators.\n*/\nexport function getFilters({ filterExpression, comparator = null }) {\n const filters = [];\n const { conditions } = splitConditionTree(filterExpression);\n Object.keys(conditions).forEach(key => {\n if (comparator) {\n /* If comparator is given find field with that comparator */\n if (conditions[key].comparator === comparator) filters.push(conditions[key].lhs.field);\n } else filters.push(conditions[key].lhs.field);\n });\n return filters;\n}\n\n/**\n * Applies a dateFunction on the field value in the dataRow.\n * Returns a formatted value that follows the same conventions as the DataViews API.\n */\nexport function getDateFunctionValue(dataRow, fieldName, dateFunction) {\n const fieldValue = get(dataRow, fieldName); // An RFC-3339 value of the date/datetime field\n if (isEmpty(fieldValue)) {\n return fieldValue;\n }\n\n // TODO: convert date/date-time values to timezone for preparing correct groups from data\n switch (dateFunction) {\n case 'YEARS':\n return dayjs(fieldValue).startOf('year').format('YYYY-MM-DD');\n case 'QUARTERS':\n return dayjs(fieldValue).startOf('quarter').format('YYYY-MM-DD');\n case 'MONTHS':\n return dayjs(fieldValue).startOf('month').format('YYYY-MM-DD');\n case 'WEEKS':\n return dayjs(fieldValue).startOf('week').format('YYYY-MM-DD');\n case 'DAYS':\n return dayjs(fieldValue).format('YYYY-MM-DD');\n case 'HOURS':\n return (\n dayjs(fieldValue)\n .startOf('hour')\n // cSpell:disable-next-line\n .format('YYYY-MM-DDTHH:mm:ss')\n );\n case 'MINUTES':\n return (\n dayjs(fieldValue)\n .startOf('minute')\n // cSpell:disable-next-line\n .format('YYYY-MM-DDTHH:mm:ss')\n );\n case 'HOURS_OF_DAY':\n return dayjs(fieldValue).hour();\n case 'MONTHS_OF_YEAR':\n return dayjs(fieldValue).month() + 1;\n case 'DAYS_OF_MONTH':\n return dayjs(fieldValue).date();\n case 'DAYS_OF_WEEK':\n // 'day()' returns 0 for Sundays. By our convention, it should be 7\n return dayjs(fieldValue).day() || 7;\n default:\n // default case not needed\n return fieldValue;\n }\n}\n"]}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../dataApi/utils.js"],"names":[],"mappings":"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","sourcesContent":["import dayjs from 'dayjs';\nimport quarterOfYear from 'dayjs/plugin/quarterOfYear';\nimport get from 'lodash-es/get';\n\nimport { splitConditionTree } from '@pega/cosmos-react-condition-builder';\nimport { isEmpty } from 'pega-repeating-structures-core';\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';\n\ndayjs.extend(quarterOfYear);\n\nexport const DOT_DELIMITER = '.';\n\nexport const typeMap = {\n text: 'TEXT',\n number: 'DECIMAL',\n boolean: 'BOOLEAN',\n datetime: 'DATE_TIME',\n date: 'DATE_ONLY',\n time: 'TIME_ONLY'\n};\n\n/**\n * This api is used to transform the {@link fieldDefs} to a condition builder fields structure\n * @param {DataApiTypes.FieldDef[]} fieldDefs meta fieldDefs which needs to be transformed to condition builder fields structure\n * @param {string} [defaultType='text'] default field type to set if not found in typeMap\n * @returns {Array} condition builder fields structure\n */\n\nexport function getFormattedFields(fieldDefs, defaultType = 'text') {\n if (!fieldDefs) return [];\n return fieldDefs.map(field => {\n const type = typeMap[field.type.toLowerCase()] ?? typeMap[defaultType];\n return {\n id: field.name ? field.name : field.label,\n name: field.name ? field.name : field.label,\n label: field.label ? field.label : field.name,\n type\n };\n });\n}\n\n/*\n It returns currently applied filters by operators.\n*/\nexport function getFilters({ filterExpression, comparator = null }) {\n const filters = [];\n const { conditions } = splitConditionTree(filterExpression);\n Object.keys(conditions).forEach(key => {\n if (comparator) {\n /* If comparator is given find field with that comparator */\n if (conditions[key].comparator === comparator) filters.push(conditions[key].lhs.field);\n } else filters.push(conditions[key].lhs.field);\n });\n return filters;\n}\n\n/**\n * Applies a dateFunction on the field value in the dataRow.\n * Returns a formatted value that follows the same conventions as the DataViews API.\n */\nexport function getDateFunctionValue(dataRow, fieldName, dateFunction) {\n const fieldValue = get(dataRow, fieldName); // An RFC-3339 value of the date/datetime field\n if (isEmpty(fieldValue)) {\n return fieldValue;\n }\n\n // TODO: convert date/date-time values to timezone for preparing correct groups from data\n switch (dateFunction) {\n case 'YEARS':\n return dayjs(fieldValue).startOf('year').format('YYYY-MM-DD');\n case 'QUARTERS':\n return dayjs(fieldValue).startOf('quarter').format('YYYY-MM-DD');\n case 'MONTHS':\n return dayjs(fieldValue).startOf('month').format('YYYY-MM-DD');\n case 'WEEKS':\n return dayjs(fieldValue).startOf('week').format('YYYY-MM-DD');\n case 'DAYS':\n return dayjs(fieldValue).format('YYYY-MM-DD');\n case 'HOURS':\n return (\n dayjs(fieldValue)\n .startOf('hour')\n // cSpell:disable-next-line\n .format('YYYY-MM-DDTHH:mm:ss')\n );\n case 'MINUTES':\n return (\n dayjs(fieldValue)\n .startOf('minute')\n // cSpell:disable-next-line\n .format('YYYY-MM-DDTHH:mm:ss')\n );\n case 'HOURS_OF_DAY':\n return dayjs(fieldValue).hour();\n case 'MONTHS_OF_YEAR':\n return dayjs(fieldValue).month() + 1;\n case 'DAYS_OF_MONTH':\n return dayjs(fieldValue).date();\n case 'DAYS_OF_WEEK':\n // 'day()' returns 0 for Sundays. By our convention, it should be 7\n return dayjs(fieldValue).day() || 7;\n default:\n // default case not needed\n return fieldValue;\n }\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pega/lists-core-utils",
3
- "version": "9.0.0-build.15.1",
3
+ "version": "9.0.0-build.16.0",
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": "9.0.0-build.15.1",
18
- "@pega/cosmos-react-core": "9.0.0-build.15.1",
19
- "@types/lodash.get": "^4.4.9",
17
+ "@pega/cosmos-react-condition-builder": "9.0.0-build.16.0",
18
+ "@pega/cosmos-react-core": "9.0.0-build.16.0",
19
+ "@types/lodash-es": "^4.17.12",
20
20
  "dayjs": "^1.11.13",
21
- "lodash.get": "^4.4.2",
22
- "pega-repeating-structures-core": "npm:@pega/lists-core@9.0.0-build.15.1"
21
+ "lodash-es": "^4.17.21",
22
+ "pega-repeating-structures-core": "npm:@pega/lists-core@9.0.0-build.16.0"
23
23
  },
24
24
  "devDependencies": {
25
25
  "typescript": "~5.9.3"