@arcgis/core
Version:
ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API
6 lines (5 loc) • 1.76 kB
JavaScript
/*
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
See https://js.arcgis.com/4.32/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{binningCapableLayerTypes as n,defaultSupportedLayerTypes as t,createLayerAdapter as l,getLayerTypeLabels as o}from"../support/adapters/support/layerUtils.js";async function u(u){if(!u?.layer||!u.field&&!u.valueExpression)throw new e("unique-values:missing-parameters","'layer' and 'field' or 'valueExpression' parameters are required");const p=u.valueExpression||u.sqlExpression,f=p&&!u.sqlExpression;if(p)if(f){if(!u.view)throw new e("unique-values:missing-parameters","View is required when 'valueExpression' is specified")}else if(!u.valueExpression)throw new e("unique-values:missing-parameters","'valueExpression' parameters are required");u.forBinning&&r(u,"unique-values");const{layer:m,...d}=u,v=u.forBinning?n:t,w=l(m,v,u.forBinning);if(!w)throw new e("unique-values:invalid-parameters","'layer' must be one of these types: "+o(v).join(", "));const c={layerAdapter:w,...d},q=null!=c.signal?{signal:c.signal}:null;await w.load(q);const x=await a({field:c.field,field2:c.field2,field3:c.field3,valueExpression:c.valueExpression}),y=i(w,x,"unique-values:invalid-parameters");if(y)throw y;c.filter&&!c.filter.spatialRelationship&&(c.filter.spatialRelationship="intersects");const E=s(c.filter,"summary-statistics:invalid-parameters");if(E)throw E;return c}async function p(e){const{layerAdapter:i,...s}=await u(e);return i.uniqueValues(s)}export{p as default};