@arcgis/core
Version:
ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API
93 lines (84 loc) • 4.5 kB
TypeScript
/**
* Contains convenience methods for getting Arcade expressions defined on a layer.
*
* @since 4.25
*/
import type CSVLayer from "../CSVLayer.js";
import type FeatureLayer from "../FeatureLayer.js";
import type GeoJSONLayer from "../GeoJSONLayer.js";
import type ImageryLayer from "../ImageryLayer.js";
import type ImageryTileLayer from "../ImageryTileLayer.js";
import type OGCFeatureLayer from "../OGCFeatureLayer.js";
import type OrientedImageryLayer from "../OrientedImageryLayer.js";
import type SceneLayer from "../SceneLayer.js";
import type StreamLayer from "../StreamLayer.js";
import type VoxelLayer from "../VoxelLayer.js";
import type WFSLayer from "../WFSLayer.js";
import type CatalogFootprintLayer from "../catalog/CatalogFootprintLayer.js";
import type KnowledgeGraphSublayer from "../knowledgeGraph/KnowledgeGraphSublayer.js";
import type Sublayer from "./Sublayer.js";
import type { ProfileName } from "../../arcade.js";
/**
* Returns all Arcade expressions defined on a given layer and provides metadata describing the context for which each expression was authored.
*
*
* > [!WARNING]
* >
* > **Known Limitations**
* >
* > Expressions set in the following places will not be returned from this method.
* >
* > - [DictionaryRenderer](https://developers.arcgis.com/javascript/latest/references/core/renderers/DictionaryRenderer/)
* > - [CIMSymbol](https://developers.arcgis.com/javascript/latest/references/core/symbols/CIMSymbol/)
*
* @param layer - The layer from which to get all Arcade expressions.
* @returns Resolves to an array of objects containing all the Arcade
* expressions defined on the input layer along with metadata describing the context in which each expression was defined.
*/
export function getExpressionsFromLayer(layer: LayerWithExpression): ExpressionInfo[];
/**
* Represents the result of the [getExpressionsFromLayer()](https://developers.arcgis.com/javascript/latest/references/core/layers/support/arcadeUtils/#getExpressionsFromLayer) method. Contains
* an Arcade expression, along with metadata about the context in which the expression was defined.
*/
export interface ExpressionInfo {
/** An Arcade expression defined on a layer. */
expression: string;
/** The name of the expression used when referencing it in popup and form templates. */
name?: string | null;
/** The expression's title, describing it in the legend and other UI elements. */
title?: string | null;
/** Information about the profile, or environment, where the expression was defined. */
profileInfo: ProfileInfo;
}
export interface ProfileInfo {
/**
* Indicates
* which [profile](https://developers.arcgis.com/arcade/profiles/) is used to execute the expression.
*/
name: ProfileName;
/**
* Describes the
* context (i.e. the API class) where the expression was defined.
*/
context: ProfileContext;
/**
* Indicates the data source used to hydrate
* the expression's profile variables.
*/
source?: "layer" | "feature-reduction";
/**
* The return
* type of the expression. This is typically set in popup expressions for formatting purposes.
*/
returnType?: ProfileReturnType;
}
export type ProfileReturnType = "boolean" | "date" | "number" | "string" | "dictionary";
export type LayerWithExpression = CatalogFootprintLayer | CSVLayer | FeatureLayer | GeoJSONLayer | ImageryLayer | ImageryTileLayer | KnowledgeGraphSublayer | OGCFeatureLayer | OrientedImageryLayer | SceneLayer | StreamLayer | Sublayer | VoxelLayer | WFSLayer;
/** Describes the context for which an Arcade expression was defined. */
export type ProfileContext = VisualizationProfileContext | PopupProfileContext | FeatureZProfileContext | "label-class" | "form-template" | "aggregate-field";
/** Describes the context for which an Arcade expression was defined using the visualization profile. */
export type VisualizationProfileContext = "unique-value-renderer" | "class-breaks-renderer" | "dot-density-renderer" | "heatmap-renderer" | "pie-chart-renderer" | "color-variable" | "size-variable" | "opacity-variable" | "rotation-variable";
/** Describes the context for which an Arcade expression was defined using the popup or popup element profile. */
export type PopupProfileContext = "popup-template" | "popup-expression-content";
/** Describes the context for which an Arcade expression was defined using the Feature Z profile. */
export type FeatureZProfileContext = "order-by" | "elevation-info";