diff --git a/components/visualize/PageDetails.tsx b/components/visualize/PageDetails.tsx index 2c58e09..b10f9dd 100644 --- a/components/visualize/PageDetails.tsx +++ b/components/visualize/PageDetails.tsx @@ -1,7 +1,7 @@ import { useRouter } from 'next/router' import { useGroups } from '../contexts/GroupProvider' import { useFactories } from '../../src/hooks/useFactories' -import { FC, useEffect, useMemo } from 'react' +import { FC, useMemo } from 'react' import { calculateInputs } from '../../src/calculateInputs' import { DetailGraphNode, NodeDetails } from './NodeDetails/NodeDetails' import { groupBy, isNonNullable, uniquify } from '../../src/utils' @@ -17,11 +17,6 @@ export const PageDetails: FC = () => { const { exportedFactories, baseFactories, groups } = useGroups() const { findFactory } = useFactories() - useEffect(() => { - document.body.classList.add('scroll') - return () => document.body.classList.remove('scroll') - }, []) - const group = typeof name === 'string' ? groups[name] : undefined const [inputFactories, intermediateFactories] = useMemo< @@ -68,7 +63,6 @@ export const PageDetails: FC = () => { Factorio Microservices -
diff --git a/components/visualize/PageOverview.tsx b/components/visualize/PageOverview.tsx new file mode 100644 index 0000000..263cd16 --- /dev/null +++ b/components/visualize/PageOverview.tsx @@ -0,0 +1,44 @@ +import { useGroups } from '../contexts/GroupProvider' +import { useFactories } from '../../src/hooks/useFactories' +import { FC, useMemo } from 'react' +import { calculateInputs } from '../../src/calculateInputs' +import { fixedEncodeURIComponent } from '../../src/utils' +import Head from 'next/head' +import { ScrollContainer } from '../shared/ScrollContainer/ScrollContainer' +import { ProducingGraph } from '../shared/ProducingGraph/ProducingGraph' +import { NodeOverview, OverviewGraphNode } from './NodeOverview/NodeOverview' + +export const PageOverview: FC = () => { + const { exportedFactories, baseFactories, groups } = useGroups() + const { findFactory } = useFactories() + + const producingNodes: OverviewGraphNode[] = useMemo(() => { + return Object.values(groups).map(group => ({ + inputs: calculateInputs( + [...group.exports, ...group.malls], + baseFactories, + exportedFactories, + findFactory + )[0], + outputs: group.exports, + name: group.name, + icons: [...group.exports, ...group.malls], + linkOut: `./visualize/${fixedEncodeURIComponent(group.name)}` + })) + }, [baseFactories, exportedFactories, findFactory, groups]) + + return ( + <> + + Factorio Microservices + + +
+ +

Factorio Microservices

+ +
+
+ + ) +} diff --git a/pages/visualize/[name].tsx b/pages/visualize/[name].tsx index b755863..960bbfe 100644 --- a/pages/visualize/[name].tsx +++ b/pages/visualize/[name].tsx @@ -2,8 +2,14 @@ import type { NextPage } from 'next' import { GroupProvider } from '../../components/contexts/GroupProvider' import { getServerSidePropsGroupProvider, PropsGroupProvider } from '../../src/getServerSideProps' import { PageDetails } from '../../components/visualize/PageDetails' +import { useEffect } from 'react' const Page: NextPage = ({ id, ...initial }) => { + useEffect(() => { + document.body.classList.add('scroll') + return () => document.body.classList.remove('scroll') + }, []) + return ( diff --git a/pages/visualize/index.tsx b/pages/visualize/index.tsx index 2ce3ef1..d22f0c7 100644 --- a/pages/visualize/index.tsx +++ b/pages/visualize/index.tsx @@ -1,55 +1,19 @@ 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 { GroupProvider } from '../../components/contexts/GroupProvider' +import { useEffect } from 'react' + import { getServerSidePropsGroupProvider, PropsGroupProvider } from '../../src/getServerSideProps' +import { PageOverview } from '../../components/visualize/PageOverview' const Page: NextPage = ({ id, ...initial }) => { - const { exportedFactories, baseFactories, groups } = useGroups() - const { findFactory } = useFactories() - useEffect(() => { 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], - baseFactories, - exportedFactories, - findFactory - )[0], - outputs: group.exports, - name: group.name, - icons: [...group.exports, ...group.malls], - linkOut: `./visualize/${fixedEncodeURIComponent(group.name)}` - })) - }, [baseFactories, exportedFactories, findFactory, groups]) - return ( - - Factorio Microservices - - - -
- -

Factorio Microservices

- -
-
+
) }