UNPKG

@arcgis/core

Version:

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

6 lines (5 loc) 1.6 kB
/* All material copyright ESRI, All Rights Reserved, unless otherwise specified. See https://js.arcgis.com/4.33/esri/copyright.txt for details. */ import"../../intl.js";import e from"../../core/Error.js";import{getAggregateFieldInfo as r,createLabelExpressionForAggregateField as n,createLabelClass as t}from"./support/utils.js";import{aggregateCountField as i}from"../support/binningUtils.js";import{fetchMessageBundle as a}from"../../intl/messages.js";async function s(r){const{layer:n,renderer:t}=r;if(await n.load(),"binning"!==n.featureReduction?.type)throw new e("bins-label-schemes:invalid-parameters","featureReduction type of the layer is not valid");const i=t||n.featureReduction.renderer;if(!i)throw new e("bins-label-schemes:invalid-parameters","'renderer' is not valid");return{layer:n,renderer:i}}async function o(e,i,a,s){const o=r(e,i);if(!o)return null;const l=n(i,a,o,s);return{name:`binning-${e}`,labelingInfo:[t(l,!0)],fieldName:e}}function l(e){let r=[];const n=e.featureReduction;return"fields"in n&&(r=n.fields.map((e=>e.name))),r}async function c(r){const[{renderer:n,layer:t},c]=await Promise.all([s(r),a("esri/smartMapping/t9n/smartMapping")]),m=c.clusters.predominantNoneValue;if(r.field){const i=await o(r.field,t,n,m);if(!i)throw new e("bins-label-schemes:invalid-parameters","'field' is not a valid aggregate field");return{primaryScheme:i,secondarySchemes:[]}}const f=await o(i,t),d=[],u=l(t).filter((e=>e.toLowerCase()!==i.toLowerCase()));for(const e of u){const r=await o(e,t,n,m);r&&d.push(r)}return{primaryScheme:f,secondarySchemes:d}}export{c as getLabelSchemes};