@arcgis/core
Version:
ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API
6 lines (5 loc) • 2.74 kB
JavaScript
/*
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
See https://js.arcgis.com/4.33/esri/copyright.txt for details.
*/
import{createTask as t,resultOrAbort as e}from"../../../../../core/asyncUtils.js";import{fromExtent as s,create as a,intersects as E}from"../../../../../geometry/support/aaBoundingRect.js";class r{constructor(t,e){this.data=t,this.resolution=e,this.state={type:i.CREATED},this.alive=!0}process(t){switch(this.state.type){case i.CREATED:return this.state=this._gotoFetchCount(this.state,t),this.state.task.promise.then(t.resume,t.resume);case i.FETCH_COUNT:break;case i.FETCHED_COUNT:return this.state=this._gotoFetchFeatures(this.state,t),this.state.task.promise.then(t.resume,t.resume);case i.FETCH_FEATURES:break;case i.FETCHED_FEATURES:this.state=this._goToDone(this.state,t);case i.DONE:}return null}get debugInfo(){return{data:this.data,featureCount:this._featureCount,state:this._stateToString}}get _featureCount(){switch(this.state.type){case i.CREATED:case i.FETCH_COUNT:return 0;case i.FETCHED_COUNT:return this.state.featureCount;case i.FETCH_FEATURES:return this.state.previous.featureCount;case i.FETCHED_FEATURES:return this.state.features.length;case i.DONE:return this.state.previous.features.length}}get _stateToString(){switch(this.state.type){case i.CREATED:return"created";case i.FETCH_COUNT:return"fetch-count";case i.FETCHED_COUNT:return"fetched-count";case i.FETCH_FEATURES:return"fetch-features";case i.FETCHED_FEATURES:return"fetched-features";case i.DONE:return"done"}}_gotoFetchCount(s,a){return{type:i.FETCH_COUNT,previous:s,task:t((async t=>{const s=await e(a.fetchCount(this,t));this.state.type===i.FETCH_COUNT&&(this.state=u(this.state,s.ok?s.value:1/0))}))}}_gotoFetchFeatures(s,a){return{type:i.FETCH_FEATURES,previous:s,task:t((async t=>{const E=await e(a.fetchFeatures(this,s.featureCount,t));this.state.type===i.FETCH_FEATURES&&(this.state=T(this.state,E.ok?E.value:[]))}))}}_goToDone(t,e){return e.finish(this,t.features),{type:i.DONE,previous:t}}reset(){const t=this.state;switch(this.state={type:i.CREATED},t.type){case i.CREATED:case i.FETCHED_COUNT:case i.FETCHED_FEATURES:case i.DONE:break;case i.FETCH_COUNT:case i.FETCH_FEATURES:t.task.abort()}}intersects(t){return null==t||!this.data.extent||(s(t,n),E(this.data.extent,n))}}function u(t,e){return{type:i.FETCHED_COUNT,featureCount:e,previous:t}}function T(t,e){return{type:i.FETCHED_FEATURES,previous:t,features:e}}var i;!function(t){t[t.CREATED=0]="CREATED",t[t.FETCH_COUNT=1]="FETCH_COUNT",t[t.FETCHED_COUNT=2]="FETCHED_COUNT",t[t.FETCH_FEATURES=3]="FETCH_FEATURES",t[t.FETCHED_FEATURES=4]="FETCHED_FEATURES",t[t.DONE=5]="DONE"}(i||(i={}));const n=a();export{r as PendingFeatureTile,i as StateType};