UNPKG

@arcgis/core

Version:

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

6 lines (5 loc) 3.46 kB
/* All material copyright ESRI, All Rights Reserved, unless otherwise specified. See https://js.arcgis.com/4.33/esri/copyright.txt for details. */ import{substitute as e}from"../../../intl/substitute.js";import{numericTypes as t}from"../../../layers/support/fieldUtils.js";import"../../../popup/content/AttachmentsContent.js";import"../../../popup/content/Content.js";import"../../../popup/content/CustomContent.js";import"../../../popup/content/ExpressionContent.js";import"../../../popup/content/FieldsContent.js";import"../../../popup/content/MediaContent.js";import"../../../popup/content/RelationshipContent.js";import n from"../../../popup/content/TextContent.js";import"../../../popup/content/UtilityNetworkAssociationsContent.js";import o from"../../../popup/ExpressionInfo.js";import i from"../../../popup/FieldInfo.js";import s from"../../../popup/support/FieldInfoFormat.js";import{getFieldAndExpressionInfos as r,getContentFromFieldInfos as l}from"./utils.js";import{getStatisticInfos as p,getClusterField as u,getPredominantTypeExpression as a,clusterCountField as f}from"../../support/clusterUtils.js";import{isClusterCompatibleRenderer as m}from"../../../views/2d/layers/support/clusterUtils.js";function c(e){const{fieldName:n,label:o,type:r}=e,l=null!=r&&t.includes(r),p=new i({fieldName:n,label:o,visible:!0,format:l?new s({places:"integer"===r||"small-integer"===r?0:2,digitSeparator:!0}):void 0});return"date"===r&&(p.format=new s({dateFormat:"short-date-short-time"})),p}function d(e,t){const n=e?t.getField(e):null;return null!=n?n.alias||n.name:void 0}function y(t,n,o){const{attributeInfo:i,statisticType:s}=n,{field:r,normalizationField:l}=i;let p,u="";if("avg"===s?p=l?o.clusters.avgNormFieldLabel:o.clusters.avgFieldLabel:"type"===s&&(p=o.clusters.predominantFieldLabel),p){const n=i.valueExpression?i.valueExpressionTitle:d(r,t),o=l&&d(l,t);u=e(p,{fieldLabel:n||"",normFieldLabel:o||""})}return u}function F(t,n,o,i){const{attributeInfo:s,statisticType:r}=n,{field:l,normalizationField:p}=s;let u,a="";if("avg"===r?u=p?i.clusters.avgNormFieldSummary:i.clusters.avgFieldSummary:"type"===r&&(u=i.clusters.predominantFieldSummary),u){const n=s.valueExpression?s.valueExpressionTitle:d(l,t),i=p&&d(p,t);a=e(u,{fieldLabel:n||"",normFieldLabel:i||"",fieldValue:"{"+o+"}"})}return a}function I(t){return{fieldInfo:c({fieldName:f,label:t.clusters.numFeatures,type:"integer"}),fieldSummary:new n({text:e(t.clusters.countSummary,{count:`{${f}}`})})}}async function b(e,t,i){if(!m(t))return null;const s=p(e,t),r=i.clusters.predominantNoneValue,l="unique-value"===t.type?t.uniqueValueInfos??[]:[],{fieldInfo:f,fieldSummary:d}=I(i),b=[d],j=[f],x=[];for(const p of s){const{statisticType:t,attributeInfo:s}=p,f=u(s,t),m=y(e,p,i);if("avg"===t)b.push(new n({text:F(e,p,f,i)})),j.push(c({fieldName:f,label:m,type:"double"}));else if("type"===t){const t=`expression/${f}`;b.push(new n({text:F(e,p,t,i)})),x.push(new o({name:f,title:m,returnType:"string",expression:a(l,f,r)})),j.push(c({fieldName:t}))}}return{fieldInfos:j,expressionInfos:x,content:b}}async function j(e,t,n){if(!m(t))return null;const{fieldInfo:o,fieldSummary:i}=I(n),s=[i],p=[o],u=[],{fieldInfos:a,expressionInfos:f}=await r({renderer:t,layer:e,isFeatureReduction:!0}),c=await l(e,{fieldInfos:a,expressionInfos:f},!0);return s.push(...c),p.push(...a),u.push(...f),{fieldInfos:p,expressionInfos:u,content:s}}export{b as getContentAndInfos,j as getContentAndInfosForPieChart};