diff --git a/docs/widgets.md b/docs/widgets.md index 57b6cd7b..ade021d7 100644 --- a/docs/widgets.md +++ b/docs/widgets.md @@ -35,6 +35,8 @@ Dashy has support for displaying dynamic content in the form of widgets. There a - [GitHub Trending](#github-trending) - [GitHub Profile Stats](#github-profile-stats) - [Healthchecks Status](#healthchecks status) + - [Mvg Departure](#mvg-departure) + - [Mvg Connection](#mvg-connection) - **[Self-Hosted Services Widgets](#self-hosted-services-widgets)** - [System Info](#system-info) - [Cron Monitoring](#cron-monitoring-health-checks) @@ -1174,6 +1176,92 @@ Display status of one or more HealthChecks project(s). Works with healthcheck.io --- +### MVG Departure + +Display departure time of a MVG (Münchner Verkehrs Gesellschaft) station. + +From https://www.mvg.de/impressum.html: + +> [...] Die Verarbeitung unserer Inhalte oder Daten durch Dritte erfordert unsere ausdrückliche Zustimmung. Für private, nicht-kommerzielle Zwecke, wird eine gemäßigte Nutzung ohne unsere ausdrückliche Zustimmung geduldet. Jegliche Form von Data-Mining stellt keine gemäßigte Nutzung dar.[...] + +In other words: Private, noncomercial, moderate use of the API is tolerated. They don’t consider data mining as moderate use. (This is not a legal advice) + +#### Options + +**Field** | **Type** | **Required** | **Description** +--- | --- | --- | --- +**`location`** | `string` | Required | The name of the location (exact) or the location id, startin with `de:09162:` +**`limit`** | `integer` | _Optional_ | Limit number of entries, defaults to 10. +**`title`** | `string` | _Optional_ | A custom title to be displayed. +**`header`** | `bool` | _Optional_ | Shall the title be shown? +**`filters`** | `object` | _Optional_ | Filter results +**`filters.line`** | `string/array` | _Optional_ | Filter results for given line(s). +**`filters.product`** | `string/array` | _Optional_ | Filter results for specific product (TRAM, UBAHN, SBAHN, BUS). +**`filters.destination`** | `string/object` | _Optional_ | Filter results for specific destination(s) + +```yaml +- type: mvg + options: + location: Marienplatz + limit: 5 +``` + +#### Info + +- **CORS**: 🟢 Enabled +- **Auth**: 🟢 Not Required +- **Price**: 🟢 Free / Private use only +- **Host**: [MVG](https://mvg.de) +- **Privacy**: _See [MVG Datenschutz](https://www.mvg.de/datenschutz-mvg.html)_ + +--- + +### MVG Connection + +Display the next connection for two addresses/coordinates, stations or POI within Munich using MVG MVG (Münchner Verkehrs Gesellschaft). + +From https://www.mvg.de/impressum.html: + +> [...] Die Verarbeitung unserer Inhalte oder Daten durch Dritte erfordert unsere ausdrückliche Zustimmung. Für private, nicht-kommerzielle Zwecke, wird eine gemäßigte Nutzung ohne unsere ausdrückliche Zustimmung geduldet. Jegliche Form von Data-Mining stellt keine gemäßigte Nutzung dar.[...] + +In other words: Private, noncomercial, moderate use of the API is tolerated. They don’t consider data mining as moderate use. (This is not a legal advice) + +#### Options + +**Field** | **Type** | **Required** | **Description** +--- | --- | --- | --- +**`origin`** | `string` | Required | Origin of the connection. +**`destination`** | `string` | Required | Destination of the connection. +**`title`** | `string` | _Optional_ | A custom title to be displayed. +**`header`** | `bool` | _Optional_ | Shall the title be shown? +**`filters`** | `object` | _Optional_ | Filter results +**`filters.line`** | `string/array` | _Optional_ | Filter results for given line(s). +**`filters.product`** | `string/array` | _Optional_ | Filter results for specific product (TRAM, UBAHN, SBAHN, BUS). +**`filters.destination`** | `string/object` | _Optional_ | Filter results for specific destination(s) + +```yaml +- type: mvg-connection + options: + from: Marienplatz + from: Dachauer Straße 123 + header: true + filters: + product: [UBAHN] + line: [U1,U2,U4,U5] + +``` + +#### Info + +- **CORS**: 🟢 Enabled +- **Auth**: 🟢 Not Required +- **Price**: 🟢 Free / Private use only +- **Host**: [MVG](https://mvg.de) +- **Privacy**: _See [MVG Datenschutz](https://www.mvg.de/datenschutz-mvg.html)_ + +--- + + ## Self-Hosted Services Widgets ### System Info diff --git a/src/components/Widgets/Mvg.vue b/src/components/Widgets/Mvg.vue new file mode 100644 index 00000000..166eed00 --- /dev/null +++ b/src/components/Widgets/Mvg.vue @@ -0,0 +1,353 @@ + + + + + + + + diff --git a/src/components/Widgets/MvgConnection.vue b/src/components/Widgets/MvgConnection.vue new file mode 100644 index 00000000..b4eae501 --- /dev/null +++ b/src/components/Widgets/MvgConnection.vue @@ -0,0 +1,372 @@ + + + + + + + + diff --git a/src/components/Widgets/WidgetBase.vue b/src/components/Widgets/WidgetBase.vue index a5cbf1c2..0f310a9d 100644 --- a/src/components/Widgets/WidgetBase.vue +++ b/src/components/Widgets/WidgetBase.vue @@ -83,6 +83,8 @@ const COMPAT = { image: 'ImageWidget', joke: 'Jokes', 'mullvad-status': 'MullvadStatus', + mvg: 'Mvg', + 'mvg-connection': 'MvgConnection', 'nd-cpu-history': 'NdCpuHistory', 'nd-load-history': 'NdLoadHistory', 'nd-ram-history': 'NdRamHistory', diff --git a/src/utils/defaults.js b/src/utils/defaults.js index 8d609684..8f51df94 100644 --- a/src/utils/defaults.js +++ b/src/utils/defaults.js @@ -236,6 +236,7 @@ module.exports = { jokes: 'https://v2.jokeapi.dev/joke/', news: 'https://api.currentsapi.services/v1/latest-news', mullvad: 'https://am.i.mullvad.net/json', + mvg: 'https://www.mvg.de/api/fib/v2/', publicIp: 'https://ipapi.co/json', publicIp2: 'https://api.ipgeolocation.io/ipgeo', publicIp3: 'http://ip-api.com/json',