From e649fdcbdb84f8d340cc1c08b9ab8c743093dcfa Mon Sep 17 00:00:00 2001 From: shamoon <4887959+shamoon@users.noreply.github.com> Date: Mon, 23 Sep 2024 19:55:19 -0700 Subject: [PATCH] Feature: LubeLogger widget --- docs/widgets/services/index.md | 1 + docs/widgets/services/lubelogger.md | 16 +++++++++++++ public/locales/en/common.json | 5 ++++ src/widgets/components.js | 1 + src/widgets/lubelogger/component.jsx | 36 ++++++++++++++++++++++++++++ src/widgets/lubelogger/widget.js | 14 +++++++++++ src/widgets/widgets.js | 2 ++ 7 files changed, 75 insertions(+) create mode 100644 docs/widgets/services/lubelogger.md create mode 100644 src/widgets/lubelogger/component.jsx create mode 100644 src/widgets/lubelogger/widget.js diff --git a/docs/widgets/services/index.md b/docs/widgets/services/index.md index f633dfd2..6af2aeed 100644 --- a/docs/widgets/services/index.md +++ b/docs/widgets/services/index.md @@ -59,6 +59,7 @@ You can also find a list of all available service widgets in the sidebar navigat - [Kopia](kopia.md) - [Lidarr](lidarr.md) - [Linkwarden](linkwarden.md) +- [Lubelogger](lubelogger.md) - [Mastodon](mastodon.md) - [Mealie](mealie.md) - [Medusa](medusa.md) diff --git a/docs/widgets/services/lubelogger.md b/docs/widgets/services/lubelogger.md new file mode 100644 index 00000000..2efdf591 --- /dev/null +++ b/docs/widgets/services/lubelogger.md @@ -0,0 +1,16 @@ +--- +title: LubeLogger +description: LubeLogger Widget Configuration +--- + +Learn more about [LubeLogger](https://github.com/hargata/lubelog). + +Allowed fields: `["vehicles", "serviceRecords", "reminders"]`. + +```yaml +widget: + type: lubelogger + url: https://lubelogger.host.or.ip + username: lubeloggerusername + password: lubeloggerpassword +``` diff --git a/public/locales/en/common.json b/public/locales/en/common.json index 561812b3..f3d1309c 100644 --- a/public/locales/en/common.json +++ b/public/locales/en/common.json @@ -945,5 +945,10 @@ "average": "Average", "high": "High", "disaster": "Disaster" + }, + "lubelogger": { + "vehicles": "Vehicles", + "serviceRecords": "Service Records", + "reminders": "Reminders" } } diff --git a/src/widgets/components.js b/src/widgets/components.js index abeb9422..0a5a815c 100644 --- a/src/widgets/components.js +++ b/src/widgets/components.js @@ -56,6 +56,7 @@ const components = { kopia: dynamic(() => import("./kopia/component")), lidarr: dynamic(() => import("./lidarr/component")), linkwarden: dynamic(() => import("./linkwarden/component")), + lubelogger: dynamic(() => import("./lubelogger/component")), mailcow: dynamic(() => import("./mailcow/component")), mastodon: dynamic(() => import("./mastodon/component")), mealie: dynamic(() => import("./mealie/component")), diff --git a/src/widgets/lubelogger/component.jsx b/src/widgets/lubelogger/component.jsx new file mode 100644 index 00000000..7e23b4f8 --- /dev/null +++ b/src/widgets/lubelogger/component.jsx @@ -0,0 +1,36 @@ +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: vehicleInfo, error } = useWidgetAPI(widget, "vehicleinfo"); + + if (error) { + return ; + } + + if (!vehicleInfo) { + return ( + + + + + + ); + } + + const totalReminders = vehicleInfo.reduce( + (acc, val) => acc + val.veryUrgentReminderCount + val.urgentReminderCount + val.notUrgentReminderCount, + 0, + ); + const totalServiceRecords = vehicleInfo.reduce((acc, val) => acc + val.serviceRecordCount, 0); + + return ( + + + + + + ); +} diff --git a/src/widgets/lubelogger/widget.js b/src/widgets/lubelogger/widget.js new file mode 100644 index 00000000..87e34ce6 --- /dev/null +++ b/src/widgets/lubelogger/widget.js @@ -0,0 +1,14 @@ +import genericProxyHandler from "utils/proxy/handlers/generic"; + +const widget = { + api: "{url}/api/{endpoint}", + proxyHandler: genericProxyHandler, + + mappings: { + vehicleinfo: { + endpoint: "vehicle/info", + }, + }, +}; + +export default widget; diff --git a/src/widgets/widgets.js b/src/widgets/widgets.js index ea48b7fb..3334e47e 100644 --- a/src/widgets/widgets.js +++ b/src/widgets/widgets.js @@ -48,6 +48,7 @@ import komga from "./komga/widget"; import kopia from "./kopia/widget"; import lidarr from "./lidarr/widget"; import linkwarden from "./linkwarden/widget"; +import lubelogger from "./lubelogger/widget"; import mailcow from "./mailcow/widget"; import mastodon from "./mastodon/widget"; import mealie from "./mealie/widget"; @@ -174,6 +175,7 @@ const widgets = { kopia, lidarr, linkwarden, + lubelogger, mailcow, mastodon, mealie,