UNPKG

@arcgis/core

Version:

ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API

6 lines (5 loc) 2.35 kB
/* All material copyright ESRI, All Rights Reserved, unless otherwise specified. See https://js.arcgis.com/4.32/esri/copyright.txt for details. */ import s from"../../core/Error.js";import{numericTypes as i,isTimeOnlyField as r}from"../../layers/support/fieldUtils.js";import{verifyBasicFieldValidity as t,verifyFieldType as e,verifyFilterValidity as a}from"./support/utils.js";import{verifyBinningParams as n}from"../support/binningUtils.js";import{dateTypes as o,getNormalizationType as l,getFieldsList as p,isAnyDateField as m}from"../support/utils.js";import{binningCapableLayerTypes as u,defaultSupportedLayerTypes as f,createLayerAdapter as d,getLayerTypeLabels as c}from"../support/adapters/support/layerUtils.js";const y=[...i,...o,"time-only","string"];async function w(i){if(!i?.layer||!(i.field||i.valueExpression||i.sqlExpression))throw new s("summary-statistics:missing-parameters","'layer' and 'field', 'valueExpression' or 'sqlExpression' parameters are required");if(i.valueExpression&&!i.sqlExpression&&!i.view)throw new s("summary-statistics:missing-parameters","View is required when 'valueExpression' is specified");i.forBinning&&n(i,"summary-statistics");const{layer:o,...w}=i,v=i.forBinning?u:f,x=d(o,v,i.forBinning);if(!x)throw new s("summary-statistics:invalid-parameters","'layer' must be one of these types: "+c(v).join(", "));const E={layerAdapter:x,...w};E.normalizationType=l(E);const h=null!=E.signal?{signal:E.signal}:null;await x.load(h);const g=E.field,j=E.normalizationType,q=E.valueExpression||E.sqlExpression,z=g?x.getField(g):null,B=await p({field:E.field,normalizationField:E.normalizationField,valueExpression:E.valueExpression}),F=t(x,B,"summary-statistics:invalid-parameters");if(F)throw F;if(z){const i=e(x,z,"summary-statistics:invalid-parameters",y);if(i)throw i;if((m(z)||r(z))&&j)throw new s("summary-statistics:invalid-parameters","Normalization is not allowed for date fields")}else if(q&&j)throw new s("summary-statistics:invalid-parameters","Normalization is not allowed when 'valueExpression' or 'sqlExpression' is specified");E.filter&&!E.filter.spatialRelationship&&(E.filter.spatialRelationship="intersects");const U=a(E.filter,"summary-statistics:invalid-parameters");if(U)throw U;return E}async function v(s){const{layerAdapter:i,...r}=await w(s);return i.summaryStatistics(r)}export{v as default};