UNPKG

@doegis/core

Version:

DOE GIS API

3 lines (1 loc) 5.98 kB
import{unique as e}from"../../core/arrayUtils.js";import t from"../../core/Logger.js";import{getOrCreateMapValue as l}from"../../core/MapUtils.js";import{isSome as i}from"../../core/maybe.js";import{convertDateFormatToIntlOptions as o,formatDate as n}from"../../intl/date.js";import{format as a,round as r}from"./numberUtils.js";import s from"../visualVariables/support/ColorStop.js";import{getColorFromSymbol as u}from"../../symbols/support/utils.js";import{getRampStops as f}from"../../widgets/Legend/support/colorRampUtils.js";import{getHeatmapRampStops as d}from"../../widgets/Legend/support/heatmapRampUtils.js";const m=t.getLogger("esri.renderers.support.utils"),p={lte:"<=",gte:">=",lt:"<",gt:">",pct:"%",ld:"–"},c={millisecond:0,second:1,minute:2,hour:3,day:4,month:5,year:6},y={millisecond:"long-month-day-year-long-time",second:"long-month-day-year-long-time",minute:"long-month-day-year-short-time",hour:"long-month-day-year-short-time",day:"long-month-day-year",month:"long-month-day-year",year:"year"},g=o("short-date");async function h(e,t,i){l(e,t,(()=>[])).push(...i)}async function b(t){const l=new Map;if(!t)return l;if("visualVariables"in t&&t.visualVariables){const e=t.visualVariables.filter((e=>"color"===e.type));for(const t of e){const e=(await f(t)??[]).map((e=>e.color));await h(l,t.field||t.valueExpression,e)}}if("heatmap"===t.type){const e=d(t).map((e=>e.color));await h(l,t.field||t.valueExpression,e)}else if("pie-chart"===t.type){for(const e of t.attributes)await h(l,e.field||e.valueExpression,[e.color]);await h(l,"default",[t?.othersCategory?.color,u(t.backgroundFillSymbol,null)])}else if("dot-density"===t.type){for(const e of t.attributes)await h(l,e.field||e.valueExpression,[e.color]);await h(l,"default",[t.backgroundColor])}else if("unique-value"===t.type)if("predominance"===t.authoringInfo?.type)for(const e of t.uniqueValueInfos??[])await h(l,e.value.toString(),[u(e.symbol,null)]);else{const e=(t.uniqueValueInfos??[]).map((e=>u(e.symbol,null))),{field:i,field2:o,field3:n,valueExpression:a}=t;(i||a)&&await h(l,i||a,e),o&&await h(l,o,e),n&&await h(l,n,e)}else if("class-breaks"===t.type){const e=t.classBreakInfos.map((e=>u(e.symbol,null))),{field:i,valueExpression:o}=t;await h(l,i??o,e)}else"simple"===t.type&&await h(l,"default",[u(t.symbol,null)]);return"defaultSymbol"in t&&t.defaultSymbol&&await h(l,"default",[u(t.defaultSymbol,null)]),l.forEach(((t,i)=>{const o=e(t.filter(Boolean),((e,t)=>JSON.stringify(e)===JSON.stringify(t)));l.set(i,o)})),l}function v(e,t,l){let i="";return 0===t?i=p.lt+" ":t===l&&(i=p.gt+" "),i+e}function x(e){const{values:t,colors:l,labelIndexes:i,isDate:o,dateFormatOptions:r}=e;return t.map(((e,u)=>{let f=null;if(!i||i.includes(u)){let l;l=o?n(e,r):a(e),l&&(f=v(l,u,t.length-1))}return new s({value:e,color:l[u],label:f})}))}function V(e){let t=e.minValue,l=e.maxValue;const i=e.isFirstBreak?"":p.gt+" ",o="percent-of-total"===e.normalizationType?p.pct:"";return t=null==t?"":a(t),l=null==l?"":a(l),i+t+o+" "+p.ld+" "+l+o}function w(e){const t=e.classBreakInfos,l=e.normalizationType;let i=[];if(t&&t.length)if("standard-deviation"!==e.classificationMethod)if(e.round){i.push(t[0].minValue);for(const e of t)i.push(e.maxValue);i=r(i),t.forEach(((e,t)=>{e.label=V({minValue:0===t?i[0]:i[t],maxValue:i[t+1],isFirstBreak:0===t,normalizationType:l})}))}else t.forEach(((e,t)=>{e.label=V({minValue:e.minValue,maxValue:e.maxValue,isFirstBreak:0===t,normalizationType:l})}));else m.warn("setLabelsForClassBreaks","cannot set labels for class breaks generated using 'standard-deviation' method.")}function F(e){const t=e.map((e=>new Date(e))),l=t.length;let i=1/0,o=null;for(let n=0;n<l-1;n++){const e=t[n];let a=1/0,r=null;for(let i=n+1;i<l;i++){const l=t[i],o=(e.getFullYear()!==l.getFullYear()?"year":e.getMonth()!==l.getMonth()&&"month")||e.getDate()!==l.getDate()&&"day"||e.getHours()!==l.getHours()&&"hour"||e.getMinutes()!==l.getMinutes()&&"minute"||e.getSeconds()!==l.getSeconds()&&"second"||"millisecond",n=c[o];n<a&&(a=n,r=o)}a<i&&(i=a,o=r)}return o}function z(e){const{value:t,domain:l,fieldInfo:i,dateFormatInterval:r}=e;let s=String(t);const u=l&&"codedValues"in l&&l.codedValues?l.getName(t):null;return u?s=u:"number"==typeof t&&(s=i&&"date"===i.type?n(t,r&&o(y[r])):a(t)),s}function E(e,t){return"normalizationField"in e&&e.normalizationField?I(e.field,e.normalizationField):"field"in e&&e.field?k(e.field):"valueExpression"in e&&e.valueExpression?S(e.valueExpression,e.valueExpressionTitle,t):null}function k(e){return{type:"field",field:e}}function I(e,t){return{type:"normalized-field",field:e,normalizationField:t}}function S(e,t,l){return{type:"expression",expression:e,title:t,returnType:l}}function j(t,l){const o=[];if("class-breaks"===t.type||"heatmap"===t.type)o.push(E(t,"number"));else if("unique-value"===t.type){const e=t.authoringInfo;if(e&&"relationship"===e.type){if(e.field1&&e.field2){const t=e.field1.field,l=e.field2.field,i=e.field1.normalizationField,n=e.field2.normalizationField;o.push(E({field:t,normalizationField:i})),o.push(E({field:l,normalizationField:n}))}}else{const e=t.uniqueValueInfos?.[0];let l=null;if(e&&e.value){const e=typeof t.uniqueValueInfos[0].value;"string"!==e&&"number"!==e||(l=e)}o.push(E(t,l)),[t.field2,t.field3].forEach((e=>e&&o.push(k(e))))}}else"attributes"in t&&t.attributes?.forEach((e=>o.push(E(e,"number"))));const n=l?l(t):"visualVariables"in t?t.visualVariables:null;return n&&n.forEach((e=>o.push(E(e,"number")))),e(o.filter(i),((e,t)=>"field"===e.type&&"field"===t.type?e.field===t.field:"normalized-field"===e.type&&"normalized-field"===t.type?e.field===t.field&&e.normalizationField===t.normalizationField:"expression"===e.type&&"expression"===t.type&&e.expression===t.expression))}export{F as calculateDateFormatInterval,V as createClassBreakLabel,x as createColorStops,z as createUniqueValueLabel,E as getAttribute,j as getAttributes,b as getColorsFromRenderer,w as setLabelsForClassBreaks,g as timelineDateFormatOptions};