Superset二次开发之Dashboard状态变更源码解读
创始人
2024-12-01 13:06:50
0
接口PUTapi/v1/dashboard/

前端文件

superset-frontend\src\dashboard\components\PublishedStatus\index.jsx

69行 togglePublished()

togglePublished() {
this.props.savePublished(this.props.dashboardId, !this.props.isPublished);
}

superset-frontend\src\dashboard\actions\dashboardState.js

export function savePublished(id, isPublished) {   return function savePublishedThunk(dispatch) {     return SupersetClient.put({       endpoint: `/api/v1/dashboard/${id}`,       headers: { 'Content-Type': 'application/json' },       body: JSON.stringify({         published: isPublished,       }),     })       .then(() => {         dispatch(           addSuccessToast(             isPublished               ? t('This dashboard is now published')               : t('This dashboard is now hidden'),           ),         );         dispatch(togglePublished(isPublished));       })       .catch(() => {         dispatch(           addDangerToast(             t('You do not have permissions to edit this dashboard.'),           ),         );       });   };

代码解读

这个函数的核心逻辑是通过API请求更新仪表板的发布状态,然后根据请求的结果更新应用的UI状态和通知用户。它使用了Redux的Thunk中间件来处理异步操作,并根据请求的成功或失败情况显示相应的通知。

  • 函数定义

    • savePublished(id, isPublished):这是一个带有两个参数的函数。id是仪表板的唯一标识符,isPublished是一个布尔值,表示仪表板是否被发布。
  • Thunk Action Creator

    • savePublishedThunk(dispatch):这是一个Thunk action creator,返回一个函数,接收dispatch作为参数。Thunk是Redux中的一个中间件,用于处理异步操作。
  • API 请求

    • SupersetClient.put({...}):使用SupersetClient发送一个PUT请求,更新指定仪表板的发布状态。请求的endpoint/api/v1/dashboard/${id},其中${id}代表仪表板的唯一标识符。headers指定了请求的内容类型为JSON,body包含了将published状态设置为isPublished的JSON字符串。
  • Promise 处理

    • .then(...):如果请求成功,执行以下操作:

      • 调用addSuccessToast函数,根据isPublished的值显示成功消息:如果仪表板已发布,显示“仪表板现在已发布”;如果未发布,显示“仪表板现在已隐藏”。
      • 调用togglePublished(isPublished)更新Redux状态,以反映仪表板的发布状态变化。
    • .catch(...):如果请求失败,执行以下操作:

      • 调用addDangerToast函数,显示错误消息“您没有权限编辑此仪表板”。

相关内容

热门资讯

金花游戏房卡怎么获得最简单方法... 牛牛是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:44346008许多玩家在游戏中会购买房卡来享受...
秒懂教程“牛牛链接房卡那里有/... 先锋大厅是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:44346008许多玩家在游戏中会购买房卡来...
微信金花房卡链接如何购买/购买... 金花是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:15984933许多玩家在游戏中会购买房卡来享受...
微信金花群怎么买房卡/购买斗牛... 斗牛是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:44346008许多玩家在游戏中会购买房卡来享受...
房卡必备教程“链接金花房卡怎么... 新星游牛牛是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:86909166许多玩家在游戏中会购买房卡...
正版金花房卡哪里有卖/金花链接... 金花是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:44346008许多玩家在游戏中会购买房卡来享受...
一分钟了解“炸金花房卡专卖店联... 新西游牛牛是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:86909166许多玩家在游戏中会购买房卡...
微信链接牛牛群房卡怎么买/微信... 牛牛是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:86909166许多玩家在游戏中会购买房卡来享受...
一分钟推荐“金花大厅房卡链接在... 毛豆大厅是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:160470940许多玩家在游戏中会购买房卡...
终于找到“购买斗牛金花房卡联系... 卡米大厅是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:160470940许多玩家在游戏中会购买房卡...
一分钟推荐“金花房卡在哪里能弄... 新超圣牛牛是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:86909166许多玩家在游戏中会购买房卡...
微信群链接牛牛买房卡/微信牛牛... 牛牛是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:44346008许多玩家在游戏中会购买房卡来享受...
牛牛金花房卡链接在哪买/金花客... 牛牛是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:86909166许多玩家在游戏中会购买房卡来享受...
金花大厅房卡如何购买的/微信金... 金花是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:160470940许多玩家在游戏中会购买房卡来享...
微信里面炸金花房卡充值方式/在... 金花是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:44346008许多玩家在游戏中会购买房卡来享受...
终于找到“微信链接斗牛房卡开科... 微信网页牛牛是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:86909166许多玩家在游戏中会购买房...
终于找到“金花房卡微信充值/毛... 毛豆大厅是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:44346008许多玩家在游戏中会购买房卡来...
牛牛链接房卡在哪里弄/炸金花房... 牛牛是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:86909166许多玩家在游戏中会购买房卡来享受...
一分钟了解“金花斗牛牛房卡怎么... 悠悠互娱是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:44346008许多玩家在游戏中会购买房卡来...
正版授权“微信怎么创建金花房间... 毛豆大厅是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:15984933许多玩家在游戏中会购买房卡来...