@arcgis/core
Version:
ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API
6 lines (5 loc) • 5.43 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{_ as e}from"../../../chunks/tslib.es6.js";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}from"../../../core/accessorSupport/decorators/property.js";import"../../../core/has.js";import"../../../core/Logger.js";import{subclass as i}from"../../../core/accessorSupport/decorators/subclass.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 p}from"../../statistics/support/WorkerClient.js";import{isAnyDateField as l,fieldDelimiter as d}from"../utils.js";import c from"./FeatureLayerAdapter.js";import{getSummaryStatsQuery as m,getSummaryStatisticsFromFeatureSet as y,getUVQuery as f,getUniqueValuesFromFeatureSet as h,getDomainsForFields as w,getPredominantCategoriesFromUVInfos as g,getMissingFields as F}from"./support/utils.js";import{processSummaryStatisticsResult as v,createUVResult as S}from"../../../statistics/utils.js";let q=class extends c{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=m(this,e,t),u=await i.whenLayerView(this.layer);await s((()=>!u.updating),a);const p=await u.queryFeatures(n,{signal:a}),d=y(p,l(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=f(this,e),n=await i.whenLayerView(this.layer);await s((()=>!n.updating),a);const u=await n.queryFeatures(o,{signal:a}),p=await h(u,{layer:this,field:e.field,field2:e.field2,field3:e.field3,fieldDelimiter:d,view:e.view,signal:e.signal});return S(p,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,p="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||p?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,p=this.layer.createQuery(),l=1;if(p.outSpatialReference=a?.spatialReference,p.returnGeometry=!!n,p.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 c=await this._fetchFeaturesFromMemory(d,p,u,s),m=null!=i&&i>0&&i<=c.length?i:c.length;return t(c,m,l)}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=p.getInstance(),await this.workerClient.open(e.signal)}));return this.addResolvingPromise(t),Promise.resolve(this)}};e([a({readOnly:!0})],q.prototype,"adapterName",void 0),q=e([i("esri.smartMapping.support.adapters.OGCFeatureLayerAdapter")],q);const x=q;export{x as default};