Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

仪表盘的查询和重置控制器功能优化 #2302

Open
ziveen opened this issue Mar 1, 2024 · 3 comments
Open

仪表盘的查询和重置控制器功能优化 #2302

ziveen opened this issue Mar 1, 2024 · 3 comments

Comments

@ziveen
Copy link

ziveen commented Mar 1, 2024

问题描述

现在,仪表盘的查询和重置控制器的功能是全量的查询图表的数据,无论图表是否出现在可视区域,这在仪表盘中图表量少时没问题,一旦遇到复杂的图表并并且数量多时,很容易导致查询超时。实际场景中,这种情况还是会出现。

期望

所以,如果查询和重置也能实现在可视区域的图表才执行execute,这样遇到复杂的仪表盘能极大的节约性能。

想法建议

但是,查询的时候如何判断图表在可视区域呢?我有个想法是:查询或者重置时,将所有的图表的rerender字段全部置为false,再利用useRenderWidget这个hook的懒加载功能实现。

现有仪表盘的查询逻辑
image
@ziveen
Copy link
Author

ziveen commented Mar 1, 2024

将仪表盘所有的图表的rerender置为false太粗暴了,也会造成不必要的查询(没有关联控制器的图表)。可以将控制器关联的图表的rerender置为false。

@ziveen
Copy link
Author

ziveen commented Mar 1, 2024

上述方案,还存在另外一个问题。如果表格执行了分页查询,例如查询第二页,当点查询控制器时,此时页码不会重置为1,这样pageInfo的pageNo: 2,会有问题

@ziveen
Copy link
Author

ziveen commented May 21, 2024

可以按下面的方法优化:

const __widgetIds = Object.values(widgetMap).reduce((acc, cur) => {
      if (cur.config.type === 'chart') {
        acc.push(cur.id);
      }
      return acc;
    }, [] as string[]);

    Object.values(widgetMap).forEach(it => {
      if (it.config.type === 'chart') {
        dispatch(
          boardActions.changePageInfo({
            boardId,
            widgetId: it.id,
            pageInfo,
          }),
        );
      }
    });

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant