写在前面
从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显示的跟数据库中英文名称一致)