UNPKG

@arcgis/core

Version:

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

3 lines (2 loc) 1.56 kB
/* COPYRIGHT Esri - https://js.arcgis.com/5.0.8/LICENSE.txt */ import{convertUnit as t}from"../../../core/units.js";import{getConfig as n}from"./constants.js";import{yAxisExtraFactorBottom as i,yAxisExtraFactorTop as e,minRange as a}from"./elevationProfileChartTheme.js";const o={minX:void 0,maxX:void 0,minY:void 0,maxY:void 0};function l({data:l,pixelWidth:c,pixelHeight:s}){if(!l)return o;const u=l.statistics,x=0,f=u?.maxDistance;let d=u?.minElevation,h=u?.maxElevation;if(null==f||null==d||null==h)return o;const v=Math.max(f-x,a);let p=Math.max(h-d,a);const X=l.effectiveUnits;if(l.dynamicElevationRange){const i=t(v,X.distance,X.elevation);p=Math.max(p,i/n().maxChartRatio)}return d-=i*p,h=d+p+e*p,[d,h]=r(d,h,10),p=h-d,l.uniformScaling?m({data:l,bounds:{minX:x,maxX:f,minY:d,maxY:h},pixelWidth:c,pixelHeight:s,centered:!0}):{minX:x,maxX:x+v,minY:d,maxY:d+p}}function m({data:n,bounds:i,pixelWidth:e,pixelHeight:a,centered:l}){if(!n)return i;let{minX:m,maxX:r,minY:c,maxY:u}=i;if(null==m||null==r||null==c||null==u)return o;const x=r-m,f=u-c,d=n.effectiveUnits,h=t(f,d.elevation,d.distance)/a/(x/e);return h>=1?[m,r]=s([m,r],h):[c,u]=s([c,u],1/h),{minX:m,maxX:r,minY:c,maxY:u}}function r(t,n,i=10){const e=c(n-t,!1);if(0===e)return[t,n];const a=c(e/(i-1),!0);return[Math.floor(t/a)*a,Math.ceil(n/a)*a]}function c(t,n){const i=Math.floor(Math.log10(t)),e=t/10**i;let a;return a=n?e<1.5?1:e<3?2:e<5?2.5:e<7?5:10:e<=1?1:e<=2?2:e<=3?2.5:e<=5?5:10,a*10**i}function s([t,n],i,e){const a=(n-t)*i;{const i=(t+n)/2-a/2;return[i,i+a]}}export{l as getAdjustedBounds};