🚧 WIP on adding docker containers to boards

This commit is contained in:
Thomas Camlong
2023-11-26 23:24:03 +01:00
parent c88cd3c05e
commit e2da8338e0
2 changed files with 13 additions and 13 deletions

View File

@@ -16,7 +16,7 @@ import { Trans, useTranslation } from 'next-i18next';
import Link from 'next/link'; import Link from 'next/link';
import { useRouter } from 'next/router'; import { useRouter } from 'next/router';
import { env } from 'process'; import { env } from 'process';
import { useEffect, useState } from 'react'; import { useState } from 'react';
import { useEditModeStore } from '~/components/Dashboard/Views/useEditModeStore'; import { useEditModeStore } from '~/components/Dashboard/Views/useEditModeStore';
import { useNamedWrapperColumnCount } from '~/components/Dashboard/Wrappers/gridstack/store'; import { useNamedWrapperColumnCount } from '~/components/Dashboard/Wrappers/gridstack/store';
import ContainerActionBar from '~/components/Manage/Tools/Docker/ContainerActionBar'; import ContainerActionBar from '~/components/Manage/Tools/Docker/ContainerActionBar';
@@ -30,14 +30,15 @@ import { MainLayout } from './MainLayout';
type BoardLayoutProps = { type BoardLayoutProps = {
children: React.ReactNode; children: React.ReactNode;
isDockerEnabled?: boolean;
}; };
export const BoardLayout = ({ children }: BoardLayoutProps) => { export const BoardLayout = ({ children, isDockerEnabled = false }: BoardLayoutProps) => {
const { config } = useConfigContext(); const { config } = useConfigContext();
const { data: session } = useSession(); const { data: session } = useSession();
return ( return (
<MainLayout autoFocusSearch={session?.user.autoFocusSearch} headerActions={<HeaderActions />}> <MainLayout autoFocusSearch={session?.user.autoFocusSearch} headerActions={<HeaderActions isDockerEnabled={isDockerEnabled} />}>
<BoardHeadOverride /> <BoardHeadOverride />
<BackgroundImage /> <BackgroundImage />
{children} {children}
@@ -46,7 +47,7 @@ export const BoardLayout = ({ children }: BoardLayoutProps) => {
); );
}; };
export const HeaderActions = () => { export const HeaderActions = ({isDockerEnabled = false} : { isDockerEnabled: boolean}) => {
const { data: sessionData } = useSession(); const { data: sessionData } = useSession();
if (!sessionData?.user?.isAdmin) return null; if (!sessionData?.user?.isAdmin) return null;
@@ -54,7 +55,7 @@ export const HeaderActions = () => {
return ( return (
<> <>
<ToggleEditModeButton /> <ToggleEditModeButton />
<DockerButton /> {isDockerEnabled && <DockerButton />}
<CustomizeBoardButton /> <CustomizeBoardButton />
</> </>
); );

View File

@@ -1,4 +1,3 @@
import Consola from 'consola';
import { GetServerSidePropsContext, InferGetServerSidePropsType } from 'next'; import { GetServerSidePropsContext, InferGetServerSidePropsType } from 'next';
import { SSRConfig } from 'next-i18next'; import { SSRConfig } from 'next-i18next';
import { Dashboard } from '~/components/Dashboard/Dashboard'; import { Dashboard } from '~/components/Dashboard/Dashboard';
@@ -16,19 +15,19 @@ import { api } from '~/utils/api';
export default function BoardPage({ export default function BoardPage({
config: initialConfig, config: initialConfig,
dockerIsConfigured, isDockerEnabled,
initialContainers, initialContainers,
}: InferGetServerSidePropsType<typeof getServerSideProps>) { }: InferGetServerSidePropsType<typeof getServerSideProps>) {
useInitConfig(initialConfig); useInitConfig(initialConfig);
const { data } = api.docker.containers.useQuery(undefined, { const { data } = api.docker.containers.useQuery(undefined, {
initialData: initialContainers, initialData: initialContainers ?? undefined,
enabled: dockerIsConfigured, enabled: isDockerEnabled,
cacheTime: 60 * 1000 * 5, cacheTime: 60 * 1000 * 5,
staleTime: 60 * 1000 * 1, staleTime: 60 * 1000 * 1,
}); });
return ( return (
<BoardLayout> <BoardLayout isDockerEnabled={isDockerEnabled}>
<Dashboard /> <Dashboard />
</BoardLayout> </BoardLayout>
); );
@@ -68,7 +67,7 @@ export const getServerSideProps = async (context: GetServerSidePropsContext) =>
try { try {
if (session?.user.isAdmin == true) containers = await caller.containers(); if (session?.user.isAdmin == true) containers = await caller.containers();
} catch (error) { } catch (error) {
Consola.error(`The docker integration failed with the following error: ${error}`);
} }
return { return {
props: { props: {
@@ -76,8 +75,8 @@ export const getServerSideProps = async (context: GetServerSidePropsContext) =>
primaryColor: config.settings.customization.colors.primary, primaryColor: config.settings.customization.colors.primary,
secondaryColor: config.settings.customization.colors.secondary, secondaryColor: config.settings.customization.colors.secondary,
primaryShade: config.settings.customization.colors.shade, primaryShade: config.settings.customization.colors.shade,
dockerIsConfigured: containers != undefined, isDockerEnabled: containers != undefined,
initialContainers: containers, initialContainers: containers ?? null,
...translations, ...translations,
}, },
}; };