Как добавить функцию печати PDF в метабазу в Clojure

Я разветвил проект метабазы ​​и хочу добавить некоторые функции «экспорта в 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. Я попытался внести вышеуказанные изменения и не увидел результата в опции загрузки. Я попытался удалить другие методы загрузки из этого файла и также не увидел изменений.

Я надеюсь, что кто-то может указать мне правильное направление, чтобы изменить это.


person Kevin van Zyl    schedule 25.11.2019    source источник
comment
похоже, вы нашли только серверные функции. Найдите «.csv» в клиентском коде.   -  person Jochen Bedersdorfer    schedule 25.11.2019


Ответы (1)


Metabase — активно поддерживаемый проект, над которым работают замечательные люди. А добавление функций — это то, что делает открытый исходный код волшебным. С такими проектами почти всегда легче работать с существующими людьми, чтобы добавлять новые вещи.

  1. проверьте, достаточно ли просто использовать функцию печати в PDF в вашем браузере.
  2. начните с проверки страницы github на наличие открытых или закрытых страница проблем проекта об этом:
  3. Свяжитесь с людьми из метабазы ​​(некоторые из которых, вероятно, увидят это сообщение) и сообщите им, что вы хотите. Предложите свою помощь и спросите, с чего лучше всего начать.
  4. настройте среду разработки метабазы, следуя этим инструкциям
  5. прочитайте эти инструкции и особенно вспомогательное руководство. Затем откройте PR для того, над чем вы работаете. Не просто звоните им с готовой новой функцией. Общайтесь рано и часто.
  6. Добавьте функцию экспорта в раздел экспорта бэкэнда и на страницу внешнего интерфейса.
  7. Добавьте тесты пользовательского интерфейса и тесты для бэкенда.
  8. Не беспокойтесь, когда есть много раундов туда и обратно, чтобы привести PR в состояние для слияния. Это не критика с вашей стороны, чтобы код хорошо подходил.
person Arthur Ulfeldt    schedule 25.11.2019