The refresh option

In each widget the refresh option can be enabled. If the option is enabled the widget displays a reload button in the top right corner. It can then be refreshed via user interaction or via a javascript api.

To enable the refresh action button, you have to define the refreshAvailable option in the $options part of the widget registration. Below is an example of a RSS widget with the refresh option enabled.

dashboard.widget.myOwnRSSWidget:
  class: 'TYPO3\CMS\Dashboard\Widgets\RssWidget'
  arguments:
    $cache: '@cache.dashboard.rss'
    $options:
      rssFile: 'https://typo3.org/rss'
      lifeTime: 43200
      refreshAvailable: true
  tags:
    - name: dashboard.widget
      identifier: 'myOwnRSSWidget'
      groupNames: 'general'
      title: 'LLL:EXT:extension/Resources/Private/Language/locallang.xlf:widgets.myOwnRSSWidget.title'
      description: 'LLL:EXT:extension/Resources/Private/Language/locallang.xlf:widgets.myOwnRSSWidget.description'
      iconIdentifier: 'content-widget-rss'
      height: 'medium'
      width: 'medium'
Copied!

Enable the refresh button

Widgets can render a refresh button to allow users to manually refresh them.

This is done by passing the value ['refreshAvailable'] = true; back via getOptions() method of the widget.

All TYPO3 Core widgets implement this behaviour and allow integrators to configure the option:

refreshAvailable

Boolean value, either false or true.

Provides a refresh button to backend users to refresh the widget. If the option is omitted false is assumed.

JavaScript API

It is possible for all widgets to dispatch an event, which will cause the widget being refreshed. This is possible for all widgets on the dashboard even when the refreshAvailable option is not defined, or set to false. This will give developers the option to refresh the widgets whenever they think it is appropriate.

To refresh a widget, dispatch the widgetRefresh event on the widget container (the div element with the dashboard-item class). You can identify the container by the data attribute widget-hash, which is a unique hash for every widget, even if you have more widgets of the same type on your dashboard.

A small example below:

document
  .querySelector('[data-widget-hash="{your-unique-widget-hash}"]')
  .dispatchEvent(new Event('widgetRefresh', {bubbles: true}));
Copied!

See Providing custom JS to learn how to add custom JavaScript.