Skip to content

AutoRefresh Plugin #11887

Description

@jlo-arxit

MIP - AutoRefresh Plugin – Automatic Layer Refresh for MapStore

Overview

This proposal introduces a new MapStore plugin named AutoRefresh, designed to automatically refresh selected map layers at a defined interval.
The plugin allows map publishers to configure which layers are refreshed and at which frequency, while end users can easily enable or disable the auto-refresh functionality through a persistent UI control.

Proposed By

Julien Longchamp - arx iT

Assigned to Release

This proposal is for MapStore .

State

  • Under Discussion
  • In Progress
  • Completed
  • Rejected
  • Deferred

Motivation

Many MapStore use cases rely on near real-time or frequently updated data sources (e.g. monitoring dashboards, operational maps).
Currently, MapStore does not provide a native, map-level mechanism to automatically refresh layers without manual interaction.

The AutoRefresh plugin addresses this limitation by providing:

  • Automatic refresh of selected layers
  • Non-intrusive refresh behavior
  • Clear and always-visible UI feedback

Proposal

The AutoRefresh plugin introduces a UI element always visible in the map viewer, positioned in the bottom-right corner (similar to CRS selector or scale selector plugins).

The plugin provides:

  • A toggle button to activate or deactivate auto-refresh
  • A settings button (visible to publishers only)
  • A last refresh timestamp indicator when active
  • a tooltip indicating current autorefresh map settings

Viewer Mode

  • Plugin is always visible (injected in the MapFooter using the plugin containers approach)
  • Users can just enable or disable auto-refresh
  • Users can see the last automatic refresh date/time + current configuration
  • The toggle itself acts as the visual indicator of activation
Image Image

Publisher Mode

  • Additional Settings button available
  • Settings panel allows selection of layers to refresh and configuration of a refresh interval per layer (in seconds)
Image

Layer selection

  • Layer list retrieved from the TOC
  • Only layers already supporting refresh capabilities are displayed (i.e those providing a specific refresh URL)
  • Layers are listed in a flat structure
  • Layers list is updated when adding/removing a layer to/from the map
  • Some maps could have hundreds of layers so the panel should be able to limit its own height

Data Model Changes
AutoRefresh settings are stored per map, not per context.
The MapStore map > layers object will be extended to include auto-refresh configuration:

Image

AutoRefreshInterval is set in ms in config.

Refresh Behavior

  • Only layers currently visible + selected in the settings are refreshed
  • Smooth refresh with no visual flickering
  • Most user interactions remain uninterrupted
  • Autorefresh of a specific layer will also update potential other widgets showing layer data : Counter, Chart, Table, Dashboard Map, Dashboard Legend

For this last point, it is proposed to introduce a proper action to set the refresh option to widgets. So, the implementation will require:

  • An action to set the refresh property inside the widgets based on the layer name they are connected with
  • Needed logic to initialize a refresh interval inside the widgets component for each type
  • The list of layers inside the Autorefresh plugin should list unique layers available in the map or dashboard

Plugin configuration (when adding to context)

  • Default refresh interval
  • Minimum refresh interval

Backwards Compatibility

No impact on existing maps, the new AutoRefreshInterval property is optional
Maps without this property remain fully compatible even id AutoRefresh plugin is added.

Note : potential conflict with #7289

Future evolution

NA

Feedback

Update this section with relevant feedbacks, if any.

Voting

Project Steering Committee:

Links

Remove unused links below.

Metadata

Metadata

Assignees

Type

Fields

No fields configured for Task.

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions