This commit is contained in:
Sebastian Seedorf
2022-08-18 09:20:00 +02:00
parent 92b762bbd2
commit de95f57b18
60 changed files with 3450 additions and 994 deletions

View File

@@ -1,7 +1,6 @@
import '../styles/globals.css'
import type { AppProps } from 'next/app'
import {GroupProvider} from "../components/contexts/GroupProvider";
import {FC} from "react";
import { FC } from 'react'
const MyApp: FC<AppProps> = ({ Component, pageProps }) => {
return <Component {...pageProps} />

View File

@@ -1,18 +1,18 @@
import {Html, Main, NextScript, DocumentProps, Head} from 'next/document';
import {FC} from "react";
import Dict = NodeJS.Dict;
import { Html, Main, NextScript, DocumentProps, Head } from 'next/document'
import { FC } from 'react'
import Dict = NodeJS.Dict
const MyDocument: FC<DocumentProps> = ({ __NEXT_DATA__ }) => {
const pageProps: Dict<unknown>|undefined = __NEXT_DATA__?.props?.pageProps;
const pageProps: Dict<unknown> | undefined = __NEXT_DATA__?.props?.pageProps
return (
<Html>
<Head />
<body className={pageProps?.bodyClassName as string}>
<Main />
<NextScript />
<Main />
<NextScript />
</body>
</Html>
);
)
}
export default MyDocument

View File

@@ -1,8 +1,8 @@
import {nextHandler} from "../../../src/utils/errors";
import {validate} from "../../../src/validation";
import {IdParam, SetFactoryArrayBody} from "../../../src/types/ApiSchemas";
import {setFactories} from "../../../src/database/groups";
import {waitForInitSchemas} from "../../../src/validation/schemas";
import { nextHandler } from '../../../src/utils/errors'
import { validate } from '../../../src/validation'
import { IdParam, SetFactoryArrayBody } from '../../../src/types/ApiSchemas'
import { setFactories } from '../../../src/database/groups'
import { waitForInitSchemas } from '../../../src/validation/schemas'
const handler = nextHandler(async (req, res) => {
if (req.method !== 'POST') throw new Error('Invalid method')

View File

@@ -1,8 +1,8 @@
import {nextHandler} from "../../../../../src/utils/errors";
import {validate} from "../../../../../src/validation";
import {GroupIdParam} from "../../../../../src/types/ApiSchemas";
import {addGroup} from "../../../../../src/database/groups";
import {waitForInitSchemas} from "../../../../../src/validation/schemas";
import { nextHandler } from '../../../../../src/utils/errors'
import { validate } from '../../../../../src/validation'
import { GroupIdParam } from '../../../../../src/types/ApiSchemas'
import { addGroup } from '../../../../../src/database/groups'
import { waitForInitSchemas } from '../../../../../src/validation/schemas'
const handler = nextHandler(async (req, res) => {
if (req.method !== 'POST') throw new Error('Invalid method')

View File

@@ -1,14 +1,17 @@
import {nextHandler} from "../../../../../src/utils/errors";
import {validate} from "../../../../../src/validation";
import {GroupIdParam, GroupSetFactoryArrayBody} from "../../../../../src/types/ApiSchemas";
import {setFactoriesOfGroup} from "../../../../../src/database/groups";
import {waitForInitSchemas} from "../../../../../src/validation/schemas";
import { nextHandler } from '../../../../../src/utils/errors'
import { validate } from '../../../../../src/validation'
import { GroupIdParam, GroupSetFactoryArrayBody } from '../../../../../src/types/ApiSchemas'
import { setFactoriesOfGroup } from '../../../../../src/database/groups'
import { waitForInitSchemas } from '../../../../../src/validation/schemas'
const handler = nextHandler(async (req, res) => {
if (req.method !== 'POST') throw new Error('Invalid method')
await waitForInitSchemas.resolve()
const { transformed: params } = validate<GroupIdParam>(req.query, '/GroupIdParam')
const { transformed: body } = validate<GroupSetFactoryArrayBody>(req.body, '/GroupSetFactoryArrayBody')
const { transformed: body } = validate<GroupSetFactoryArrayBody>(
req.body,
'/GroupSetFactoryArrayBody'
)
const success = await setFactoriesOfGroup(params.id, params.name, body.type, body.factories)
res.json({ success })

View File

@@ -1,8 +1,8 @@
import {nextHandler} from "../../../../../src/utils/errors";
import {validate} from "../../../../../src/validation";
import {GroupIdParam} from "../../../../../src/types/ApiSchemas";
import {removeGroup} from "../../../../../src/database/groups";
import {waitForInitSchemas} from "../../../../../src/validation/schemas";
import { nextHandler } from '../../../../../src/utils/errors'
import { validate } from '../../../../../src/validation'
import { GroupIdParam } from '../../../../../src/types/ApiSchemas'
import { removeGroup } from '../../../../../src/database/groups'
import { waitForInitSchemas } from '../../../../../src/validation/schemas'
const handler = nextHandler(async (req, res) => {
if (req.method !== 'POST') throw new Error('Invalid method')

View File

@@ -1,8 +1,8 @@
import {nextHandler} from "../../../../../src/utils/errors";
import {validate} from "../../../../../src/validation";
import {GroupIdParam, GroupRenameBody} from "../../../../../src/types/ApiSchemas";
import {renameGroup} from "../../../../../src/database/groups";
import {waitForInitSchemas} from "../../../../../src/validation/schemas";
import { nextHandler } from '../../../../../src/utils/errors'
import { validate } from '../../../../../src/validation'
import { GroupIdParam, GroupRenameBody } from '../../../../../src/types/ApiSchemas'
import { renameGroup } from '../../../../../src/database/groups'
import { waitForInitSchemas } from '../../../../../src/validation/schemas'
const handler = nextHandler(async (req, res) => {
if (req.method !== 'POST') throw new Error('Invalid method')

View File

@@ -1,9 +1,10 @@
import {GroupData, setGroups} from "../../../src/database/groups";
import {NetworkError, nextHandler} from "../../../src/utils/errors";
import getConfig from "next/config";
import {addSchemas, waitForInitSchemas} from "../../../src/validation/schemas";
import { NetworkError, nextHandler } from '../../../src/utils/errors'
import getConfig from 'next/config'
import { waitForInitSchemas } from '../../../src/validation/schemas'
const {publicRuntimeConfig: {TENANT_TYPE}} = getConfig()
const {
publicRuntimeConfig: { TENANT_TYPE }
} = getConfig()
const handler = nextHandler(async (req, res) => {
if (req.method !== 'GET') throw new NetworkError('Invalid method')

View File

@@ -1,6 +1,6 @@
import {GroupData, setGroups} from "../../src/database/groups";
import {nextHandler} from "../../src/utils/errors";
import {waitForInitSchemas} from "../../src/validation/schemas";
import { GroupData, setGroups } from '../../src/database/groups'
import { nextHandler } from '../../src/utils/errors'
import { waitForInitSchemas } from '../../src/validation/schemas'
const handler = nextHandler(async (req, res) => {
if (req.method !== 'POST') throw new Error('Invalid method')

View File

@@ -1,23 +1,18 @@
import type {GetServerSideProps, NextPage} from 'next'
import type { NextPage } from 'next'
import Head from 'next/head'
import {Home} from "../components/home/Home";
import {useEffect} from "react";
import {GroupProvider} from "../components/contexts/GroupProvider";
import {getGroup, setGroups} from "../src/database/groups";
import {Dict, Group} from "../src/types";
import {getServerSidePropsGroupProvider, PropsGroupProvider} from "../src/getServerSideProps";
import { Home } from '../components/home/Home'
import { GroupProvider } from '../components/contexts/GroupProvider'
import { getServerSidePropsGroupProvider, PropsGroupProvider } from '../src/getServerSideProps'
const Page: NextPage<PropsGroupProvider> = ({id, ...initial}) => {
const Page: NextPage<PropsGroupProvider> = ({ id, ...initial }) => {
return (
<GroupProvider id={id} initial={initial}>
<Head>
<title>Factorio Microservices</title>
<meta name="description" content="Create Factorio microservices" />
<link rel="icon" href="/favicon.ico" />
<meta name='description' content='Create Factorio microservices' />
<link rel='icon' href='/favicon.ico' />
</Head>
<Home/>
<Home />
</GroupProvider>
)
}

View File

@@ -1,13 +1,12 @@
import type { NextPage } from 'next'
import {GroupProvider} from "../../components/contexts/GroupProvider";
import {getServerSidePropsGroupProvider, PropsGroupProvider} from "../../src/getServerSideProps";
import {PageDetails} from "../../components/visualize/PageDetails";
import { GroupProvider } from '../../components/contexts/GroupProvider'
import { getServerSidePropsGroupProvider, PropsGroupProvider } from '../../src/getServerSideProps'
import { PageDetails } from '../../components/visualize/PageDetails'
const Page: NextPage<PropsGroupProvider> = ({id, ...initial}) => {
const Page: NextPage<PropsGroupProvider> = ({ id, ...initial }) => {
return (
<GroupProvider id={id} initial={initial}>
<PageDetails/>
<PageDetails />
</GroupProvider>
)
}

View File

@@ -1,36 +1,31 @@
import type {NextPage} from 'next'
import type { NextPage } from 'next'
import Head from 'next/head'
import {GroupProvider, useGroups} from "../../components/contexts/GroupProvider";
import {useFactories} from "../../src/hooks/useFactories";
import {ProducingGraph} from "../../components/shared/ProducingGraph/ProducingGraph";
import {useEffect, useMemo} from "react";
import {calculateInputs} from "../../src/calculateInputs";
import {NodeOverview, OverviewGraphNode} from "../../components/visualize/NodeOverview/NodeOverview";
import {fixedEncodeURIComponent} from "../../src/utils";
import {ScrollContainer} from "../../components/shared/ScrollContainer/ScrollContainer";
import {getServerSidePropsGroupProvider, PropsGroupProvider} from "../../src/getServerSideProps";
import { GroupProvider, useGroups } from '../../components/contexts/GroupProvider'
import { useFactories } from '../../src/hooks/useFactories'
import { ProducingGraph } from '../../components/shared/ProducingGraph/ProducingGraph'
import { useEffect, useMemo } from 'react'
import { calculateInputs } from '../../src/calculateInputs'
import {
NodeOverview,
OverviewGraphNode
} from '../../components/visualize/NodeOverview/NodeOverview'
import { fixedEncodeURIComponent } from '../../src/utils'
import { ScrollContainer } from '../../components/shared/ScrollContainer/ScrollContainer'
import { getServerSidePropsGroupProvider, PropsGroupProvider } from '../../src/getServerSideProps'
const Page: NextPage<PropsGroupProvider> = ({id, ...initial}) => {
const {
exportedFactories,
ignoredFactories,
baseFactories,
groups
} = useGroups()
const {
findFactory
} = useFactories()
const Page: NextPage<PropsGroupProvider> = ({ id, ...initial }) => {
const { exportedFactories, baseFactories, groups } = useGroups()
const { findFactory } = useFactories()
useEffect(() => {
document.body.classList.add("scroll");
return () => document.body.classList.remove("scroll")
}, []);
document.body.classList.add('scroll')
return () => document.body.classList.remove('scroll')
}, [])
const producingNodes: OverviewGraphNode[] = useMemo(() => {
return Object.values(groups).map(group => ({
inputs: calculateInputs(
[...group.exports, ...group.malls],
ignoredFactories,
baseFactories,
exportedFactories,
findFactory
@@ -40,19 +35,19 @@ const Page: NextPage<PropsGroupProvider> = ({id, ...initial}) => {
icons: [...group.exports, ...group.malls],
linkOut: `./visualize/${fixedEncodeURIComponent(group.name)}`
}))
}, [baseFactories, exportedFactories, findFactory, groups, ignoredFactories])
}, [baseFactories, exportedFactories, findFactory, groups])
return (
<GroupProvider id={id} initial={initial}>
<Head>
<title>Factorio Microservices</title>
<meta name="description" content="Create Factorio microservices" />
<link rel="icon" href="/public/favicon.ico" />
<meta name='description' content='Create Factorio microservices' />
<link rel='icon' href='/public/favicon.ico' />
</Head>
<main>
<ScrollContainer>
<h1>Factorio Microservices</h1>
<ProducingGraph nodes={producingNodes} inputs={baseFactories} childType={NodeOverview}/>
<ProducingGraph nodes={producingNodes} inputs={baseFactories} childType={NodeOverview} />
</ScrollContainer>
</main>
</GroupProvider>