@arcgis/core
Version:
ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API
3 lines (2 loc) • 2.38 kB
JavaScript
/* COPYRIGHT Esri - https://js.arcgis.com/5.0.8/LICENSE.txt */
import{__decorate as e}from"tslib";import t from"../../../core/Error.js";import{property as r,subclass as i}from"../../../core/accessorSupport/decorators.js";import{createGenerateRendererClassBreaks as a,createGenerateRendererUniqueValues as s}from"../../../rest/support/generateRendererUtils.js";import{getDataValues as o,mergeWhereClauses as n}from"../../statistics/support/utils.js";import{WorkerClient as l}from"../../statistics/support/WorkerClient.js";import{getFieldsList as p}from"../utils.js";import c from"./FeatureLayerAdapter.js";import{ensureFeaturesJSON as u}from"./support/utils.js";let d=class extends c{constructor(){super(...arguments),this.adapterName="csv-layer-adapter"}async _createGenerateRendererResult(e,r,i,n,l){const p=e?.features,c=p?.length;if(!c)throw new t("csv-layer-adapter:insufficient-data","No features are available to calculate statistics");const d=u(p);let m=null;if("percent-of-total"===n){if(m=(await this.workerClient.summaryStatistics({field:r},d)).sum,null==m)throw new t("csv-layer-adapter:invalid","invalid normalizationTotal")}if("class-breaks-definition"===l?.type){const e=(await o({field:r,normalizationType:n,normalizationField:i,normalizationTotal:m},d)).filter(e=>Number.isFinite(e));return a({definition:l,values:e,normalizationTotal:m})}const f=(await o({field:r},d)).filter(e=>null!=e&&"string"==typeof e&&""!==e.trim());return s(f)}generateRenderer(e,t){const r=e.classificationDefinition;let i=null,a=null,s=null;"class-breaks-definition"===r?.type?(i=r.classificationField,a=r.normalizationField,s=r.normalizationType):i=r?.attributeField;const o=this.layer;return p({field:i,normalizationField:a}).then(l=>{const p=o.createQuery();return p.returnGeometry=!1,p.outFields=l,p.where=n(p.where,e.where),o.queryFeatures(p,{signal:t}).then(e=>this._createGenerateRendererResult(e,i,a,s,r))})}load(e){const t=this.layer.load(e).then(async t=>{this.geometryType=t.geometryType,this.objectIdField=t.objectIdField,this.supportsSQLExpression=!0,this._hasLocalSource=!1,this.hasQueryEngine=!0,this.workerClient=l.getInstance(),await this.workerClient.open(e.signal)});return this.addResolvingPromise(t),Promise.resolve(this)}};e([r({readOnly:!0})],d.prototype,"adapterName",void 0),d=e([i("esri.smartMapping.support.adapters.CSVLayerAdapter")],d);export{d as default};