@arcgis/core
Version:
ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API
298 lines (296 loc) • 12.9 kB
TypeScript
import type Layer from "../layers/Layer.js";
import type Collection from "../core/Collection.js";
import type { ReadonlyArrayOrCollection } from "../core/Collection.js";
export interface TablesMixinProperties {
/**
* A collection of [Layer](https://developers.arcgis.com/javascript/latest/references/core/layers/Layer/) instances that are tables
* saved in a [Map](https://developers.arcgis.com/javascript/latest/references/core/Map/) and/or a [WebMap](https://developers.arcgis.com/javascript/latest/references/core/WebMap/).
* In order for the table(s) to be recognized as such, the FeatureLayer's [FeatureLayer.isTable](https://developers.arcgis.com/javascript/latest/references/core/layers/FeatureLayer/#isTable)
* property must return `true`. A table can be created via one of the options below:
*
* * Referencing the URL to a table in a feature service.
* * Create a feature layer using the [Layer.fromArcGISServerUrl()](https://developers.arcgis.com/javascript/latest/references/core/layers/Layer/#fromArcGISServerUrl) method
* and confirm that it is a table using feature layer's [FeatureLayer.isTable](https://developers.arcgis.com/javascript/latest/references/core/layers/FeatureLayer/#isTable) property.
* This can be either a feature service or feature collection.
* * Create a feature layer using the [Layer.fromPortalItem()](https://developers.arcgis.com/javascript/latest/references/core/layers/Layer/#fromPortalItem) method
* and confirm that it is a table using feature layer's [FeatureLayer.isTable](https://developers.arcgis.com/javascript/latest/references/core/layers/FeatureLayer/#isTable) property.
* This can be either a feature service or feature collection.
* * Create an in-memory, non-spatial, client-side feature layer.
*
* Beginning with 4.17, it is possible to persist non-spatial,
* tables in a feature service to a WebMap, although in-memory
* (feature collection) tables are not yet supported.
*
* Persisting tables within a [GroupLayer.tables](https://developers.arcgis.com/javascript/latest/references/core/layers/GroupLayer/#tables) is not yet supported. If this is needed,
* add them to the [Map.tables](https://developers.arcgis.com/javascript/latest/references/core/Map/#tables) and/or [WebMap.tables](https://developers.arcgis.com/javascript/latest/references/core/WebMap/#tables).
*
* > [!CAUTION]
* >
* > Currently, only feature service [feature layers](https://developers.arcgis.com/javascript/latest/references/core/layers/FeatureLayer/) are recognized.
* > To access spatial layers, use the `layers` property in either [Map.layers](https://developers.arcgis.com/javascript/latest/references/core/Map/#layers)
* > or [WebMap.layers](https://developers.arcgis.com/javascript/latest/references/core/WebMap/#layers) classes
*
* @see [Sample - Creating a FeatureLayer - Add an array of client-side features](https://developers.arcgis.com/javascript/latest/references/core/layers/FeatureLayer/#creating-a-featurelayer)
* @see [FeatureLayer.isTable](https://developers.arcgis.com/javascript/latest/references/core/layers/FeatureLayer/#isTable)
* @see [Sample - Save a web map](https://developers.arcgis.com/javascript/latest/sample-code/webmap-save/)
* @example
* // This snippet shows how to add a table to a map's table collection.
*
* // FeatureLayer.isTable = false
* const featureLayer = new FeatureLayer({
* url: "https://sampleserver6.arcgisonline.com/arcgis/rest/services/SF311/FeatureServer/0"
* });
* // Add featureLayer to the map
* map.add(featureLayer);
*
* // FeatureLayer.isTable = true
* const table = new FeatureLayer({
* url: "https://sampleserver6.arcgisonline.com/arcgis/rest/services/SF311/FeatureServer/1"
* });
*
* // In order for the table to be stored within
* // the map's table collection, load it and confirm it is the right type.
*
* table.load().then(() => {
* // Add the table to the collection
* map.tables.add(table);
* console.log("Table is added to map's table collection");
* });
* @example
* // This snippet shows how to persist a table to an existing web map
*
* // FeatureLayer.isTable = true
* const table = new FeatureLayer({
* url: "https://services.arcgis.com/V6ZHFr6zdgNZuVG0/arcgis/rest/services/Crash_details_table/FeatureServer/0"
* });
*
* // Create Webmap instance
* const webmap = new WebMap({
* portalItem: {
* id: webmapId
* }
* });
*
* // When web map is ready, load the table and add it to the web map
* webmap.when(() => {
* table.load().then(() => {
* console.log("Adding table");
* // Add table to the webmap's table collection
* webmap.tables.add(table);
* });
* });
*
* // Call updateFrom on webmap and pass in the existing view
* webmap.updateFrom(view).then(() => {
* // Call saveAs (or save) on the web map
* webmap.saveAs({
* // autocasts as new PortalItem()
* title: "New WebMap"
* });
* });
* @example
* // This snippet shows how to add an in-memory table to a map
*
* // Create the array of objects containing field info
* const fields = [{
* name: "ObjectID",
* alias: "ObjectID",
* type: "oid"
* },
* {
* name: "tree_type",
* alias: "Tree type",
* type: "string"
* },
* {
* name: "species",
* alias: "Species",
* type: "string"
* }];
*
* // Create the array of graphics holding attribute info
* const graphics = [{
* attributes: {
* "tree_type": "deciduous",
* "species": "maple",
* "ObjectID": 2
* }
* }, {
* attributes: {
* "tree_type": "coniferous",
* "species": "pine",
* "ObjectID": 3
* }
* }];
*
* // Create the feature layer (feature collection) table
* const table = new FeatureLayer({
* fields: fields,
* objectIdField: "ObjectID",
* source: graphics
* });
*
* // Check when map is ready and load the table
* map.when(() => {
* table.load().then(() => {
* console.log("Adding table");
* map.tables.add(table);
* });
* });
*/
tables?: ReadonlyArrayOrCollection<Layer>;
}
/**
* A mixin that provides properties to access tables.
*
* @since 4.17
*/
export abstract class TablesMixin {
constructor(...args: any[]);
/**
* A collection of [Layer](https://developers.arcgis.com/javascript/latest/references/core/layers/Layer/) instances that are tables
* saved in a [Map](https://developers.arcgis.com/javascript/latest/references/core/Map/) and/or a [WebMap](https://developers.arcgis.com/javascript/latest/references/core/WebMap/).
* In order for the table(s) to be recognized as such, the FeatureLayer's [FeatureLayer.isTable](https://developers.arcgis.com/javascript/latest/references/core/layers/FeatureLayer/#isTable)
* property must return `true`. A table can be created via one of the options below:
*
* * Referencing the URL to a table in a feature service.
* * Create a feature layer using the [Layer.fromArcGISServerUrl()](https://developers.arcgis.com/javascript/latest/references/core/layers/Layer/#fromArcGISServerUrl) method
* and confirm that it is a table using feature layer's [FeatureLayer.isTable](https://developers.arcgis.com/javascript/latest/references/core/layers/FeatureLayer/#isTable) property.
* This can be either a feature service or feature collection.
* * Create a feature layer using the [Layer.fromPortalItem()](https://developers.arcgis.com/javascript/latest/references/core/layers/Layer/#fromPortalItem) method
* and confirm that it is a table using feature layer's [FeatureLayer.isTable](https://developers.arcgis.com/javascript/latest/references/core/layers/FeatureLayer/#isTable) property.
* This can be either a feature service or feature collection.
* * Create an in-memory, non-spatial, client-side feature layer.
*
* Beginning with 4.17, it is possible to persist non-spatial,
* tables in a feature service to a WebMap, although in-memory
* (feature collection) tables are not yet supported.
*
* Persisting tables within a [GroupLayer.tables](https://developers.arcgis.com/javascript/latest/references/core/layers/GroupLayer/#tables) is not yet supported. If this is needed,
* add them to the [Map.tables](https://developers.arcgis.com/javascript/latest/references/core/Map/#tables) and/or [WebMap.tables](https://developers.arcgis.com/javascript/latest/references/core/WebMap/#tables).
*
* > [!CAUTION]
* >
* > Currently, only feature service [feature layers](https://developers.arcgis.com/javascript/latest/references/core/layers/FeatureLayer/) are recognized.
* > To access spatial layers, use the `layers` property in either [Map.layers](https://developers.arcgis.com/javascript/latest/references/core/Map/#layers)
* > or [WebMap.layers](https://developers.arcgis.com/javascript/latest/references/core/WebMap/#layers) classes
*
* @see [Sample - Creating a FeatureLayer - Add an array of client-side features](https://developers.arcgis.com/javascript/latest/references/core/layers/FeatureLayer/#creating-a-featurelayer)
* @see [FeatureLayer.isTable](https://developers.arcgis.com/javascript/latest/references/core/layers/FeatureLayer/#isTable)
* @see [Sample - Save a web map](https://developers.arcgis.com/javascript/latest/sample-code/webmap-save/)
* @example
* // This snippet shows how to add a table to a map's table collection.
*
* // FeatureLayer.isTable = false
* const featureLayer = new FeatureLayer({
* url: "https://sampleserver6.arcgisonline.com/arcgis/rest/services/SF311/FeatureServer/0"
* });
* // Add featureLayer to the map
* map.add(featureLayer);
*
* // FeatureLayer.isTable = true
* const table = new FeatureLayer({
* url: "https://sampleserver6.arcgisonline.com/arcgis/rest/services/SF311/FeatureServer/1"
* });
*
* // In order for the table to be stored within
* // the map's table collection, load it and confirm it is the right type.
*
* table.load().then(() => {
* // Add the table to the collection
* map.tables.add(table);
* console.log("Table is added to map's table collection");
* });
* @example
* // This snippet shows how to persist a table to an existing web map
*
* // FeatureLayer.isTable = true
* const table = new FeatureLayer({
* url: "https://services.arcgis.com/V6ZHFr6zdgNZuVG0/arcgis/rest/services/Crash_details_table/FeatureServer/0"
* });
*
* // Create Webmap instance
* const webmap = new WebMap({
* portalItem: {
* id: webmapId
* }
* });
*
* // When web map is ready, load the table and add it to the web map
* webmap.when(() => {
* table.load().then(() => {
* console.log("Adding table");
* // Add table to the webmap's table collection
* webmap.tables.add(table);
* });
* });
*
* // Call updateFrom on webmap and pass in the existing view
* webmap.updateFrom(view).then(() => {
* // Call saveAs (or save) on the web map
* webmap.saveAs({
* // autocasts as new PortalItem()
* title: "New WebMap"
* });
* });
* @example
* // This snippet shows how to add an in-memory table to a map
*
* // Create the array of objects containing field info
* const fields = [{
* name: "ObjectID",
* alias: "ObjectID",
* type: "oid"
* },
* {
* name: "tree_type",
* alias: "Tree type",
* type: "string"
* },
* {
* name: "species",
* alias: "Species",
* type: "string"
* }];
*
* // Create the array of graphics holding attribute info
* const graphics = [{
* attributes: {
* "tree_type": "deciduous",
* "species": "maple",
* "ObjectID": 2
* }
* }, {
* attributes: {
* "tree_type": "coniferous",
* "species": "pine",
* "ObjectID": 3
* }
* }];
*
* // Create the feature layer (feature collection) table
* const table = new FeatureLayer({
* fields: fields,
* objectIdField: "ObjectID",
* source: graphics
* });
*
* // Check when map is ready and load the table
* map.when(() => {
* table.load().then(() => {
* console.log("Adding table");
* map.tables.add(table);
* });
* });
*/
get tables(): Collection<Layer>;
set tables(value: ReadonlyArrayOrCollection<Layer>);
/**
* Returns a table based on the given table ID.
*
* @param tableId - The ID assigned to the table.
* @returns Returns the requested table object.
* @since 4.18
*/
findTableById(tableId: string): Layer | null | undefined;
}