Skip to content

Commit

Permalink
memoize data and only rerender diagram if required
Browse files Browse the repository at this point in the history
  • Loading branch information
jdbranham committed Sep 19, 2020
1 parent b7bdb8f commit 4fffbd6
Show file tree
Hide file tree
Showing 4 changed files with 46,413 additions and 16 deletions.
46,389 changes: 46,387 additions & 2 deletions dist/module.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/module.js.map

Large diffs are not rendered by default.

31 changes: 19 additions & 12 deletions src/DiagramController.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,19 @@ export class DiagramPanelController extends React.Component<DiagramPanelControll
this.onToggleSort = this.onToggleSort.bind(this);
this.setDiagramRef = this.setDiagramRef.bind(this);
this.renderCallback = this.renderCallback.bind(this);
this.state = DiagramPanelController.getDerivedStateFromProps(props, {});
}

static getDerivedStateFromProps(props: DiagramPanelControllerProps, state: DiagramPanelControllerState) {
const { diagramContainer, wrapper, legendContainer } = getDiagramWithLegendStyles(props);
if (!state) {
return {
diagramContainer,
wrapper,
legendContainer,
};
} else {
return null;
}
}

setDiagramRef(element: HTMLDivElement) {
Expand All @@ -68,7 +80,12 @@ export class DiagramPanelController extends React.Component<DiagramPanelControll
}

componentDidUpdate(prevProps: DiagramPanelControllerProps) {
if (prevProps !== this.props) {
if (
prevProps.options !== this.props.options ||
prevProps.fieldConfig != this.props.fieldConfig ||
prevProps.theme != this.props.theme ||
prevProps.data != this.props.data
) {
this.initializeMermaid();
}
}
Expand Down Expand Up @@ -128,16 +145,6 @@ export class DiagramPanelController extends React.Component<DiagramPanelControll
}
}

static getDerivedStateFromProps(props: DiagramPanelControllerProps, state: DiagramPanelControllerState) {
const { diagramContainer, wrapper, legendContainer } = getDiagramWithLegendStyles(props);
return {
...state,
diagramContainer,
wrapper,
legendContainer,
};
}

onToggleSort(sortBy: string) {
const { onOptionsChange, options } = this.props;
onOptionsChange({
Expand Down
7 changes: 6 additions & 1 deletion src/DiagramPanel.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,12 @@ export const DiagramPanel: React.FC<DiagramPanelOptions> = ({
);
}

const diagramModels = getDiagramSeriesModel(data.series, timeZone, options, fieldConfig);
const diagramModels = React.useMemo(() => getDiagramSeriesModel(data.series, timeZone, options, fieldConfig), [
data.series,
timeZone,
options,
fieldConfig,
]);

return (
<div
Expand Down

0 comments on commit 4fffbd6

Please sign in to comment.