12345 |
- /*
- All material copyright ESRI, All Rights Reserved, unless otherwise specified.
- See https://js.arcgis.com/4.24/esri/copyright.txt for details.
- */
- import a from"../../core/Error.js";import{isSome as e}from"../../core/maybe.js";import{verifyBasicFieldValidity as s,verifyNumericField as i}from"./support/utils.js";import{getNormalizationType as r,getFieldsList as l}from"../support/utils.js";import{createLayerAdapter as n,featureCapableLayerTypes as t,getLayerTypeLabels as o}from"../support/adapters/support/layerUtils.js";const m=5;async function p(p){if(!p||!p.layer||!p.field&&!p.valueExpression)throw new a("class-breaks:missing-parameters","'layer' and 'field' or 'valueExpression' parameters are required");if(p.valueExpression&&!p.view)throw new a("class-breaks:missing-parameters","View is required when 'valueExpression' is specified");const{layer:u,...f}=p,d=n(u,t),w={layerAdapter:d,...f};if(w.normalizationType=r(w),w.numClasses=w.numClasses||m,!d)throw new a("class-breaks:invalid-parameters","'layer' must be one of these types: "+o(t).join(", "));const c=e(w.signal)?{signal:w.signal}:null;await d.load(c);const h=w.field,y=w.minValue,v=w.maxValue,z=null!=y||null!=v,b=w.classificationMethod,x="percent-of-total"===w.normalizationType,k=!1!==w.analyzeData,V=h?d.getField(h):null,g=await l({field:w.field,normalizationField:w.normalizationField,valueExpression:w.valueExpression}),E=s(d,g,"class-breaks:invalid-parameters");if(E)throw E;if(V){const a=i(d,V,"class-breaks:invalid-parameters");if(a)throw a}if(w.valueExpression&&w.normalizationType)throw new a("class-breaks:invalid-parameters","Normalization is not allowed when 'valueExpression' is specified");if(z)if(k){if(x&&null==w.normalizationTotal)throw new a("class-breaks:missing-parameters","'normalizationTotal' is required when 'normalizationType' is 'precent-of-total' and 'minValue', 'maxValue' are specified")}else{if(null==y||null==v)throw new a("class-breaks:missing-parameters","Both 'minValue' and 'maxValue' are required when 'analyzeData' is false");if(y>=v)throw new a("class-breaks:invalid-parameters","'minValue' should be less than 'maxValue'");if(b&&"equal-interval"!==b)throw new a("class-breaks:invalid-parameters","'classificationMethod' other than 'equal-interval' is not allowed when 'analyzeData' is false");if(x&&null==w.normalizationTotal)throw new a("class-breaks:missing-parameters","'normalizationTotal' is required when 'normalizationType' is 'precent-of-total' and 'analyzeData' is false")}else if(!k)throw new a("class-breaks:missing-parameters","Both 'minValue' and 'maxValue' are required when 'analyzeData' is false");return w}async function u(a){const{layerAdapter:e,...s}=await p(a);return e.classBreaks(s)}export{u as default};
|