UNPKG

@arcgis/core

Version:

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

6 lines (5 loc) 1.8 kB
/* All material copyright ESRI, All Rights Reserved, unless otherwise specified. See https://js.arcgis.com/4.33/esri/copyright.txt for details. */ import e from"../../core/Error.js";import{verifyBasicFieldValidity as i,verifyFilterValidity as s}from"./support/utils.js";import{verifyBinningParams as r}from"../support/binningUtils.js";import{getFieldsList as a}from"../support/utils.js";import{defaultSupportedLayerTypes as n,LayerType as t,binningCapableLayerTypes as l,createLayerAdapter as o,getLayerTypeLabels as u}from"../support/adapters/support/layerUtils.js";async function p(p){if(!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&&r(p,"unique-values");const{layer:d,...v}=p,w=[...n,t.ImageryLayer],c=p.forBinning?l:w,y=o(d,c,p.forBinning);if(!y)throw new e("unique-values:invalid-parameters","'layer' must be one of these types: "+u(c).join(", "));const q={layerAdapter:y,...v},g=null!=q.signal?{signal:q.signal}:null;await y.load(g);const x=await a({field:q.field,field2:q.field2,field3:q.field3,valueExpression:q.valueExpression}),E=i(y,x,"unique-values:invalid-parameters");if(E)throw E;q.filter&&!q.filter.spatialRelationship&&(q.filter.spatialRelationship="intersects");const h=s(q.filter,"summary-statistics:invalid-parameters");if(h)throw h;return q}async function f(e){const{layerAdapter:i,...s}=await p(e);return i.uniqueValues(s)}export{f as default};