@arcgis/core
Version:
ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API
6 lines (5 loc) • 2.19 kB
JavaScript
/*
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
See https://js.arcgis.com/4.32/esri/copyright.txt for details.
*/
import{DateOnly as n}from"./DateOnly.js";import{SqlError as l,SqlErrorCodes as t}from"./errorSupport.js";import{SqlTimeStampOffset as e}from"./SqlTimestampOffset.js";import{TimeOnly as a}from"./TimeOnly.js";import{DateTime as r}from"luxon";function u(n,e){const a=o[n.toLowerCase()];if(null==a)throw new l(t.FunctionNotRecognized);if(e.length<a.minParams||e.length>a.maxParams)throw new l(t.InvalidParameterCount,{name:n.toUpperCase()});return a.evaluate(e)}function m(n,l){const t=o[n.toLowerCase()];return null!=t&&l>=t.minParams&&l<=t.maxParams}const o={min:{minParams:1,maxParams:1,evaluate:n=>f(n[0],"min")},max:{minParams:1,maxParams:1,evaluate:n=>f(n[0],"max")},avg:{minParams:1,maxParams:1,evaluate:n=>i(n[0])},sum:{minParams:1,maxParams:1,evaluate:n=>c(n[0])},stddev:{minParams:1,maxParams:1,evaluate:n=>g(n[0])},count:{minParams:1,maxParams:1,evaluate:n=>null==n[0]?null:n[0].length},var:{minParams:1,maxParams:1,evaluate:n=>P(n[0])}};function i(n){if(null===n)return null;let e=0,a=0;for(let r=0;r<n.length;r++){const u=n[r];if(null!==u){if(!s(u))throw new l(t.InvalidValueForAggregateFunction);a++,e+=u}}return 0===a?null:e/n.length}function s(n){return"number"==typeof n}function f(l,t){if(null===l)return null;let u=null,m=null;for(const o of l){let l=o;l=n.isDateOnly(o)||a.isTimeOnly(o)?o.toNumber():r.isDateTime(o)?o.toMillis():e.isTimestampOffset(o)?o.toMilliseconds():o,(null===u||"max"===t&&null!==m&&null!==l&&m<=l||"min"===t&&null!==m&&null!==l&&m>=l)&&(u=o,m=l)}return u}function c(n){if(null===n)return null;let e=0;for(let a=0;a<n.length;a++){const r=n[a];if(null!==r){if(!s(r))throw new l(t.InvalidValueForAggregateFunction);e+=r}}return e}function g(n){if(null===n)return null;const l=P(n);return null===l?null:Math.sqrt(l)}function P(n){if(null===n)return null;if(0===(n=n.filter((n=>null!==n))).length)return null;const e=i(n);if(null===e)return null;let a=0;for(const r of n){if(!s(r))throw new l(t.InvalidValueForAggregateFunction);a+=(e-r)**2}return a/(n.length-1)}export{u as aggregateFunction,m as isAggregate};