@arcgis/core
Version:
ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API
6 lines (5 loc) • 2.07 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 e from"../../core/Error.js";import{getSumOfAttributesExpr as s,verifyBasicFieldValidity as t}from"./support/utils.js";import{verifyBinningParams as r}from"../support/binningUtils.js";import{defaultStatisticTypes as i,getFieldsList as a}from"../support/utils.js";import{LayerType as n,binningCapableLayerTypes as o,createLayerAdapter as u,getLayerTypeLabels as l}from"../support/adapters/support/layerUtils.js";async function p(s){if(!(s&&s.layer&&s.attributes))throw new e("summary-statistics-for-attributes:missing-parameters","'layer' and 'attributes' parameters are required");if(s.attributes.some((e=>!!e.valueExpression))&&!s.view)throw new e("summary-statistics-for-attributes:missing-parameters","View is required when 'valueExpression' is specified in attributes");s.forBinning&&r(s,"summary-statistics-for-attributes");const{layer:i,...p}=s,m=[n.CSVLayer,n.FeatureLayer,n.OGCFeatureLayer,n.GeoJSONLayer,n.KnowledgeGraphSublayer,n.ParquetLayer,n.WFSLayer],c=s.forBinning?o:m,f=u(i,c,s.forBinning);if(!f)throw new e("summary-statistics-for-attributes:invalid-parameters","'layer' must be one of these types: "+l(c).join(", "));const y={layerAdapter:f,...p};y.includeZeros=null==y.includeZeros||y.includeZeros,y.includeNegatives=null==y.includeNegatives||y.includeNegatives;const d=y.view,w=null!=y.signal?{signal:y.signal}:null;await Promise.all([d?.when(),f.load(w)]);const g=[];for(const e of y.attributes){const s=await a({field:e.field,valueExpression:e.valueExpression});Array.prototype.push.apply(g,s)}const v=t(f,g,"summary-statistics-for-attributes:invalid-parameters");if(v)throw v;return y}async function m(e){const{layerAdapter:t,...r}=await p(e),a=s(r.attributes,r.includeZeros,r.includeNegatives);return t.summaryStatistics({valueExpression:a.valueExpression,sqlExpression:a.sqlExpression,sqlWhere:a.sqlWhere,view:r.view,filter:r.filter,outStatisticTypes:i,signal:r.signal})}export{m as default};