Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Сделать отображение дерева иерархии " деревом" #12

Open
orion76 opened this issue Jan 10, 2019 · 2 comments
Labels
enhancement New feature or request scheduled Sheduled project features

Comments

@orion76
Copy link
Owner

orion76 commented Jan 10, 2019

план

На данный момент, views выводящий дерево иерархии выводит просто список "веток", отсортированный в соответствии с иерархией.

Необходимо доработать views, чтобы дерево "раскрывалось" по уровням как и положено дереву.

Примерный план реализации:

  1. Добавить к плагину views display "etree" обязательный контекстный фильтр parent
    т.е. ID родительской ветки текущего уровня.
  2. При отсутствии контекстного фильтра выводятся корневые ветки дерева (level 0)
  3. Добавить views-поле: кнопка раскрытия ветки.
    кнопка отображается при условии, если у ветки есть подветки.
  4. Добавить в шаблон строк вьюса "компонент", в который будут выводиться список подветок текущей ветки.
  5. добавить обработку клика по кнопке раскрытия ветки:
  • по клику, вероятно программно вызывается этот же views
  • ему передается контекстный фильтр (ID текущей ветки)
  • views производит выборку соответствующих веток
  • список выбранных веток стандартно темизируется
  • результат выводится в "компонент" (п.4) текущей ветки
@orion76 orion76 added enhancement New feature or request scheduled Sheduled project features labels Jan 10, 2019
@dashiwa
Copy link
Collaborator

dashiwa commented Jan 10, 2019

@orion76 - Я точно не знаю есть ли в ядре либа для JS реализации такого списка, можно и css
Вот вероятно можно проверить данное решение https://www.drupal.org/project/views_tree
Там один вопрос - громоздкий запрос..

@orion76
Copy link
Owner Author

orion76 commented Jan 21, 2019

Скорее всего непосредственно на JS ничего делать не придется.
Нужны всего 2 "штуки":
1.Аякс-ссылка, которая вызовет тот же вьюс, только с установленным нужным контекстным фильтром (ID сущности родительской строки)
2.Аякс-команда, которая вставит этот вьюс в нужное место ("под" родительскую строку)

По идее, вьюс как-то работает "аяксом" (превью выборки на форме редактирования вьюса, экспозед-фильтры , пейджеры и т.п.)
значит какое-то апи у него для этого есть.
Возможно это апи можно будет и для данного функционала использовать.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request scheduled Sheduled project features
Projects
None yet
Development

No branches or pull requests

2 participants