Update Link->Leafcutter integration

This commit is contained in:
Darren Clarke 2023-05-25 12:37:14 +00:00
parent baa1b32737
commit 495e8338b9
31 changed files with 239 additions and 343 deletions

View file

@ -0,0 +1,41 @@
import { FC } from "react";
import getConfig from "next/config";
import Head from "next/head";
import { Grid } from "@mui/material";
import { Layout } from "components/Layout";
import Iframe from "react-iframe";
type LeafcutterWrapperProps = {
path: string;
};
export const LeafcutterWrapper: FC<LeafcutterWrapperProps> = ({ path }) => {
const {
publicRuntimeConfig: { leafcutterURL },
} = getConfig();
const fullLeafcutterURL = `${leafcutterURL}/${path}`;
return (
<Layout>
<Head>
<title>Link Shell</title>
</Head>
<Grid
container
spacing={0}
sx={{ height: "100%", width: "100%" }}
direction="column"
>
<Grid item sx={{ height: "100vh", width: "100%" }}>
<Iframe
id="link"
url={fullLeafcutterURL}
width="100%"
height="100%"
frameBorder={0}
/>
</Grid>
</Grid>
</Layout>
);
};

View file

@ -116,7 +116,7 @@ const MenuItem = ({
fontWeight: "bold",
border: 0,
textAlign: "left",
color: "white"
color: "white",
}}
>
{name}
@ -154,8 +154,8 @@ interface SidebarProps {
export const Sidebar: FC<SidebarProps> = ({ open, setOpen }) => {
const { pathname } = useRouter();
const { data: session } = useSession()
const username = session?.user?.name || "User"
const { data: session } = useSession();
const username = session?.user?.name || "User";
return (
<Drawer
@ -276,9 +276,9 @@ export const Sidebar: FC<SidebarProps> = ({ open, setOpen }) => {
{open
? username
: username
.split(" ")
.map((name) => name.substring(0, 1))
.join("")}
.split(" ")
.map((name) => name.substring(0, 1))
.join("")}
</Typography>
</Grid>
<Grid item>
@ -396,6 +396,14 @@ export const Sidebar: FC<SidebarProps> = ({ open, setOpen }) => {
</List>
</Collapse>
<MenuItem
name="Knowledge Base"
href="/knowledge"
Icon={CottageIcon}
iconSize={20}
selected={pathname.endsWith("/knowledge")}
open={open}
/>
<MenuItem
name="Leafcutter"
href="/leafcutter"

View file

@ -1,6 +1,9 @@
/** @type {import('next').NextConfig} */
const nextConfig = {
reactStrictMode: true,
publicRuntimeConfig: {
leafcutterURL: process.env.LEAFCUTTER_URL,
},
rewrites: async () => ({
fallback: [
{

View file

@ -0,0 +1,31 @@
import { FC } from "react";
import Head from "next/head";
import { Grid } from "@mui/material";
import { Layout } from "components/Layout";
import { ZammadWrapper } from "components/ZammadWrapper";
const Assigned: FC = () => (
<Layout>
<Head>
<title>Link Shell</title>
</Head>
<Grid
container
spacing={0}
sx={{ height: "100%", width: "100%" }}
direction="column"
>
<Grid
item
sx={{
height: "100%",
width: "100%",
}}
>
<ZammadWrapper path="/#knowledge_base/1/locale/en-us" />
</Grid>
</Grid>
</Layout>
);
export default Assigned;

View file

@ -1,36 +1,6 @@
import { FC, useState } from "react";
import Head from "next/head";
import { Grid } from "@mui/material";
import { Layout } from "components/Layout";
import Iframe from "react-iframe";
import { NextPage } from "next";
import { LeafcutterWrapper } from "components/LeafcutterWrapper";
const About: FC = () => {
const [leafcutterURL, setLeafcutterURL] = useState(
"https://lc.digiresilience.org/about"
);
return (
<Layout>
<Head>
<title>Link Shell</title>
</Head>
<Grid
container
spacing={0}
sx={{ height: "100%", width: "100%" }}
direction="column"
>
<Grid item sx={{ height: "100vh", width: "100%" }}>
<Iframe
id="link"
url={leafcutterURL}
width="100%"
height="100%"
frameBorder={0}
/>
</Grid>
</Grid>
</Layout>
);
};
const About: NextPage = () => <LeafcutterWrapper path="about" />;
export default About;

View file

@ -1,36 +1,6 @@
import { FC, useState } from "react";
import Head from "next/head";
import { Grid } from "@mui/material";
import { Layout } from "components/Layout";
import Iframe from "react-iframe";
import { NextPage } from "next";
import { LeafcutterWrapper } from "components/LeafcutterWrapper";
const Create: FC = () => {
const [leafcutterURL, setLeafcutterURL] = useState(
"https://lc.digiresilience.org/create"
);
return (
<Layout>
<Head>
<title>Link Shell</title>
</Head>
<Grid
container
spacing={0}
sx={{ height: "100%", width: "100%" }}
direction="column"
>
<Grid item sx={{ height: "100vh", width: "100%" }}>
<Iframe
id="link"
url={leafcutterURL}
width="100%"
height="100%"
frameBorder={0}
/>
</Grid>
</Grid>
</Layout>
);
};
const Create: NextPage = () => <LeafcutterWrapper path="create" />;
export default Create;

View file

@ -1,36 +1,6 @@
import { FC, useState } from "react";
import Head from "next/head";
import { Grid } from "@mui/material";
import { Layout } from "components/Layout";
import Iframe from "react-iframe";
import { NextPage } from "next";
import { LeafcutterWrapper } from "components/LeafcutterWrapper";
const FAQ: FC = () => {
const [leafcutterURL, setLeafcutterURL] = useState(
"https://lc.digiresilience.org/faq"
);
return (
<Layout>
<Head>
<title>Link Shell</title>
</Head>
<Grid
container
spacing={0}
sx={{ height: "100%", width: "100%" }}
direction="column"
>
<Grid item sx={{ height: "100vh", width: "100%" }}>
<Iframe
id="link"
url={leafcutterURL}
width="100%"
height="100%"
frameBorder={0}
/>
</Grid>
</Grid>
</Layout>
);
};
const FAQ: NextPage = () => <LeafcutterWrapper path="faq" />;
export default FAQ;

View file

@ -1,36 +1,6 @@
import { FC, useState } from "react";
import Head from "next/head";
import { Grid, Button } from "@mui/material";
import { Layout } from "components/Layout";
import Iframe from "react-iframe";
import { NextPage } from "next";
import { LeafcutterWrapper } from "components/LeafcutterWrapper";
const Leafcutter: FC = () => {
const [leafcutterURL, setLeafcutterURL] = useState(
"https://lc.digiresilience.org"
);
return (
<Layout>
<Head>
<title>Link Shell</title>
</Head>
<Grid
container
spacing={0}
sx={{ height: "100%", width: "100%" }}
direction="column"
>
<Grid item sx={{ height: "100vh", width: "100%" }}>
<Iframe
id="link"
url={leafcutterURL}
width="100%"
height="100%"
frameBorder={0}
/>
</Grid>
</Grid>
</Layout>
);
};
const Dashboard: NextPage = () => <LeafcutterWrapper path="" />;
export default Leafcutter;
export default Dashboard;

View file

@ -1,36 +1,6 @@
import { FC, useState } from "react";
import Head from "next/head";
import { Grid, Button } from "@mui/material";
import { Layout } from "components/Layout";
import Iframe from "react-iframe";
import { NextPage } from "next";
import { LeafcutterWrapper } from "components/LeafcutterWrapper";
const Trends: FC = () => {
const [leafcutterURL, setLeafcutterURL] = useState(
"https://lc.digiresilience.org/trends"
);
return (
<Layout>
<Head>
<title>Link Shell</title>
</Head>
<Grid
container
spacing={0}
sx={{ height: "100%", width: "100%" }}
direction="column"
>
<Grid item sx={{ height: "100vh", width: "100%" }}>
<Iframe
id="link"
url={leafcutterURL}
width="100%"
height="100%"
frameBorder={0}
/>
</Grid>
</Grid>
</Layout>
);
};
const Trends: NextPage = () => <LeafcutterWrapper path="trends" />;
export default Trends;