Skip to content

Core principals

Data discovery in ARLAS

When exploring data, ARLAS maintains coordination between all the filters and visualisations produced by the map, widgets and lists: they all respect the same set of rules when it comes to which elements of the dataset are to be displayed or analysed to constitute analytics. This retrieval of this data is performed by the contributors.

Contributor

The contributors of ARLAS-web-contributors constitute the data retrieval layer of ARLAS. They are the interface between ARLAS-Server and the graphical components developed in ARLAS-web-components. They collaborate together through the CollaborativeSearchService. Its role is to centralize all events that relate to data fetching (adding or removing filters). Those events are called CollaborationEvent.

When created, a contributor is registered in the CollaborativeSearchService and will receive and emit updates based on new CollaborationEvent. If the contributor needs to update its data based on the CollaborationEvent, it will request updated data based on the current filters applied.

Collaboration Event

Whenever a filter is applied through a widget, the map or the result list, the corresponding contributor generates a collaboration event. Then, the contributor which originated the collaboration notifies the CollaborativeSearchService through the Collaboration Bus that can be observed by the other contributors to be notified of those 'CollaborationEvent'.

CollaborationEvents are constituted of 3 attributes:

  • id: id of the contributor or 'all' or 'url'
  • operation: whether it is added or removed from the current collaborations
  • all: whether the collaboration applies to all contributors

They can be emitted through the following events:

  • When the application is loaded (url)
  • When a component selection is changed
  • When all filters are removed

Contributor behaviour

CollaborationEvents are used by the Contributors to know when to update their own data, following the pattern below:

Contributor receiving a CollaborationEventContributor receiving a CollaborationEventCollaborativeSearchServiceCollaboration BusContributorARLAS ServerCollaborativeSearchServiceCollaborativeSearchServiceCollaboration BusCollaboration BusContributorContributorARLAS ServerARLAS ServerCollaborationEventSubscribeCollaborationEventWait for other collaborationsfor debounceDuration msIs collaboration for me ?alt[Collaboration is for me]Fetch dataDataSet selection[Collaboration is not for me]alt[Collaboration is my own]Set selection
Contributor receiving a CollaborationEventContributor receiving a CollaborationEventCollaborativeSearchServiceCollaboration BusContributorARLAS ServerCollaborativeSearchServiceCollaborativeSearchServiceCollaboration BusCollaboration BusContributorContributorARLAS ServerARLAS ServerCollaborationEventSubscribeCollaborationEventWait for other collaborationsfor debounceDuration msIs collaboration for me ?alt[Collaboration is for me]Fetch dataDataSet selection[Collaboration is not for me]alt[Collaboration is my own]Set selection

A collaboration can be of interest for the contributor in the following case. "Mine" designates when the id of the CollaborationEvent is the same as the Contributor's or as its LinkedContributor (is used in ARLAS to link a widget to a shortcut).

CollaborationEventContributorUpdate dataNo updateSet selectionEnabled ?id == 'url'id == 'all'Mine and self update?Not mine andone of my collections?Mine?
CollaborationEventContributorUpdate dataNo updateSet selectionEnabled ?id == 'url'id == 'all'Mine and self update?Not mine andone of my collections?Mine?