Superset二次开发之图表标题动态化

需求:图表标题动态展示原生筛选器的值


非编辑状态

分析前端代码,找到元素对应的class=header-title

通过class查找对应的代码,核心就是这个title

路径:superset-frontend\src\dashboard\components\SliceHeader\index.tsx

 SliceHeader组件负责处理仪表板上某个切片(slice)的头部信息,包括标题、交互控件和与过滤器相关的状态。要实现图表标题动态展示来自"NATIVE_FILTER"某个筛选器的值,我们需要从Redux store中获取相关数据,并将其应用到标题上。


编辑(仪表盘)状态

分析前端代码,,找到元素对应的class=editable-title

 通过class查找对应的代码,核心就是这个title


标题动态化规则:

       默认值?必填/非必填?动态变化?判断筛选器ID?依赖关系?

结论

     通用配置,做成筛选器组件

路径:superset-frontend\src\dashboard\components\SliceHeader\index.tsx

第一版

缺点:需要显示在标题上的筛选器只能配置在固定的位置,然后代码写死,取筛选器坐标位置,不够灵活


  const crossFilterdataMaskValue = useSelector<RootState, any>(
    state => state.dataMask,
  );
  console.log('crossFilterdataMaskValue ',crossFilterdataMaskValue );

  const getValue = useSelector<RootState, FilterState>(
    state =>state.nativeFilters?.filters,
  );
  // const nativeFilterLabel = getValue[Object.keys(getValue)[0]].defaultDataMask?.filterState?.label 
  const nativeFilterLabel = crossFilterdataMaskValue [Object.keys(crossFilterdataMaskValue)[1]].filterState?.label
  // const metricLabels = metrics.map(getMetricLabel);
  // const targetFilterDataMask = dataMaskState['emp_no'];
  // 合并 sliceName 和 nativeFilterLabel
  const mergedTitle = useMemo(() => {
    if (nativeFilterLabel && sliceName) {
      return `${nativeFilterLabel} - ${sliceName} `;
    }
    return sliceName ?? '';
  }, [nativeFilterLabel, sliceName]);
  
  // 使用 useEffect 监听 native filter label 的变化并更新标题
  useEffect(() => {
    if (nativeFilterLabel !== undefined) {
      setHeaderTooltip(mergedTitle);
    }
  }, [mergedTitle]);
<EditableTitle
   title={mergedTitle}
   canEdit={editMode}
   onSaveTitle={updateSliceName}
   showTooltip={false}
   url={canExplore ? exploreUrl : undefined}
/>

第二版

     做成原生筛选器通用配置

     优点:灵活

     缺点:仅支持单个筛选器的值显示在标题上

 superset\tra

相关推荐

  1. Superset开发Superset Organizations

    2024-04-10 04:38:01       43 阅读
  2. Superset开发Superset架构理解

    2024-04-10 04:38:01       40 阅读
  3. Superset开发 配置Docker

    2024-04-10 04:38:01       41 阅读
  4. Superset开发环境部署(Docker版)

    2024-04-10 04:38:01       62 阅读
  5. Superset开发PostgreSQL 统计信息介绍

    2024-04-10 04:38:01       43 阅读
  6. Superset开发 配置Redis(docker版本)

    2024-04-10 04:38:01       43 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-10 04:38:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-10 04:38:01       100 阅读
  3. 在Django里面运行非项目文件

    2024-04-10 04:38:01       82 阅读
  4. Python语言-面向对象

    2024-04-10 04:38:01       91 阅读

热门阅读

  1. 【LeetCode热题100】【二叉树】二叉树的层序遍历

    2024-04-10 04:38:01       42 阅读
  2. 经典面试排序题(快排堆排)

    2024-04-10 04:38:01       33 阅读
  3. SVN(Subversion)代码版本管理

    2024-04-10 04:38:01       33 阅读
  4. linux查看用户登录情况

    2024-04-10 04:38:01       30 阅读
  5. python | ttkbootstrap,一个神奇的 Python 库!

    2024-04-10 04:38:01       34 阅读
  6. Macbook M1版安装安卓模拟器

    2024-04-10 04:38:01       34 阅读
  7. PDF格式解析:Contents stream绘制指令解析

    2024-04-10 04:38:01       37 阅读
  8. 达梦数据库如何开启数据库审计

    2024-04-10 04:38:01       24 阅读
  9. Day6:学习尚上优选项目

    2024-04-10 04:38:01       29 阅读
  10. Nginx服务搭建案例

    2024-04-10 04:38:01       25 阅读