3d_killer пишет:)))) очень помог и так есть класс, но какой массив собирать и как его попроще разложить
Ну так по пэрэнту отсортируй. И если у тебя дерево, то тебе нужно его корень(id = 0 условно говоря) знать чтобы иметь доступ к его частям. Если массив по пэренту будет отсортирован и не будет условий вроде у записи с id=2 parent=7(это уже корректность самих данных), то у тебя получится собрать дерево, потом останется только отобразить его рекурсивно, начиная с корня.
active свойство везде можно проще с помощью js присвоить. Либо в узле дерева хранить предка. Перебирать все узлы, и где найдется active=true, там запускать рекурсивно вверх присвоение active=true у верхних узлов.
Это конечно все будет больно бить при колве узлов от 1000.
Пс: еще вариант, не иметь в узле ссылку на узел-родитель, а написать рекурсивный метод isActive, который будет опрашивать узлы-потомки активны ли они, если активны то active=true и возвращать тоже true/
ППс: Если непонятно о чем я говорю, и устроит не высочайшая производительность(может можно как-то напрямую сделать), то могу грубо сделанное решение предоставить, как концепт пруф (Отредактировано автором: 23 Июля, 2014 - 15:26:41)
|