@arcgis/core
Version:
ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API
3 lines (2 loc) • 1.54 kB
JavaScript
/* COPYRIGHT Esri - https://js.arcgis.com/5.0.8/LICENSE.txt */
import"../../../../../core/has.js";import{executeQuery as e,executeQueryForCount as t}from"../../../../../rest/query/operations/query.js";import r from"../../../../../rest/support/StatisticDefinition.js";import{FeatureSourceQueryInfo as a}from"../sources/FeatureSourceQueryInfo.js";import{FeatureMetadata as s}from"../support/FeatureMetadata.js";class o{constructor(){this._cache=new Map}async executeExceedsLimitQuery(e,t,r){const o=s.createFeature(e.metadata),i=a.create(e,t,o).createQuery();i.inner.orderByFields=[],i.inner.returnGeometry=!1,i.inner.cacheHint=!0;const c="esriGeometryPoint"!==e.metadata.geometryType,u=JSON.stringify({source:e.source,query:i.inner.toJSON(),customParameters:i.customParameters,snapshotInfo:r,isPoints:c});let m=this._cache.get(u);return null==m&&(m=await n(e.source,c,i,r),this._cache.set(u,m)),m}}async function n(t,a,s,o){if(!o.supportsExceedsLimit)return i(t,a,s,o);try{const a=s.inner.clone(),n=new r;n.statisticType="exceedslimit",n.maxPointCount=o.maxFeatureCount,n.maxRecordCount=o.maxFeatureCount,n.outStatisticFieldName="exceedslimit",o.maxVertexCount&&(n.maxVertexCount=o.maxVertexCount),a.outStatistics=[n];const i=await e(t,a,void 0,{query:s.customParameters}),c=i.features[0]?.attributes.exceedslimit;return!(0===c)}catch(n){return i(t,a,s,o)}}async function i(e,r,a,s){if(r)return!0;const o=a.inner.clone();try{return await t(e,o,{query:a.customParameters})>s.maxFeatureCount}catch(n){return!0}}export{o as ExceedsLimitCache};