// All material copyright Esri, All Rights Reserved, unless otherwise specified. // See https://js.arcgis.com/4.30/esri/copyright.txt for details. //>>built define("require ../chunks/tslib.es6 ../Graphic ../core/accessorSupport/decorators/property ../core/has ../core/Logger ../core/RandomLCG ../core/accessorSupport/decorators/subclass ../layers/FeatureLayer ../layers/support/featureQueryAll ./Network ./RulesTable ./support/NamedTraceConfiguration ./support/NetworkSystemLayers ./support/TerminalConfiguration ./support/TraceJobInfo ./support/typeUtils ../rest/support/Query".split(" "),function(m,q,A,r,k,Q,R,B,C,D,E,F,G,H,y,I,z,J){async function K(a){const d= new J({where:"1\x3d1",outFields:["*"]});return(await D.queryAllJSON(a,d)).features}const u=a=>Object.freeze(Object.defineProperty({__proto__:null,default:a},Symbol.toStringTag,{value:"Module"}));k=class extends E{constructor(a){super(a);this.sharedNamedTraceConfigurations=[];this.type="utility"}get serviceTerritoryFeatureLayerId(){return this.dataElement?.serviceTerritoryFeatureLayerId??null}get networkSystemLayers(){return new H({rulesTableId:this.sourceJSON?.systemLayers.rulesTableId,rulesTableUrl:this.sourceJSON? `${this.featureServiceUrl}/${this.sourceJSON?.systemLayers.rulesTableId}`:null,subnetworksTableId:this.sourceJSON?.systemLayers.subnetworksTableId,subnetworksTableUrl:this.sourceJSON?`${this.featureServiceUrl}/${this.sourceJSON?.systemLayers.subnetworksTableId}`:null,dirtyAreasLayerId:this.sourceJSON?.systemLayers.dirtyAreasLayerId,dirtyAreasLayerUrl:this.sourceJSON?`${this.featureServiceUrl}/${this.sourceJSON?.systemLayers.dirtyAreasLayerId}`:null,associationsTableId:this.sourceJSON?.systemLayers.associationsTableId, associationsTableUrl:this.sourceJSON?`${this.featureServiceUrl}/${this.sourceJSON?.systemLayers.associationsTableId}`:null})}get terminalConfigurations(){return this.dataElement?.terminalConfigurations.map(a=>y.fromJSON(a))||[]}get domainNetworkNames(){return this.dataElement?.domainNetworks.map(a=>a.domainNetworkName)||[]}get _utilityLayerList(){const a=new Set;this.dataElement?.domainNetworks?.map(d=>{d.edgeSources.map(e=>{a.add(e.layerId)});d.junctionSources.map(e=>{a.add(e.layerId)})});return a}async load(a){this.addResolvingPromise(super.load(a)); this.addResolvingPromise(this._loadNamedTraceConfigurationsFromNetwork(a));return this}getTerminalConfiguration(a){let d=null,e=null;var c=a.layer;let b=null;if("feature"===c?.type){if(b=c.layerId,null===b)return null}else if("subtype-sublayer"===c?.type){if(b=c?.parent?.layerId??null,null===b)return null}else return null;c=a.attributes;if(null==c)return null;for(const g of Object.keys(c))"ASSETGROUP"===g.toUpperCase()&&(d=a.getAttribute(g)),"ASSETTYPE"===g.toUpperCase()&&(e=a.getAttribute(g));if(!this.dataElement)return null; let f=null;a=this.dataElement.domainNetworks;for(var n of a)if(a=n.junctionSources?.find(g=>g.layerId===b))if(a=a.assetGroups?.find(g=>g.assetGroupCode===d))if(a=a.assetTypes?.find(g=>g.assetTypeCode===e)){f=a.terminalConfigurationId;break}return null!=f?(n=this.dataElement.terminalConfigurations?.find(g=>g.terminalConfigurationId===f))?y.fromJSON(n):null:null}getTierNames(a){return this.dataElement?.domainNetworks.find(d=>d.domainNetworkName===a)?.tiers.map(d=>d.name)||[]}async getRulesTable(){this._sharedRulesTable|| (this._sharedRulesTable=this._createRulesTable());return await this._sharedRulesTable}isUtilityLayer(a){return this._utilityLayerList.has(a.layerId)&&(a.url?.startsWith(this.featureServiceUrl)??!1)}async queryAssociations(a){const [{queryAssociations:d},{default:e}]=await Promise.all([new Promise((c,b)=>m(["../rest/networks/queryAssociations"],c,b)),new Promise((c,b)=>m(["../rest/networks/support/QueryAssociationsParameters"],f=>c(u(f)),b))]);a=e.from(a);a.gdbVersion=this.gdbVersion;a.moment=this.historicMoment; return(await d(this.networkServiceUrl,a)).associations}async synthesizeAssociationGeometries(a){const [{synthesizeAssociationGeometries:d},{default:e}]=await Promise.all([new Promise((c,b)=>m(["../rest/networks/synthesizeAssociationGeometries"],c,b)),new Promise((c,b)=>m(["../rest/networks/support/SynthesizeAssociationGeometriesParameters"],f=>c(u(f)),b))]);a=e.from(a);a.gdbVersion=this.gdbVersion;a.moment=this.historicMoment;return d(this.networkServiceUrl,a)}async trace(a){const [{trace:d},{default:e}]= await Promise.all([new Promise((c,b)=>m(["../rest/networks/trace"],c,b)),new Promise((c,b)=>m(["../rest/networks/support/TraceParameters"],f=>c(u(f)),b))]);a=e.from(a);a.gdbVersion=this.gdbVersion;a.moment=this.historicMoment;return d(this.networkServiceUrl,a)}async submitTraceJob(a){const [{submitTraceJob:d},{default:e}]=await Promise.all([new Promise((c,b)=>m(["../rest/networks/trace"],c,b)),new Promise((c,b)=>m(["../rest/networks/support/TraceParameters"],f=>c(u(f)),b))]);a=e.from(a);a.gdbVersion= this.gdbVersion;a.moment=this.historicMoment;a=await d(this.networkServiceUrl,a);return new I({statusUrl:a})}async canAddAssociation(a){const d=await this.getRulesTable();if(!d)return!1;await d.load();const e=(b,f)=>b?1===b.terminalId?f?.terminalId?f?.terminalId===b.terminalId:!0:b.terminalId===f?.terminalId:!f?.terminalId,c=(b,f)=>b.fromNetworkSource?.sourceId===f.fromNetworkElement?.networkSourceId&&b.toNetworkSource?.sourceId===f.toNetworkElement?.networkSourceId&&b.fromAssetGroup?.assetGroupCode=== f.fromNetworkElement?.assetGroupCode&&b.fromAssetType?.assetTypeCode===f.fromNetworkElement?.assetTypeCode&&b.toAssetGroup?.assetGroupCode===f.toNetworkElement?.assetGroupCode&&b.toAssetType?.assetTypeCode===f.toNetworkElement?.assetTypeCode&&e(b.fromTerminal,f.fromNetworkElement)&&e(b.toTerminal,f.toNetworkElement);return"containment"===a.associationType?d.rulesCategorized.containment.some(b=>c(b,a)):"attachment"===a.associationType?d.rulesCategorized.attachment.some(b=>c(b,a)):d.rulesCategorized.connectivity.some(b=> b.viaNetworkSource?b.fromNetworkSource?.sourceId===a.fromNetworkElement?.networkSourceId&&b.viaNetworkSource?.sourceId===a.toNetworkElement?.networkSourceId&&b.fromAssetGroup?.assetGroupCode===a.fromNetworkElement?.assetGroupCode&&b.fromAssetType?.assetTypeCode===a.fromNetworkElement?.assetTypeCode&&b.viaAssetGroup?.assetGroupCode===a.toNetworkElement?.assetGroupCode&&b.viaAssetType?.assetTypeCode===a.toNetworkElement?.assetTypeCode&&e(b.fromTerminal,a.fromNetworkElement)&&e(b.viaTerminal,a.toNetworkElement)|| b.viaNetworkSource?.sourceId===a.fromNetworkElement?.networkSourceId&&b.toNetworkSource?.sourceId===a.toNetworkElement?.networkSourceId&&b.viaAssetGroup?.assetGroupCode===a.fromNetworkElement?.assetGroupCode&&b.viaAssetType?.assetTypeCode===a.fromNetworkElement?.assetTypeCode&&b.toAssetGroup?.assetGroupCode===a.toNetworkElement?.assetGroupCode&&b.toAssetType?.assetTypeCode===a.toNetworkElement?.assetTypeCode&&e(b.viaTerminal,a.fromNetworkElement)&&e(b.toTerminal,a.toNetworkElement):c(b,a))}generateAddAssociations(a){return{addFeatures:a.map(d=> new A({attributes:{fromnetworksourceid:d.fromNetworkElement?.networkSourceId,fromglobalid:d.fromNetworkElement?.globalId,fromterminalid:d.fromNetworkElement?.terminalId,tonetworksourceid:d.toNetworkElement?.networkSourceId,toglobalid:d.toNetworkElement?.globalId,toterminalid:d.toNetworkElement?.terminalId,associationtype:z.AssociationTypeEnum[d.associationType],iscontentvisible:d.isContentVisible?1:0,percentalong:d.percentAlong,globalid:d.globalId}})),id:this.networkSystemLayers.associationsTableId, identifierFields:{globalIdField:"globalid",objectIdField:"objectid"}}}generateDeleteAssociations(a){return{deleteFeatures:a.map(d=>({globalId:d.globalId})),id:this.networkSystemLayers.associationsTableId,identifierFields:{globalIdField:"globalid",objectIdField:"objectid"}}}async _loadNamedTraceConfigurationsFromNetwork(a){if(0!==this.sharedNamedTraceConfigurations?.length){var d=this.sharedNamedTraceConfigurations.map(e=>e.globalId);a=await this.queryNamedTraceConfigurations({globalIds:d},a);for(const e of this.sharedNamedTraceConfigurations)if(d= a?.find(c=>c.globalId===e.globalId))d=d.write({},{origin:"service"}),e.read(d,{origin:"service"})}}async _createRulesTable(){const a=new C({url:this.networkSystemLayers.rulesTableUrl});await a.load();var d=this.dataElement?.domainNetworks;if(!d)return null;const e=d.flatMap(c=>[...(c.edgeSources||[]),...(c.junctionSources||[])]);d=(await K(a)).map(c=>this._hydrateRuleInfo(a,e,c));return new F({layer:a,rules:d})}_hydrateRuleInfo(a,d,e){var c=a.fieldsIndex;a=c.get("RULETYPE");var b=c.get("CREATIONDATE"), f=c.get("FROMNETWORKSOURCEID"),n=c.get("FROMASSETGROUP"),g=c.get("FROMASSETTYPE"),v=c.get("FROMTERMINALID"),x=c.get("TONETWORKSOURCEID"),l=c.get("TOASSETGROUP");const L=c.get("TOASSETTYPE"),M=c.get("TOTERMINALID"),N=c.get("VIANETWORKSOURCEID"),O=c.get("VIAASSETGROUP"),P=c.get("VIAASSETTYPE");c=c.get("VIATERMINALID");a=e.attributes[a.name];b=new Date(e.attributes[b.name]);e=[{networkSourceId:e.attributes[f.name],assetGroupId:e.attributes[n.name],assetTypeId:e.attributes[g.name],terminalId:e.attributes[v.name]}, {networkSourceId:e.attributes[x.name],assetGroupId:e.attributes[l.name],assetTypeId:e.attributes[L.name],terminalId:e.attributes[M.name]},{networkSourceId:e.attributes[N.name],assetGroupId:e.attributes[O.name],assetTypeId:e.attributes[P.name],terminalId:e.attributes[c.name]}];let p;(function(h){h[h.from=0]="from";h[h.to=1]="to";h[h.via=2]="via"})(p||={});f={ruleType:a,creationDate:b};for(const h of[p.from,p.to,p.via]){if(a!==z.RuleType.RTEdgeJunctionEdgeConnectivity&&h===p.via)continue;const w=e[h]; n=d.find(t=>t.sourceId===w.networkSourceId);g=n?.assetGroups.find(t=>t.assetGroupCode===w.assetGroupId);v=g?.assetTypes.find(t=>t.assetTypeCode===w.assetTypeId);x=this._getTerminal(v,w);l="";switch(h){case p.from:l="from";break;case p.to:l="to";break;case p.via:l="via"}f[`${l}NetworkSource`]=n;f[`${l}AssetGroup`]=g;f[`${l}AssetType`]=v;f[`${l}Terminal`]=x?.toJSON()}return f}_getTerminal(a,d){const e=a?.terminalConfigurationId;return this.terminalConfigurations?.find(c=>c.id===e)?.terminals?.find(c=> c.id===d.terminalId)??null}};q.__decorate([r.property({type:[G],json:{origins:{"web-map":{read:{source:"traceConfigurations"},write:{target:"traceConfigurations"}},service:{read:{source:"traceConfigurations"}}},read:!1}})],k.prototype,"sharedNamedTraceConfigurations",void 0);q.__decorate([r.property({type:["utility"],readOnly:!0,json:{read:!1,write:!1}})],k.prototype,"type",void 0);q.__decorate([r.property({readOnly:!0})],k.prototype,"serviceTerritoryFeatureLayerId",null);q.__decorate([r.property({readOnly:!0})], k.prototype,"networkSystemLayers",null);q.__decorate([r.property({readOnly:!0})],k.prototype,"terminalConfigurations",null);q.__decorate([r.property({readOnly:!0})],k.prototype,"domainNetworkNames",null);return k=q.__decorate([B.subclass("esri.networks.UtilityNetwork")],k)});