UNPKG

@arcgis/core

Version:

ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API

98 lines (96 loc) 9.68 kB
import type AttributeTableFieldOrder from "./support/FieldOrder.js"; import type { JSONSupport } from "../core/JSONSupport.js"; import type { AttributeTableElement as AttributeTableElementType } from "./elements.js"; import type { AttributeTableRelationshipElementProperties } from "./elements/AttributeTableRelationshipElement.js"; import type { AttributeTableGroupElementProperties } from "./elements/AttributeTableGroupElement.js"; import type { AttributeTableFieldElementProperties } from "./elements/AttributeTableFieldElement.js"; import type { AttributeTableAttachmentElementProperties } from "./elements/AttributeTableAttachmentElement.js"; import type { AttributeTableFieldOrderProperties } from "./support/FieldOrder.js"; export interface AttributeTableTemplateProperties { /** * An array of [attribute table element](https://developers.arcgis.com/javascript/latest/references/core/tables/elements/AttributeTableElement/) * objects that represent an ordered list of table elements. * * Table elements are designed to allow the table author the ability to * define the layout for fields when displaying and/or editing data. * * > [!WARNING] * > * > Nested group table elements are not supported. * * @see [AttributeTableAttachmentElement](https://developers.arcgis.com/javascript/latest/references/core/tables/elements/AttributeTableAttachmentElement/) * @see [AttributeTableFieldElement](https://developers.arcgis.com/javascript/latest/references/core/tables/elements/AttributeTableFieldElement/) * @see [AttributeTableGroupElement](https://developers.arcgis.com/javascript/latest/references/core/tables/elements/AttributeTableGroupElement/) */ elements?: ((AttributeTableAttachmentElementProperties & { type: "attachment" }) | (AttributeTableFieldElementProperties & { type: "field" }) | (AttributeTableGroupElementProperties & { type: "group" }) | (AttributeTableRelationshipElementProperties & { type: "relationship" }))[] | null; /** An Array of [AttributeTableFieldOrder](https://developers.arcgis.com/javascript/latest/references/core/tables/support/FieldOrder/) objects indicating the records' sort order. */ orderByFields?: AttributeTableFieldOrderProperties[] | null; } /** * An `AttributeTableTemplate` manages the configuration of how the [FeatureTable](https://developers.arcgis.com/javascript/latest/references/core/widgets/FeatureTable/) widget displays its columns. This template allows you to define properties such as visibility, order, and sorting of the table's columns. It can be applied directly to a [FeatureLayer.attributeTableTemplate](https://developers.arcgis.com/javascript/latest/references/core/layers/FeatureLayer/#attributeTableTemplate), [CSVLayer.attributeTableTemplate](https://developers.arcgis.com/javascript/latest/references/core/layers/CSVLayer/#attributeTableTemplate), [GeoJSONLayer.attributeTableTemplate](https://developers.arcgis.com/javascript/latest/references/core/layers/GeoJSONLayer/#attributeTableTemplate), [CatalogFootprintLayer.attributeTableTemplate](https://developers.arcgis.com/javascript/latest/references/core/layers/catalog/CatalogFootprintLayer/#attributeTableTemplate), [SubtypeSublayer.attributeTableTemplate](https://developers.arcgis.com/javascript/latest/references/core/layers/support/SubtypeSublayer/#attributeTableTemplate), a [FeatureTable.attributeTableTemplate](https://developers.arcgis.com/javascript/latest/references/core/widgets/FeatureTable/#attributeTableTemplate), or [FeatureTable's view model](https://developers.arcgis.com/javascript/latest/references/core/widgets/FeatureTable/FeatureTableViewModel/#attributeTableTemplate). The `AttributeTableTemplate` consists of various [elements](https://developers.arcgis.com/javascript/latest/references/core/tables/AttributeTableTemplate/#elements) that represent specific types of columns in a table. It can be serialized to JSON, enabling the persistence of the table's configuration. This feature facilitates easy sharing and reuse of table configurations across different applications. * * Tables can be created with a variety of elements, including: * * [AttributeTableFieldElement](https://developers.arcgis.com/javascript/latest/references/core/tables/elements/AttributeTableFieldElement/): Represents a column within the table that represents an individual field. * * [AttributeTableAttachmentElement](https://developers.arcgis.com/javascript/latest/references/core/tables/elements/AttributeTableAttachmentElement/): Represents a column within the table that represents an attachment. * * [AttributeTableRelationshipElement](https://developers.arcgis.com/javascript/latest/references/core/tables/elements/AttributeTableRelationshipElement/): Represents a column within the table that represents a relationship. * * [AttributeTableGroupElement](https://developers.arcgis.com/javascript/latest/references/core/tables/elements/AttributeTableGroupElement/): Represents a group of `field`, `relationship`, or `attachment` elements in the table. * * If a table is configured using another application such as [Map Viewer](https://doc.arcgis.com/en/arcgis-online/manage-data/show-tables-mv.htm), the resulting saved layer or web map [item's](https://doc.arcgis.com/en/arcgis-online/get-started/item-details.htm) JSON will contain a [attributeTableInfo](https://developers.arcgis.com/web-map-specification/objects/attributeTableInfo/) object. * * > [!WARNING] * > * > **Considerations** * > * > The layers that honor the `attributeTableTemplate` property are: * > CatalogFootprintLayer * > CSVLayer * > FeatureLayer * > GeoJSONLayer * > MapImageLayer (sublayer) * > SubtypeSublayer * > SceneLayer * > * > This class differs from [TableTemplate](https://developers.arcgis.com/javascript/latest/references/core/widgets/FeatureTable/support/TableTemplate/). The `TableTemplate` class provides more fine-grained control over how the table is rendered within an application by offering more advanced configurations such as custom cell rendering, column formatting, and more. `TableTemplate` is useful for application-level development that remains within an application. Use `AttributeTableTemplate` to access the table's settings across different applications since they can be saved within a webmap or layer. Please refer to the [TableTemplate](https://developers.arcgis.com/javascript/latest/references/core/widgets/FeatureTable/support/TableTemplate/) documentation for more information. * > * > The [FeatureTable](https://developers.arcgis.com/javascript/latest/references/core/widgets/FeatureTable/) prioritizes the table's configurations in the following order: * > * > 1. The [TableTemplate](https://developers.arcgis.com/javascript/latest/references/core/widgets/FeatureTable/support/TableTemplate/) defined in the FeatureTable. * > 2. The [FeatureTable.attributeTableTemplate](https://developers.arcgis.com/javascript/latest/references/core/widgets/FeatureTable/#attributeTableTemplate) defined in the FeatureTable. * > 3. The `attributeTableTemplate` defined in the layer or standalone table. * > 4. Default columns are generated based on the layer's fields if no table templates exist. * * @since 4.31 * @see [FeatureTable](https://developers.arcgis.com/javascript/latest/references/core/widgets/FeatureTable/) * @see [AttributeTableElement](https://developers.arcgis.com/javascript/latest/references/core/tables/elements/AttributeTableElement/) * @see [Sample - FeatureTable Component](https://developers.arcgis.com/javascript/latest/sample-code/feature-table/) * @see [Web Map Specification - attributeTableInfo](https://developers.arcgis.com/web-map-specification/objects/attributeTableInfo/) */ export default class AttributeTableTemplate extends JSONSupport { constructor(properties?: AttributeTableTemplateProperties); /** * An array of [attribute table element](https://developers.arcgis.com/javascript/latest/references/core/tables/elements/AttributeTableElement/) * objects that represent an ordered list of table elements. * * Table elements are designed to allow the table author the ability to * define the layout for fields when displaying and/or editing data. * * > [!WARNING] * > * > Nested group table elements are not supported. * * @see [AttributeTableAttachmentElement](https://developers.arcgis.com/javascript/latest/references/core/tables/elements/AttributeTableAttachmentElement/) * @see [AttributeTableFieldElement](https://developers.arcgis.com/javascript/latest/references/core/tables/elements/AttributeTableFieldElement/) * @see [AttributeTableGroupElement](https://developers.arcgis.com/javascript/latest/references/core/tables/elements/AttributeTableGroupElement/) */ get elements(): AttributeTableElementType[] | null | undefined; set elements(value: ((AttributeTableAttachmentElementProperties & { type: "attachment" }) | (AttributeTableFieldElementProperties & { type: "field" }) | (AttributeTableGroupElementProperties & { type: "group" }) | (AttributeTableRelationshipElementProperties & { type: "relationship" }))[] | null | undefined); /** An Array of [AttributeTableFieldOrder](https://developers.arcgis.com/javascript/latest/references/core/tables/support/FieldOrder/) objects indicating the records' sort order. */ get orderByFields(): AttributeTableFieldOrder[] | null | undefined; set orderByFields(value: AttributeTableFieldOrderProperties[] | null | undefined); /** * Creates a deep clone of the AttributeTableTemplate class. * * @returns A deep clone of the AttributeTableTemplate instance. */ clone(): AttributeTableTemplate; }