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.
14 lines
5.4 KiB
14 lines
5.4 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("exports ../../chunks/tslib.es6 ../../core/asyncUtils ../../core/has ../../core/Logger ../../core/maybe ../../core/promiseUtils ../../core/reactiveUtils ../../core/accessorSupport/decorators/property ../../core/RandomLCG ../../core/accessorSupport/decorators/subclass ./InteractiveToolViewModel".split(" "),function(c,e,n,u,p,g,m,h,f,v,r,t){function q(a){return null!=a&&a.state>=k.RUNNING?(a.abort(),null):a}var k;(function(a){a[a.PENDING=0]="PENDING";a[a.WAIT_FOR_VIEW_READY=1]="WAIT_FOR_VIEW_READY"; |
|
a[a.RUNNING=2]="RUNNING"})(k||={});c.InteractiveAnalysisViewModel=class extends t.InteractiveToolViewModel{constructor(a={}){super(a);this._reconnectViewTask=this.analysisView=null;this._parentChangeFromReconnect=!1;this._startUserOperation=null;a=a?.analysis;null!=a?this.analysis=a:(this._set("analysis",this.constructAnalysis()),this._set("isAnalysisOwner",!0))}normalizeCtorArgs(a){const {analysis:b,...d}=a;return d}initialize(){this.addHandles([h.watch(()=>this.analysis?.parent,a=>{this._parentChangeFromReconnect|| |
|
a===this.view||this._set("isAnalysisOwner",!1);a=!this._parentChangeFromReconnect;this._parentChangeFromReconnect=!1;a&&this._scheduleViewReconnect()},h.sync),h.watch(()=>({view:this.view,ready:null!=this.view&&this.view.ready,supported:this.supported}),({view:a},b)=>{b=b?.view;a!==b&&(this._startUserOperation=g.abortMaybe(this._startUserOperation),this._disconnectFromView(b));this._scheduleViewReconnect()},h.syncAndInitial),h.watch(()=>this.analysis.isEditable,(a,b)=>{null!=this.analysisView&&(a&& |
|
!b&&null==this.tool?this.createTool():a||!b||null==this.tool||this.tool.active||this.removeTool())})])}destroy(){this._reconnectViewTask=g.abortMaybe(this._reconnectViewTask);this._startUserOperation=g.abortMaybe(this._startUserOperation);null!=this.analysisView&&(this.analysisView.visible=void 0);this._disconnectFromView(this.view);null!=this.analysis&&this.isAnalysisOwner&&(this.analysis.destroy(),this._set("analysis",null))}set analysis(a){a!==this._get("analysis")&&(this._startUserOperation=g.abortMaybe(this._startUserOperation), |
|
this._disconnectFromView(this.view),this._setExternalAnalysis(a),this._scheduleViewReconnect())}get ready(){return null!=this.analysisView&&!this.connectingToView}get connectingToView(){return null!=this._reconnectViewTask}get isAnalysisOwner(){return this._get("isAnalysisOwner")}set visible(a){this._set("visible",a);null!=this.analysisView&&(this.analysisView.visible=a)}async start(){if(this.visible){this.clear();var a={task:null,abort:null,state:k.PENDING},b=n.createTask(async d=>{a.state=k.WAIT_FOR_VIEW_READY; |
|
await h.whenOnce(()=>this.ready,d);a.state=k.RUNNING;this.createTool({interactive:!0})});a.task=b;a.abort=()=>b.abort();this._startUserOperation=a;return b.promise}p.getLogger(this).warn("Cannot start analysis when not visible")}clear(){this._startUserOperation=g.abortMaybe(this._startUserOperation);this.removeTool();this.analysis.clear()}onConnectToAnalysisView(a){}onDisconnectFromAnalysisView(){}_scheduleViewReconnect(){this._reconnectViewTask=g.abortMaybe(this._reconnectViewTask);const a=n.createTask(async b=> |
|
{try{await this._reconnectView(b)}catch(d){m.throwIfAborted(b);if(m.isAbortError(d))throw d;p.getLogger(this).warn("Failed to use analysis in view model",d)}finally{a===this._reconnectViewTask&&(this._reconnectViewTask=null)}});this._reconnectViewTask=a}async _reconnectView(a){const {view:b}=this,d=null!=b&&b.ready&&this.supported,l=this.analysis;this._startUserOperation=q(this._startUserOperation);this._disconnectFromView(b);if(d&&null!=b&&null!=l){if(this.isAnalysisOwner){if(null!=l.parent){this.logError("expected owned analysis to have null parent when connecting to view"); |
|
return}this._parentChangeFromReconnect=!0;b.analyses.add(l)}this.analysisView=await b.whenAnalysisView(l);m.isAborted(a)?this._startUserOperation=q(this._startUserOperation):(this.analysisView.visible=this.visible,this.onConnectToAnalysisView(this.analysisView),this.createTool())}}_disconnectFromView(a){this.removeTool();null!=a&&this.isAnalysisOwner&&(this._parentChangeFromReconnect=!0,a.analyses.remove(this.analysis),this.analysis.clear());this.analysisView=null;this.onDisconnectFromAnalysisView()}_setExternalAnalysis(a){null== |
|
this.analysisView||this.isAnalysisOwner||(this.analysisView.visible=!0);this.analysisView=null;this._set("isAnalysisOwner",!1);this._set("analysis",a);this._parentChangeFromReconnect=!1}get testInfo(){}};e.__decorate([f.property({nonNullable:!0})],c.InteractiveAnalysisViewModel.prototype,"analysis",null);e.__decorate([f.property()],c.InteractiveAnalysisViewModel.prototype,"analysisView",void 0);e.__decorate([f.property()],c.InteractiveAnalysisViewModel.prototype,"ready",null);e.__decorate([f.property()], |
|
c.InteractiveAnalysisViewModel.prototype,"connectingToView",null);e.__decorate([f.property({readOnly:!0})],c.InteractiveAnalysisViewModel.prototype,"isAnalysisOwner",null);e.__decorate([f.property({type:Boolean,value:!0})],c.InteractiveAnalysisViewModel.prototype,"visible",null);e.__decorate([f.property()],c.InteractiveAnalysisViewModel.prototype,"_reconnectViewTask",void 0);c.InteractiveAnalysisViewModel=e.__decorate([r.subclass("esri.widgets.support.InteractiveAnalysisViewModel")],c.InteractiveAnalysisViewModel); |
|
Object.defineProperty(c,Symbol.toStringTag,{value:"Module"})}); |