From f6ca3f57f7d6bea6c2dca602996e6f02dbf022b8 Mon Sep 17 00:00:00 2001 From: Karl0ss Date: Sat, 20 Jan 2024 07:36:44 +0000 Subject: [PATCH] Feature: Romm Widget (#2663) --------- Co-authored-by: Karl Hudgell Co-authored-by: shamoon <4887959+shamoon@users.noreply.github.com> --- docs/widgets/services/romm.md | 12 ++++++++++++ mkdocs.yml | 1 + public/locales/en/common.json | 4 ++++ src/widgets/components.js | 1 + src/widgets/romm/component.jsx | 32 ++++++++++++++++++++++++++++++++ src/widgets/romm/widget.js | 14 ++++++++++++++ src/widgets/widgets.js | 2 ++ 7 files changed, 66 insertions(+) create mode 100644 docs/widgets/services/romm.md create mode 100644 src/widgets/romm/component.jsx create mode 100644 src/widgets/romm/widget.js diff --git a/docs/widgets/services/romm.md b/docs/widgets/services/romm.md new file mode 100644 index 000000000..ae8d69d29 --- /dev/null +++ b/docs/widgets/services/romm.md @@ -0,0 +1,12 @@ +--- +title: Romm +description: Romm Widget Configuration +--- + +Allowed fields: `["platforms", "totalRoms"]`. + +```yaml +widget: + type: Romm + url: http://romm.host.or.ip +``` diff --git a/mkdocs.yml b/mkdocs.yml index 0968da60d..a9beba06e 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -115,6 +115,7 @@ nav: - widgets/services/qnap.md - widgets/services/radarr.md - widgets/services/readarr.md + - widgets/services/romm.md - widgets/services/rutorrent.md - widgets/services/sabnzbd.md - widgets/services/scrutiny.md diff --git a/public/locales/en/common.json b/public/locales/en/common.json index eaed3344c..2192a7de7 100644 --- a/public/locales/en/common.json +++ b/public/locales/en/common.json @@ -796,6 +796,10 @@ "noEventsToday": "No events for today!", "noEventsFound": "No events found" }, + "romm": { + "platforms": "Platforms", + "totalRoms": "Total ROMs" + }, "netdata": { "warnings": "Warnings", "criticals": "Criticals" diff --git a/src/widgets/components.js b/src/widgets/components.js index 30e957405..3cdfc261a 100644 --- a/src/widgets/components.js +++ b/src/widgets/components.js @@ -87,6 +87,7 @@ const components = { qnap: dynamic(() => import("./qnap/component")), radarr: dynamic(() => import("./radarr/component")), readarr: dynamic(() => import("./readarr/component")), + romm: dynamic(() => import("./romm/component")), rutorrent: dynamic(() => import("./rutorrent/component")), sabnzbd: dynamic(() => import("./sabnzbd/component")), scrutiny: dynamic(() => import("./scrutiny/component")), diff --git a/src/widgets/romm/component.jsx b/src/widgets/romm/component.jsx new file mode 100644 index 000000000..1cb3033e0 --- /dev/null +++ b/src/widgets/romm/component.jsx @@ -0,0 +1,32 @@ +import Container from "components/services/widget/container"; +import Block from "components/services/widget/block"; +import useWidgetAPI from "utils/proxy/use-widget-api"; + +export default function Component({ service }) { + const { widget } = service; + + const { data: response, error: responseError } = useWidgetAPI(widget, "statistics"); + + if (responseError) { + return ( + + + + ); + } + + if (responseError) { + return ; + } + + if (response) { + const platforms = response.filter((x) => x.rom_count !== 0).length; + const totalRoms = response.reduce((total, stat) => total + stat.rom_count, 0); + return ( + + + + + ); + } +} diff --git a/src/widgets/romm/widget.js b/src/widgets/romm/widget.js new file mode 100644 index 000000000..a7bb60fd6 --- /dev/null +++ b/src/widgets/romm/widget.js @@ -0,0 +1,14 @@ +import genericProxyHandler from "utils/proxy/handlers/generic"; + +const widget = { + api: "{url}/api/{endpoint}", + proxyHandler: genericProxyHandler, + + mappings: { + statistics: { + endpoint: "platforms", + }, + }, +}; + +export default widget; diff --git a/src/widgets/widgets.js b/src/widgets/widgets.js index b925bf74a..128a7dedf 100644 --- a/src/widgets/widgets.js +++ b/src/widgets/widgets.js @@ -101,6 +101,7 @@ import watchtower from "./watchtower/widget"; import whatsupdocker from "./whatsupdocker/widget"; import xteve from "./xteve/widget"; import urbackup from "./urbackup/widget"; +import romm from "./romm/widget"; const widgets = { adguard, @@ -186,6 +187,7 @@ const widgets = { qnap, radarr, readarr, + romm, rutorrent, sabnzbd, scrutiny,