predominance.js 6.4 KB

12345
  1. /*
  2. All material copyright ESRI, All Rights Reserved, unless otherwise specified.
  3. See https://js.arcgis.com/4.25/esri/copyright.txt for details.
  4. */
  5. import e from"../../PopupTemplate.js";import n from"../../core/Error.js";import{fetchMessageBundle as o}from"../../intl/messages.js";import{substitute as i}from"../../intl/substitute.js";import t from"../../popup/ExpressionInfo.js";import r from"../../popup/FieldInfo.js";import{getFieldInfo as s}from"./support/utils.js";import{getArcadeForPredominantCategoryAlias as f,getArcadeForPredominantCategoryValue as a,getArcadeForPredominanceMargin as p,getArcadeForStrengthOfPredominance as l,getArcadeForOrderedFields as d,getArcadeForSumOfFields as m}from"../statistics/support/predominanceUtils.js";function I(e,n){return e.legendOptions&&e.legendOptions.title?e.legendOptions.title:n.competingFields}function u(e,n){return{fieldInfo:new r({fieldName:"expression/predominant-category"}),expressionInfo:new t({name:"predominant-category",title:n.predominantCategory,expression:f(e)})}}function c(e,n){const o=e.map((e=>e.fieldName));return{fieldInfo:new r({fieldName:"expression/predominant-value",format:{digitSeparator:!0,places:1}}),expressionInfo:new t({name:"predominant-value",title:n.predominantCategoryValue,expression:a(o),returnType:"number"})}}function x(e,n){const o=e.map((e=>e.fieldName));return{fieldInfo:new r({fieldName:"expression/predominant-margin",format:{digitSeparator:!0,places:0}}),expressionInfo:new t({name:"predominant-margin",title:n.marginOfVictory,expression:p(o),returnType:"number"})}}function g(e,n){const o=e.map((e=>e.fieldName));return{fieldInfo:new r({fieldName:"expression/predominant-strength",format:{digitSeparator:!0,places:0}}),expressionInfo:new t({name:"predominant-strength",title:n.strengthOfPredominance,expression:l(o),returnType:"number"})}}function y(e,n){return{fieldInfo:new r({fieldName:"expression/predominant-categories-list"}),expressionInfo:new t({name:"predominant-categories-list",title:n.listOfCategories,expression:d(e)})}}function b(e,n){const o=e.map((e=>e.fieldName));return{fieldInfo:new r({fieldName:"expression/predominant-total",format:{digitSeparator:!0,places:0}}),expressionInfo:new t({name:"predominant-total",title:n.sumOfCategories,expression:m(o),returnType:"number"})}}function N(n,o){const t=u(n.fieldInfos,o),r=new e({expressionInfos:[t.expressionInfo],fieldInfos:[t.fieldInfo],content:i(o.predominantCategoryContent,{expression:`<b>{${t.fieldInfo.fieldName}}</b>`})});return{name:"predominant-category",title:o.predominantCategory,value:r}}function w(n,o){const{fieldInfos:t}=n,r=u(t,o),s=c(t,o),f=new e({expressionInfos:[s.expressionInfo,r.expressionInfo],fieldInfos:[s.fieldInfo,r.fieldInfo],content:i(o.predominantCategoryValueContent,{expression1:`<b>{${r.fieldInfo.fieldName}}</b>`,expression2:`<b>{${s.fieldInfo.fieldName}}</b>`})});return{name:"predominant-category-value",title:o.predominantCategoryValue,value:f}}function C(n,o){const{fieldInfos:t}=n,r=u(t,o),s=c(t,o),f=x(t,o),a=new e({expressionInfos:[s.expressionInfo,r.expressionInfo,f.expressionInfo],fieldInfos:[s.fieldInfo,r.fieldInfo,f.fieldInfo],title:i(o.mostCommon,{expression:"{expression/predominant-category}"}),content:i(o.predominantCategoryValueMarginContent,{expression1:`<b>{${r.fieldInfo.fieldName}}</b>`,expression2:`<b>{${s.fieldInfo.fieldName}}</b>`,expression3:`<b>{${f.fieldInfo.fieldName}}</b>`})});return{name:"predominant-category-value-margin",title:o.marginOfVictory,value:a}}function h(n,o){const{fieldInfos:t}=n,r=u(t,o),s=c(t,o),f=g(t,o),a=new e({expressionInfos:[s.expressionInfo,r.expressionInfo,f.expressionInfo],fieldInfos:[s.fieldInfo,r.fieldInfo,f.fieldInfo],content:i(o.predominantCategoryStrengthContent,{expression1:`{${s.fieldInfo.fieldName}}`,expression2:`<b>{${r.fieldInfo.fieldName}}</b>`,expression3:`<b>{${f.fieldInfo.fieldName}}%</b>`})});return{name:"predominant-category-strength",title:o.strengthOfPredominance,value:a}}function $(n,o){const{renderer:t,fieldInfos:r}=n,s=u(r,o),f=c(r,o),a=g(r,o),p=y(r,o),l=new e({expressionInfos:[s.expressionInfo,f.expressionInfo,a.expressionInfo,p.expressionInfo],fieldInfos:[s.fieldInfo,f.fieldInfo,a.fieldInfo,p.fieldInfo],title:I(t,o),content:[{type:"text",text:i(o.predominantCategoryStrengthContent,{expression1:`{${f.fieldInfo.fieldName}}`,expression2:`<b>{${s.fieldInfo.fieldName}}</b>`,expression3:`<b>{${a.fieldInfo.fieldName}}%</b>`})},{type:"text",text:`{${p.fieldInfo.fieldName}}`}]});return{name:"predominant-categories-list",title:o.orderedListOfValues,value:l}}function v(n,o){const{fieldInfos:t}=n,r=u(t,o),s=c(t,o),f=g(t,o),a=b(t,o),p=new e({expressionInfos:[s.expressionInfo,r.expressionInfo,a.expressionInfo,f.expressionInfo],fieldInfos:[s.fieldInfo,r.fieldInfo,a.fieldInfo,f.fieldInfo],content:i(o.predominantCategoryTotalStrengthContent,{expression1:`{${s.fieldInfo.fieldName}}`,expression2:`<b>{${r.fieldInfo.fieldName}}</b>`,expression3:`<b>{${f.fieldInfo.fieldName}}%</b>`,expression4:`{${a.fieldInfo.fieldName}}`})});return{name:"predominant-category-total-strength",title:o.predominantCategoryWithTotalAndStrength,value:p}}function O(n,o){const{renderer:t,fieldInfos:r}=n,s=u(r,o),f=c(r,o),a=g(r,o),p=new e({expressionInfos:[f.expressionInfo,s.expressionInfo,a.expressionInfo],fieldInfos:[f.fieldInfo,s.fieldInfo,a.fieldInfo],title:I(t,o),content:[{type:"text",text:i(o.predominantCategoryStrengthContent,{expression1:`{${f.fieldInfo.fieldName}}`,expression2:`<b>{${s.fieldInfo.fieldName}}</b>`,expression3:`<b>{${a.fieldInfo.fieldName}}%</b>`})},{type:"media",mediaInfos:{type:"pie-chart",value:{fields:r.map((e=>e.fieldName))}}}]});return{name:"predominant-category-chart",title:o.predominantCategoryWithChart,value:p}}function S(e,o){const i=e.authoringInfo,t="predominance"===i.type?i.fields:[];if(!t||!t.length)throw new n("predominance-popup:insufficient-info","unable to find input fields in authoringInfo");return t.map((e=>s(o,e)))}async function T(e){const{layer:o,renderer:i}=e;await o.load();const t=i||o.renderer;if("unique-value"!==t.type)throw new n("predmoinance-popup:invalid-parameters","renderer.type must be 'unique-value'");return{renderer:t,fieldInfos:S(t,o)}}async function j(e){const[n,i]=await Promise.all([T(e),o("esri/smartMapping/t9n/smartMapping")]);return[N(n,i),w(n,i),C(n,i),v(n,i),$(n,i),h(n,i),O(n,i)]}async function V(e){const[n,i]=await Promise.all([T(e),o("esri/smartMapping/t9n/smartMapping")]),t=$(n,i),r=await j(e);return{primaryTemplate:t,secondaryTemplates:r.filter((e=>e.name!==t.name))}}export{j as getAllTemplates,V as getTemplates};