Октябрь 27, 2007
Разработка фото галереи - джаваскриптовое дерево
Я начинаю серию статей, в которых последовательно опишу процесс создания фотогалереи. Эту галерею я написал для одного из проектов.
За прототип дерева было взято цсс дерево из техногрета Артемия Лебедева. . Недостатоки того дерева: поддерживает только один уровень вложенности, в ИЕ плохо выглядит.
Уже вырисовывается первая задача.
Штмл такого вида:
Задача
Разработать галерею с неограниченной вложенностью в категориях. Категории должны поддерживать локализацию (русский и английский языки). Должна быть панель администратора. Все что можно, реализовать с помощью Аякс.Начало разработки
В самом начале я получил, штмл верстку галереи. Не идеально, но концепция понятна.
За прототип дерева было взято цсс дерево из техногрета Артемия Лебедева. . Недостатоки того дерева: поддерживает только один уровень вложенности, в ИЕ плохо выглядит.
Уже вырисовывается первая задача.
Создание дерева
Я подумываю об использовании дерева из библиотеки ext.js. Но решаю не внедрять библиотеку в этот проект. В проекте использую только prototype.js library.Задача: Создать дерево с неограниченной вложенностью. Должно позволять добавлять, удалять и редактировать узлы.
Задача ясна. Первое что решаю сделать, добавить в дерево поддержку ИЕ и научить неограниченной вложенности. Делаю это, используя просто штмл и цсс. До динамики еще время дойдет. В итоге получаю такой вид дерева. Из рисунка видно что начальный вариант несколько изменился.
Штмл такого вида:
Вырисовывается задача с помощью джаваскрипта создать тоже самое.
На вход нужно давать данные. Выбор формата очевиден.
JSON, лучше в JS нет!
Ручками создаем данные. С помощью этих данных будет отображено дерево категорий.
Итак, можно заняться наконец рендерингом дерева.
Рендеринг дерева
Задача: с помощью джаваскрипта отрендерить дерево. На вход будут поступать джейсон данные, на выходе получится штмл.
В объектной структуре особо нечего выдумывать, классы те же что и везде (класс дерева и класс узла):
Tree – содержит в себе ноды, рисует дерево итд.
TreeNode – реализация логики узла.

Я тоже деревья писал:
http://harisov.livejournal.com/27541.html
http://harisov.livejournal.com/27298.html
В фф 3 пример уже не очень корректно работает.
продолжение цикла не писал, так как с выходом АСП.НЕТ МВЦ не захотелось писать про велосипеды