summaryStatistics.js 2.2 KB

12345
  1. /*
  2. All material copyright ESRI, All Rights Reserved, unless otherwise specified.
  3. See https://js.arcgis.com/4.25/esri/copyright.txt for details.
  4. */
  5. import s from"../../core/Error.js";import{isSome as i}from"../../core/maybe.js";import{numericTypes as r,isDateField as e}from"../../layers/support/fieldUtils.js";import{verifyBasicFieldValidity as t,verifyFieldType as a,verifyFilterValidty as o}from"./support/utils.js";import{verifyBinningParams as n}from"../support/binningUtils.js";import{getNormalizationType as l,getFieldsList as m}from"../support/utils.js";import{binningCapableLayerTypes as p,defaultSupportedLayerTypes as u,createLayerAdapter as f,getLayerTypeLabels as d}from"../support/adapters/support/layerUtils.js";const c=[...r,"date","string"];async function y(r){if(!(r&&r.layer&&(r.field||r.valueExpression||r.sqlExpression)))throw new s("summary-statistics:missing-parameters","'layer' and 'field', 'valueExpression' or 'sqlExpression' parameters are required");if(r.valueExpression&&!r.sqlExpression&&!r.view)throw new s("summary-statistics:missing-parameters","View is required when 'valueExpression' is specified");r.forBinning&&n(r,"summary-statistics");const{layer:y,...w}=r,v=r.forBinning?p:u,x=f(y,v,r.forBinning),E={layerAdapter:x,...w};if(E.normalizationType=l(E),!x)throw new s("summary-statistics:invalid-parameters","'layer' must be one of these types: "+d(v).join(", "));const g=i(E.signal)?{signal:E.signal}:null;await x.load(g);const h=E.field,j=E.normalizationType,q=E.valueExpression||E.sqlExpression,z=h?x.getField(h):null,b=await m({field:E.field,normalizationField:E.normalizationField,valueExpression:E.valueExpression}),B=t(x,b,"summary-statistics:invalid-parameters");if(B)throw B;if(z){const i=a(x,z,"summary-statistics:invalid-parameters",c);if(i)throw i;if(e(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");const F=o(E.filter,"summary-statistics:invalid-parameters");if(F)throw F;return E}async function w(s){const{layerAdapter:i,...r}=await y(s);return i.summaryStatistics(r)}export{w as default};