You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
19 lines
8.1 KiB
19 lines
8.1 KiB
// All material copyright Esri, All Rights Reserved, unless otherwise specified. |
|
// See https://js.arcgis.com/4.30/esri/copyright.txt for details. |
|
//>>built |
|
define("../../chunks/tslib.es6 ../../core/Error ../../core/has ../../core/Logger ../../core/promiseUtils ../../core/reactiveUtils ../../core/accessorSupport/decorators/property ../../core/RandomLCG ../../core/accessorSupport/decorators/subclass ../../layers/support/FeatureEffect ../../layers/support/FeatureFilter ../../layers/support/fieldUtils ../../layers/support/floorFilterUtils ../../rest/support/Query ../../support/arcadeOnDemand ./support/popupUtils".split(" "),function(m,u,F,v,w,q,n,G,A,B, |
|
C,f,x,y,D,r){return k=>{k=class extends k{constructor(...a){super(...a);this._updatingRequiredFieldsPromise=null;this.dataUpdating=!1;this.layer=this.filter=null;this.requiredFields=[];this.view=null}initialize(){this.addHandles([q.watch(()=>{const a=this.layer;return[a&&"elevationInfo"in a?a.elevationInfo?.featureExpressionInfo:null,a&&"displayField"in a?a.displayField:null,a&&"timeInfo"in a&&a.timeInfo,a&&"renderer"in a&&a.renderer,a&&"labelingInfo"in a&&a.labelingInfo,a&&"floorInfo"in a&&a.floorInfo, |
|
this.filter,this.featureEffect,this.timeExtent]},()=>this._handleRequiredFieldsChange(),q.syncAndInitial),q.on(()=>this.view?.floors,"change",()=>this._handleRequiredFieldsChange()),q.on(()=>{const a=this.layer;return a&&"sublayers"in a?a.sublayers:null},"change",()=>this._handleRequiredFieldsChange())])}get availableFields(){if(!this.layer)return[];const {layer:a,layer:{fieldsIndex:b},requiredFields:c}=this;return"outFields"in a&&a.outFields?f.fixFields(b,[...f.unpackFieldNames(b,a.outFields),...c]): |
|
f.fixFields(b,c)}get featureEffect(){return this.layer&&"featureEffect"in this.layer?this.layer.featureEffect:null}set featureEffect(a){this._override("featureEffect",a)}get maximumNumberOfFeatures(){return 0}set maximumNumberOfFeatures(a){v.getLogger(this).error("#maximumNumberOfFeatures\x3d","Setting maximum number of features is not supported")}get maximumNumberOfFeaturesExceeded(){return!1}highlight(a){throw Error("missing implementation");}createQuery(){var a={outFields:["*"],returnGeometry:!0, |
|
outSpatialReference:this.view.spatialReference};a=null!=this.filter?this.filter.createQuery(a):new y(a);if("floorInfo"in this.layer&&this.layer.floorInfo){const b=x.getFloorFilterClause(this);null!=b&&(a.where=a.where?`(${a.where}) AND (${b})`:b)}null!=this.timeExtent&&(a.timeExtent=null!=a.timeExtent?a.timeExtent.intersection(this.timeExtent):this.timeExtent.clone());return a}createAggregateQuery(){return new y({outFields:["*"],returnGeometry:!0,outSpatialReference:this.view.spatialReference})}queryFeatures(a, |
|
b){throw Error("missing implementation");}queryObjectIds(a,b){throw Error("missing implementation");}queryFeatureCount(a,b){throw Error("missing implementation");}queryExtent(a,b){throw Error("missing implementation");}async fetchPopupFeaturesFromGraphics(a,b){this._validateFetchPopupFeatures(a,b);return this._fetchPopupFeatures(a,b)}_loadArcadeModules(a){return a.expressionInfos?.length||Array.isArray(a.content)&&a.content.some(b=>"expression"===b.type)?D.loadArcade():Promise.resolve()}_handleRequiredFieldsChange(){const a= |
|
this._updateRequiredFields();this._set("_updatingRequiredFieldsPromise",a);a.then(()=>{this._updatingRequiredFieldsPromise===a&&this._set("_updatingRequiredFieldsPromise",null)})}async _updateRequiredFields(){if(this.layer&&this.view){var a="3d"===this.view.type,{layer:b,layer:{fieldsIndex:c,objectIdField:l}}=this,g="renderer"in b&&b.renderer,e="orderBy"in b&&b.orderBy,h="featureReduction"in b?b.featureReduction:null,d=new Set;g=await Promise.allSettled([g?g.collectRequiredFields(d,c):null,f.collectLabelingFields(d, |
|
b),a&&"elevationInfo"in b?f.collectElevationFields(d,b):null,null!=this.filter?f.collectFilterFields(d,b,this.filter):null,a||null==this.featureEffect?null:f.collectFilterFields(d,b,this.featureEffect.filter),!a&&h?f.collectFeatureReductionFields(d,b,h):null,!a&&e?f.collectOrderByInfos(d,b,e):null]);"timeInfo"in b&&b.timeInfo&&this.timeExtent&&f.collectFields(d,b.fieldsIndex,[b.timeInfo.startField,b.timeInfo.endField]);"floorInfo"in b&&b.floorInfo&&f.collectFields(d,b.fieldsIndex,[b.floorInfo.floorField]); |
|
"feature"===b.type&&a&&null!=b.infoFor3D&&(null==b.globalIdField&&v.getLogger(this).error("globalIdField missing on 3DObjectFeatureLayer"),f.collectFields(d,b.fieldsIndex,[b.globalIdField]));"subtype-group"===b.type&&(f.collectField(d,c,b.subtypeField),e=b.sublayers.map(p=>Promise.all([p.renderer?.collectRequiredFields(d,c),f.collectLabelingFields(d,p)])),await Promise.allSettled(e));"catalog-footprint"===b.type&&b.parent&&(e=b.parent,f.collectFields(d,c,[e.itemNameField,e.itemSourceField,e.itemTypeField, |
|
e.maxScaleField,e.minScaleField]));for(const p of g)"rejected"===p.status&&v.getLogger(this).error(p.reason);f.collectField(d,c,l);a&&"displayField"in b&&b.displayField&&f.collectField(d,c,b.displayField);a=Array.from(d).sort();this._set("requiredFields",a)}}_validateFetchPopupFeatures(a,b){if(null!=b)for(const c of a){a=c.origin&&"layer"in c.origin?c.origin.layer:c.layer;if("popupEnabled"in a&&!a.popupEnabled)throw new u("featurelayerview:fetchPopupFeatures","Popups are disabled",{layer:a});if(c.isAggregate){const l= |
|
"featureReduction"in a?a.featureReduction:null;if(!(l&&"popupTemplate"in l&&l.popupEnabled&&l.popupTemplate))throw new u("featurelayerview:fetchPopupFeatures","Popups are disabled",{layer:a});}else if("popupTemplate"in a&&!r.getFetchPopupTemplate(a,b))throw new u("featurelayerview:fetchPopupFeatures","Layer does not define a popup template",{layer:a});}}_popupFeatureHasRequiredFields(a,b){return f.featureHasFields(b,a)}async _fetchPopupFeatures(a,b){const c=Array(a.length),l=new Map,g=await this._createPopupQuery(a.map(h=> |
|
h.origin?.layer??h.layer),b);for(let h=0;h<a.length;h++){const d=a[h];if(d.isAggregate){c[h]=d;continue}var e=d.origin?.layer??d.layer;if(!(e&&"popupEnabled"in e))continue;const p=f.unpackFieldNames(this.layer.fieldsIndex,g.outFields);e=r.getFetchPopupTemplate(e,b);if(null==e)continue;const t=await this._loadArcadeModules(e);w.throwIfAborted(b);t&&t.arcadeUtils.hasGeometryOperations(e)||!this._popupFeatureHasRequiredFields(d,p)?l.set(d.getObjectId(),{graphic:d,index:h}):c[h]=d}if("stream"===this.layer.type|| |
|
0===l.size)return c.filter(Boolean);g.objectIds=Array.from(l.keys());try{const h=await this.layer.queryFeatures(g,b);for(const d of h.features){const {graphic:{geometry:p,origin:t},index:E}=l.get(d.getObjectId());let z;(z=d).geometry||(z.geometry=p);d.origin=t;c[E]=d}}catch{}return c.filter(Boolean)}async _createPopupQuery(a,b){const c=this.layer.createQuery(),l=new Set;var g=!1;a=a??[this.layer];for(const e of a)if("popupEnabled"in e&&(a=r.getFetchPopupTemplate(e,b),null!=a)){g=await this._loadArcadeModules(a); |
|
w.throwIfAborted(b);g=g&&g.arcadeUtils.hasGeometryOperations(a);g=!("point"!==this.layer.geometryType&&!g);a=await r.getRequiredFields(this.layer,a);w.throwIfAborted(b);for(const h of a)l.add(h)}c.returnGeometry=g;c.returnZ=g;c.returnM=g;c.outFields=Array.from(l);c.outSpatialReference=this.view.spatialReference;"floorInfo"in this.layer&&this.layer.floorInfo&&(b=x.getFloorFilterClause(this),null!=b&&(c.where=c.where?`(${c.where}) AND (${b})`:b));return c}canResume(){return!super.canResume()||null!= |
|
this.timeExtent&&this.timeExtent.isEmpty?!1:!0}getTest(){}get test(){}};m.__decorate([n.property()],k.prototype,"_updatingRequiredFieldsPromise",void 0);m.__decorate([n.property({readOnly:!0})],k.prototype,"availableFields",null);m.__decorate([n.property({readOnly:!0})],k.prototype,"dataUpdating",void 0);m.__decorate([n.property({type:B})],k.prototype,"featureEffect",null);m.__decorate([n.property({type:C})],k.prototype,"filter",void 0);m.__decorate([n.property()],k.prototype,"layer",void 0);m.__decorate([n.property({type:Number})], |
|
k.prototype,"maximumNumberOfFeatures",null);m.__decorate([n.property({readOnly:!0,type:Boolean})],k.prototype,"maximumNumberOfFeaturesExceeded",null);m.__decorate([n.property({readOnly:!0})],k.prototype,"requiredFields",void 0);m.__decorate([n.property()],k.prototype,"suspended",void 0);m.__decorate([n.property()],k.prototype,"view",void 0);return k=m.__decorate([A.subclass("esri.views.layers.FeatureLayerView")],k)}}); |