81 lines
3.1 KiB
React
Raw Normal View History

2022-09-21 22:26:58 +03:00
import dynamic from "next/dynamic";
2022-09-25 19:43:00 +03:00
import { useTranslation } from "next-i18next";
2022-09-08 11:48:16 +03:00
2022-09-21 22:26:58 +03:00
const Sonarr = dynamic(() => import("./widgets/service/sonarr"));
const Radarr = dynamic(() => import("./widgets/service/radarr"));
const Lidarr = dynamic(() => import("./widgets/service/lidarr"));
const Readarr = dynamic(() => import("./widgets/service/readarr"));
const Bazarr = dynamic(() => import("./widgets/service/bazarr"));
const Ombi = dynamic(() => import("./widgets/service/ombi"));
const Portainer = dynamic(() => import("./widgets/service/portainer"));
const Emby = dynamic(() => import("./widgets/service/emby"));
const Nzbget = dynamic(() => import("./widgets/service/nzbget"));
const SABnzbd = dynamic(() => import("./widgets/service/sabnzbd"));
const Transmission = dynamic(() => import("./widgets/service/transmission"));
const QBittorrent = dynamic(() => import("./widgets/service/qbittorrent"));
const Docker = dynamic(() => import("./widgets/service/docker"));
const Pihole = dynamic(() => import("./widgets/service/pihole"));
const Rutorrent = dynamic(() => import("./widgets/service/rutorrent"));
const Jellyfin = dynamic(() => import("./widgets/service/jellyfin"));
const Speedtest = dynamic(() => import("./widgets/service/speedtest"));
const Traefik = dynamic(() => import("./widgets/service/traefik"));
const Jellyseerr = dynamic(() => import("./widgets/service/jellyseerr"));
const Overseerr = dynamic(() => import("./widgets/service/overseerr"));
const Npm = dynamic(() => import("./widgets/service/npm"));
const Tautulli = dynamic(() => import("./widgets/service/tautulli"));
const CoinMarketCap = dynamic(() => import("./widgets/service/coinmarketcap"));
const Gotify = dynamic(() => import("./widgets/service/gotify"));
const Prowlarr = dynamic(() => import("./widgets/service/prowlarr"));
const Jackett = dynamic(() => import("./widgets/service/jackett"));
const AdGuard = dynamic(() => import("./widgets/service/adguard"));
const StRelaySrv = dynamic(() => import("./widgets/service/strelaysrv"));
const Mastodon = dynamic(() => import("./widgets/service/mastodon"));
2022-08-24 10:44:35 +03:00
const widgetMappings = {
2022-08-25 16:29:26 +03:00
docker: Docker,
2022-08-24 10:44:35 +03:00
sonarr: Sonarr,
radarr: Radarr,
2022-09-14 19:30:51 -07:00
lidarr: Lidarr,
2022-09-11 19:49:18 -07:00
readarr: Readarr,
2022-09-14 16:15:26 -07:00
bazarr: Bazarr,
2022-08-24 10:44:35 +03:00
ombi: Ombi,
portainer: Portainer,
2022-08-25 01:35:02 +03:00
emby: Emby,
2022-08-26 22:34:24 +03:00
jellyfin: Jellyfin,
2022-08-25 02:48:52 +03:00
nzbget: Nzbget,
sabnzbd: SABnzbd,
transmission: Transmission,
qbittorrent: QBittorrent,
2022-08-25 18:37:22 +03:00
pihole: Pihole,
2022-08-25 21:31:57 +03:00
rutorrent: Rutorrent,
2022-08-27 03:50:49 +03:00
speedtest: Speedtest,
2022-08-27 11:23:04 +03:00
traefik: Traefik,
2022-09-02 12:13:15 +02:00
jellyseerr: Jellyseerr,
2022-09-11 17:24:33 +03:00
overseerr: Overseerr,
2022-09-12 01:30:42 -05:00
coinmarketcap: CoinMarketCap,
2022-09-02 12:13:15 +02:00
npm: Npm,
2022-09-03 15:36:59 +03:00
tautulli: Tautulli,
2022-09-11 04:11:02 +01:00
gotify: Gotify,
prowlarr: Prowlarr,
jackett: Jackett,
2022-09-16 14:05:56 +03:00
adguard: AdGuard,
2022-09-20 04:41:56 +02:00
strelaysrv: StRelaySrv,
2022-09-20 03:41:10 +02:00
mastodon: Mastodon,
2022-08-24 10:44:35 +03:00
};
export default function Widget({ service }) {
2022-09-08 11:48:16 +03:00
const { t } = useTranslation("common");
2022-08-24 10:44:35 +03:00
const ServiceWidget = widgetMappings[service.widget.type];
if (ServiceWidget) {
return <ServiceWidget service={service} />;
}
return (
<div className="bg-theme-200/50 dark:bg-theme-900/20 rounded m-1 flex-1 flex flex-col items-center justify-center p-1">
2022-09-08 11:48:16 +03:00
<div className="font-thin text-sm">{t("widget.missing_type", { type: service.widget.type })}</div>
2022-08-24 10:44:35 +03:00
</div>
);
}