@arcgis/core
Version:
ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API
3 lines (2 loc) • 5.18 kB
JavaScript
/* COPYRIGHT Esri - https://js.arcgis.com/5.0.8/LICENSE.txt */
import{__decorate as e}from"tslib";import{pickRandom as t}from"../../../core/arrayUtils.js";import r from"../../../core/Error.js";import{whenOnce as s}from"../../../core/reactiveUtils.js";import{property as a,subclass as i}from"../../../core/accessorSupport/decorators.js";import{isTimeOnlyField as o}from"../../../layers/support/fieldUtils.js";import{getArcadeForPredominantCategory as n}from"../../statistics/support/predominanceUtils.js";import{mergeWhereClauses as u}from"../../statistics/support/utils.js";import{WorkerClient as l}from"../../statistics/support/WorkerClient.js";import{isAnyDateField as p,fieldDelimiter as d}from"../utils.js";import y from"./FeatureLayerAdapter.js";import{getSummaryStatsQuery as c,getSummaryStatisticsFromFeatureSet as f,getUVQuery as m,getUniqueValuesFromFeatureSet as h,getDomainsForFields as w,getPredominantCategoriesFromUVInfos as g,getMissingFields as F}from"./support/utils.js";import{processSummaryStatisticsResult as v,createUVResult as q}from"../../../statistics/utils.js";let x=class extends y{constructor(e){super(e),this.adapterName="ogc-feature-layer-adapter"}async _waitForLayerViewUpdate(e){if(!e)throw new r("ogc-feature-layer-adapter:insufficient-data","layerView is required to fetch the features");await s(()=>!e.updating)}async _summaryStatsFromClientQuery(e,t){const{signal:a,view:i}=e;if(!i)throw new r("ogc-feature-layer-adapter:insufficient-data","view is required to fetch the features from layerView");const n=c(this,e,t),u=await i.whenLayerView(this.layer);await s(()=>!u.updating,a);const l=await u.queryFeatures(n,{signal:a}),d=f(l,p(t)||o(t));return v(d,e.outStatisticTypes)}async _uvFromClientQuery(e,t){const{signal:a,view:i}=e;if(!i)throw new r("ogc-feature-layer-adapter:insufficient-data","view is required to fetch the features from layerView");const o=m(this,e),n=await i.whenLayerView(this.layer);await s(()=>!n.updating,a);const u=await n.queryFeatures(o,{signal:a}),l=await h(u,{layer:this,field:e.field,field2:e.field2,field3:e.field3,fieldDelimiter:d,view:e.view,signal:e.signal});return q(l,t,e.returnAllCodedValues,d)}summaryStatistics(e){const{field:t,valueExpression:s,sqlExpression:a,features:i,view:o}=e,n=t?this.getField(t):null,u=!!s,l="3d"===o?.type;if(!s&&a&&!this.supportsSQLExpression)throw new r("ogc-feature-layer-adapter:not-supported","Layer does not support standardized SQL expression for queries");return u||i||l?this._summaryStatsFromMemory(e,n):this._summaryStatsFromClientQuery(e,n)}async uniqueValues(e){const{valueExpression:t,sqlExpression:s,features:a,view:i}=e,o=await w(e,this),n=!!t,u="3d"===i?.type;if(!t&&s&&!this.supportsSQLExpression)throw new r("ogc-feature-layer-adapter:not-supported","Layer does not support standardized SQL expression for queries");return n||a||u?this._uvFromMemory(e,o):this._uvFromClientQuery(e,o)}histogram(e){const{features:t,valueExpression:s,normalizationType:a,sqlExpression:i}=e,o=t||!!s;if(!s&&i&&!this.supportsSQLExpression)throw new r("ogc-feature-layer-adapter:not-supported","Layer does not support standardized SQL expression for queries");return o||a?this._histogramFromMemory(e):this._histogramForField(e)}classBreaks(e){return!1!==e.analyzeData?this._classBreaksFromMemory(e):this._classBreaksFromInterpolation(e)}async queryFeatureCount(e){const{whereClause:t,view:a,signal:i}=e;if(!a)throw new r("ogc-feature-layer-adapter:insufficient-data","view is required to fetch the features from layerView");const o=this.layer.createQuery();o.where=u(o.where,t);const n=await a.whenLayerView(this.layer);return await s(()=>!n.updating,i),n.queryFeatureCount(o,{signal:i})}generateRenderer(e,t){throw new r("ogc-feature-layer-adapter:not-supported","OGCFeatureLayer does not support generateRenderer operation")}async predominantCategories(e){const{fields:t,view:r,signal:s}=e,a=n(t),i=await this._uvFromMemory({valueExpression:a,view:r,signal:s});return g(i.uniqueValueInfos,t)}async getSampleFeatures(e,s){const{view:a,sampleSize:i,requiredFields:o,returnGeometry:n,signal:u}=e,l=this.layer.createQuery(),p=1;if(l.outSpatialReference=a?.spatialReference,l.returnGeometry=!!n,l.outFields=o,!a)throw new r("ogc-feature-layer-adapter:not-supported","view is required to get sample features for OGCFeatureLayer");const d=await a.whenLayerView(this.layer);if(F(this,o,d).length)throw new r("ogc-feature-layer-adapter:not-supported","Required fields need to be passed in the outFields for OGCFeatureLayer");const y=await this._fetchFeaturesFromMemory(d,l,u,s),c=null!=i&&i>0&&i<=y.length?i:y.length;return t(y,c,p)}load(e){const t=this.layer.load(e).then(async t=>{this.geometryType=t.geometryType,this.objectIdField=t.objectIdField,this.supportsSQLExpression=t.capabilities?.query?.supportsSqlExpression,this.minScale=t.minScale,this.maxScale=t.maxScale,this.fullExtent=t.fullExtent,this.workerClient=l.getInstance(),await this.workerClient.open(e.signal)});return this.addResolvingPromise(t),Promise.resolve(this)}};e([a({readOnly:!0})],x.prototype,"adapterName",void 0),x=e([i("esri.smartMapping.support.adapters.OGCFeatureLayerAdapter")],x);const S=x;export{S as default};