Skip to content

Commit

Permalink
Add filter option
Browse files Browse the repository at this point in the history
  • Loading branch information
Jan Litzenburger committed Jan 9, 2022
1 parent e3ef7f4 commit 57a8e5c
Show file tree
Hide file tree
Showing 9 changed files with 59 additions and 25 deletions.
8 changes: 7 additions & 1 deletion MMM-NINA.css
Original file line number Diff line number Diff line change
Expand Up @@ -53,13 +53,19 @@
}

.nina-theme-top .nina-alert.severity-Fine {
color: #666;
background: #009900;
color: #222;
}

.nina-theme-top .nina-alert.severity-Minor {
background: #ffcc66;
color: #8b0000;
}
.nina-theme-top .nina-alert.severity-Moderate {
background: #f8c0ac;
color: #8b0000;
}

.nina-theme-top .nina-title {
font-size: 1.2em;
font-weight: bold;
Expand Down
4 changes: 2 additions & 2 deletions MMM-NINA.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

38 changes: 21 additions & 17 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

[![version](https://img.shields.io/github/package-json/v/jalibu/MMM-NINA)](https://github.com/jalibu/MMM-NINA/releases) [![Known Vulnerabilities](https://snyk.io/test/github/jalibu/MMM-NINA/badge.svg?targetFile=package.json)](https://snyk.io/test/github/jalibu/MMM-NINA?targetFile=package.json)

EIne simple Client Implementierung der NINA Warn App API für die [MagicMirror²](https://magicmirror.builders/) Plattform.
EIne simple Client Implementierung der NINA Warn App API für die [MagicMirror²](https://magicmirror.builders/) Plattform.
Klicke hier für den [Forum Thread](https://forum.magicmirror.builders/topic/15429/mmm-nina)

Feedback und Mithilfe willkommen.
Expand All @@ -16,9 +16,9 @@ Wenn du meine Arbeit schätzt, dann freue ich mich über einen bescheidenen Beit
## Features

- Das Modul ruft periodisch die NINA API auf und ermittelt Warnmeldungen für deinen Kreis.
<img width="540" alt="Screenshot2" src="https://user-images.githubusercontent.com/25933231/132957121-e0fccb58-2a28-4989-b325-968013018df7.png">
- Es können Alarme mehrerer Städte/Gemeinden gleichzeitig abgerufen werden. Identische Warnungen können dabei zusammengefasst werden.
<img width="540" alt="Screenshot2" src="https://user-images.githubusercontent.com/25933231/137167087-6db8464b-1202-4f1e-a34b-9d448b64f109.png">
<img width="540" alt="Screenshot2" src="https://user-images.githubusercontent.com/25933231/132957121-e0fccb58-2a28-4989-b325-968013018df7.png">
- Es können Alarme mehrerer Städte/Gemeinden gleichzeitig abgerufen werden. Identische Warnungen können dabei zusammengefasst werden.
<img width="540" alt="Screenshot2" src="https://user-images.githubusercontent.com/25933231/137167087-6db8464b-1202-4f1e-a34b-9d448b64f109.png">
- 2 unterschiedliche Themes

## Installation
Expand All @@ -43,6 +43,8 @@ Wenn du meine Arbeit schätzt, dann freue ich mich über einen bescheidenen Beit
position: "top_right",
config: {
ags: ["110000000000"], // Liste der Gemeinden, die abgefragt werden sollen
downgradeLhpServerity: false,
excludeProviders: [], // Mögliche Werte ["MOWAS", "DWD", "BIWAPP", "LHP"]
maxAgeInHours: 6,
maxWidth: "200px",
mergeAlerts: true,
Expand All @@ -59,22 +61,24 @@ Wenn du meine Arbeit schätzt, dann freue ich mich über einen bescheidenen Beit

### Optionen

| Feld | Beschreibung | Default |
| ----------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------- |
| ags | (Liste von Strings) Amtliche(r) Gemeindeschlüssel (AGS)<br>**Wichtig**: Werte unbedingt als String mit führenden Nullen angeben! | `["110000000000"]` (Berlin) |
| maxAgeInHours | (Integer) Maximales Alter der Warnmeldungen in Stunden, bevor sie ausgefiltert werden | `6` |
| maxWidth | (String) CSS Style für maximale Breite des Moduls, z.B. `220px`. Weg lassen, zum Deaktivieren. | `undefined` (deaktiviert) |
| mergeAlerts | (Boolean) Sofern Alerts für mehrere Gemeinden abgefragt werden, wird versucht gleiche Meldungen zusammenzufassen | `true` |
| showCity | (Boolean) Soll der Name der Gemeinde angezeigt werden? | `true` |
| showDate | (Boolean) Soll das Datum der Meldung angezeigt werden? | `true` |
| showIcon | (Boolean) Soll ein Warn-Symbol vor den Warnungen angezeigt werden? | `true` |
| showNoWarning | (Boolean) Lässt eine Meldung "Keine Warnungen" erscheinen, falls keine Ereignisse vorliegen. | `false` |
| updateIntervalInSeconds | (Integer) Abstand in Sekunden, in dem Warnmeldungen vom NINA Server abgerufen werden | `120` (2 Minuten) |
| theme | (String) Welches Theme soll angewendet werden?<br> Verfügbare Themes: `top` und `side` | `side` |
| Feld | Beschreibung | Default |
| ----------------------- | --------------------------------------------------------------------------------------------------------------------------------------- | --------------------------- |
| ags | (Liste von Strings) Amtliche(r) Gemeindeschlüssel (AGS)<br>**Wichtig**: Werte unbedingt als String mit führenden Nullen angeben! | `["110000000000"]` (Berlin) |
| downgradeLhpServerity | (Boolean) Reduziert die Severity von Meldungen des Länderübergreifende Hochwasser Portals auf "Minor" | `false` |
| excludeProviders | (Liste von Strings) Liste von Providern, dessen Meldungen nicht angezeigt werden sollen. Provider sind: "MOWAS", "DWD", "BIWAPP", "LHP" | `[]` (kein Filter) |
| maxAgeInHours | (Integer) Maximales Alter der Warnmeldungen in Stunden, bevor sie ausgefiltert werden | `6` |
| maxWidth | (String) CSS Style für maximale Breite des Moduls, z.B. `220px`. Weg lassen, zum Deaktivieren. | `undefined` (deaktiviert) |
| mergeAlerts | (Boolean) Sofern Alerts für mehrere Gemeinden abgefragt werden, wird versucht gleiche Meldungen zusammenzufassen | `true` |
| showCity | (Boolean) Soll der Name der Gemeinde angezeigt werden? | `true` |
| showDate | (Boolean) Soll das Datum der Meldung angezeigt werden? | `true` |
| showIcon | (Boolean) Soll ein Warn-Symbol vor den Warnungen angezeigt werden? | `true` |
| showNoWarning | (Boolean) Lässt eine Meldung "Keine Warnungen" erscheinen, falls keine Ereignisse vorliegen. | `false` |
| updateIntervalInSeconds | (Integer) Abstand in Sekunden, in dem Warnmeldungen vom NINA Server abgerufen werden | `120` (2 Minuten) |
| theme | (String) Welches Theme soll angewendet werden?<br> Verfügbare Themes: `top` und `side` | `side` |

## Contribution and Development

This module is written in TypeScript and compiled with Rollup.
This module is written in TypeScript and compiled with Rollup.
The source files are located in the `/src` folder.
Compile target files with `npm run build`.

Expand Down
4 changes: 2 additions & 2 deletions node_helper.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "mmm-nina",
"version": "1.3.3",
"version": "1.4.0",
"description": "Simple Client Implementierung für die NINA Warn App für die MagicMirror² Plattform.",
"main": "MMM-NINA.js",
"repository": {
Expand Down
15 changes: 14 additions & 1 deletion src/backend/Utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,20 @@ export default class Utils {
Log.warn(`AGS '${alertAgs}' konnte keiner Gemeinde zugeordnet werden.`)
}

const filtered = alerts.filter((alert) => (now - Date.parse(alert.sent)) / (1000 * 60 * 60) <= config.maxAgeInHours)
const filtered = alerts.filter((alert) => {
if (alert?.payload?.data?.provider === 'LHP') {
alert.payload.data.severity = 'Minor'
}

if (alert.payload.data.msgType === 'Cancel') {
alert.payload.data.severity = 'Fine'
}

return (
(now - Date.parse(alert.sent)) / (1000 * 60 * 60) <= config.maxAgeInHours &&
!config.excludeProviders.includes(alert?.payload?.data?.provider)
)
})

return filtered.map((alert) => {
// eslint-disable-next-line no-param-reassign
Expand Down
4 changes: 3 additions & 1 deletion src/frontend/Frontend.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ declare const moment: any
Module.register<Config>('MMM-NINA', {
defaults: {
ags: '110000000000',
excludeProviders: [],
mergeAlerts: true,
maxAgeInHours: 6,
maxWidth: null,
Expand All @@ -17,7 +18,8 @@ Module.register<Config>('MMM-NINA', {
showCity: true,
showDate: true,
updateIntervalInSeconds: 120,
theme: 'side'
theme: 'side',
downgradeLhpServerity: false
},

getStyles() {
Expand Down
7 changes: 7 additions & 0 deletions src/types/Alert.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,11 @@ export type Alert = {
sent: string
date: string
cityName: string
payload: {
data: {
severity: string
provider: string
msgType: string
}
}
}
2 changes: 2 additions & 0 deletions src/types/Config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,4 +9,6 @@ export type Config = {
showCity: boolean
theme: string
updateIntervalInSeconds: number
excludeProviders: string[]
downgradeLhpServerity: boolean
}

0 comments on commit 57a8e5c

Please sign in to comment.