高级格式化

可以使用 Arcade 表达式对列表指示器元素进行高级格式化,以自定义数据点的渲染方式。 数据点可根据元素的配置方式表示要素或汇总统计数据(计数、平均值、最小值、最大值、总和或标准差)。 使用要素时,单个数据点代表单个要素。 使用统计数据时,每个数据点代表该统计数据的结果。 列表元素将要素数据点渲染为行项目,每行代表一个数据点。 指示器元素一次渲染一个数据点。

和属性表达式(用于图层的弹出窗口、样式和标注中)不同,将为每个元素创建一个表达式。 该表达式针对每个数据点执行,并返回该元素的系统定义的属性和用户定义的属性。 系统定义的属性是您将在元素中配置的设置,例如文本和背景颜色。 用户定义的属性由用户在表达式中定义,可以在配置元素时引用。

注:

web 地图中创作的属性表达式不会继续用于仪表盘元素。

下表汇总了将被从您的图层传入表达式的的数据:

变量名称类型说明

$datapoint

要素或字典

适用于指示器和列表

$reference

字典

适用于指示器

注:
编写 Arcade 表达式时,应谨记以下信息:
  • 在字典中的每个属性后添加逗号,最后一个属性除外。
  • 属性名称不得包含空格或特殊字符。

列表中的高级格式化

对于列表元素,可以通过启用高级格式化选项使用 Arcade 表达式。 选择使用高级格式化后,颜色输入与其他系统定义的属性将不可用。

为每个行项目执行的表达式将用于定义列表中各行的渲染方式。 此外,表达式也可用于创建能够在行项目模板中引用的新属性。

可以使用 Arcade 编辑器中的 $datapoint 全局变量来引用数据点属性。 下表提供了可以以字典形式从表达式返回的属性列表:

属性值类型说明

textColor

字符串

行项目的基本文本颜色

backgroundColor

字符串

行项目的背景颜色

separatorColor

字符串

行项目的底框颜色

selectionTextColor

字符串

选定项目时用于行项目文本的颜色

selectionColor

字符串

选定项目时使用的基本文本颜色

属性

字典

属性值对的字典

yourAttributeName

字符串、数值、日期、布尔值

可以使用 {expression/yourAttributeName} 语法在行项目模板中引用的属性

注:

不支持几何函数。

例如,如果您希望列表的背景颜色在值大于某个阈值时变为红色,则可以创建一个如下所示的变量:

var color = IIF($datapoint.[field]>[threshold], '#F3DED7','')

在此变量中,[field] 是您的值的字段,[threshold] 是您希望更改背景颜色时所使用的值 变量可用作属性值,如下例所示:

backgroundColor: color,

在背景颜色属性中使用此变量将为您提供一个类似于以下内容的表达式,其中当速度值大于 40 时,列表项的背景颜色将变为红色:

示例 Arcade 表达式

在列表中使用高级格式化

要在列表元素中使用格式化表达式,请执行以下操作:

  1. 在元素的配置中,单击列表选项卡。
  2. 高级格式化部分,单击启用

    注:
    启用高级格式化后,颜色输入将变得不可用,而是在表达式中进行设置。 如果在启用高级格式化前设置颜色,则它们会自动添加到您的表达式中。

  3. 在编辑器中创建格式化表达式。
  4. 提示:
    如果您需要任何关于 Arcade 函数的帮助,请单击函数旁的信息按钮以查看其他详细信息。
  5. 如果希望表达式按特定间隔执行,例如,如果表达式使用 Now() 函数、打开刷新脚本切换按钮和设置刷新间隔。
  6. 行项目模板中,使用语法 {expression/yourAttributeName} 输入任意新属性。

指示器中的高级格式化

对于指示器元素,可以通过启用高级格式化选项使用 Arcade 表达式。 选择启用高级格式化后,系统定义的属性(例如颜色选项和值格式化)将变得不可用,并且条件格式化将关闭。 表达式用于定义这些渲染属性和条件逻辑。 此外,表达式可以传递要在常规选项卡上的标题描述字段中引用的用户定义属性。

在指示器中包括参考值时,如果启用高级格式化,数据选项卡上将仅提供基于统计数据的参考类型。 如果您先前定义了固定值引用类型,它将与任何转换系数、文本和颜色格式化一起自动添加到表达式中。 在启用高级格式化之前完成的值格式化将被移除,并需要使用值模式在表达式中进行定义。

注:

Arcade 不支持上一个值。 如果在启用高级格式化前设置了上一个值引用类型,它将被转换为当前值。

可以使用 Arcade 编辑器中的 $datapoint 全局变量来引用数据点属性。 根据值类型是要素还是统计数据,$datapoint 将分别属于要素类型或字典类型。 如果已在数据选项卡上配置了引用统计数据,则 $reference 全局变量也将在编辑器中可用。

下表提供了可以以字典形式从表达式返回的属性列表:

属性值类型说明

textColor

字符串

指示器元素的基本文本颜色

backgroundColor

字符串

指示器元素的背景颜色

topText

字符串

显示为顶部文本

topTextColor

字符串

顶部文本的颜色

topTextOutlineColor

字符串

顶部文本轮廓的颜色

topTextMaxSize

字符串

最大顶部文本大小(超小 | 特小 | 小 | 中等 | 大 | 特大 | 超大)

middleText

字符串

显示为中间文本

middleTextColor

字符串

中间文本的颜色

middleTextOutlineColor

字符串

中间文本轮廓的颜色

middleTextMaxSize

字符串

最大顶部文本大小(超小 | 特小 | 小 | 中等 | 大 | 特大 | 超大)

bottomText

字符串

显示为底部文本

bottomTextColor

字符串

底部文本的颜色

bottomTextOutlineColor

字符串

底部文本轮廓的颜色

bottomTextMaxSize

字符串

最大顶部文本大小(超小 | 特小 | 小 | 中等 | 大 | 特大 | 超大)

iconName

字符串

为指示器定义的图标名称

iconAlign

字符串

图标放置在中间文本旁边(左 | 右)

iconColor

字符串

图标的填充颜色

iconOutlineColor

字符串

图标的轮廓颜色

noValue

布尔

标记为不显示值文本,而非显示指示器 (true | false)

属性

字典

属性值对的字典

yourAttributeName

字符串、数值、日期、布尔值

可以使用 {expression/yourAttributeName} 语法在标题描述字段中引用的属性

例如,如果您有一个指示器以一个测量单位显示一个值,但又希望以其下的另一个单位显示相同的值,则可以创建一个变量来转换现有的值。 通过显示摄氏平均温度的指示器,您可以创建一个华氏温度变量以在表达式中使用,还可以以华氏温度显示您的值。

var fahrenheit = Floor(($datapoint["avg_Temperature"]/5*9)+32)

然后,您可以将变量作为属性值包括在内,如下所示:

bottomText: fahrenheit,

在底部文本属性中使用此变量将为您提供一个如下所示的表达式,其中平均温度(以摄氏度为单位)显示在指示器的中间文本中,华氏温度值显示在底部文本中:

示例 Arcade 表达式

使用指示器中的高级格式化

要在指示器元素中使用格式化表达式,请执行以下操作:

  1. 在元素的配置菜单中,单击指示器选项卡。
  2. 高级格式化部分,单击启用
    注:
    启用高级格式化后,顶部、中间和底部文本字段即会变得不可用。 这些配置是在您的表达式中创建的。 如果在启用高级格式化前输入值,则它们会自动添加到您的表达式中。
  3. 在编辑器中创建格式化表达式。
  4. 提示:
    如果您需要任何关于 Arcade 函数的帮助,请单击函数旁的信息按钮以查看其他详细信息。
  5. 如果希望表达式按特定间隔执行,例如,如果表达式使用 Now() 函数、启用刷新脚本切换按钮和设置刷新间隔。
  6. 如果使用表达式创建了新属性,则可以使用语法 {expression/yourAttributeName} 在标题描述字段中进行引用。

颜色值

在表达式中包括颜色值时,必须将其作为字符串返回(用引号括起来)。 未经定义或无效的颜色值将自动使用默认值。 可接受的颜色值类型包括十六进制值、RGB、RGBA、HSL 和 HSLA。 以下是一些示例以及受支持的语法:

十六进制颜色

  • #090
  • #009900
  • #090a
  • #009900aa

RGB 和 RGBA

  • rgb(34, 12, 64)
  • rgba(34, 12, 64, 0.6)

HSL 和 HSLA

  • hsl(50, 33%, 25%)
  • hsla(50, 33%, 25%, 0.75)