UNPKG

@arcgis/core

Version:

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

6 lines (5 loc) 6.35 kB
/* All material copyright ESRI, All Rights Reserved, unless otherwise specified. See https://js.arcgis.com/4.33/esri/copyright.txt for details. */ import{_ as t}from"../../../chunks/tslib.es6.js";import e from"../../../core/Accessor.js";import{isSome as i}from"../../../core/arrayUtils.js";import{property as o}from"../../../core/accessorSupport/decorators/property.js";import{cast as r}from"../../../core/accessorSupport/decorators/cast.js";import"../../../core/has.js";import{subclass as a}from"../../../core/accessorSupport/decorators/subclass.js";import s from"../../../popup/FieldInfo.js";import l from"../../../popup/content/support/ChartMediaInfoValueSeries.js";import{substituteFieldsInLinksAndAttributes as n,fixTokens as p,substituteAttributes as u,getFixedFieldNames as d,getFixedFieldName as f,isRelatedField as c,isExpressionField as m,getFieldInfo as h,getFieldInfoLabel as b}from"../support/featureUtils.js";import{getRelatedFieldInfo as y}from"../support/relatedFeatureUtils.js";const I={chartAnimation:!0};let v=class extends e{constructor(t){super(t),this.abilities={...I},this.activeMediaInfoIndex=0,this.attributes=null,this.description=null,this.fieldInfoMap=null,this.formattedAttributes=null,this.expressionAttributes=null,this.isAggregate=!1,this.layer=null,this.mediaInfos=null,this.popupTemplate=null,this.relatedInfos=null,this.title=null}castAbilities(t){return{...I,...t}}get activeMediaInfo(){return this.formattedMediaInfos[this.activeMediaInfoIndex]||null}get formattedMediaInfos(){return this._formatMediaInfos()||[]}get formattedMediaInfoCount(){return this.formattedMediaInfos.length}setActiveMedia(t){this._setContentElementMedia(t)}next(){this._pageContentElementMedia(1)}previous(){this._pageContentElementMedia(-1)}_setContentElementMedia(t){const{formattedMediaInfoCount:e}=this,i=(t+e)%e;this.activeMediaInfoIndex=i}_pageContentElementMedia(t){const{activeMediaInfoIndex:e}=this,i=e+t;this._setContentElementMedia(i)}_formatMediaInfos(){const{mediaInfos:t,layer:e}=this,o=this.attributes??{},r=this.formattedAttributes??{},a=this.expressionAttributes??{},s=this.fieldInfoMap??new Map;return t?.map((t=>{const i=t?.clone();if(!i)return null;if(i.title=n({attributes:o,fieldInfoMap:s,globalAttributes:r,expressionAttributes:a,layer:e,text:i.title}),i.caption=n({attributes:o,fieldInfoMap:s,globalAttributes:r,expressionAttributes:a,layer:e,text:i.caption}),i.altText=n({attributes:o,fieldInfoMap:s,globalAttributes:r,expressionAttributes:a,layer:e,text:i.altText}),"image"===i.type){if(!i.value)return;return this._setImageValue({value:i.value,formattedAttributes:r,layer:e}),i.value.sourceURL?i:void 0}if("pie-chart"===i.type||"line-chart"===i.type||"column-chart"===i.type||"bar-chart"===i.type){if(!i.value)return;return this._setChartValue({value:i.value,chartType:i.type,attributes:o,formattedAttributes:r,layer:e,expressionAttributes:a}),i}return null})).filter(i)??[]}_setImageValue(t){const e=this.fieldInfoMap??new Map,{value:i,formattedAttributes:o,layer:r}=t,{linkURL:a,sourceURL:s}=i;if(s){const t=p(s,r);i.sourceURL=u({formattedAttributes:o,template:t,fieldInfoMap:e})}if(a){const t=p(a,r);i.linkURL=u({formattedAttributes:o,template:t,fieldInfoMap:e})}}_setChartValue(t){const{value:e,attributes:i,formattedAttributes:o,chartType:r,layer:a,expressionAttributes:s}=t,{popupTemplate:l,relatedInfos:n}=this,{fields:p,normalizeField:u}=e,m=a;e.fields=d(p,m),u&&(e.normalizeField=f(u,m));if(!p.some((t=>!!(null!=o[t]||c(t)&&n?.size))))return;const h=l?.fieldInfos??[];p.forEach(((t,a)=>{const l=e.colors?.[a];if(c(t))return void(e.series=[...e.series,...this._getRelatedChartInfos({fieldInfos:h,fieldName:t,formattedAttributes:o,chartType:r,value:e,color:l})]);const n=this._getChartOption({value:e,attributes:i,chartType:r,formattedAttributes:o,expressionAttributes:s,fieldName:t,fieldInfos:h,color:l});e.series.push(n)}))}_getRelatedChartInfos(t){const{fieldInfos:e,fieldName:i,formattedAttributes:o,chartType:r,value:a,color:s}=t,l=[],n=y(i),p=n&&this.relatedInfos?.get(n.layerId.toString());if(!p)return l;const{relatedFeatures:u,relation:d}=p;if(!d||!u)return l;const{cardinality:f}=d;u.forEach((t=>{const{attributes:p}=t;p&&Object.keys(p).forEach((t=>{t===n.fieldName&&l.push(this._getChartOption({value:a,attributes:p,formattedAttributes:o,fieldName:i,chartType:r,relatedFieldName:t,hasMultipleRelatedFeatures:u?.length>1,fieldInfos:e,color:s}))}))}));return"one-to-many"===f||"many-to-many"===f?l:[l[0]]}_getTooltip({label:t,value:e,chartType:i}){return"pie-chart"===i?`${t}`:`${t}: ${e}`}_getChartOption(t){const{value:e,attributes:i,formattedAttributes:o,expressionAttributes:r,fieldName:a,relatedFieldName:n,fieldInfos:p,chartType:u,hasMultipleRelatedFeatures:d,color:I}=t,v=this.layer,M=this.fieldInfoMap??new Map,{normalizeField:A,tooltipField:g}=e,x=A?c(A)?i[y(A).fieldName]:i[A]:null,_=m(a)&&r&&void 0!==r[a]?r[a]:n&&void 0!==i[n]?i[n]:void 0!==i[a]?i[a]:o[a],C=void 0===_?null:_&&x?_/x:_,T=new l({fieldName:a,color:I,value:"number"==typeof C?C:Number(C)});if(c(a)){const t=M.get(a.toLowerCase()),e=g&&M.get(g.toLowerCase()),r=t?.fieldName??a,s=d&&g?y(g).fieldName:e?.fieldName??g,l=d&&s?i[s]:o[s]??t?.label??t?.fieldName??n,p=d&&n?i[n]:o[r];return T.tooltip=this._getTooltip({label:l,value:p,chartType:u}),T}const N=h(p,a),F=f(a,v),j=g&&void 0!==o[g]?o[g]:b(N||new s({fieldName:F}),this.popupTemplate?.expressionInfos),w=o[F];return T.tooltip=this._getTooltip({label:j,value:w,chartType:u}),T}};t([o()],v.prototype,"abilities",void 0),t([r("abilities")],v.prototype,"castAbilities",null),t([o()],v.prototype,"activeMediaInfoIndex",void 0),t([o({readOnly:!0})],v.prototype,"activeMediaInfo",null),t([o()],v.prototype,"attributes",void 0),t([o()],v.prototype,"description",void 0),t([o()],v.prototype,"fieldInfoMap",void 0),t([o()],v.prototype,"formattedAttributes",void 0),t([o()],v.prototype,"expressionAttributes",void 0),t([o({readOnly:!0})],v.prototype,"formattedMediaInfos",null),t([o()],v.prototype,"isAggregate",void 0),t([o()],v.prototype,"layer",void 0),t([o({readOnly:!0})],v.prototype,"formattedMediaInfoCount",null),t([o()],v.prototype,"mediaInfos",void 0),t([o()],v.prototype,"popupTemplate",void 0),t([o()],v.prototype,"relatedInfos",void 0),t([o()],v.prototype,"title",void 0),v=t([a("esri.widgets.Feature.FeatureMedia.FeatureMediaViewModel")],v);export{v as default};