import type Extent from "../geometry/Extent.js"; import type SpatialReference from "../geometry/SpatialReference.js"; import type UtilityNetwork from "./UtilityNetwork.js"; import type NamedTraceConfiguration from "./support/NamedTraceConfiguration.js"; import type NetworkSystemLayers from "./support/NetworkSystemLayers.js"; import type TopologyValidationJobInfo from "./support/TopologyValidationJobInfo.js"; import type PortalItem from "../portal/PortalItem.js"; import type NetworkElement from "../rest/networks/support/NetworkElement.js"; import type ValidateNetworkTopologyResult from "../rest/networks/support/ValidateNetworkTopologyResult.js"; import type { Loadable, LoadableMixinProperties } from "../core/Loadable.js"; import type { MultiOriginJSONSupportMixin } from "../core/MultiOriginJSONSupport.js"; import type { UrlObject } from "../core/urlUtils.js"; import type { NetworkDataElementJSON } from "./support/jsonTypes.js"; import type { LayerInfo } from "./support/utils.js"; import type { RequestOptions } from "../request/types.js"; import type { QueryNamedTraceConfigurationsParametersProperties } from "../rest/networks/support/QueryNamedTraceConfigurationsParameters.js"; import type { ValidateNetworkTopologyParametersProperties } from "../rest/networks/support/ValidateNetworkTopologyParameters.js"; import type { ExtentProperties } from "../geometry/Extent.js"; import type { SpatialReferenceProperties } from "../geometry/SpatialReference.js"; export interface NetworkProperties extends LoadableMixinProperties, Partial> { /** The full extent of the network, defined from the service territory used to create the network. */ fullExtent?: ExtentProperties | null; /** * The historic moment to query. If historicMoment is not specified, the query * will apply to the current features. */ historicMoment?: (Date | number | string) | null; /** The spatial reference of the network, defined at the creation of the network, usually from the service territory class. */ spatialReference?: SpatialReferenceProperties; } /** * ValidateTopologyProps represents the parameters for validating a network topology. * * @since 4.27 * @example * const validationResult = await network.validateTopology({ * validateArea: extent, * gdbVersion: "sde.DEFAULT", * validationType: "rebuild", * validationSet: [ * { * sourceId: 4134325151, * globalIds: ["{7865BAA6-ED9C-4346-9F72-894A49E10C73}"] * } * ] * }); */ export type ValidateTopologyProperties = Pick; /** * Class defining high level properties that describes utility networks and trace networks. * * @since 4.20 * @see [UtilityNetwork](https://developers.arcgis.com/javascript/latest/references/core/networks/UtilityNetwork/) */ export default class Network extends NetworkSuperclass { /** * Creates a new network instance from an * ArcGIS Online or ArcGIS Enterprise * [portal item](https://developers.arcgis.com/javascript/latest/references/core/portal/PortalItem/). * * > [!WARNING] * > * > **Known Limitations** * > * > This method does not populate the [UtilityNetwork.sharedNamedTraceConfigurations](https://developers.arcgis.com/javascript/latest/references/core/networks/UtilityNetwork/#sharedNamedTraceConfigurations) for a [UtilityNetwork](https://developers.arcgis.com/javascript/latest/references/core/networks/UtilityNetwork/) instance. * * @param params - The parameters for loading the portal item. * @returns Returns a promise which resolves to the new utility network instance. * @example * // Create a utility network from a specified portal item that contains a utility network feature service * const item = new PortalItem({ * id: "77c7ae75eb3e4e08a7ad98cb37fefe88", * }); * * const utilityNetwork = await UtilityNetwork.fromPortalItem(item); * * await utilityNetwork.load(); * console.log("utilityNetwork loaded? ", utilityNetwork.loadStatus); */ static fromPortalItem(params: NetworkFromPortalItemParameters): Promise; constructor(properties?: NetworkProperties); /** The full network definition, accessible only when the network is loaded. */ accessor dataElement: NetworkDataElementJSON | null | undefined; /** The physical dataset name of the network as defined in the backend database. Accessible only when the network is loaded. */ get datasetName(): string | null; /** * Returns the root feature service url which this network is part of. * * @example `https://utilitynetwork.esri.com/server/rest/services/NapervilleElectric/FeatureServer/` */ get featureServiceUrl(): string; /** The full extent of the network, defined from the service territory used to create the network. */ get fullExtent(): Extent | null | undefined; set fullExtent(value: ExtentProperties | null | undefined); /** * The version of the geodatabase of the feature service data. Read * the [Overview of versioning](https://pro.arcgis.com/en/pro-app/latest/help/data/geodatabases/overview/overview-of-versioning-in-arcgis-pro.htm) topic for more details * about this capability. */ accessor gdbVersion: string | null | undefined; /** * The historic moment to query. If historicMoment is not specified, the query * will apply to the current features. */ get historicMoment(): Date | null | undefined; set historicMoment(value: (Date | number | string) | null | undefined); /** Random unique id (UUID) to identify a network as defined in the webmap spec. Generated during sharing of the webmap. */ accessor id: string; /** The layer id of the network. */ get layerId(): number; /** * The full url to the network layer id as defined in the webmap spec. * e.g. `https://utilitynetwork.esri.com/server/rest/services/NapervilleElectric/FeatureServer/17` (where 17 is the layer id of the network) */ accessor layerUrl: string; /** * Indicates whether the network instance has loaded. When `true`, * all the properties of the object can be accessed. * * @default false */ get loaded(): boolean; /** * Returns the url of network server. * * @example `https://utilitynetwork.esri.com/server/rest/services/NapervilleElectric/UtilityNetworkServer/` */ get networkServiceUrl(): string; /** * Contains the url and IDs of the utility network rules, subnetworks, and dirty areas tables or layers. * * @example * // Print out the dirty areas layer url in the utility network * view.when(async () => { * // Check if the webmap contains utility networks * if(webmap?.utilityNetworks?.length > 0) { * // Assigns the utility network at index 0 * utilityNetwork = webmap.utilityNetworks.at(0); * * // Load the utility network * await utilityNetwork.load(); * * // Print the dirty areas layer url and id * console.log(`Dirty areas layer id: ${utilityNetwork.networkSystemLayers.dirtyAreasLayerId}`); * console.log(`Dirty areas layer url: ${utilityNetwork.networkSystemLayers.dirtyAreasLayerUrl}`); * } * }); */ get networkSystemLayers(): NetworkSystemLayers | null; /** The portal user owner of the network. This portal user can perform administrative actions against the network. */ get owner(): string | null; /** Converts url to a url object */ get parsedUrl(): UrlObject; /** * The schema version of the network. Each version of the network introduces new features and capabilities. * e.g. A utility network created with ArcGIS Pro 2.8 will have a schema generation version 5. While a UN created with ArcGIS Pro 2.6 will be version 4. * * @see [Learn more about network schema versions](https://pro.arcgis.com/en/pro-app/latest/help/data/utility-network/utility-network-dataset-administration.htm) */ get schemaGeneration(): number | null; accessor sourceJSON: any; /** The spatial reference of the network, defined at the creation of the network, usually from the service territory class. */ get spatialReference(): SpatialReference; set spatialReference(value: SpatialReferenceProperties); /** The name of the network as defined in the webmap spec. Represents the layer name of the network layer defined while sharing the webmap. */ accessor title: string; /** * The type of the dataset. Returns "utility" if the object represents a utility network or "trace" in case the network is a trace network. * * @default "utility" */ get type(): "utility" | "trace"; /** * The network consists of sources (classes) and each source has a unique Id. * These source Ids are used to perform traversal in the network topology. * The trace end points are not aware of layers and only returns sources of results. * This method returns the layerId for given a source Id. Used as a helper method to process trace results. * * @param sourceId - The id of the source. * @returns The layer id. */ getLayerIdBySourceId(sourceId: number): number | null | undefined; /** * Groups network elements by their layerId. * Returns a list containing the objectIds within each layer. * * @param elements - Array of network elements. * @returns Array of objects containing layerId and objectIds. */ getObjectIdsFromElements(elements: NetworkElement[]): LayerInfo[]; /** * Returns the layer ID for a given network source ID. * * @param layerId - The id of the layer. * @returns The source corresponding network source ID, if one exists. */ getSourceIdByLayerId(layerId: number): number | null | undefined; /** * Triggers the loading of the network instance. * * Fully loads the network definition and all related objects (e.g. trace configurations) * * @returns Resolves when the Network is [loaded](https://developers.arcgis.com/javascript/latest/references/core/networks/Network/#loaded). */ load(): Promise; /** * Named trace configurations allow you to add and store complex traces in a network that can be shared across an organization through web maps and consumed by web and field applications. * This method returns a list of [NamedTraceConfiguration](https://developers.arcgis.com/javascript/latest/references/core/networks/support/NamedTraceConfiguration/) objects that meet specific search conditions. Used to find existing [named trace configurations](https://pro.arcgis.com/en/pro-app/2.8/help/data/trace-network/about-trace-configurations.htm) in a utility network. * * @param query - The query parameters that are used to determine which named trace configurations will be returned. * @param options - The request options specified by the user in the data request. See [RequestOptions](https://developers.arcgis.com/javascript/latest/references/core/request/types/#RequestOptions) for available properties. * @returns Resolves with an array of named trace configurations filtered based on the query parameters. * @since 4.25 * @example * // Initialize the query object with global IDs of the named trace configurations to query. * const query = { * globalIds: ["5dbb5a13-ab2f-452d-bfcb-6f98154ccb9d", "cf568e46-f200-486c-adb1-d008a3da0ed1"], * } * * // Query the utility network named trace configurations * // and filter the results by the query object. * const namedTraceConfigurations = await utilityNetwork.queryNamedTraceConfigurations(query); * * // Print the named trace configurations to the console. * console.log(namedTraceConfigurations) * @example * // Calling this method without parameters returns all named trace configurations in the utility network. * const namedTraceConfigurations = await utilityNetwork.queryNamedTraceConfigurations({}); * * // Print all the named trace configurations to the console. * console.log(namedTraceConfigurations); */ queryNamedTraceConfigurations(query: QueryNamedTraceConfigurationsParametersProperties, options?: RequestOptions | null | undefined): Promise; /** * Whenever the network is edited or modified, the network and its features become out of date in the [network topology](https://pro.arcgis.com/en/pro-app/latest/help/data/utility-network/about-network-topology.htm). Validating the network topology maintains consistency and up-to-date content between the feature editing space and network topology space. * Validating a network topology may include all or a subset of the [dirty areas layer](https://developers.arcgis.com/javascript/latest/references/core/networks/Network/#networkSystemLayers) present in the network. * * @param props - The parameters that are used to validate the network topology. * @param options - The request options specified by the user in the data request. See [RequestOptions](https://developers.arcgis.com/javascript/latest/references/core/request/types/#RequestOptions) for available properties. * @returns Resolves with the results returned from validating network topology. * @since 4.26 * @example * const extent = new Extent({ * xmin: 470789.0888, * ymin: 3597733.2051, * xmax: 531454.2759999996, * ymax: 3639864.802100001, * spatialReference: { wkid: 26911, latestWkid: 26911 } * }); * * const validationResult = await network.submitTopologyValidationJob({ * validateArea: extent, * validationType: "rebuild", * validationSet: [ * { * sourceId: 4134325151, * globalIds: ["{7865BAA6-ED9C-4346-9F72-894A49E10C73}"] * } * ] * }); */ submitTopologyValidationJob(props: ValidateTopologyProperties, options?: RequestOptions | null | undefined): Promise; /** * Whenever the network is edited or modified, the network and its features become out of date in the [network topology](https://pro.arcgis.com/en/pro-app/latest/help/data/utility-network/about-network-topology.htm). Validating the network topology maintains consistency and up-to-date content between the feature editing space and network topology space. * Validating a network topology may include all or a subset of the [dirty areas layer](https://developers.arcgis.com/javascript/latest/references/core/networks/Network/#networkSystemLayers) present in the network. * * @param props - The parameters that are used to validate the network topology. * @param options - The request options specified by the user in the data request. See [RequestOptions](https://developers.arcgis.com/javascript/latest/references/core/request/types/#RequestOptions) for available properties. * @returns Resolves with the results returned from validating network topology. * @since 4.26 * @example * const extent = new Extent({ * xmin: 470789.0888, * ymin: 3597733.2051, * xmax: 531454.2759999996, * ymax: 3639864.802100001, * spatialReference: { wkid: 26911, latestWkid: 26911 } * }); * * const result = await network.validateTopology({ * validateArea: extent * }); */ validateTopology(props: ValidateTopologyProperties, options?: RequestOptions | null | undefined): Promise; } declare const NetworkSuperclass: typeof Loadable & typeof MultiOriginJSONSupportMixin export interface NetworkFromPortalItemParameters { /** * The object representing an ArcGIS * Online or ArcGIS Enterprise portal item from which to load the network. */ portalItem: PortalItem; }