Alarm table filter update with alarm severity widget

🟡 Intermediate

alarm dashboard script

The tutorial guides you through how alarm severity widget can be used to update alarm table filter.

  • Create four alarm filters (all, major-and-more, remote, technical) each with a count and max-severity value.

  • Link each AlarmSeverity widget to its corresponding count and severity values.

  • Configure the onClick handler on each widget to call osp.widgets(...).updateFilter(...) and update the AlarmTable filter.

  • Use a Form widget to generate test alarms and verify the interaction.

git checkout origin/osp-alarms-configuration .
git checkout origin/osp-web-configuration .
git checkout origin/osp-scripts-configuration .
git checkout origin/example-dashboard-alarm-severity-widget-interaction .

Steps

1. Create a dashboard with widgets

The first step is to define a dashboard see this other example for how to.

In our example, we create a dashboard with the following widgets:

2. Create alarm filters, count and max severity

In order to show alarm severity widget count and max severity, we need to create 4 filters.

root/feature/alarm-severity-widget-interaction/filters/all/filters.alarms

The first filter will match all alarms.

{
    "moduleId": "modules.alarms.alarms-1",
    "query": "{}"
}

root/feature/alarm-severity-widget-interaction/filters/major-and-more/filters.alarms

The second filter will match alarms with severity of 500 (major) and more.

{
    "moduleId": "modules.alarms.alarms-1",
    "query": {
        "severity": {
            "$gte": 500
        }
    }
}

root/feature/alarm-severity-widget-interaction/filters/remote/filters.alarms

The third filter will match alarms with location outside of main location.

{
    "moduleId": "modules.alarms.alarms-1",
    "query": {
        "location": {
            "$ne": "Corminboeuf"
        }
    }
}

root/feature/alarm-severity-widget-interaction/filters/technical/filters.alarms

The fourth filter will match alarms with TECHNICAL and IT tags.

{
    "moduleId": "modules.alarms.alarms-1",
    "query": {
        "tags": {
            "$in": ["TECHNICAL","IT"]
        }
    }
}

For each filter, we create two value associated with it to track:

  • Alarm count matching filter

  • Highest alarm severity matching filter

For example, we create, for all filter:

root/feature/alarm-severity-widget-interaction/filters/all/count/owner.alarms

{
    "filterId": "root.feature.alarm-severity-widget-interaction.filters.all",
    "type": "ALARM_COUNT"
}

root/feature/alarm-severity-widget-interaction/filters/all/max-severity/owner.alarms

{
    "filterId": "root.feature.alarm-severity-widget-interaction.filters.all",
    "type": "MAX_SEVERITY"
}

3. Add interaction to alarm severity widgets

Open dashboard.view file and seek the AlarmTable widget id. When found, seek the four AlarmSeverity widgets.

Setup the proper count and severity for each widget.

For each widget, we add, in alarmSeverityWidgetSettings the onClick attribute. In this, we add, for example, the following code:

osp.widgets('OugLE_qA').updateFilter('root.feature.alarm-severity-widget-interaction.filters.all')

This code retrieves the AlarmTable widget (id being OugLE_qA) and instruct to update the filter with root.feature.alarm-severity-widget-interaction.filters.all.

Repeat the same behavior for all four AlarmSeverity widgets.

4. Generate alarms and test interaction

Access the root.feature.alarm-severity-widget-interaction dashboard. Use the Form to generate alarms for each given filter.

Result

Upon retrieving the example, you can then access the root.feature.alarm-severity-widget-interaction dashboard. By default, you will see the following result:

../_images/alarm-severity-onclick-result.png