Implemented sorted graph

This commit is contained in:
Sebastian Seedorf
2022-08-15 23:24:58 +02:00
parent 183396f599
commit 9082dcdd26
15 changed files with 464 additions and 71 deletions

View File

@@ -1,8 +1,9 @@
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: Record<string, unknown>|undefined = __NEXT_DATA__?.props?.pageProps;
const pageProps: Dict<unknown>|undefined = __NEXT_DATA__?.props?.pageProps;
return (
<Html>
<Head />

View File

@@ -2,11 +2,11 @@ import type { NextPage } from 'next'
import Head from 'next/head'
import {useGroups} from "../../components/contexts/GroupProvider";
import {useFactories} from "../../src/hooks/useFactories";
import {GraphNode, ProducingGraph} from "../../components/shared/ProducingGraph/ProducingGraph";
import {ProducingGraph} from "../../components/shared/ProducingGraph/ProducingGraph";
import {useMemo} from "react";
import {calculateInputs} from "../../src/calculateInputs";
import {useRouter} from "next/router";
import {groupBy, isNonNullable} from "../../src/utils";
import {groupBy, isNonNullable, uniquify} from "../../src/utils";
import {EnrichedEntity, Recipe} from "../../src/types";
import {DetailGraphNode, NodeDetails} from "../../components/visualize/NodeDetails/NodeDetails";
@@ -39,7 +39,7 @@ const Page: NextPage = () => {
const producingNodes: DetailGraphNode[] = useMemo(() => {
if (!group) return []
const nodes = Array.from(new Set([...intermediateFactories, ...group.exports, ...group.malls]))
const nodes = uniquify([...intermediateFactories, ...group.exports, ...group.malls])
.map(findFactory)
.filter(isNonNullable)
.map((factory: EnrichedEntity) => ({
@@ -52,7 +52,7 @@ const Page: NextPage = () => {
.values(groupBy(nodes, node => node.inputs.join()))
.map(nodesOfInput => ({
inputs: nodesOfInput[0].inputs,
outputs: Array.from(new Set(nodesOfInput.flatMap(node => node.outputs))),
outputs: uniquify(nodesOfInput.flatMap(node => node.outputs)),
name: nodesOfInput.map(node => node.name).join(', '),
recipes: nodesOfInput.flatMap(node => node.recipes)
} as DetailGraphNode))