UNPKG

@arcgis/core

Version:

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

103 lines (101 loc) 7.97 kB
import type Element from "./Element.js"; import type RelatedRecordsInfoFieldOrder from "../../popup/support/RelatedRecordsInfoFieldOrder.js"; import type { ElementProperties } from "./Element.js"; import type { RelatedRecordsInfoFieldOrderProperties } from "../../popup/support/RelatedRecordsInfoFieldOrder.js"; export interface RelationshipElementProperties extends ElementProperties, Partial<Pick<RelationshipElement, "displayCount" | "editableExpression" | "relationshipId">> { /** * An array of [RelatedRecordsInfoFieldOrder](https://developers.arcgis.com/javascript/latest/references/core/popup/support/RelatedRecordsInfoFieldOrder/) * objects indicating the field display order for the related records * and whether they should be sorted in ascending `asc` or descending `desc` order. */ orderByFields?: RelatedRecordsInfoFieldOrderProperties[] | null; } /** * A `RelationshipElement` form element defines how a relationship between [FeatureLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/FeatureLayer/) or [MapImageLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/MapImageLayer/) and [Map.tables](https://developers.arcgis.com/javascript/latest/references/core/Map/#tables) participates in the [FeatureForm](https://developers.arcgis.com/javascript/latest/references/core/widgets/FeatureForm/). When this element is present in the form, the option to add or edit related records is provided per the underlying service's editing permissions and whether it allows relationship editing. * * > [!WARNING] * > * > **Known Limitations when editing related data** * > Support is limited to 1:1 and 1:M cardinality. * > Support is limited to feature-to-table and feature-to-feature relationships, ie. origin-to-destination. The origin's entry point must be a feature with geometry. * > Relationship editing is only supported using ArcGIS Online and ArcGIS Enterprise version 11.2 or higher feature services. * > The layer and associated [relationship elements](https://developers.arcgis.com/javascript/latest/references/core/form/elements/RelationshipElement/) must be editable in order for the relationship to display. * > Data containing related records will display the relationship in the associated form as long as there is a [relationship element](https://developers.arcgis.com/javascript/latest/references/core/form/elements/RelationshipElement/) configured in the [layer](https://developers.arcgis.com/javascript/latest/references/core/layers/FeatureLayer/#formTemplate) or [form's](https://developers.arcgis.com/javascript/latest/references/core/widgets/FeatureForm/#formTemplate) formTemplate. This can be accomplished via the Map Viewer's [authoring experience](https://doc.arcgis.com/en/arcgis-online/create-maps/create-form-mv.htm), [Field Maps Designer](https://learn.arcgis.com/en/projects/build-a-form-with-field-maps-designer), or programmatically using the API. * > The related layer or table must also be added to the map to be able to configure [relationship elements](https://developers.arcgis.com/javascript/latest/references/core/form/elements/RelationshipElement/). * > Relationship editing on layers with preset and group templates are not yet supported. * * @since 4.27 * @see [FormTemplate](https://developers.arcgis.com/javascript/latest/references/core/form/FormTemplate/) * @see [Editor](https://developers.arcgis.com/javascript/latest/references/core/widgets/Editor/) * @see [FeatureForm](https://developers.arcgis.com/javascript/latest/references/core/widgets/FeatureForm/) * @see [Sample - Edit FeatureLayers with form elements ](https://developers.arcgis.com/javascript/latest/sample-code/widgets-editor-form-elements/) * @see [Sample - Editing related data with calculated expressions](https://developers.arcgis.com/javascript/latest/sample-code/widgets-editor-relates-calculations/) * @example * // Create the relationship element * const relationshipElement = new RelationshipElement({ * description: "Past and present building owners", * displayCount: 5, * label: "Building owners", * orderByFields: [{ //autocastable to RelatedRecordsInfoFieldOrder * field: "owner_name", * order: "desc" * }], * relationshipId: 0 * }); */ export default class RelationshipElement extends Element { constructor(properties?: RelationshipElementProperties); /** * A numeric value indicating the maximum number of related features to display in the list of related records. * If no value is specified, the `Show all` button will be available to display all related records and the associated * [RelationshipInput](https://developers.arcgis.com/javascript/latest/references/core/widgets/FeatureForm/RelationshipInput/) defaults to 3. If the total amount of features is greater than the `displayCount`, a `Show all` button displays. * * @default 3 */ accessor displayCount: number | null | undefined; /** * A string value indicating how to display related records within the relationship content. Currently, `list` is the only supported value. * * | Value | Description | * | ------ | ----------- | * | list | Shows a list of related records from the specified relationship. | * * @default "list" */ get displayType(): "list"; /** * A reference to the [ExpressionInfo.name](https://developers.arcgis.com/javascript/latest/references/core/form/ExpressionInfo/#name) of an * [Arcade](https://developers.arcgis.com/javascript/latest/arcade/) expression defined in the * [FormTemplate.expressionInfos](https://developers.arcgis.com/javascript/latest/references/core/form/FormTemplate/#expressionInfos) of the FormTemplate. * The expression must follow the specification * defined in the [Form Constraint Profile](https://developers.arcgis.com/javascript/latest/arcade/#constraint). Expressions * may reference field values using the `$feature` global input and must return either `true` or `false`. * * When this expression evaluates to `true`, it is possible to edit the field value, and vice-versa if `false`. If the referenced related table is not editable, the editable expression is ignored and the element is not editable. * * > [!WARNING] * > * > The referenced expression must be defined in the form template's [FormTemplate.expressionInfos](https://developers.arcgis.com/javascript/latest/references/core/form/FormTemplate/#expressionInfos). * > It cannot be set inline within the element object. * * @see [Form Constraint Arcade Profile](https://developers.arcgis.com/javascript/latest/arcade/#constraint) */ accessor editableExpression: string | null | undefined; /** * An array of [RelatedRecordsInfoFieldOrder](https://developers.arcgis.com/javascript/latest/references/core/popup/support/RelatedRecordsInfoFieldOrder/) * objects indicating the field display order for the related records * and whether they should be sorted in ascending `asc` or descending `desc` order. */ get orderByFields(): RelatedRecordsInfoFieldOrder[] | null | undefined; set orderByFields(value: RelatedRecordsInfoFieldOrderProperties[] | null | undefined); /** The numeric id value for the defined relationship. This value can be found on the [service](https://developers.arcgis.com/rest/services-reference/enterprise/feature-service.htm) itself or on the service's [relationships resource](https://developers.arcgis.com/rest/services-reference/enterprise/relationships-feature-service-.htm) if `supportsRelationshipResource` is `true`. */ accessor relationshipId: number; /** Indicates the type of form [Element](https://developers.arcgis.com/javascript/latest/references/core/form/elements/Element/). */ get type(): "relationship"; /** * Creates a deep clone of the RelationshipElement class. * * @returns A deep clone of the RelationshipElement instance. */ clone(): RelationshipElement; }