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

猜你喜欢

转载自blog.csdn.net/keylkeaf/article/details/84891504