UNPKG

@arcgis/core

Version:

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

95 lines (92 loc) 3.78 kB
export interface RefreshableLayerProperties extends Partial<Pick<RefreshableLayer, "refreshInterval">> {} export interface RefreshEvent { /** Indicates if the layer's data has changed. */ dataChanged?: boolean; } export interface RefreshableLayerEvents { /** * Fires if the layer has the [refreshInterval](https://developers.arcgis.com/javascript/latest/references/core/layers/mixins/RefreshableLayer/#refreshInterval) set or when [refresh()](https://developers.arcgis.com/javascript/latest/references/core/layers/mixins/RefreshableLayer/#refresh) method is called. * The event payload indicates if the layer's data has changed. * * @since 4.21 * @see [refreshInterval](https://developers.arcgis.com/javascript/latest/references/core/layers/mixins/RefreshableLayer/#refreshInterval) * @see [refresh()](https://developers.arcgis.com/javascript/latest/references/core/layers/mixins/RefreshableLayer/#refresh) * @see [Sample - GeoJSONLayer with dynamic URL](https://developers.arcgis.com/javascript/latest/sample-code/layers-geojson-refresh/) * @example * // listen to layer's refresh event to fetch the attachments * // for the updated features. * layer.on("refresh", async (event) =>{ * if (!event.dataChanged){ * return; * } * * try { * const query = layer.createQuery(); * const objectIds = await layer.queryObjectIds(query); * let attachmentQuery = { * objectIds: objectIds, * definitionExpression: layer.definitionExpression, * attachmentTypes: ["image/jpeg"] * }; * * const attachments = await layer.queryAttachments(attachmentQuery); * * attachmentQuery.objectIds.forEach(function (objectId) { * if (attachments[objectId]) { * // process the updated attachments * let attachment = attachments[objectId]; * console.log("Attachments for objectId ", objectId, attachment); * } * }); * } catch (error) { * console.log("attachment query error", error); * } * }); * @example * // listen to layer's refresh event to fetch object ids of completed features * layer.on("refresh", function(event){ * if (event.dataChanged){ * const query = layer.createQuery(); * query.where = "Status = 'Completed'"; * layer.queryObjectIds(query).then((objectIds) => { * // process returned features * }); * } * }); */ refresh: RefreshEvent; } /** * Mixin for layers that support refresh and refreshInterval. * * @since 4.6 */ export abstract class RefreshableLayer { constructor(...args: any[]); /** * @deprecated * Do not directly reference this property. * Use EventNames and EventTypes helpers from \@arcgis/core/Evented */ "@eventTypes": RefreshableLayerEvents; /** * Refresh interval of the layer in minutes. Value of `0` indicates no refresh. * * @default 0 * @since 4.6 * @see [RefreshableLayer.refresh()](https://developers.arcgis.com/javascript/latest/references/core/layers/mixins/RefreshableLayer/#refresh) * @see [refresh event](https://developers.arcgis.com/javascript/latest/references/core/layers/mixins/RefreshableLayer/#event-refresh) * @example * // the layer will be refreshed every minute. * layer.refreshInterval = 1; */ accessor refreshInterval: number; /** * Fetches all the data for the layer. * * @since 4.6 * @see [RefreshableLayer.refreshInterval](https://developers.arcgis.com/javascript/latest/references/core/layers/mixins/RefreshableLayer/#refreshInterval) * @see [refresh event](https://developers.arcgis.com/javascript/latest/references/core/layers/mixins/RefreshableLayer/#event-refresh) */ refresh(): void; }