@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
TypeScript
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;
}