Skip to content
import ElementExpressionInfo from "@arcgis/core/popup/ElementExpressionInfo.js";
Inheritance:
ElementExpressionInfoAccessor
Since
ArcGIS Maps SDK for JavaScript 4.22

Defines an Arcade expression used to create an ExpressionContent element in a PopupTemplate. The expression must evaluate to a dictionary, representing a TextContent, FieldsContent, or MediaContent popup element as defined in the Popup Element web map specification.

This expression may access data values from the feature, its layer, or other layers in the map or datastore with the $feature, $layer, $map, and $datastore profile variables. See the Popup Element Arcade Profile specification for more information and examples of valid return dictionaries.

See also
Example
// Creates an ordered list in a cluster's popup
// listing the type of fuel used to generate power in the cluster
// ordered by the total number of power plants for each fuel type.
layer.featureReduction = {
type: "cluster",
popupTemplate: {
title: "Power plant summary",
content: [{
type: "expression",
expressionInfo: {
expression: `
// Specify which fields are required by the expression
Expects($aggregatedFeatures, "fuel1", "capacity_mw")
// Query stats for each fuel type
var statsFS = GroupBy($aggregatedFeatures,
[
{ name: 'Type', expression: 'fuel1'},
],
[ // statistics to return for each unique category
{ name: 'capacity_total', expression: 'capacity_mw', statistic: 'SUM' },
{ name: 'capacity_max', expression: 'capacity_mw', statistic: 'MAX' },
{ name: 'num_features', expression: '1', statistic: 'COUNT' }
]
);
// create an list in descending order based
// on the number of plants for each fuel type.
var ordered = OrderBy(statsFs, 'num_features DESC');
var list = "<ol>";
for (var group in ordered){
list += \`<li>\${group.Type} (\${Text(group.num_features, "#,###")})</li>\`
}
list += "</ol>";
// The return dictionary must return a text, fields, or media
// popup element as defined in the web map specification
return {
type: "text",
text: list
}
`,
title: "List of fuel types"
}
}]
}
};

Constructors

Constructor

Constructor
Parameters
ParameterTypeDescriptionRequired
properties
See the properties table for a list of all the properties that may be passed into the constructor.

Properties

Any properties can be set, retrieved or listened to. See the Watch for changes topic.
PropertyTypeClass
declaredClass
readonly inherited
returnType
readonly
"dictionary"

declaredClass

readonlyinherited Property
Type
string
Inherited from: Accessor

The name of the class. The declared class name is formatted as esri.folder.className.

expression

Property
Type
string

The Arcade expression evaluating to a dictionary. The dictionary must represent either a TextContent, FieldsContent, or a MediaContent popup content element as defined in the Popup Element web map specification.

This expression may access data values from the feature, its layer, or other layers in the map or datastore with the $feature, $layer, $map, and $datastore profile variables. See the Popup Element Arcade Profile specification for more information and examples of valid return dictionaries.

See also
Example
// Creates an column chart where each category/value
// is an aggregate of two or more fields
layer.popupTemplate = {
title: "Educational Attainment",
content: [{
type: "expression",
expressionInfo: {
expression: `
// Create a dictionary of attributes representing the values
// to display in the table
var attributes = {
"No School": $feature.no_school + $feature.some_primary,
"Primary": $feature.primary_complete + $feature.some_secondary,
"Secondary": $feature.secondary_complete + $feature.some_highSchool,
"High School": $feature.highSchool_diploma + $feature.highSchool_ged + $feature.some_college,
"College/University": $feature.associates + $feature.bachelors + $feature.masters + $feature.doctorate + $feature.professional;
};
var fieldInfos = [];
// Create an array representing the attribute names (or keys)
// to include in the chart
for (var k in attributes){
Push(fieldInfos, {
fieldName: k
});
}
// Returns a dictionary providing the information
// required by the popup to render a table of key value pairs
return {
type: "media",
attributes: attributes,
// The list of attribute names (keys) to include in the table
fieldInfos: fieldInfos
};
`,
title: "Educational Attainment"
}
}]
};

returnType

readonly Property
Type
"dictionary"

The return type of the expression. Content element expressions always return dictionaries.

title

Property
Type
string | null | undefined

The title used to describe the popup element returned by the expression.

Methods

MethodSignatureClass
fromJSON
inherited static
fromJSON(json: any): any
clone(): ElementExpressionInfo
toJSON
inherited
toJSON(): any

fromJSON

inheritedstatic Method
Signature
fromJSON (json: any): any
Inherited from: JSONSupportMixin

Creates a new instance of this class and initializes it with values from a JSON object generated from an ArcGIS product. The object passed into the input json parameter often comes from a response to a query operation in the REST API or a toJSON() method from another ArcGIS product. See the Using fromJSON() topic in the Guide for details and examples of when and how to use this function.

Parameters
ParameterTypeDescriptionRequired
json
any

A JSON representation of the instance in the ArcGIS format. See the ArcGIS REST API documentation for examples of the structure of various input JSON objects.

Returns
any

Returns a new instance of this class.

clone

Method
Signature
clone (): ElementExpressionInfo

Creates a deep clone of the ElementExpressionInfo instance.

Returns
ElementExpressionInfo

A deep clone of the ElementExpressionInfo instance.

toJSON

inherited Method
Signature
toJSON (): any
Inherited from: JSONSupportMixin

Converts an instance of this class to its ArcGIS portal JSON representation. See the Using fromJSON() guide topic for more information.

Returns
any

The ArcGIS portal JSON representation of an instance of this class.