Fixed overview graph
This commit is contained in:
@@ -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 = () => {
|
||||
<Head>
|
||||
<title>Factorio Microservices</title>
|
||||
<meta name='description' content='Create Factorio microservices' />
|
||||
<link rel='icon' href='/public/favicon.ico' />
|
||||
</Head>
|
||||
<main>
|
||||
<ScrollContainer>
|
||||
|
||||
44
components/visualize/PageOverview.tsx
Normal file
44
components/visualize/PageOverview.tsx
Normal file
@@ -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 (
|
||||
<>
|
||||
<Head>
|
||||
<title>Factorio Microservices</title>
|
||||
<meta name='description' content='Create Factorio microservices' />
|
||||
</Head>
|
||||
<main>
|
||||
<ScrollContainer>
|
||||
<h1>Factorio Microservices</h1>
|
||||
<ProducingGraph nodes={producingNodes} inputs={baseFactories} childType={NodeOverview} />
|
||||
</ScrollContainer>
|
||||
</main>
|
||||
</>
|
||||
)
|
||||
}
|
||||
@@ -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<PropsGroupProvider> = ({ id, ...initial }) => {
|
||||
useEffect(() => {
|
||||
document.body.classList.add('scroll')
|
||||
return () => document.body.classList.remove('scroll')
|
||||
}, [])
|
||||
|
||||
return (
|
||||
<GroupProvider id={id} initial={initial}>
|
||||
<PageDetails />
|
||||
|
||||
@@ -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<PropsGroupProvider> = ({ 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 (
|
||||
<GroupProvider id={id} initial={initial}>
|
||||
<Head>
|
||||
<title>Factorio Microservices</title>
|
||||
<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} />
|
||||
</ScrollContainer>
|
||||
</main>
|
||||
<PageOverview />
|
||||
</GroupProvider>
|
||||
)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user