@arcgis/core
Version:
ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API
6 lines (5 loc) • 5.84 kB
JavaScript
/*
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
See https://js.arcgis.com/4.33/esri/copyright.txt for details.
*/
import{_ as t}from"../../chunks/tslib.es6.js";import"../../intl.js";import i from"../../core/Accessor.js";import e from"../../core/Collection.js";import r from"../../core/Error.js";import s from"../../core/Logger.js";import{watch as o,on as a,initial as n}from"../../core/reactiveUtils.js";import{property as l}from"../../core/accessorSupport/decorators/property.js";import"../../core/has.js";import"../../core/RandomLCG.js";import{subclass as d}from"../../core/accessorSupport/decorators/subclass.js";import{UpdatingHandles as c}from"../../core/support/UpdatingHandles.js";import{isFeatureLayer as h,getOwningPortalUrl as p}from"../../layers/support/layerUtils.js";import y from"../../portal/Portal.js";import{hasUserTypeExtension as u}from"../../portal/support/utils.js";import{onLocaleChange as w}from"../../intl/locale.js";import{fetchMessageBundle as g}from"../../intl/messages.js";const v={noDirtyAreasInExtent:-2147208940,cannotAcquireVersionLock_v10:-2147217146,cannotAcquireVersionLock_v11:-2147220947};let m=class extends i{constructor(t){super(t),this._activeOperationDidSucceed=!1,this._initialValidationsFinished=!1,this._dirtyAreasLayer=null,this._serverVersion=null,this._updatingHandles=new c,this._validConstructProperties=!1,this.executionError="",this.extentToValidate="current",this.loadErrors=new e}initialize(){const t=async()=>{this.messages||(this.messages=await g("esri/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology"))};t().then((()=>{this.view||(this.view=null),this.utilityNetwork||(this.utilityNetwork=null),this.addHandles([o((()=>[this.view,this.utilityNetwork]),(async()=>{const{loadErrors:t,messages:{info:{noUtilityNetwork:i,noView:e}}}=this;this._initialValidationsFinished=!1,t.removeAll(),this._validConstructProperties=!0,this._dirtyAreasLayer=null,this._serverVersion=null,"utility"!==this.utilityNetwork?.type&&(this.loadErrors.push(i),s.getLogger(this).error(new r("utilityNetworkValidateTopology:missing-property",i)),this._validConstructProperties=!1),"2d"!==this.view?.type&&(this.loadErrors.push(e),s.getLogger(this).error(new r("utilityNetworkValidateTopology:missing-property",e)),this._validConstructProperties=!1),this._validConstructProperties&&(this.utilityNetwork.loaded||await this.utilityNetwork.load().catch((t=>{s.getLogger(this).error(t),this._validConstructProperties=!1})),await this._setDirtyAreasLayer()),this._validConstructProperties&&await this._validateNetworkExtension()}),n),a((()=>this.view?.map?.layers),"change",(async()=>{const{loadErrors:t,messages:{info:{noUtilityNetwork:i}}}=this,e=t.find((t=>t===i));this._initialValidationsFinished=!1,e||(t.removeAll(),await this._validateNetworkExtension(),await this._setDirtyAreasLayer()),this._initialValidationsFinished=!0})),w(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:i}},utilityNetwork:e,view:s}=this;if(!this.loadErrors.length){this._activeOperationDidSucceed=!1,this._set("executionError","");const o={gdbVersion:e?.gdbVersion,outSpatialReference:s.spatialReference?.clone()||null,validateArea:"current"===this.extentToValidate?s.extent.clone():e.fullExtent.clone()};this._updatingHandles.addPromise(e?.validateTopology(o).then((()=>{this._activeOperationDidSucceed=!0}),(e=>{let s="Error: "+e;if(e instanceof r&&e.details?.raw)switch(e.details.raw.extendedCode){case v.noDirtyAreasInExtent:s=i;break;case v.cannotAcquireVersionLock_v10:case v.cannotAcquireVersionLock_v11:s=t;break;default:s=e.details.message}this._set("executionError",s)})))}}async _setDirtyAreasLayer(){const{messages:{info:{noDirtyAreasLayer:t}}}=this,i=this.view?.map.allLayers.items.filter((t=>h(t))).find((t=>t.parsedUrl?.path===this.utilityNetwork?.networkSystemLayers.dirtyAreasLayerUrl));i?(this._dirtyAreasLayer=i,await this._dirtyAreasLayer.load(),this._serverVersion=this._dirtyAreasLayer.version??0,this._validConstructProperties=!0):(this.loadErrors.includes(t)||(this.loadErrors.push(t),s.getLogger(this).error(new r("utilityNetworkValidateTopology:missing-layer",t))),this._validConstructProperties=!1)}async _validateNetworkExtension(){const{messages:{info:{noAdvancedEditingUserTypeExtension:t,noUtilityNetworkServiceUserTypeExtension:i}}}=this,e=await p(this.utilityNetwork.layerUrl),o=new y({url:e});await o.load();const a=o.user?.username??"",n=Number(this._serverVersion)<=11.1?"utilityNetwork":"advediting";if(!await u(o,a,n)){const e=Number(this._serverVersion)<=11.1?i:t;this.loadErrors.push(e),s.getLogger(this).error(new r("utilityNetworkValidateTopology:no-user-type-extension",e)),this._validConstructProperties=!1}this._initialValidationsFinished=!0}};t([l()],m.prototype,"_initialValidationsFinished",void 0),t([l()],m.prototype,"_dirtyAreasLayer",void 0),t([l()],m.prototype,"_validConstructProperties",void 0),t([l({readOnly:!0})],m.prototype,"executionError",void 0),t([l()],m.prototype,"extentToValidate",void 0),t([l()],m.prototype,"loadErrors",void 0),t([l()],m.prototype,"messages",void 0),t([l({readOnly:!0})],m.prototype,"state",null),t([l()],m.prototype,"utilityNetwork",null),t([l()],m.prototype,"view",null),m=t([d("esri.widgets.UtilityNetworkValidateTopology.UtilityNetworkValidateTopologyViewModel")],m);const _=m;export{_ as default};