Skip to content

Commit

Permalink
fix(dashboard): switching between 2 stats panels would throw errors
Browse files Browse the repository at this point in the history
  • Loading branch information
GerilLeto committed Sep 18, 2024
1 parent 1d23f4d commit cf7b475
Showing 1 changed file with 20 additions and 7 deletions.
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import { Box, Flex, Sx } from '@mantine/core';
import { useCallback, useEffect, useMemo, useRef } from 'react';

import { defaults } from 'lodash';
import { observer } from 'mobx-react-lite';
import { useStorageData } from '~/components/plugins/hooks';
import { ReadonlyRichText } from '~/components/widgets';
Expand All @@ -10,7 +9,7 @@ import { useCurrentInteractionManager, useTriggerSnapshotList } from '~/interact
import { VizViewProps } from '~/types/plugin';
import { parseRichTextContent } from '~/utils';
import { ClickStats } from './triggers';
import { DEFAULT_CONFIG, IVizStatsConf } from './type';
import { IVizStatsConf } from './type';

const verticalAlignments = {
top: 'flex-start',
Expand All @@ -31,7 +30,8 @@ function getWrapperSx(triggersCount: number) {
return ret;
}

export const VizStats = observer(({ context, instance }: VizViewProps) => {
type RenderProps = VizViewProps;
export const Render = observer(({ context, instance }: RenderProps) => {
const ref = useRef<HTMLDivElement>(null);
const interactionManager = useCurrentInteractionManager({
vizManager: context.vizManager,
Expand All @@ -41,18 +41,20 @@ export const VizStats = observer(({ context, instance }: VizViewProps) => {
const triggers = useTriggerSnapshotList<IVizStatsConf>(interactionManager.triggerManager, ClickStats.id);

const contentModel = useRenderContentModelContext();
const { value: confValue = DEFAULT_CONFIG } = useStorageData<IVizStatsConf>(context.instanceData, 'config');

const { panel } = useRenderPanelContext();
const conf = panel.viz.conf.config as IVizStatsConf;

const { data, variables } = context;
const { width, height } = context.viewport;

const richTextContent = useMemo(() => {
const conf = defaults({}, confValue, DEFAULT_CONFIG);
const conf = panel.viz.conf.config;
if (!conf.content) {
return '';
}
return parseRichTextContent(conf.content, variables, contentModel.payloadForViz, data);
}, [data, confValue, variables, contentModel.payloadForViz]);
}, [data, panel, variables, contentModel.payloadForViz]);

const handleContentClick = useCallback(() => {
triggers.forEach((t) => {
Expand Down Expand Up @@ -83,7 +85,7 @@ export const VizStats = observer(({ context, instance }: VizViewProps) => {
width,
height,
}}
align={verticalAlignments[confValue.vertical_align]}
align={verticalAlignments[conf.vertical_align]}
direction="row"
>
<Box className="viz-stats--clickable-wrapper" sx={getWrapperSx(triggers.length)} onClick={handleContentClick}>
Expand Down Expand Up @@ -120,3 +122,14 @@ export const VizStats = observer(({ context, instance }: VizViewProps) => {
</Flex>
);
});

export const VizStats = (props: VizViewProps) => {
const { context } = props;
const { value: conf } = useStorageData<IVizStatsConf>(context.instanceData, 'config');

if (!conf) {
return null;
}

return <Render {...props} />;
};

0 comments on commit cf7b475

Please sign in to comment.