discoveryjs / browser-extension-json-discovery

A browser extension (Chrome, Edge, Firefox) that changes the way you're viewing JSON
305 stars 11 forks source link

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

Open RubaXa opened 5 years ago

RubaXa commented 5 years ago

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

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

exdis commented 5 years ago

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

lahmatiy commented 5 years ago

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

RubaXa commented 5 years ago

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

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

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

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

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

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