discoveryjs/browser-extension-json-discovery

Сделать конструктор view

RubaXa opened this issue · 3 comments

Очень часто хочется вместо JSON видеть уже репорт, а точнее репорты, поэтому нужен некий конструктор view, который позволит создавать блоки «репортов», по умолчанию для всех файлов view состоит из одного блока «JSON».

ps Если идея интересна, готов сам попробовать это реализовать :]

exdis commented

Немного не понял как именно ты видишь этот конструктор?
Сейчас планирую сделать пресеты (или шаблоны) для репортов для различных страниц, доменов etc. Для того, чтобы эти пресеты легко можно было выбирать при создании репорта, а не вбивать json вручную.
Это то о чем ты говоришь? Или я что-то недопонял?

А можешь поподробней рассказать об идее?
Мы думаем о том, чтобы можно было сохранять view и page на странице настроек плагина с привязкой к домену/урлу или "для всех". А потом это уже можно будет использовать.
Можем сохранять и в localStorage что-то. Но тут пока проблема с шарингом урлов – хотя вопрос насколько это сейчас имеет значение.
Есть еще начинание по поводу пресета для view на странице репорта.
И совсем далеко, думаем сделать каталог расширений (методы для запросов, вью, страницы), которые можно будет включать в плагине и там даже тогда разруливается история с шарингом

Пресеты, сохранение, это всё верно, но я хочу именно сам конфигурировать view для url/домена/т.п.

Что-то типа как в графане, создаешь даборд, накидываешь блоки/сетку, а сам блок может быть как минимум трех типов

  • Raw JSON — сырые данные
  • JSON Tree — отформатированые (view, которые сейчас по умолчанию)
  • Report — любой репорт, который я сформирую

По умолчанию блок занимает всё свободное пространство, поэтому чтобы компоновать, нужен ещё один компонент для разметки, назовём его, например, Container:

  1. В Container можно добавлять «блоки», по умолчанию каждый из них занимает равную ширину, но это должно быть регулируемо
  2. Так же ему, можно задать «высоту»

Ох, попробую нарисовать ;]

+---------------------------------------+       +-----------------------------------------+
| +-----------------------------------+ |       | +-------------------------------------+ |
| |                                   | |       | | +--------+ +-------------+ +------+ | |
| |                                   | |       | | |        | |             | |      | | |
| |                                   | |       | | |  Chart | |    STATS    | | PIE  | | |
| |                                   | |       | | |        | |             | |      | | |
| |                                   | |       | | |        | |             | |      | | |
| |                                   | |       | | +--------+ +-------------+ +------+ | |
| |                                   | |       | +-------------------------------------+ |
| |            JSON TREE              | +-----> | +-------------------------------------+ |
| |                                   | |       | | +-----------------+ +-------------+ | |
| |                                   | |       | | |                 | |             | | |
| |                                   | |       | | |                 | |             | | |
| |                                   | |       | | |    JSON TREE    | |   RAW JSON  | | |
| |                                   | |       | | |                 | |             | | |
| |                                   | |       | | |                 | |             | | |
| |                                   | |       | | |                 | |             | | |
| |                           ^       | |       | | +-----------------+ +-------------+ |<------+
| +---------------------------|-------+ |       | +-------------------------------------+ |     |
+-----------------------------|---------+       +-----------------------------------------+     |
         ^                    |                                                                 +
         |                    |                                                             CONTAINER
         +                    +
     DASHBOARD              BLOCK