1. 程式人生 > >Metabase定製化開發

Metabase定製化開發

寫在前面
從saiku到superset,再到metabase,終於樣式上操作上符合標準了,但是對於吹毛求疵的產品經理還是會各種找事。貼出改造的一些內容分享給需要的小夥伴。

LOGO替換

修改檔案
/metabase/frontend/src/metabase/components/LogoIcon.jsx
logo替換
新增檔案(你的logo檔案 官方建議用svg格式)
/metabase/resources/frontend_client/app/assets/img/mam-logo.svg

全域性預設中文配置

其實沒有必要在這改程式碼,完全可以通過系統的配置去改,只是偶然發現了這裡的配置,所以mark下
/metabase/src/metabase/public_settings.clj
全域性預設中文配置

匯出excel csv json檔案中用欄位的displayName顯示

修改檔案
/metabase/src/metabase/api/dataset.clj
修改入參
/metabase/src/metabase/util/export.clj
改造匯出檔案方法

聚合函式名稱改中文

改完上述檔案後,下載的檔案(如excel)中就會顯示錶配置的displayName,但是聚合操作的名稱(如count)還是會顯示英文,參考下圖:
配置欄位的displayName為中文
下載的excel中聚合函式部分仍然為中文
如果你們的老大跟我的老大一樣精益求精(BT),你可以繼續參照下文修改:
/metabase/query_processor/middleware/annotate.clj
(str (tru (str (str/upper-case (subs ag-name 0 1)) (subs ag-name 1))))
修改聚合函式的顯示名稱

日期控制元件漢化

更有甚者不認識英文月份,所以你不得不繼續替他漢化,所以參照以下操作即可。
效果圖如下:
修改前:
日期範圍控制元件
日期月份控制元件
修改後:
漢化後的日期範圍控制元件
漢化後的月份控制元件

具體修改如下:
首先補增一個公共變數,如下圖紅框所示,注意中劃線和下劃線的區別。
/metabase/src/metabase/public_settings.clj
增加公共變數

修改日期控制元件配置,根據語言配置動態設定日期控制元件的語言,如果全域性語言配置的zh,則用zh-cn初始化成中文日期顯示,否則全部用英文日期顯示
/metabase/frontend/src/metabase/parameters/components/widgets/DateMonthYearWidget.jsx
設定初始化componet控制元件的語言

優化metabase欄位的預設顯示名稱

同步資料庫欄位時將備註名稱作為metabase欄位的預設displayName(mysql測試正常)

/metabase/src/metabase/sync/sync_metadata/fields.clj

:display_name (if-not (nil? field-comment) field-comment (humanization/name->human-readable-name field-name))

修改metabse欄位的預設顯示名稱

改造後效果如圖(原本displayName顯示的跟資料庫中英文名稱一致)
改造後的displayName