UNPKG

@progress/kendo-charts

Version:

Kendo UI platform-independent Charts library

98 lines (75 loc) 2.19 kB
import { MIN_VALUE, MAX_VALUE } from '../../common/constants'; import { isNumber } from '../../common'; import countNumbers from '../utils/count-numbers'; const Aggregates = { min: function(values) { const length = values.length; let min = MAX_VALUE; for (let i = 0; i < length; i++) { const value = values[i]; if (isNumber(value)) { min = Math.min(min, value); } } return min === MAX_VALUE ? values[0] : min; }, max: function(values) { const length = values.length; let max = MIN_VALUE; for (let i = 0; i < length; i++) { const value = values[i]; if (isNumber(value)) { max = Math.max(max, value); } } return max === MIN_VALUE ? values[0] : max; }, sum: function(values) { const length = values.length; let sum = 0; for (let i = 0; i < length; i++) { const value = values[i]; if (isNumber(value)) { sum += value; } } return sum; }, sumOrNull: function(values) { let result = null; if (countNumbers(values)) { result = Aggregates.sum(values); } return result; }, count: function(values) { const length = values.length; let count = 0; for (let i = 0; i < length; i++) { const value = values[i]; if (value !== null && value !== undefined) { count++; } } return count; }, avg: function(values) { const count = countNumbers(values); let result = values[0]; if (count > 0) { result = Aggregates.sum(values) / count; } return result; }, first: function(values) { const length = values.length; for (let i = 0; i < length; i++) { const value = values[i]; if (value !== null && value !== undefined) { return value; } } return values[0]; } }; export default Aggregates;