function associationWidget()

in src/hooks/useDashboardsSession.ts [55:88]


  function associationWidget(sourceId: string, filters: unknown, type: string) {
    const widget = widgets.find((d: { type: string }) => d.type === type);
    if (!widget) {
      return ElMessage.info(`There has no a ${type} widget in the dashboard`);
    }
    const item = {
      ...widget,
      filters,
    };
    dashboardStore.setWidget(item);
    if (widget.id === sourceId) {
      return;
    }
    const targetTabIndex = (widget.id || "").split("-");
    const sourceTabindex = (sourceId || "").split("-") || [];
    let container: Nullable<Element>;

    if (targetTabIndex[1] === undefined) {
      container = document.querySelector(".ds-main");
    } else {
      const w = widgets.find((d: Indexable) => d.id === targetTabIndex[0]);
      container = document.querySelector(".tab-layout");
      const layout: Nullable<Element> = document.querySelector(".ds-main");
      if (w && layout) {
        layout.scrollTop = w.y * 10 + w.h * 5;
      }
    }
    if (targetTabIndex[1] && targetTabIndex[1] !== sourceTabindex[1]) {
      dashboardStore.setActiveTabIndex(Number(targetTabIndex[1]));
    }
    if (container && widget) {
      container.scrollTop = widget.y * 10 + widget.h * 5;
    }
  }