12345 |
- /*
- All material copyright ESRI, All Rights Reserved, unless otherwise specified.
- See https://js.arcgis.com/4.25/esri/copyright.txt for details.
- */
- import e from"../../Color.js";import"../../renderers/ClassBreaksRenderer.js";import"../../renderers/DictionaryRenderer.js";import"../../renderers/DotDensityRenderer.js";import r from"../../renderers/HeatmapRenderer.js";import"../../renderers/PieChartRenderer.js";import"../../renderers/Renderer.js";import"../../renderers/SimpleRenderer.js";import"../../renderers/UniqueValueRenderer.js";import"../../renderers/support/jsonUtils.js";import a from"../../core/Error.js";import{isSome as t}from"../../core/maybe.js";import s from"../../renderers/support/AuthoringInfo.js";import o from"../../renderers/support/HeatmapColorStop.js";import{gaussianBlurRadiusPxToKernelDensityRadiusPt as i}from"../../renderers/support/heatmapUtils.js";import{verifyBasicFieldValidity as n,createColors as m,getBasemapInfo as p}from"./support/utils.js";import d from"../statistics/heatmapStatistics.js";import{getFieldsList as l}from"../support/utils.js";import{LayerType as f,createLayerAdapter as u,getLayerTypeLabels as c}from"../support/adapters/support/layerUtils.js";import{cloneScheme as h,getSchemes as w}from"../symbology/heatmap.js";const b=.01;async function y(e){if(!(e&&e.layer&&e.view))throw new a("heatmap-renderer:missing-parameters","'layer' and 'view' parameters are required");const{blurRadius:r,radius:s,minRatio:o,maxRatio:m,fadeToTransparent:p,fadeRatio:d}=e,h={...e};h.radius=s??(null==r?18:i(r)),h.minRatio=o??.01,h.maxRatio=m??1,h.fadeRatio=d??.2,h.fadeToTransparent=p??!0;const w=[f.CSVLayer,f.FeatureLayer,f.OGCFeatureLayer,f.GeoJSONLayer,f.WFSLayer],b=u(h.layer,w);if(h.layer=b,!b)throw new a("heatmap-renderer:invalid-parameters","'layer' must be one of these types: "+c(w).join(", "));const y=t(h.signal)?{signal:h.signal}:null;await b.load(y);const R=await l({field:h.field}),j=n(b,R,"heatmap-renderer:invalid-parameters");if(j)throw j;return h}async function R(e){let r=e.scheme,a=null,s=null;const o=await p(e.basemap,e.view);if(a=t(o.basemapId)?o.basemapId:null,s=t(o.basemapTheme)?o.basemapTheme:null,r)return{scheme:h(r),basemapId:a,basemapTheme:s};const i=w({basemap:a,basemapTheme:s});return i&&(r=i.primaryScheme,a=i.basemapId,s=i.basemapTheme),{scheme:r,basemapId:a,basemapTheme:s}}async function j(a,t){const{fieldOffset:i}=a,{field:n,basemap:p,radius:d,minRatio:l,maxRatio:f,fadeToTransparent:u,fadeRatio:c,heatmapScheme:w,view:y}=t,{scheme:j,basemapId:T,basemapTheme:I}=await R({basemap:p,scheme:w,view:y}),S=j.colors,v=S.length,x=!a.count,C=x?[0,.04]:[a.min,a.max];let O;const D=(f-l)/(v-1),L=S[0],U=u?l:b,E=[new o({ratio:0,color:new e([L.r,L.g,L.b,0])}),new o({ratio:b,color:new e([L.r,L.g,L.b,0])}),new o({ratio:U,color:new e([L.r,L.g,L.b,U])})];m(S,v).forEach(((e,r)=>{const a=l+D*r;E.push(new o({ratio:a,color:e}))})),u&&(g(E,c),O=new s({fadeRatio:c}));const F=new r({authoringInfo:O,radius:d,colorStops:E,field:n,minDensity:C[0],maxDensity:C[1]});return null!=i&&(F.fieldOffset=i),{renderer:F,statistics:a,defaultValuesUsed:x,scheme:h(j),basemapId:T,basemapTheme:I}}function g(e,r){const a=10*(1-r)+1;e.forEach(((e,t)=>{if(t<=2)return;const{ratio:s,color:o}=e;o.a=0===r?1:Math.min(Math.max(s*a,0),1)}))}async function T(e){const r=await y(e);return j(r.statistics?r.statistics:await d({layer:r.layer,field:r.field,fieldOffset:r.fieldOffset,radius:r.radius,view:r.view,signal:r.signal}),r)}function I(e){const{fadeRatio:r,renderer:a}=e,t=a.clone(),o=r??(t?.authoringInfo?.fadeRatio||0);return g(t.colorStops,o),t.authoringInfo?t.authoringInfo.fadeRatio=o:t.authoringInfo=new s({fadeRatio:o}),t}export{T as createRenderer,I as updateRenderer};
|