Metabase定制化开发

写在前面
从saiku到superset,再到metabase,终于样式上操作上符合标准了,但是对于吹毛求疵的产品经理还是会各种找事。贴出改造的一些内容分享给需要的小伙伴。

LOGO替换

修改文件
/metabase/frontend/src/metabase/components/LogoIcon.jsx
Metabase定制化开发_第1张图片
新增文件(你的logo文件 官方建议用svg格式)
/metabase/resources/frontend_client/app/assets/img/mam-logo.svg

全局默认中文配置

其实没有必要在这改代码,完全可以通过系统的配置去改,只是偶然发现了这里的配置,所以mark下
/metabase/src/metabase/public_settings.clj
Metabase定制化开发_第2张图片

导出excel csv json文件中用字段的displayName显示

修改文件
/metabase/src/metabase/api/dataset.clj
Metabase定制化开发_第3张图片
/metabase/src/metabase/util/export.clj
Metabase定制化开发_第4张图片

聚合函数名称改中文

改完上述文件后,下载的文件(如excel)中就会显示表配置的displayName,但是聚合操作的名称(如count)还是会显示英文,参考下图:
配置字段的displayName为中文
Metabase定制化开发_第5张图片
如果你们的老大跟我的老大一样精益求精(BT),你可以继续参照下文修改:
/metabase/query_processor/middleware/annotate.clj
(str (tru (str (str/upper-case (subs ag-name 0 1)) (subs ag-name 1))))
Metabase定制化开发_第6张图片

日期控件汉化

更有甚者不认识英文月份,所以你不得不继续替他汉化,所以参照以下操作即可。
效果图如下:
修改前:
Metabase定制化开发_第7张图片
Metabase定制化开发_第8张图片
修改后:
Metabase定制化开发_第9张图片
Metabase定制化开发_第10张图片

具体修改如下:
首先补增一个公共变量,如下图红框所示,注意中划线和下划线的区别。
/metabase/src/metabase/public_settings.clj
Metabase定制化开发_第11张图片

修改日期控件配置,根据语言配置动态设定日期控件的语言,如果全局语言配置的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))

Metabase定制化开发_第12张图片

改造后效果如图(原本displayName显示的跟数据库中英文名称一致)
Metabase定制化开发_第13张图片

你可能感兴趣的:(metabase)