Metabase定製化開發
寫在前面
從saiku到superset,再到metabase,終於樣式上操作上符合標準了,但是對於吹毛求疵的產品經理還是會各種找事。貼出改造的一些內容分享給需要的小夥伴。
LOGO替換
修改檔案
/metabase/frontend/src/metabase/components/LogoIcon.jsx
新增檔案(你的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)還是會顯示英文,參考下圖:
如果你們的老大跟我的老大一樣精益求精(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
優化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))
改造後效果如圖(原本displayName顯示的跟資料庫中英文名稱一致)