@arcgis/core
Version:
ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API
6 lines (5 loc) • 4.39 kB
JavaScript
/*
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
See https://js.arcgis.com/4.32/esri/copyright.txt for details.
*/
import{unique as e}from"../../../core/arrayUtils.js";import"../../../core/has.js";import{fetchMessageBundle as t}from"../../../intl/messages.js";import{substitute as n}from"../../../intl/substitute.js";import{numericTypes as i}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 o from"../../../popup/content/FieldsContent.js";import"../../../popup/content/MediaContent.js";import"../../../popup/content/RelationshipContent.js";import s from"../../../popup/content/TextContent.js";import"../../../popup/content/UtilityNetworkAssociationsContent.js";import r from"../../../popup/ExpressionInfo.js";import p from"../../../popup/FieldInfo.js";import a from"../../../popup/support/FieldInfoFormat.js";import{getAttributes as l}from"../../../renderers/support/utils.js";import{viewScaleRE as u}from"../../../renderers/visualVariables/support/visualVariableUtils.js";import{getFeatureReductionFields as m}from"../../support/adapters/support/utils.js";let f=0;function d(e=0){}const c="expression/";function b(e){return"hasVisualVariables"in e&&e.hasVisualVariables()?e.visualVariables.filter((e=>!u.test(e.valueExpression)&&(!("target"in e)||"outline"!==e.target))):[]}function x(e,t){if(!t)return null;const n=m(e);return n?.find((e=>e.name.toLowerCase()===t.toLowerCase()))}function j(e,t,n){let o=null;if(n&&"featureReduction"in e){const t=e.featureReduction;t&&"popupTemplate"in t&&t.popupTemplate&&(o=t.popupTemplate.fieldInfos)}else"popupTemplate"in e&&e.popupTemplate&&(o=e.popupTemplate.fieldInfos);const s=n?x(e,t):e.getField(t);let r=null;if(o&&o.some((e=>!(!e||e.fieldName?.toLowerCase()!==s?.name.toLowerCase())&&(r=e.clone(),!0))),!r){const e=i.includes(s.type),t="integer"===s.type||"small-integer"===s.type;r=new p({fieldName:s.name,isEditable:s.editable,visible:!0,format:e?new a({places:t?0:2,digitSeparator:!0}):void 0})}return r.label||(r.label=s.alias),r}function F(e){const{expression:t,title:n,returnType:i}=e;return new r({name:"expr"+f++,expression:t,title:n,returnType:i})}function g(e){const t="number"===e.returnType?new a({places:2,digitSeparator:!0}):void 0;return new p({fieldName:`${c}${e.name}`,visible:!0,format:t})}async function y(i){const o=await t("esri/smartMapping/t9n/smartMapping"),{renderer:s,layer:r,normFieldExpressionTemplate:p,isFeatureReduction:a}=i,u=[],m=[],f=l(s,b);for(const e of f)if("field"===e.type)u.push(j(r,e.field,a));else if("normalized-field"===e.type){const t=a?x(r,e.field):r.getField(e.field),i=a?x(r,e.normalizationField):r.getField(e.normalizationField),s=F({type:"expression",expression:`\n $feature["${t.name}"];\n $feature["${i.name}"];\n ${"percentage"===p?`($feature["${t.name}"] / $feature["${i.name}"]) * 100;`:`$feature["${t.name}"] / $feature["${i.name}"];`}\n `,title:n("percentage"===p?o.normFieldLabelAsPercent:o.normFieldLabel,{expression1:t.alias,expression2:i.alias}),returnType:"number"});u.push(g(s),j(r,e.field,a),j(r,e.normalizationField,a)),m.push(s)}else if("expression"===e.type){const t=F(e);u.push(g(t)),m.push(t)}return{fieldInfos:e(u,((e,t)=>e.fieldName===t.fieldName)),expressionInfos:e(m,((e,t)=>e.expression===t.expression))}}async function $(e,i,r){const{fieldInfos:p,expressionInfos:a}=i,l=await t("esri/smartMapping/t9n/smartMapping");if(p.length>2)return[new o({fieldInfos:p})];const u=[];for(const t of p){const i=t.fieldName||"";let o=t.label;if(!o){const t=r?x(e,i):e.getField(i);if(t)o=t.alias||i;else if(a){const e=i.split(c)[1],t=a[a.findIndex((t=>t.name===e))];t&&(o=t.title||t.name)}}u.push(new s({text:n(l.fieldInfo,{fieldLabel:o,fieldValue:`{${i}}`})}))}return u}function h(e){return!(!("normalizationField"in e)||!e.normalizationField)||"hasVisualVariables"in e&&e.hasVisualVariables()&&e.visualVariables.some((e=>!(!("normalizationField"in e)||!e.normalizationField)))}export{c as expressionFieldPrefix,$ as getContentFromFieldInfos,F as getExpressionInfo,y as getFieldAndExpressionInfos,j as getFieldInfo,g as getFieldInfoFromExpressionInfo,b as getPrimaryVisualVariables,h as hasNormalizedField,d as resetSuffixForTests};