UNPKG

@arcgis/core

Version:

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

95 lines (92 loc) 3.52 kB
import type DynamicDataLayer from "./DynamicDataLayer.js"; import type DynamicMapLayer from "./DynamicMapLayer.js"; import type { JSONSupport } from "../../core/JSONSupport.js"; /** @since 5.0 */ export interface JoinTableDataSourceProperties extends Partial<Pick<JoinTableDataSource, "joinType" | "leftTableKey" | "leftTableSource" | "rightTableKey" | "rightTableSource">> {} /** @since 5.0 */ export type JoinType = "left-inner-join" | "left-outer-join"; /** * The result of an on-the-fly join operation at runtime. Nested joins are supported. * To use nested joins, set either `leftTableSource` or `rightTableSource` to `join-table`. * * @since 5.0 * @see [Sample - MapImageLayer: dynamic data layer with table join](https://developers.arcgis.com/javascript/latest/sample-code/layers-dynamicdatalayer-table-join/) * @see [ArcGIS REST API - Join table data source](https://developers.arcgis.com/rest/services-reference/enterprise/data-source-object/#join-table-data-source) * @example * let layer = new MapImageLayer({ * url: "https://sampleserver6.arcgisonline.com/arcgis/rest/services/Census/MapServer", * sublayers: [{ * id: 0, * renderer: renderer, * opacity: 0.9, * source: { * type: "data-layer", * dataSource: { * type: "join-table", * leftTableSource: { * type: "map-layer", * mapLayerId: 3 * }, * rightTableSource: { * type: "data-layer", * dataSource: { * type: "table", * workspaceId: "CensusFileGDBWorkspaceID", * dataSourceName: "ancestry" * } * }, * leftTableKey: "STATE_NAME", * rightTableKey: "State", * joinType: "left-outer-join" * } * } * }] * }); */ export default class JoinTableDataSource extends JSONSupport { constructor(properties?: JoinTableDataSourceProperties); /** * The type of join that will be performed. * * Possible Value | Description * ---------------|------------ * left-outer-join | Unmatched records in the left table source are preserved and joined with `null` values in the right table source. * left-inner-join | Records in the left table source are discarded if they are unmatched with records in the right table source. * * @since 5.0 */ joinType: JoinType; /** * The field name used for joining or matching records in the left table to * records in the right table. * * @since 5.0 */ accessor leftTableKey: string; /** * The left table for joining to the right table source. This can either be a dynamic map layer or a dynamic data layer. The dynamic data layer may contain another join data source used for nested joining. * * @since 5.0 */ accessor leftTableSource: DynamicMapLayer | DynamicDataLayer; /** * The field name used for joining or matching records in the right table * to records in the left table. * * @since 5.0 */ accessor rightTableKey: string; /** * The right table for joining to the left table source. This can either be a dynamic map layer or a dynamic data layer. The dynamic data layer may contain another join data source used for nested joining. * * @since 5.0 */ accessor rightTableSource: DynamicMapLayer | DynamicDataLayer; /** * This value is always `join-table` and is inferred when other * join table properties of this object are set. * * @since 5.0 */ get type(): "join-table"; }