如何在 Clojure 中向 Metabase 添加 PDF 打印功能

How do I add PDF print functionality to Metabase in Clojure

我已经分叉了元数据库项目,并希望将一些 "export to pdf" 功能添加到您目前可以导出到 csv、excel 和 json.

的报告中

我试图找到它并花了很多时间寻找可能具有此功能但找不到任何东西的元数据库的现有分支。

在 src/metabase/util 中有一个文件包含一些导出到 csv 的逻辑,json,等等。它被称为 export.clj

到目前为止,我已经进行了一些编辑,但我没有使用 Clojure 的经验,所以到目前为止我只是想即兴发挥,然后希望从 SO 社区获得一些指导。

(def export-formats
  "Map of export types to their relevant metadata"
  {
    "pdf"  {:export-fn      export-to-pdf
           :content-type     "application/pdf"
           :ext            "pdf"
           :context     :pdf-download},
    "csv"  {:export-fn    export-to-csv
           :content-type "text/csv"
           :ext          "csv"
           :context      :csv-download},
   "xlsx" {:export-fn    export-to-xlsx
           :content-type "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
           :ext          "xlsx"
           :context      :xlsx-download},
   "json" {:export-fn    export-to-json
           :content-type "applicaton/json"
           :ext          "json"
           :context      :json-download}})

在同一页面的更上方是所引用的其中一些函数的定义。所以我为 pdf 添加了一个,它只是复制了 csv 函数,因为我只是想先看看是否有一个新选项显示出来。

(defn- export-to-pdf [column-names rows]
  (with-out-str
    ;; turn keywords into strings, otherwise we get colons in our output
    (csv/write-csv *out* (into [(mapv name column-names)] rows))))

我的元数据库克隆安装在 Heroku 上。我尝试进行上述更改,但在下载选项中没有看到任何结果。我尝试从此文件中删除其他下载方法,但也没有发现任何变化。

我希望有人能指出正确的方向来改变这一点。

Metabase 是一个积极维护的项目,有一些优秀的人全职工作。添加功能是让开源变得神奇的原因。对于这样的项目,与现有人员合作几乎总是更容易添加新事物。

  1. 检查是否仅使用浏览器的打印到 PDF 功能就足够了。
  2. 首先检查 github 页面是否打开或关闭 project issues page 关于这个:
  3. 联系元数据库人员(他们中的一些人可能会看到此消息)并告诉他们您想要什么。提供你的帮助并询问最好的起点是什么。
  4. 按照these instructions
  5. 获取元数据库开发环境设置
  6. 阅读这些说明,尤其是投稿指南。然后为你正在做的事情打开一个 PR。不要只是用一个完整的新功能给他们打电话。尽早并经常沟通。
  7. 将导出功能添加到后端导出部分和前端页面
  8. 为后端添加 UI 测试和测试。
  9. 为了让PR处于合并状态,来来回回很多轮不要着急。把代码写的很好,不是批评你