From c3b76080cbb0d19ed642c91aa099bdcff4a10f42 Mon Sep 17 00:00:00 2001 From: fredodiable Date: Wed, 26 Jul 2023 00:51:45 +0200 Subject: [PATCH] Changed to GameDig Converted csgo widget to gamedig Added game server type as widget parameter Added more fields --- public/locales/en/common.json | 6 +++- public/locales/fr/common.json | 6 +++- src/widgets/components.js | 2 +- src/widgets/csgo/component.jsx | 37 ------------------- src/widgets/csgo/widget.js | 7 ---- src/widgets/gamedig/component.jsx | 49 ++++++++++++++++++++++++++ src/widgets/{csgo => gamedig}/proxy.js | 9 ++--- src/widgets/gamedig/widget.js | 7 ++++ src/widgets/widgets.js | 4 +-- 9 files changed, 74 insertions(+), 53 deletions(-) delete mode 100644 src/widgets/csgo/component.jsx delete mode 100644 src/widgets/csgo/widget.js create mode 100644 src/widgets/gamedig/component.jsx rename src/widgets/{csgo => gamedig}/proxy.js (79%) create mode 100644 src/widgets/gamedig/widget.js diff --git a/public/locales/en/common.json b/public/locales/en/common.json index 21f90d89..6091c0b1 100644 --- a/public/locales/en/common.json +++ b/public/locales/en/common.json @@ -675,9 +675,13 @@ "canceled": "Canceled", "inProgress": "In Progress" }, - "csgo": { + "gamedig": { + "name": "Name", "map": "Map", + "currentPlayers": "Current players", "players": "Players", + "maxPlayers": "Max players", + "bots": "Bots", "ping": "Ping" } } diff --git a/public/locales/fr/common.json b/public/locales/fr/common.json index 56c84876..9bf6d6ef 100644 --- a/public/locales/fr/common.json +++ b/public/locales/fr/common.json @@ -666,9 +666,13 @@ "canceled": "Annulé", "inProgress": "En cours" }, - "csgo": { + "gamedig": { + "name": "Nom", "map": "Carte", + "currentPlayers": "Joueurs actuels", "players": "Joueurs", + "maxPlayers": "Joueurs max", + "bots": "Bots", "ping": "Ping" } } diff --git a/src/widgets/components.js b/src/widgets/components.js index 2147c26f..4b7ef50c 100644 --- a/src/widgets/components.js +++ b/src/widgets/components.js @@ -12,7 +12,6 @@ const components = { channelsdvrserver: dynamic(() => import("./channelsdvrserver/component")), cloudflared: dynamic(() => import("./cloudflared/component")), coinmarketcap: dynamic(() => import("./coinmarketcap/component")), - csgo: dynamic(() => import("./csgo/component")), deluge: dynamic(() => import("./deluge/component")), diskstation: dynamic(() => import("./diskstation/component")), downloadstation: dynamic(() => import("./downloadstation/component")), @@ -23,6 +22,7 @@ const components = { fileflows: dynamic(() => import("./fileflows/component")), flood: dynamic(() => import("./flood/component")), freshrss: dynamic(() => import("./freshrss/component")), + gamedig: dynamic(() => import("./gamedig/component")), ghostfolio: dynamic(() => import("./ghostfolio/component")), gluetun: dynamic(() => import("./gluetun/component")), gotify: dynamic(() => import("./gotify/component")), diff --git a/src/widgets/csgo/component.jsx b/src/widgets/csgo/component.jsx deleted file mode 100644 index 9909795b..00000000 --- a/src/widgets/csgo/component.jsx +++ /dev/null @@ -1,37 +0,0 @@ -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 { widget } = service; - const { data: serverData, error: serverError } = useWidgetAPI(widget, "status"); - const { t } = useTranslation(); - - if(serverError){ - return ; - } - - if (!serverData) { - return ( - - - - - - ); - } - - const map = serverData.online ? serverData.map : "-"; - const players = serverData.online ? `${serverData.players} / ${serverData.maxplayers}` : "-"; - const ping = serverData.online ? `${serverData.ping}` : 0; - - return ( - - - - - - ); -} diff --git a/src/widgets/csgo/widget.js b/src/widgets/csgo/widget.js deleted file mode 100644 index a465d5a6..00000000 --- a/src/widgets/csgo/widget.js +++ /dev/null @@ -1,7 +0,0 @@ -import csgoProxyHandler from "./proxy"; - -const widget = { - proxyHandler: csgoProxyHandler -} - -export default widget; diff --git a/src/widgets/gamedig/component.jsx b/src/widgets/gamedig/component.jsx new file mode 100644 index 00000000..796f7772 --- /dev/null +++ b/src/widgets/gamedig/component.jsx @@ -0,0 +1,49 @@ +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 { widget } = service; + const { data: serverData, error: serverError } = useWidgetAPI(widget, "status"); + const { t } = useTranslation(); + + if(serverError){ + return ; + } + + if (!serverData) { + return ( + + + + + + + + + + ); + } + + const name = serverData.online ? serverData.name : "-"; + const map = serverData.online ? serverData.map : "-"; + const currentPlayers = serverData.online ? `${serverData.players} / ${serverData.maxplayers}` : "-"; + const players = serverData.online ? `${serverData.players}` : "-"; + const maxPlayers = serverData.online ? `${serverData.maxplayers}` : "-"; + const bots = serverData.online ? `${serverData.bots}` : "-"; + const ping = serverData.online ? `${serverData.ping}` : 0; + + return ( + + + + + + + + + + ); +} diff --git a/src/widgets/csgo/proxy.js b/src/widgets/gamedig/proxy.js similarity index 79% rename from src/widgets/csgo/proxy.js rename to src/widgets/gamedig/proxy.js index 81b3dd81..f0b2e1d9 100644 --- a/src/widgets/csgo/proxy.js +++ b/src/widgets/gamedig/proxy.js @@ -1,20 +1,20 @@ import createLogger from "utils/logger"; import getServiceWidget from "utils/config/service-helpers"; -const proxyName = "csgoProxyHandler"; +const proxyName = "gamedigProxyHandler"; const logger = createLogger(proxyName); const gamedig = require("gamedig"); -export default async function csgoProxyHandler(req, res) { +export default async function gamedigProxyHandler(req, res) { const { group, service } = req.query; const serviceWidget = await getServiceWidget(group, service); const url = new URL(serviceWidget.url); try { const serverData = await gamedig.query({ - type: "csgo", + type: serviceWidget.serverType, host: url.hostname, - port: url.port || 27015, + port: url.port, givenPortOnly: true, }); @@ -24,6 +24,7 @@ export default async function csgoProxyHandler(req, res) { map: serverData.map, players: serverData.players.length, maxplayers: serverData.maxplayers, + bots: serverData.bots.length, ping: serverData.ping, }); } catch (e) { diff --git a/src/widgets/gamedig/widget.js b/src/widgets/gamedig/widget.js new file mode 100644 index 00000000..c84e95bb --- /dev/null +++ b/src/widgets/gamedig/widget.js @@ -0,0 +1,7 @@ +import gamedigProxyHandler from "./proxy"; + +const widget = { + proxyHandler: gamedigProxyHandler +} + +export default widget; diff --git a/src/widgets/widgets.js b/src/widgets/widgets.js index dd23d59b..6ae47efd 100644 --- a/src/widgets/widgets.js +++ b/src/widgets/widgets.js @@ -9,7 +9,6 @@ import changedetectionio from "./changedetectionio/widget"; import channelsdvrserver from "./channelsdvrserver/widget"; import cloudflared from "./cloudflared/widget"; import coinmarketcap from "./coinmarketcap/widget"; -import csgo from "./csgo/widget"; import deluge from "./deluge/widget"; import diskstation from "./diskstation/widget"; import downloadstation from "./downloadstation/widget"; @@ -18,6 +17,7 @@ import evcc from "./evcc/widget"; import fileflows from "./fileflows/widget"; import flood from "./flood/widget"; import freshrss from "./freshrss/widget"; +import gamedig from "./gamedig/widget"; import ghostfolio from "./ghostfolio/widget"; import gluetun from "./gluetun/widget"; import gotify from "./gotify/widget"; @@ -100,7 +100,6 @@ const widgets = { channelsdvrserver, cloudflared, coinmarketcap, - csgo, deluge, diskstation, downloadstation, @@ -109,6 +108,7 @@ const widgets = { fileflows, flood, freshrss, + gamedig, ghostfolio, gluetun, gotify,