Custom Gis Application with Arcgis Javascript API with modern layouting
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

8 lines
2.4 KiB

// All material copyright Esri, All Rights Reserved, unless otherwise specified.
// See https://js.arcgis.com/4.30/esri/copyright.txt for details.
//>>built
define("../../core/Error ../../layers/support/fieldUtils ./support/utils ../support/binningUtils ../support/utils ../support/adapters/support/layerUtils".split(" "),function(c,m,h,p,e,f){async function q(a){if(!a?.layer||!(a.field||a.valueExpression||a.sqlExpression))throw new c("histogram:missing-parameters","'layer' and 'field', 'valueExpression' or 'sqlExpression' parameters are required");if(a.valueExpression&&!a.sqlExpression&&!a.view)throw new c("histogram:missing-parameters","View is required when 'valueExpression' is specified");
a.forBinning&&p.verifyBinningParams(a,"histogram");const {layer:k,...l}=a;var b=a.forBinning?f.binningCapableLayerTypes:f.defaultSupportedLayerTypes;a=f.createLayerAdapter(k,b,a.forBinning);if(!a)throw new c("histogram:invalid-parameters","'layer' must be one of these types: "+f.getLayerTypeLabels(b).join(", "));b={layerAdapter:a,...l};b.normalizationType=e.getNormalizationType(b);await a.load(null!=b.signal?{signal:b.signal}:null);const r=b.valueExpression||b.sqlExpression;var d=b.field;const g=
d?a.getField(d):null,n=!b.classificationMethod||"equal-interval"===b.classificationMethod;d=await e.getFieldsList({field:d,normalizationField:b.normalizationField,valueExpression:b.valueExpression});if(d=h.verifyBasicFieldValidity(a,d,"histogram:invalid-parameters"))throw d;if(g){if(a=h.verifyFieldType(a,g,"histogram:invalid-parameters",t))throw a;if(e.isAnyDateField(g)||m.isTimeOnlyField(g)){if(b.normalizationType)throw new c("histogram:invalid-parameters","Normalization is not allowed for date fields");
if(!n)throw new c("histogram:invalid-parameters","'classificationMethod' other than 'equal-interval' is not allowed for date fields");}}else if(r){if(b.normalizationType)throw new c("histogram:invalid-parameters","Normalization is not allowed when 'valueExpression' or 'sqlExpression' is specified");if(!n)throw new c("histogram:invalid-parameters","'classificationMethod' other than 'equal-interval' is not allowed when 'valueExpression' or 'sqlExpression' is specified");}if(a=h.verifyFilterValidty(b.filter,
"histogram:invalid-parameters"))throw a;return b}const t=[...e.dateTypes,"time-only",...m.numericTypes];return async function(a){const {layerAdapter:k,...l}=await q(a);return k.histogram(l)}});