in packages/@aws-c2a/web-app/src/App.tsx [41:92]
export default function App({changeReport}: AppProps): JSX.Element {
const classes = useStyles();
const [selectedTab, setSelectedTab] = useState(0);
const [selectedCompTransition, setSelectedCompTransition] = useState(undefined as Transition<Component> | undefined);
const [selectedAgg, setSelectedAgg] = useState(undefined as Aggregation<ComponentOperation> | undefined);
const [approvedChanges, setApprovedChanges] = useState<Map<ComponentOperation, RuleAction>>(
new Map([...changeReport.rulesOutput]
.map(([op, effect]) => [op, effect.action ?? RuleAction.None]),
),
);
const showComponentInHierarchy = (comp: Transition<Component>) => {
setSelectedTab(1);
setSelectedCompTransition(comp);
};
const showAggregation = (agg: Aggregation<ComponentOperation>) => {
setSelectedTab(0);
setSelectedAgg(agg);
};
const setSelectedChange = (op: ComponentOperation) => {
const agg = findAggregationWithChange(op, changeReport.aggregations);
if(agg)
showAggregation(agg);
};
const setChangesApproval = (changes: ComponentOperation[], state: RuleAction) => {
setApprovedChanges(new Map([...approvedChanges, ...changes.map(c => [c, state] as const)]));
};
return (
<AppContext.Provider
value={{
changeReport,
showComponentInHierarchy,
selectedCompTransition,
setSelectedCompTransition,
selectedAgg,
setSelectedAgg,
setSelectedChange,
showAggregation,
setChangesApproval,
approvedChanges,
}}
>
<div className={classes.wrapper}>
<AppBar position="static" color="transparent">
<Tabs value={selectedTab} onChange={(e, v) => setSelectedTab(v)} aria-label="simple tabs example">