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,
|
2022-09-12 19:35:47 -07:00
|
|
|
sabnzbd: SABnzbd,
|
|
|
|
transmission: Transmission,
|
2022-09-16 19:11:57 -07:00
|
|
|
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,
|
2022-09-14 10:46:52 -07:00
|
|
|
prowlarr: Prowlarr,
|
2022-09-14 10:50:53 -07:00
|
|
|
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>
|
|
|
|
);
|
|
|
|
}
|