uniqueValues.js 1.7 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 e from"../../core/Error.js";import{isSome as i}from"../../core/maybe.js";import{verifyBasicFieldValidity as r,verifyFilterValidty as s}from"./support/utils.js";import{verifyBinningParams as a}from"../support/binningUtils.js";import{getFieldsList as n}from"../support/utils.js";import{binningCapableLayerTypes as t,defaultSupportedLayerTypes as o,createLayerAdapter as l,getLayerTypeLabels as u}from"../support/adapters/support/layerUtils.js";async function p(p){if(!p||!p.layer||!p.field&&!p.valueExpression)throw new e("unique-values:missing-parameters","'layer' and 'field' or 'valueExpression' parameters are required");const f=p.valueExpression||p.sqlExpression,m=f&&!p.sqlExpression;if(f)if(m){if(!p.view)throw new e("unique-values:missing-parameters","View is required when 'valueExpression' is specified")}else if(!p.valueExpression)throw new e("unique-values:missing-parameters","'valueExpression' parameters are required");p.forBinning&&a(p,"unique-values");const{layer:d,...v}=p,w=p.forBinning?t:o,c=l(d,w,p.forBinning),q={layerAdapter:c,...v};if(!c)throw new e("unique-values:invalid-parameters","'layer' must be one of these types: "+u(w).join(", "));const y=i(q.signal)?{signal:q.signal}:null;await c.load(y);const x=await n({field:q.field,field2:q.field2,field3:q.field3,valueExpression:q.valueExpression}),E=r(c,x,"unique-values:invalid-parameters");if(E)throw E;const g=s(q.filter,"summary-statistics:invalid-parameters");if(g)throw g;return q}async function f(e){const{layerAdapter:i,...r}=await p(e);return i.uniqueValues(r)}export{f as default};