Skip to content
Snippets Groups Projects
sidepanel.tsx 2.3 KiB
Newer Older
  • Learn to ignore specific revisions
  • import React from "react";
    import HistoryNavigator from "./historynavigator";
    import { DynamicGraph } from "../graph";
    import NodeDetails from "./nodedetails";
    import { NodeTypesEditor } from "./nodetypeseditor";
    import Settings from "./settings";
    import Instructions from "./instructions";
    import { Checkpoint, History } from "../../common/history";
    import { Node } from "../../common/graph/node";
    import { NodeType } from "../../common/graph/nodetype";
    import { SimGraphData } from "../../common/graph/graph";
    import { NodeDataChangeRequest } from "../editor";
    
    interface SidepanelProps {
        graph: DynamicGraph;
        onCheckpointLoad: { (checkpoint: Checkpoint<SimGraphData>): void };
        onNodeTypeSelect: (type: NodeType) => void;
        onConnectOnDragChange: (connectOnDrag: boolean) => void;
        onLabelVisibilityChange: (state: boolean) => void;
        onNodeDataChange: { (requests: NodeDataChangeRequest[]): void };
        selectedNodes: Node[];
        visibleLabels: boolean;
        connectOnDrag: boolean;
    }
    
    function Sidepanel({
        graph,
        onCheckpointLoad,
        onNodeTypeSelect,
        onConnectOnDragChange,
        onLabelVisibilityChange,
        onNodeDataChange,
        selectedNodes,
        visibleLabels,
        connectOnDrag,
    }: SidepanelProps) {
        return (
            <div id="sidepanel">
                <HistoryNavigator
                    history={graph.history}
                    onCheckpointLoad={onCheckpointLoad}
                />
                <hr />
                <NodeDetails
                    selectedNodes={selectedNodes}
                    nameToObjectType={graph.nameToObjectGroup} // TODO: Change to id
                    onNodeDataChange={onNodeDataChange}
                />
                <hr />
                <NodeTypesEditor
                    onChange={() =>
                        console.log("Refactor onChange for nodetypes editor!")
                    } // TODO: Refactor
                    graph={graph}
                    onSelectAll={onNodeTypeSelect}
                />
                <hr />
                <Settings
                    labelVisibility={visibleLabels}
                    onLabelVisibilityChange={onLabelVisibilityChange}
                    connectOnDrag={connectOnDrag}
                    onConnectOnDragChange={onConnectOnDragChange}
                />
                <hr />
    
                <Instructions connectOnDragEnabled={connectOnDrag} />
            </div>
        );
    }
    
    export default Sidepanel;