Web-разработка whois
- индекс
- 184,85
rdTree — DHTML-дерево на MooTools
Многим разработчикам рано или поздно приходилось иметь дело с древовидным списком, который нужно включить в проект и представить пользователю в удобном дизайне.
Это может быть help, справочная информация, быстрая навигация по админ-панели, древовидное меню и т.д. Пользователю такая организация навигации понятна, так как она реализивана во всех операционных системах.
Поиск хороших решений неприменно приводил к красиво оформленным и хорошо документированыи коммерческим библиотекам, например Zapatec Tree. За unlimited версию там просит 799$.
Дорого! Будем поддерживать разработчиков свободного ПО и искать хорошо написанное дерево на JavaScript.
Составим список интересных бесплатных решений (без всяких там "unlimited with link back") и проанализируем функционал.
Toolbox - DHTML TreeСсылка глючит из-за 'script': http://www.mattkruse.com/javascript/mktree/Классический пример, копирайты к скрипту больше чем сам скрипт. Включил в обзор, так как скрипт учит базовым правилам построения дерева. С дизайном у него не очень, но для поисковиков дерево построено грамотно. |
|
Simple Tree MenuПростая реализация дерева. Главное достоинство - компактность и простота. Дерево задается в принятом для такого рода программ виде. |
|
Destroydrop Javascripts TreeСсылка глючит из-за 'script': http://destroydrop.com/javascripts/tree/Не использует фреймворк-и, написано 5 лет назад, аккуратное и компактное дерево. Есть документация и примеры. Из минусов: чистый JavaScript - проблемы с индексацией, не развивается с 2003 года. Модификацию этого скрипта встречал в некоторых коммерческих CMS. |
|
mygosuMenu / DynamicTreeФункционал схожий с Destroydrop Tree, но есть существенное отличие - дерево задается уже в понятной для индексации форме. Скрипт "легкий" и не использует фреймворков. |
|
jQuery - treeView BasicНемного примитивное, но здесь ставка на простоту и минимализм в коде (без учета кода самого фреймворка). При скролинге в Explorer-е заметны глюки. Текс дерева задается в хорошем для индексации виде. |
|
jQuery plugin: TreeviewХорошая реализация, хороший функционал. Текст дерева задается в хорошем для индексации виде. Есть скины, плавное разворачивание веток. Есть документация. Пользователям jQuery, я думаю, ничего лучшего для работы с деревьями не найти. |
|
Ext.treeОтличная реализация дерева. Drag'n'drop, ajax, даже шаблон фотоальбома. Дерево "тяжеловато" по объему кода, нету переноса длинных строк. Отличная документация. |
|
Mootools - Mif.TreeХорошая реализация дерева. Есть drag'n'drop, хорошая документация. Пожалуй, самый богатый функционал из перечисленных реализаций дерева. Есть только один недостаток - дерево задается в JavaScript в формате JSON, следовательно, с индексацией такого дерева будут проблемы. В дереве не реализованы переносы строчек. Идеальное решение для использования в админ-панели. |
|
Mootools - RIA DHTML TreeСобственно это моя реализация дерева. Не корректно будет оценивать ее мне, поэтому напишу только то, что я реализовал:
|
|
Я не хотел бы тратить Ваше время и описывать подробности того, как надо пользоваться скриптом, все это вы сможете найти на страничке rdTree. К сожалению, скрипт не автономный, и требует для работы MooTools 1.2.
Буду признателен разработчикам, которые предложат свой вариант дизайна дерева, обещаю выложить Ваш вариант на страничку проекта с указанием автора.
комментарии (45)
Как раз собирался делать FAQ для сайта - думал заказывать с нуля написание раздела, так оказывается всё можно просто нагенерить программами.
Странно, что нет в списке mooTree (mootree.mindplay.dk).
И ещё: "не умеет переносить строчки елемента узла" глаза режет. И с ошибкой, и непонятно. :)
Т.к. модулей на mootools не так уж и много, включил в обзор другие фреймворки.
Я согласен, что многие критерии оченки качества дерева в обзоре не описаны и тесты на ресуркоемкость и производительность тоже нужны.
Раз я уже взялся за это дело, напишу тесты, добавлю оценку по поддежке клавиш управления, динамической загрузке нодов, DnD, checkboxes, custom nodes и опубликую вторую (расширенную) часть обзора и назову ее "Обзор DHTML-деревьев на JavaScript".
Вот еще одна реализация дерева: Alder Tree
<span style="white-space: nowrap;">
<div style="white-space: nowrap; margin-left: 16px;">
...
</div>
</span>
Что же тут валидного? =)
p.s. и оффтоп: я подозреваю, что мы можем быть заочно знакомы по пунку, поэтому можно без "вы".
плохая часть - это "white-space: nowrap;"?
зы возможно(я в этом году ПМ окончил)
http://news.kg/wp-content/uploads/tree/index_ru.html
http://news.kg/wp-content/uploads/tree/d&d/
Когда передо мной встала задача реализовать дерево, то я для себя почему-то, решил: "JavaScript'а будет по-минимому". Переделал Лебедевсое дерево с ветками. Плюс добавил возможность сохранять состояние дерева в cookie. При Открытии/закрытии и записи в cookie используется JavaScript, а в остальном CSS+HTML.
Источник: http://localhost/js/mootools-1.2-core-nc.js
Строка: 40
Естественно сложнее сделать поиск с автоподстановкой, чем залепить дерево-рубрикатор, но дерево не решает проблемы быстрого поиска нужной информации и ломает отношения многие-ко-многим.
Если вы по какой-то причине используете дерево на сайте, значит вы не смогли решить задачу удобного представления информации (напоминаю, что мы говорим о сайтах). Уверен, что большинство пользуется индексом в справочной системе, а вовсе не оглавлением.
Дерево - это выражение лени дизайнера интерфейса.
С вами согласен только частично. Предложение "Если вы по какой-то причине используете дерево на сайте, значит вы не смогли решить задачу удобного представления информации (напоминаю, что мы говорим о сайтах)" звучит очень категорично.
Рисунок представляет собой профиль по которому строится маршрутизация.
Прошу не пинать меня: я не дизайнер. Проект пока в разработке. Маршрутизация представляет собой не граф, а именно дерево. Хотелось предоставить пользователю в максимально интуитивно-понятном виде.
Пока только по предположениям, деревья будут не очень "разлапистыми" =) Так что, как мне кажется, выбранный способ отображения вполне годиться.
P.S.: если я допустил ошибку или не прав, то хотелось бы, чтобы вы мне объяснили, был бы рад и благодарен. Но мне почему-то кажется, что другой способ был бы не очень удобен.
Обратите внимание на GUI для Lego Mindstorms и Эппловский Finder, мне кажется, что вы почерпнете оттуда массу интересных идей, которые в итоге дадут вашему проекту конкурентное приемущество перед вашим оппонентами. Ведь они, наверняка свято верят в "удобство" деревьев.
будут нервно курить в сторонке, уступать по функционалу значительно.Если честно, вы меня не убедили =) Может, я просто ничего не понял... У поиска с автоподстановкой как мне видится, есть минусы, с которыми столкнулся на практике.
Потому что один сделал, и за ним потянулись все. В истории веб-дизайна миллион случаев следования неверному примеру.
> в случае, когда юзер впервые погружается в тему и не знает, что искать, он ему не поможет:)
Высосано из пальца. Ситуация про сферического коня в вакууме.
> который оптимально подходит для конкретной задачи и структуры данных.
Не путайте структуру и представления. Юзера врядли волнуют зависимости таблиц в вашей БД.
> Что касается поиска с автоподстановкой (кстати, сделать его не сложнее, чем качественное дерево с постепенной подгрузкой подветвей)
А я не про техническую сторону говорю, а про правильный алгоритм поиска, решающий задачу. Вы думаете пользователь будет переться от того, что у вас дерево ветви динамически подгружает?
> огулом хаять все остальное.
Вы уверены что понимаете смысл выражения "хаять огулом"?
Потому что для иерархических структур это действительно удобно. Если бы это не было удобно, даже Майкрософту не удалось бы пропихнуть свою «универсальную консоль администрирования» (с деревом администрируемых сущностей в левой панели) в качестве образца для подражания.
> Высосано из пальца.
И тем не менее, часто вижу людей, которые и дерево-то раскрыть не с первой минуты догадаются, не то что в поиск что-то вводить. А если при этом вводе они еще ошибутся во второй-третьей букве…
> Не путайте структуру и представления. Юзера врядли волнуют зависимости таблиц в вашей БД.
Не я начал :). БД, конечно, ни при чем, но представление должно быть адекватно модели, а не притянуто за уши (конечно, все можно представить плоским списком, но нафига?).
> про правильный алгоритм поиска
Поиск далеко не главная задача дерева. Для поиска, конечно, нужен поиск. Но посмотрел бы я, как вы с помощью поиска реализуете аналог админки структуры с перетягиваемыми ветвями :).
А вы привязались к деревьям и плоским спискам.
А я не буду делать сайт с кучей подразделов (и пользователю не дам), чтобы потом не делать в админке дерева. Вот так я избавляюсь от дерева.
Справедливости ради - у нас есть и бесплатная версия.
Андрей Кулинич - разработчик Zapatec.Tree