UNPKG

@arcgis/core

Version:

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

6 lines (5 loc) • 9.19 kB
/* All material copyright ESRI, All Rights Reserved, unless otherwise specified. See https://js.arcgis.com/4.33/esri/copyright.txt for details. */ import e from"../../../Color.js";import"../../../intl.js";import t from"../../../core/Collection.js";import"../../../core/has.js";import n from"../../../core/Error.js";import{convertDateFormatToIntlOptions as o,formatDate as i}from"../../../intl/date.js";import{round as r}from"../../../renderers/support/numberUtils.js";import s from"../../../renderers/support/pointCloud/PointSizeSplatAlgorithm.js";import l from"../../heuristics/outline.js";import a from"../../statistics/classBreaks.js";import m from"../../statistics/summaryStatistics.js";import{getAgeExpressions as u}from"../../statistics/support/ageUtils.js";import{isAnyDateField as c,defaultStatisticTypes as f,getBasemapId as d,defaultBasemapGroups as p,getBasemapGroup as y}from"../../support/utils.js";import w from"../../../symbols/ExtrudeSymbol3DLayer.js";import h from"../../../symbols/FillSymbol3DLayer.js";import b from"../../../symbols/IconSymbol3DLayer.js";import g from"../../../symbols/LineSymbol3D.js";import D from"../../../symbols/LineSymbol3DLayer.js";import j from"../../../symbols/MeshSymbol3D.js";import S from"../../../symbols/ObjectSymbol3DLayer.js";import v from"../../../symbols/PathSymbol3DLayer.js";import x from"../../../symbols/PointSymbol3D.js";import z from"../../../symbols/PolygonSymbol3D.js";import T from"../../../symbols/SimpleFillSymbol.js";import U from"../../../symbols/SimpleLineSymbol.js";import L from"../../../symbols/SimpleMarkerSymbol.js";import V from"../../../symbols/edges/SketchEdges3D.js";import k from"../../../symbols/edges/SolidEdges3D.js";import{getTimeZoneFormattingOptions as F,shortTimeZoneName as I}from"../../../time/timeZoneUtils.js";import{getBackgroundColorTheme as M}from"../../../views/support/colorUtils.js";import{fetchMessageBundle as C}from"../../../intl/messages.js";import{substitute as Z}from"../../../intl/substitute.js";const B=/^(\d+(\.\d+)?)\s*(%)$/i,E=new e([0,0,0,.4]),P=new Set(["hours","minutes","seconds"]),A=[...p.light,...p.dark];function R(e,t,n,r){if("string"==typeof e){const t=n.getField(e);if(t&&c(t))return t.alias||t.name}else if("number"==typeof e||e instanceof Date){const s=null!=t&&P.has(t),l=o(s?"short-date-short-time":"short-date");if(r&&s){const t=n.layer,{timeZone:o}=F("preferredTimeZone"in t?t.preferredTimeZone:null,"datesInUnknownTimezone"in t&&t.datesInUnknownTimezone,r.timeZone,l,"date");return i(e,{...l,timeZone:o,timeZoneName:I})}return i(e,l)}return e}function Y(e,t,n){return e+t>0&&0>e-t&&n<0?0:e}function N(e,t,n,o){const{avg:i,stddev:r,min:s,max:l}=e,a=W(e,!!n,o??!0);let m=a?a[0]:s,u=a?a[1]:l;return a?{minDataValue:m,maxDataValue:u,defaultValuesUsed:!0}:("above"===t?m=Y(i,r,s):"below"===t&&(u=Y(i,r,s)),{minDataValue:m,maxDataValue:u,defaultValuesUsed:!1})}function W(e,t,n){let o,i;const r=$({statistics:e,isDate:t});return r.defaultValuesUsed?(o=r.min,i=r.max):!n||null!=e.avg&&e.stddev||(o=e.min,i=e.max),null!=o&&null!=i?[o,i]:null}function $(e){let t,n,o=e&&e.statistics;if(o||(o={}),null==o.min)if(e.isDate){const e=q();t=e[0],n=e[1]}else t=0,n=100;else if(o.min===o.max)if(e.isDate){const e=q(o.min);t=e[0],n=e[1]}else o.min<0?(t=2*o.min,n=0):o.min>0?(t=0,n=2*o.min):(t=0,n=100);return{min:null!=t?t:o.min,max:null!=n?n:o.max,defaultValuesUsed:null!=t||null!=n}}function q(e){const t=("number"==typeof e?new Date(e):new Date).getUTCFullYear();let n=Date.UTC(t,0,1,12,0,0,0),o=Date.UTC(t,11,31,12,0,0,0);return"number"==typeof e&&(e<n&&(n=e),e>o&&(o=e)),[n,o]}function O({minDataValue:e,maxDataValue:t,defaultValuesUsed:n},o,i,r=!0){return n||"above"===i||"below"===i?H(e,t,5):J(o,r)}function _(e,t){const{avg:n,stddev:o}=e,i=e.min,s=e.max;if(null==n||null==o){const[n,o]=W(e,t,!0);return H(n,o,5)}const l=Y(n,o,i),a=s-l,m=l-i,u=Math.max(a,m);return r([l-u,l-u/2,l,u/2+l,l+u],{strictBounds:!0})}function G(e,t){const{min:n,max:o}=t,[i,s,l,a,m]=e,u=null!=n&&i<n,c=null!=o&&m>o;if(null==n||null==o||!u&&!c)return e;const f=u?n:i,d=c?o:m;return r([f,u?f+(l-f)/2:s,l,c?l+(d-l)/2:a,d],{strictBounds:!0})}function H(e,t,n){const o=(t-e)/(n-1),i=[e];for(let r=1;r<=n-2;r++)i.push(e+r*o);return i.push(t),r(i,{strictBounds:!0})}function J({min:e,max:t,avg:n,stddev:o},i=!0){if(null==e||null==t||null==n||null==o)return[];let s=n-o,l=n+o;s<e&&(s=e),l>t&&(l=t),i&&(n=s+(l-s)/2);let a=r([s,l],{strictBounds:!0});return s=a[0],l=a[1],a=[s,s+(n-s)/2,n,n+(l-n)/2,l],r(a,{strictBounds:!0})}function K(e,t,n){switch(t){case"point":case"multipoint":return n?"noDataSize"in e?e.noDataSize:null:"size"in e?e.size:null;case"polyline":return n?"noDataWidth"in e?e.noDataWidth:null:"width"in e?e.width:null;case"polygon":return"size"in e?e.size:null;default:return}}function Q(e,t,n){switch(t){case"point":case"multipoint":case"polygon":{if(!("outline"in e))return null;const t={color:e.outline.color,width:e.outline.width};if(null!=n&&t.color){const e=t.color.clone();e.a=n,t.color=e}return t}default:return}}function X(e,n){const{type:o,size:i,color:r,outline:s}=n;let l;switch(e){case"point":case"multipoint":if("2d"===o)l=new L({color:r,size:i,outline:{color:s.color,width:s.width}});else if("3d-flat"===o)l=new x({symbolLayers:new t([new b({size:i,resource:{primitive:"circle"},material:{color:r},outline:{color:s.color,size:s.width}})])});else if(o?.includes("3d-volumetric")){const e="3d-volumetric-uniform"===o,s=new S({height:i,resource:{primitive:e?"sphere":"cylinder"},material:{color:r}});e||(s.width=n.widthAndDepth,s.depth=n.widthAndDepth),l=new x({symbolLayers:new t([s])})}break;case"polyline":"2d"===o?l=new U({color:r,width:i}):"3d-flat"===o?l=new g({symbolLayers:new t([new D({size:i,material:{color:r}})])}):"3d-volumetric"===o&&(l=new g({symbolLayers:new t([new v({width:"number"==typeof i?i:parseFloat(i),height:"number"==typeof i?i:parseFloat(i),material:{color:r}})])}));break;case"polygon":"2d"===o?l=new T({color:r,outline:{color:s.color,width:s.width}}):"3d-flat"===o?l=new z({symbolLayers:new t([new h({material:{color:r},outline:{color:s.color,size:s.width}})])}):"3d-volumetric"===o&&(l=new z({symbolLayers:new t([new w({size:i,material:{color:r}})])}));break;case"mesh":{const e=n.meshInfo?.colorMixMode,o=n.meshInfo?.edgesType;l=new j({symbolLayers:new t([new h({material:{color:r,colorMixMode:e||null},edges:"solid"===o?new k({color:E}):"sketch"===o?new V({color:E}):null})])});break}}return l}function ee(e,t,o){const i=te({layer:e,fields:t});if(i.length)return new n(o,"Unknown fields: "+i.join(", ")+". You can only use fields defined in the layer schema");const r=ne({layer:e,fields:t});return r.length?new n(o,"Unsupported fields: "+r.join(", ")+". You can only use fields that are accessible to the renderer i.e. FieldUsageInfo.supportsRenderer must be true"):void 0}function te(e){const t=e.layer;return e.fields.filter((e=>!t.getField(e)))}function ne(e){const t=e.layer;return e.fields.filter((e=>{const n=t.getFieldUsageInfo(e);return!n||!n.supportsRenderer}))}async function oe(e,t){const n={layer:e.layer,view:e.view,filter:e.filter,signal:e.signal},[o,i]=await Promise.all([a(e).catch(ue),t?l(n).catch(ue):null]),r=W({min:o?.minValue,max:o?.maxValue,avg:null,stddev:null},!1,!1);return{result:r?await a({...e,classificationMethod:"equal-interval",numClasses:1,analyzeData:!1,minValue:r[0],maxValue:r[1],normalizationTotal:r[0]+r[1]}):o,defaultValuesUsed:!!r,outlineResult:i}}function ie(e){return m({outStatisticTypes:f,...e})}function re(e,t){let{minSize:n,maxSize:o}=e;if("height"===t){n=((o-n)/2+n)/(2*2.3),o*=2}return{minSize:n,maxSize:o}}function se(e){return B.test(e)}function le(e){if(null==e)return;const t=e.match(B),n=Number(t[1]);return"%"===t[3]?new s({scaleFactor:n/100}):void 0}function ae(e,t,n,o){e.startTime=t instanceof Date?t.getTime():t,e.endTime=n instanceof Date?n.getTime():n,e.units=o,e.field="string"==typeof t?t:"string"==typeof n?n:null}async function me(e,t){let n=null,o=null;if(!e&&!t)return{basemapId:n,basemapTheme:o};if(t&&(o=await M(t),e||(e=t.map?.basemap)),e&&(n=d(e,A,!1),n&&!o)){const e=y(n);null!=e&&(o=e)}return!n&&o&&(n="dark"===o?"dark-gray":"gray"),{basemapId:n,basemapTheme:o}}function ue(e){const t=e.name?.toLowerCase();if(!t||t?.includes(":insufficient-info")||t?.includes(":insufficient-data"))return null;throw e}async function ce(e,t){const{layer:n,startTime:o,endTime:i,view:r}=e,s=u({layer:n,startTime:o,endTime:i,unit:t}).valueExpression,l=await C("esri/smartMapping/t9n/smartMapping");return{valueExpression:s,title:Z(l[`ageInfo_${t}`],{unit:t,startTime:R(o,t,n,r),endTime:R(i,t,n,r)})}}export{G as clampAboveAndBelowStopValues,O as createDataValues,H as createDefaultStopValues,J as createStopValues,_ as createStopValuesForAboveBelow,X as createSymbol,ue as errorCallback,R as formatDate,Y as getBaseValueForAboveBelow,me as getBasemapInfo,oe as getClassBreaks,N as getDataRange,W as getDefaultDataRange,le as getPointSizeAlgorithm,re as getSizeRangeForAxis,ie as getSummaryStatistics,Q as getSymbolOutlineFromScheme,K as getSymbolSizeFromScheme,ce as getTitleAndExpressionForAgeRenderer,se as isValidPointSize,ae as updateAgeRendererAuthoringInfoVV,ee as verifyBasicFieldValidity};