UNPKG

@vertigis/viewer-spec

Version:

VertiGIS Viewer Specification

147 lines (146 loc) 5.13 kB
import type { EntityProperties } from "@vertigis/arcgis-extensions/Entity"; import type { FormatSettingsProperties } from "@vertigis/arcgis-extensions/support/FormatSettings"; import type { ItemRef } from "../common/ItemRef.js"; import type { ColorConfig } from "../common/colors.js"; import type { ComponentModelProperties } from "./ComponentModelProperties.js"; import type { FeatureSetProperties } from "./FeatureSetProperties.js"; /** * Configuration for a KPI card component. */ export interface KpiCardModelProperties extends ComponentModelProperties { /** * The background color for the KPI card. If not specified, the branding * theme color will be used. */ backgroundColor?: ColorConfig; /** * Configuration for the bottom section. */ bottom?: KpiCardSectionModelProperties; /** * A set of conditions to evaluated. If a condition's expression is true, * its configuration will take effect. For any given configuration property, * conditions that appear earlier in this list will take precedence over * ones that come later. */ conditions?: KpiCardConditionModelProperties[]; /** * Configuration for the middle section. */ middle?: KpiCardSectionModelProperties; /** * A reference value to use for comparison. This is available as a * predefined `reference` variable within Arcade expressions. */ reference?: number; /** * The type of reference to use. */ referenceType?: ReferenceType; /** * When `referenceType` is "statistic", this Arcade expression will be used * to calculate the reference value. */ referenceExpression?: string; /** * The feature source (e.g. layer, sublayer, table, etc.) that this KPI card * is associated with. */ source?: ItemRef; /** * Configuration for the top section. */ top?: KpiCardSectionModelProperties; /** * The initial KPI value. Normally this is computed from `valueExpression` * rather than set directly. */ value?: number; /** * An Arcade expression that calculates the KPI value from a feature set. * The feature set is made available via a `$features` variable that is * available for use within the expression. */ valueExpression?: string; /** * The set of features contained by the kpi-card model. This property is * only serialized into saved projects. Web only. */ results?: FeatureSetProperties; } /** * Configuration for a specific section of a KPI card (top, middle, or bottom). */ export interface KpiCardSectionModelProperties { /** * The text to display for this section. The text can contain embedded * Arcade expressions, surrounded by braces ("{" and "}"). */ text?: string; /** * The ID of the icon to display in this section, or undefined to show no * icon. */ icon?: string; /** * The size of the text and icon. */ size?: KpiCardSectionSize; /** * The foreground color to use for the text and icon. If undefined, it will * use the theme's color. */ color?: ColorConfig; /** * Format settings that affect how numbers and dates are formatted. Any * setting that isn't specified will use the equivalent setting in the * region service by default. */ formatSettings?: FormatSettingsProperties; } /** * Conditional configuration that is applied when the given expression is true. */ export interface KpiCardConditionModelProperties extends EntityProperties { /** * The Arcade expression to evaluate. If the return value is "truthy", the * configuration in this condition will take effect. */ expression?: string; /** * The background color to use if the condition is true. */ backgroundColor?: ColorConfig; /** * Settings to apply to the top section if the condition is true. */ top?: KpiCardSectionModelProperties; /** * Settings to apply to the middle section if the condition is true. */ middle?: KpiCardSectionModelProperties; /** * Settings to apply to the bottom section if the condition is true. */ bottom?: KpiCardSectionModelProperties; } /** * Determines how the reference value for a KPI card is calculated. A reference * is a number to compare against. * * - "none": No reference value is used for this card. * - "previous": The reference value will reflect the previous KPI value whenever * it changes. Initially it will be undefined. * - "fixed": A constant value. * - "statistic": A calculated value determined via an Arcade expression (see * `referenceExpression`). */ export type ReferenceType = "none" | "previous" | "fixed" | "statistic"; /** * Determines how large the text and icon are for a KPI card section. */ export type KpiCardSectionSize = "extra-small" | "small" | "medium" | "large" | "extra-large"; /** * Identifies one of the three possible sections in a KPI card. */ export type KpiCardSectionName = "top" | "middle" | "bottom";