diff --git a/docs/widgets/services/watchyourlan.md b/docs/widgets/services/watchyourlan.md new file mode 100644 index 00000000..1d33b334 --- /dev/null +++ b/docs/widgets/services/watchyourlan.md @@ -0,0 +1,14 @@ +--- +title: WatchYourLAN +description: WatchYourLAN Widget Configuration +--- + +Learn more about [WatchYourLAN](https://github.com/aceberg/WatchYourLAN). + +No specific configuration is required on WatchYourLAN to configure this widget. The API is enabled by default. + +```yaml +widget: + type: watchyourlan + url: http://your-ip-address:8840 +``` diff --git a/mkdocs.yml b/mkdocs.yml index fa2188ad..12f4e382 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -160,6 +160,7 @@ nav: - widgets/services/urbackup.md - widgets/services/vikunja.md - widgets/services/watchtower.md + - widgets/services/watchyourlan.md - widgets/services/wgeasy.md - widgets/services/whatsupdocker.md - widgets/services/xteve.md diff --git a/public/locales/en/common.json b/public/locales/en/common.json index 1d738089..572fbc4e 100644 --- a/public/locales/en/common.json +++ b/public/locales/en/common.json @@ -1010,5 +1010,9 @@ "issues": "Issues", "merges": "Merge Requests", "projects": "Projects" + }, + "watchyourlan": { + "unknown_hosts": "Unknown Hosts", + "known_hosts": "Known Hosts" } } diff --git a/src/widgets/components.js b/src/widgets/components.js index 19f41d4a..523b51c8 100644 --- a/src/widgets/components.js +++ b/src/widgets/components.js @@ -134,6 +134,7 @@ const components = { urbackup: dynamic(() => import("./urbackup/component")), vikunja: dynamic(() => import("./vikunja/component")), watchtower: dynamic(() => import("./watchtower/component")), + watchyourlan: dynamic(() => import("./watchyourlan/component")), wgeasy: dynamic(() => import("./wgeasy/component")), whatsupdocker: dynamic(() => import("./whatsupdocker/component")), xteve: dynamic(() => import("./xteve/component")), diff --git a/src/widgets/watchyourlan/component.jsx b/src/widgets/watchyourlan/component.jsx new file mode 100644 index 00000000..c4ae10b1 --- /dev/null +++ b/src/widgets/watchyourlan/component.jsx @@ -0,0 +1,39 @@ +import { useTranslation } from "next-i18next"; + +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 { t } = useTranslation(); + + const { widget } = service; + + const { data: watchYourLANData, error: watchYourLANError } = useWidgetAPI(widget, "all"); + + if (watchYourLANError) { + return ; + } + + if (!watchYourLANData) { + return ( + + + + + ); + } + + return ( + + item.Known != 1).length })} + /> + item.Known == 1).length })} + /> + + ); +} diff --git a/src/widgets/watchyourlan/widget.js b/src/widgets/watchyourlan/widget.js new file mode 100644 index 00000000..f8107151 --- /dev/null +++ b/src/widgets/watchyourlan/widget.js @@ -0,0 +1,14 @@ +import credentialedProxyHandler from "utils/proxy/handlers/credentialed"; + +const widget = { + api: "{url}/api/{endpoint}", + proxyHandler: credentialedProxyHandler, + + mappings: { + all: { + endpoint: "all", + }, + }, +}; + +export default widget; diff --git a/src/widgets/widgets.js b/src/widgets/widgets.js index 9d4bb935..cd7368b8 100644 --- a/src/widgets/widgets.js +++ b/src/widgets/widgets.js @@ -124,6 +124,7 @@ import uptimekuma from "./uptimekuma/widget"; import uptimerobot from "./uptimerobot/widget"; import vikunja from "./vikunja/widget"; import watchtower from "./watchtower/widget"; +import watchyourlan from "./watchyourlan/widget"; import wgeasy from "./wgeasy/widget"; import whatsupdocker from "./whatsupdocker/widget"; import xteve from "./xteve/widget"; @@ -263,6 +264,7 @@ const widgets = { urbackup, vikunja, watchtower, + watchyourlan, wgeasy, whatsupdocker, xteve,