Встраивание диаграмм Vega-Lite в Antora

Я пытаюсь встроить эту vega-lite диаграмму в свои документы antora: https://vega.github.io/vega-lite/examples/line_overlay.html

Мой файл Asciidoc выглядит так:

... some text ...

== Attachments
[vegalite, rendered-vega-image, svg]
----
{
  "$schema": "https://vega.github.io/schema/vega-lite/v4.json",
  "description": "Stock prices of 5 Tech Companies over Time.",
  "data": {"url": "data/stocks.csv"},
  "mark": {
    "type": "line",
    "point": true
  },
  "encoding": {
    "x": {"timeUnit": "year", "field": "date"},
    "y": {"aggregate":"mean", "field": "price", "type": "quantitative"},
    "color": {"field": "symbol", "type": "nominal"}
  }
}
----

... some more text ...

Проблема в том, что файл CSV, содержащий мои данные, не найден. Я пробовал каждый путь, который я себе представлял ... относительные и абсолютные пути к файловой системе, а также относительные и абсолютные URL-адреса http. Тем не менее я всегда получаю это сообщение:

[DONE] build ui bundle
Skipping vegalite block. No such file: http://localhost:8080/vegalite/svg/eNpVkEFywyAMRfc5BcN0mdibdpNtj9D0AAQrWA0gArKnnozvXoHbpl0Zv9F_X3DfKaWfih0hGH1UemRO5dj3MzjTOeRxOndI_TbQ6MEjQz8_dx-Fot7X_ADFZkyMAsTxxmSvKmW0UBRd1Is6gR3VK4VkIlY2Q1YnDNB95w3X8ruesq-Cu2E2dgwQuQyY1z5QRKaM0R08OVe_GRJlllNfal3pbJn12nTB5GvVyVn-eElQpR4jtDphiTCyQM4TCNliEC0NInxEP9tSLIu-S3-VLGCy3it9QfBDBbI6bLUyv7R541yWdxJ-1AFM_DffXqWSn7Vuk4mMbBjnh8iSp9xkv8GyhDP5v8lIAaPxeq032K1fIi6OZQ==
[DONE] build docs

Skipping vegalite block не должно появляться.

Я попробовал vega-lite с данными, которые определены непосредственно в блоке json. Этот фрагмент работает. Так что Vega-Lite в целом работает (я использую Kroki Server для генерации диаграмм).

[vegalite, rendered-vega-image, svg]
----
{
  "description": "A simple bar chart with embedded data.",
  "data": {
    "values": [
      {"a": "A","b": 28}, {"a": "B","b": 55}, {"a": "C","b": 43},
      {"a": "D","b": 91}, {"a": "E","b": 81}, {"a": "F","b": 53},
      {"a": "G","b": 19}, {"a": "H","b": 87}, {"a": "I","b": 52}
    ]
  },
  "mark": "bar",
  "encoding": {
    "x": {"field": "a", "type": "ordinal"},
    "y": {"field": "b", "type": "quantitative"}
  }
}
----

Определение моих данных непосредственно внутри определения диаграммы не является решением для меня. Прямо сейчас я просто пытаюсь заставить его работать, используя файл demo-CSV. Но потом я переключусь на свой собственный автоматически сгенерированный большой CSV-файл. И мой настоящий CSV, и демонстрационный файл находятся в папке docs/modules/technical-docs/assets/attachments/monitoring-logging-reporting/stocks.csv.

Моя общая установка состоит из нескольких проектов.

  1. Проект, содержащий playbook antora и сценарий оболочки для создания моих документов на моем локальном хосте
  2. Проект, содержащий Asciidoc, файлы CSV и кучу других документов и исходного кода.
  3. Несколько других проектов, содержащих документы asciidoc, которые не имеют отношения к рассматриваемой проблеме.

У кого-нибудь есть мысли? Спасибо за помощь.


person Sebastian Sommerfeld    schedule 16.12.2020    source источник


Ответы (1)


Kroki предоставляет уровни безопасности, которые ограничивают доступ к файлам в файловой системе и в сети. Каждый уровень включает ограничения, включенные на предыдущем уровне безопасности:

  • UNSAFE: отключает все функции безопасности.
  • SAFE: предположим, что санитизации запросов безопасного режима библиотек схем достаточно.
  • SECURE: предотвращает попытки чтения файлов из файловой системы или из сети.

По умолчанию Kroki работает в режиме SECURE.

В результате "data": {"url": "data/stocks.csv"} будет удален/проигнорирован.

Если вы используете Asciidoctor Kroki, препроцессор должен разрешить путь, прочитать содержимое и заменить data.url фактическими значениями. См.: https://github.com/Mogztter/asciidoctor-kroki

В качестве альтернативы, и поскольку вы используете локальный экземпляр Kroki, вы можете использовать переменную среды KROKI_SAFE_MODE=unsafe, чтобы настроить безопасный режим на unsafe.

person Mogztter    schedule 14.04.2021