@doegis/core
Version:
DOE GIS API
3 lines (1 loc) • 3.95 kB
JavaScript
import{_ as i}from"../../../chunks/tslib.es6.js";import s from"../../../core/Accessor.js";import t from"../../../core/Collection.js";import o from"../../../core/Logger.js";import{isNone as e,abortMaybe as n,destroyMaybe as a}from"../../../core/maybe.js";import{on as r}from"../../../core/reactiveUtils.js";import{property as l}from"../../../core/accessorSupport/decorators/property.js";import"../../../core/accessorSupport/ensureType.js";import"../../../core/arrayUtils.js";import{subclass as m}from"../../../core/accessorSupport/decorators/subclass.js";import{AnalysisView3D as p}from"./AnalysisView3D.js";import{DimensionController as d}from"./Dimension/DimensionController.js";import{DimensionTool as c}from"./Dimension/DimensionTool.js";import{DimensionVisualization as u}from"./Dimension/DimensionVisualization.js";import{LengthDimensionComputation as h}from"./Dimension/LengthDimensionComputation.js";import{applyProjectionAndElevationAlignment as y,logFailedGeometryProjectionError as _}from"./support/projectionUtils.js";import{connectAnalysisViewToTool as D,removeAnalysisViewTool as f,activateAnalysisViewTool as v}from"../../analysis/analysisViewUtils.js";import j from"../../analysis/DimensionAnalysisView.js";let g=class extends(j(p(s))){constructor(i){super(i),this.type="dimension-view-3d",this.tool=null,this.computations=new t,this.selectedDimension=null,this._dimensionsToComputations=new Map,this._placementTask=null,this._projectAndAlignPoint=null}initialize(){this._projectAndAlignPoint=i=>{if(e(i))return null;const{spatialReference:s,elevationProvider:t}=this.view,n=y(i,s,t);return e(n)&&_(this.analysis,i.spatialReference,o.getLogger(this.declaredClass)),n},this.addHandles([D(this,c),r((()=>this.analysis.dimensions),"after-add",(i=>this._onDimensionAdd(i.item)),{onListenerAdd:i=>{for(const s of i)this._onDimensionAdd(s)},onListenerRemove:()=>{this._onDimensionsClear()}}),r((()=>this.analysis.dimensions),"after-remove",(i=>this._onDimensionRemove(i.item)))]),this._analysisVisualization=new u({analysisViewData:this,view:this.view}),this._analysisController=new d({analysisViewData:this,view:this.view})}destroy(){this._placementTask=n(this._placementTask),this._analysisVisualization=a(this._analysisVisualization),f(this)}get updating(){return this._analysisVisualization?.loadingMessages??!1}get results(){return this.analysis.dimensions.map((i=>this._dimensionsToComputations.get(i).result))}get selectedComputation(){const{selectedDimension:i}=this;return e(i)?null:this._dimensionsToComputations.get(i)}get testInfo(){return{visualization:this._analysisVisualization,controller:this._analysisController}}async createLengthDimensions(i){return this.selectedDimension=null,this._placementTask=n(this._placementTask),this._placementTask=v(this,i),this._placementTask.promise}_onDimensionAdd(i){const{computations:s,_dimensionsToComputations:t}=this;if(t.has(i))return;const o=new h({dimension:i,projectAndAlignPoint:this._projectAndAlignPoint});s.add(o),t.set(i,o)}_onDimensionRemove(i){const{computations:s,_dimensionsToComputations:t}=this,o=s.findIndex((s=>s.dimension===i)),e=s.getItemAt(o);e.dimension===this.selectedDimension&&(this.selectedDimension=null),s.removeAt(o),t.delete(i),a(e)}_onDimensionsClear(){this.computations.drain((i=>i.destroy())),this._dimensionsToComputations.clear()}};i([l({readOnly:!0})],g.prototype,"type",void 0),i([l()],g.prototype,"tool",void 0),i([l()],g.prototype,"updating",null),i([l({readOnly:!0})],g.prototype,"results",null),i([l({readOnly:!0})],g.prototype,"computations",void 0),i([l()],g.prototype,"selectedDimension",void 0),i([l()],g.prototype,"selectedComputation",null),i([l()],g.prototype,"_analysisVisualization",void 0),i([l()],g.prototype,"_analysisController",void 0),i([l()],g.prototype,"_dimensionsToComputations",void 0),i([l()],g.prototype,"_placementTask",void 0),g=i([m("esri.views.3d.analysis.DimensionAnalysisView3D")],g);const w=g;export{w as default};