Как учесть структуру наследования при построении сортируемого дерева в табличной форме?

Ссылка скопирована
1 ответ

Всем Доброго дня! Делаю пет проект, нужно выводить структуру сотрудников в древовидном формате. Я использую для этого табличное представление django-tables2. Далее нужна возможность сортировки drug and drop. Нашел SortableJS, подключил, но при перетаскивании не знаю как сделать, что бы учитывалась структура родитель-потомок. Если у нода есть потомки, тянем вместе с ними. Если у нода потомков нет, соответвено только он. У SortableJS есть опция Nested, но как ее прикрутить к своей существующей таблице не знаю. Пробовал по всякому, но корректно она отрабатывает только со структурами на div тегах. Собственно я в тупике). Подскажите пожалуйста, что можно предпренять, может быть выбрать другой инструмент?

Примерна структура и то, что есть сейчас:
https://jsbin.com/geqonosaqa/edit?html,js,output

Дополнительно:

Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Елена Вебер Ответ

Для учета структуры наследования при построении сортируемого дерева в табличной форме, вам необходимо учитывать иерархию объектов и их связи.

Один из способов реализации такого дерева - использование рекурсивной структуры данных. Для каждого объекта вы можете создать класс или структуру, который будет содержать информацию об объекте (например, название, тип и т.д.) и массив дочерних объектов. Таким образом, вы можете построить древовидную структуру, где каждый объект может иметь несколько дочерних объектов.

Пример реализации на PHP:

class Node {
    public $name;
    public $children = [];
 
    public function __construct($name) {
        $this->name = $name;
    }
 
    public function addChild(Node $child) {
        $this->children[] = $child;
    }
}
 
// Создаем объекты
$parent = new Node('Parent');
$child1 = new Node('Child 1');
$child2 = new Node('Child 2');
 
// Строим иерархию
$parent->addChild($child1);
$parent->addChild($child2);

class Node { public $name; public $children = []; public function __construct($name) { $this->name = $name; } public function addChild(Node $child) { $this->children[] = $child; } } // Создаем объекты $parent = new Node('Parent'); $child1 = new Node('Child 1'); $child2 = new Node('Child 2'); // Строим иерархию $parent->addChild($child1); $parent->addChild($child2);

Теперь у вас есть структура данных, которая отражает иерархию объектов с учетом наследования. Для отображения этой структуры в табличной форме, вы можете использовать рекурсивную функцию, которая будет обходить каждый узел дерева и строить таблицу.

Пример реализации вывода таблицы на PHP:

function printTable($node, $indent = 0) {
echo str_repeat('-', $indent) . $node->name . "

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно