UNPKG

@arcgis/core

Version:

ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API

3 lines (2 loc) 6.01 kB
/* COPYRIGHT Esri - https://js.arcgis.com/5.0.8/LICENSE.txt */ import{__decorate as t}from"tslib";import{onLocaleChange as e,fetchMessageBundle as i}from"../../intl.js";import r from"../../core/Accessor.js";import o from"../../core/Collection.js";import{deprecatedModule as s}from"../../core/deprecate.js";import a from"../../core/Error.js";import l from"../../core/Logger.js";import{watch as n,initial as d,on as y}from"../../core/reactiveUtils.js";import{property as p,subclass as c}from"../../core/accessorSupport/decorators.js";import{UpdatingHandles as h}from"../../core/support/UpdatingHandles.js";import{isFeatureLayer as u,getOwningPortalUrl as w}from"../../layers/support/layerUtils.js";import g from"../../portal/Portal.js";import{hasUserTypeExtension as v}from"../../portal/support/utils.js";const _={noDirtyAreasInExtent:-2147208940,cannotAcquireVersionLock_v10:-2147217146,cannotAcquireVersionLock_v11:-2147220947,operationOnlyAllowedByOwner:-2147217144};s(l.getLogger("esri.widgets.UtilityNetworkValidateTopology.UtilityNetworkValidateTopologyViewModel"),"UtilityNetworkValidateTopologyViewModel",{replacement:"UtilityNetwork.validateTopology",version:"5.0",see:"https://esriurl.com/UtilityNetworkClass#validateTopology",warnOnce:!0});let m=class extends r{constructor(t){super(t),this._activeOperationDidSucceed=!1,this._initialValidationsFinished=!1,this._dirtyAreasLayer=null,this._serverVersion=null,this._updatingHandles=new h,this._validConstructProperties=!1,this.executionError="",this.extentToValidate="current",this.loadErrors=new o}initialize(){const t=async()=>{this.messages||(this.messages=await i("esri/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology"))};t().then(()=>{this.view||(this.view=null),this.utilityNetwork||(this.utilityNetwork=null),this.addHandles([n(()=>[this.view,this.utilityNetwork],async()=>{const{loadErrors:t,messages:{info:{noUtilityNetwork:e,noView:i}}}=this;this._initialValidationsFinished=!1,t.removeAll(),this._validConstructProperties=!0,this._dirtyAreasLayer=null,this._serverVersion=null,"utility"!==this.utilityNetwork?.type&&(this.loadErrors.push(e),l.getLogger(this).error(new a("utilityNetworkValidateTopology:missing-property",e)),this._validConstructProperties=!1),"2d"!==this.view?.type&&(this.loadErrors.push(i),l.getLogger(this).error(new a("utilityNetworkValidateTopology:missing-property",i)),this._validConstructProperties=!1),this._validConstructProperties&&(this.utilityNetwork.loaded||await this.utilityNetwork.load().catch(t=>{l.getLogger(this).error(t),this._validConstructProperties=!1}),await this._setDirtyAreasLayer()),this._validConstructProperties&&await this._validateNetworkExtension()},d),y(()=>this.view?.map?.layers,"change",async()=>{const{loadErrors:t,messages:{info:{noUtilityNetwork:e}}}=this,i=t.find(t=>t===e);this._initialValidationsFinished=!1,i||(t.removeAll(),await this._validateNetworkExtension(),await this._setDirtyAreasLayer()),this._initialValidationsFinished=!0}),e(t)])})}destroy(){this._updatingHandles.destroy()}get state(){return this.loadErrors.length||!this._validConstructProperties?"disabled":this.executionError?"failed":this._updatingHandles.updating?"executing":this._activeOperationDidSucceed?"success":this._initialValidationsFinished?"ready":"loading"}set utilityNetwork(t){this._get("utilityNetwork")!==t&&this._set("utilityNetwork",t)}set view(t){this._get("view")!==t&&this._set("view",t)}async validateTopology(){const{messages:{info:{cannotAcquireVersionLock:t,noDirtyAreasInExtent:e,operationOnlyAllowedByOwner:i}},utilityNetwork:r,view:o}=this;if(!this.loadErrors.length){this._activeOperationDidSucceed=!1,this._set("executionError","");const s={gdbVersion:r?.gdbVersion,outSpatialReference:o.spatialReference?.clone()||null,validateArea:"current"===this.extentToValidate?o.extent.clone():r.fullExtent.clone()};this._updatingHandles.addPromise(r?.validateTopology(s).then(()=>{this._activeOperationDidSucceed=!0},r=>{let o="Error: "+r;if(r instanceof a&&r.details?.raw)switch(r.details.raw.extendedCode){case _.noDirtyAreasInExtent:o=e;break;case _.cannotAcquireVersionLock_v10:case _.cannotAcquireVersionLock_v11:o=t;break;case _.operationOnlyAllowedByOwner:o=i;break;default:o=r.details.message??r.details.raw.message}this._set("executionError",o)}))}}async _setDirtyAreasLayer(){const{messages:{info:{noDirtyAreasLayer:t}}}=this,e=this.view?.map.allLayers.items.filter(t=>u(t)).find(t=>t.parsedUrl?.path===this.utilityNetwork?.networkSystemLayers.dirtyAreasLayerUrl);e?(this._dirtyAreasLayer=e,await this._dirtyAreasLayer.load(),this._serverVersion=this._dirtyAreasLayer.version??0,this._validConstructProperties=!0):(this.loadErrors.includes(t)||(this.loadErrors.push(t),l.getLogger(this).error(new a("utilityNetworkValidateTopology:missing-layer",t))),this._validConstructProperties=!1)}async _validateNetworkExtension(){const{messages:{info:{noAdvancedEditingUserTypeExtension:t,noUtilityNetworkServiceUserTypeExtension:e}}}=this,i=await w(this.utilityNetwork.layerUrl),r=new g({url:i});await r.load();const o=r.user?.username??"",s=Number(this._serverVersion)<=11.1?"utilityNetwork":"advediting";if(!await v(r,o,s)){const i=Number(this._serverVersion)<=11.1?e:t;this.loadErrors.push(i),l.getLogger(this).error(new a("utilityNetworkValidateTopology:no-user-type-extension",i)),this._validConstructProperties=!1}this._initialValidationsFinished=!0}};t([p()],m.prototype,"_initialValidationsFinished",void 0),t([p()],m.prototype,"_dirtyAreasLayer",void 0),t([p()],m.prototype,"_validConstructProperties",void 0),t([p({readOnly:!0})],m.prototype,"executionError",void 0),t([p()],m.prototype,"extentToValidate",void 0),t([p({type:o})],m.prototype,"loadErrors",void 0),t([p()],m.prototype,"messages",void 0),t([p({readOnly:!0})],m.prototype,"state",null),t([p()],m.prototype,"utilityNetwork",null),t([p()],m.prototype,"view",null),m=t([c("esri.widgets.UtilityNetworkValidateTopology.UtilityNetworkValidateTopologyViewModel")],m);const k=m;export{k as default};