Closed dronowar closed 5 years ago
Если напишешь JS код, который будет отвечать за хранение статуса дерева, то добавлю
Готов написать на vue.js За основу возьму этот пример http://vuejs.org/examples/tree-view.html и дополню
Нужно будет чтобы backend через ajax отдавал json дерево при открытии страницы, и методы чтобы можно было сохранить измененное дерево, создать и обновить ноду
Vue и сам код можно просто подключить к шаблону, но лучше сразу использовать сборщик gulp-browserify-vueify
5 сент. 2016 г. 6:51 PM пользователь "butschster" notifications@github.com написал:
Если напишешь JS код, который будет отвечать за хранение статуса дерева, то добавлю
— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/LaravelRUS/SleepingOwlAdmin/issues/265#issuecomment-244776121, or mute the thread https://github.com/notifications/unsubscribe-auth/AF36yLbnx0qcu1SGBFbPbDYXkdIFCusZks5qnDqRgaJpZM4Jw-T- .
@butschster, @aios
Сделал метод setCollapsed, но для корректной работы нужно править сам nestable.js
, он подключается из node_modules
. В этом случае, мы отключаем его в зависимостях и используем свою измененную версию. По сути это не страшно, т.к. эта либа уже 100 лет не обновлялась.
меняем?
@Butochnikov этот компонент подлежит полной переписи - так как тестировался на маленьких деревьях до 30-50 записей. У лунатика 500 и я охренел от того времени которое уходит на отрисовку всего дерева - а потом на обработку его сохранения. + дерево постоянно ломается. От этого мы тоже будем уходить. Nestable не подходит совсем.
@aios у меня тоже огромные деревья + кастомный view для каждого элемента, да, медленно, но опять-таки, работает и все пользуются. Я, например, сходу не нашел готовой альтернативы работы с деревом + d&d, даже на vue, возможно плохо искал. Если новое решение будет мега отличное, то старый tree можно убить, а пока нового нет предлагаю доработать.
@Butochnikov ну я с предложением не согласен. @butschster что скажешь?
@dronowar был добавлен метод setMaxDepth в Tree посмотри чем поможет.
Как насчёт https://www.npmjs.com/package/nestable2 ?
Наконец-то это либа стала обновляться. Альтернатив ей нормальных нет, надо брать.
12 июля 2017 г. 12:10 AM пользователь "Danila Loginov" < notifications@github.com> написал:
Как насчёт https://www.npmjs.com/package/nestable2 ?
— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/LaravelRUS/SleepingOwlAdmin/issues/265#issuecomment-314572872, or mute the thread https://github.com/notifications/unsubscribe-auth/AF36yJc9t3ZssAe6wwlk-TZjsEl77EyUks5sM-SogaJpZM4Jw-T- .
Какие требования?
Сейчас дерево рендерится на сервере, что если отдавать его Vue компоненту с указанием роутов для action кнопок, а ля:
$tree = Model::getTree();
// $tree[i] = ['id' => 1, 'name' => 'Тапочки', 'children' => [...]];
<display-tree :tree={{ json_encode($tree) }}
reorder-url="/admin/categories/reorder"
edit-route="/admin/categories/{id}/edit"
delete-route="/admin/categories/{id}/delete"></display-tree>
Ну а Vue компонент уже хранит дерево и рекурсивно отрисовывает его, при изменении сериализовать его в JSON не составит труда. Там уже и допилить это дело под конкретные нужды можно будет, например сделать текстовый поиск по нодам.
Единственное что придётся избавиться от блейдовских шаблонов.
У меня в админке 1092 категории на baum можно сказать валятся, на фронтенде просто скармливаю vue компоненту json_encode(Category::getNestedList('name', 'id', '>'))
, работает быстро.
(getNestedList использую, потому что всё равно вывожу флэт массив как опшены для селекта, ну и к стыду своему не понял как толком взять от Baum всё дерево)
Как сейчас обстоят дела с деревьями где много записей? Меняем либу?
Сейчас по умолчанию все ноды expand, хотелось бы иметь возможность задавать этот параметр при конфигурации модели и способе отображения в виде tree(). А также добавить у tree() метод setColumns() для вывода там не только заголовка