UNPKG

@arcgis/core

Version:

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

6 lines (5 loc) 1.84 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"../request.js";import{fromJSON as t}from"../renderers/support/jsonUtils.js";import{parseUrl as n}from"./utils.js";import{executeQuery as i}from"./query/executeQuery.js";import a from"./support/Query.js";import s from"./support/StatisticDefinition.js";async function l(t,i,a,s){const l=n(t),{source:r,checkValueRange:u}=i,{classificationDefinition:c}=a,f={...a.toJSON(),f:"json"};let m=null;if(m="class-breaks-definition"===c?.type?c.classificationField:c?.attributeField,r){const e={source:r?.toJSON()};f.layer=JSON.stringify(e)}f.classificationDef&&(f.classificationDef=JSON.stringify(f.classificationDef));let p={query:f};s&&(p={...s,...p});const y={url:l.path,field:m,checkValueRange:u},d=l.path+"/generateRenderer";return e(d,p).then((e=>o(y,e)))}function o(e,t){const{field:n,checkValueRange:l,url:o}=e,u=t?.data;if(!u)return;if(!l){const e=r(u);return Promise.resolve(e)}const c=new s({statisticType:"min",onStatisticField:n}),f=new s({statisticType:"max",onStatisticField:n}),m=new a({outStatistics:[c,f]});return i(o,m).then((e=>{const t=e.features[0].attributes;let n=null,i=null;for(const a in t)0===a.toLowerCase().indexOf("min")?n=t[a]:i=t[a];return r(u,n,i)}))}function r(e,n,i){if("classBreaks"===e.type){const a=t(e);return{classBreaks:a.classBreakInfos.map(((e,t)=>(0===t&&null!=n&&(e.minValue=n),t===a.classBreakInfos.length-1&&null!=i&&(e.maxValue=i),{minValue:e.minValue,maxValue:e.maxValue,label:e.label}))),normalizationTotal:a.normalizationTotal}}const{uniqueValueInfos:a}=e;return{uniqueValues:a?.map(((e,t)=>(0===t&&null!=n&&(e.value=n),t===a.length-1&&null!=i&&(e.value=i),{count:e.count,value:e.value,label:e.label})))??[]}}export{l as generateRenderer};