summaryStatistics.js 1.9 KB

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