Add reset zoom button.

This commit is contained in:
Kia Lam
2022-02-06 11:41:59 -08:00
parent 04a550cc67
commit 391907c41e
2 changed files with 23 additions and 0 deletions

View File

@@ -15,6 +15,7 @@ import {
SearchMinusIcon, SearchMinusIcon,
SearchPlusIcon, SearchPlusIcon,
ExpandArrowsAltIcon, ExpandArrowsAltIcon,
ExpandIcon,
} from '@patternfly/react-icons'; } from '@patternfly/react-icons';
const Header = ({ const Header = ({
@@ -23,6 +24,7 @@ const Header = ({
toggleState, toggleState,
zoomIn, zoomIn,
zoomOut, zoomOut,
resetZoom,
}) => { }) => {
const { light } = PageSectionVariants; const { light } = PageSectionVariants;
return ( return (
@@ -76,6 +78,17 @@ const Header = ({
<ExpandArrowsAltIcon /> <ExpandArrowsAltIcon />
</Button> </Button>
</Tooltip> </Tooltip>
<Tooltip content={t`Reset zoom`} position="top">
<Button
ouiaId="reset-zoom-button"
aria-label={t`Reset zoom`}
variant="plain"
icon={<ExpandIcon />}
onClick={resetZoom}
>
<ExpandIcon />
</Button>
</Tooltip>
<Tooltip content={t`Toggle legend`} position="top"> <Tooltip content={t`Toggle legend`} position="top">
<Switch <Switch
id="legend-toggle-switch" id="legend-toggle-switch"

View File

@@ -36,6 +36,15 @@ function TopologyView() {
const zoomOut = () => { const zoomOut = () => {
d3.select('.mesh-svg').transition().call(zoom.scaleBy, 0.5); d3.select('.mesh-svg').transition().call(zoom.scaleBy, 0.5);
}; };
const resetZoom = () => {
const margin = 15;
const width = parseInt(d3.select(`#chart`).style('width'), 10) - margin;
d3.select('.mesh-svg').transition().duration(750).call(
zoom.transform,
d3.zoomIdentity,
d3.zoomTransform(d3.select('.mesh-svg').node()).invert([width / 2, 600 / 2])
);
}
return ( return (
<> <>
@@ -45,6 +54,7 @@ function TopologyView() {
toggleState={showLegend} toggleState={showLegend}
zoomIn={zoomIn} zoomIn={zoomIn}
zoomOut={zoomOut} zoomOut={zoomOut}
resetZoom={resetZoom}
/> />
<PageSection> <PageSection>
<Card> <Card>