37 lines
1.4 KiB
React
Raw Normal View History

import dynamic from "next/dynamic";
2022-08-24 10:44:35 +03:00
import ErrorBoundary from "components/errorboundry";
2022-08-24 10:44:35 +03:00
const widgetMappings = {
weatherapi: dynamic(() => import("components/widgets/weather/weather")),
openweathermap: dynamic(() => import("components/widgets/openweathermap/weather")),
resources: dynamic(() => import("components/widgets/resources/resources")),
search: dynamic(() => import("components/widgets/search/search")),
greeting: dynamic(() => import("components/widgets/greeting/greeting")),
datetime: dynamic(() => import("components/widgets/datetime/datetime")),
2022-10-08 16:04:24 +03:00
logo: dynamic(() => import("components/widgets/logo/logo"), { ssr: false }),
unifi_console: dynamic(() => import("components/widgets/unifi_console/unifi_console")),
2022-10-10 11:18:29 -07:00
glances: dynamic(() => import("components/widgets/glances/glances")),
2022-10-20 01:52:47 -07:00
openmeteo: dynamic(() => import("components/widgets/openmeteo/openmeteo")),
longhorn: dynamic(() => import("components/widgets/longhorn/longhorn")),
kubernetes: dynamic(() => import("components/widgets/kubernetes/kubernetes")),
2022-08-24 10:44:35 +03:00
};
export default function Widget({ widget, style }) {
2022-09-16 10:53:12 +03:00
const InfoWidget = widgetMappings[widget.type];
2022-08-24 10:44:35 +03:00
2022-09-16 10:53:12 +03:00
if (InfoWidget) {
return (
<ErrorBoundary>
<InfoWidget options={{ ...widget.options, style }} />
</ErrorBoundary>
);
2022-08-24 10:44:35 +03:00
}
return (
<div className="flex-none flex flex-row items-center justify-center">
Missing <strong>{widget.type}</strong>
</div>
);
}