Тестеры принимают проект у одного разработчика и выдвигают баг по дереву построенному на ExtJs:
«Папка, не имеющая потомков-папок, но имеющая привязку элементов(которые в дереве не показываются) все равно имеет маркер раскрытия (стрелочку), хотя не должна.»
Разработчик отвечает «Так устроен ExtJs». Так ли это?
А при чем тут это? Думаю, если человек убедил начальство в том, что надо использовать эту технологию, он должен обладать соответствующим уровнем квалификации. Оклад достойный. Цель моего вопроса — желательно пруфлинк, доказывающий обратное от слов разработчика.
В случае с ExtJs выставляется свойство, которое говорит дереву, что элемент может раскрываться(Ext.tree.TreeNode -> leaf). По поводу того, что здесь присутствует — даже не подскажу, может быть вариант, если изначально не известно, папка это или лист. Например это может происходить в асинхронном дереве со своим загрузчиком. Тогда убрать маркер нельзя, но «by design». Сам же фреймворк позволяет это все сделать достаточно просто
Вы не могли бы показать скриншот. Просто я похоже неправильно вас понял. Вы хотите, чтобы раскрытая папка с элементами, но без вложенных подпапок, не показывала маркер? Если да, то тут сложнее. Но сделать можно.
Группа 2 вообще не имеет ни потомков, ни ни элементов. Но если мы кликнем по маркеру раскрытия, то он просто исчезнет. Хотя по уму его изначально быть не должно.
Понятно, тогда мой первый ответ подходит. В конфигурации папки просто указывается свойство leaf и все. Маркера не будет. Иконку же можно поставить любую.
Проблема может быть только одна, если подгрузка аяксом и неизвестно изначально, будут ли потомки от папки. Я указал в своем первом ответе это. Тогда, как я и указал, будет «by design», но даже в этом случае можно убрать маркер и подгружать его в фоне. Все упирается во время (до суток) и желание.
В данном проекте, используется загрузка Ajax`ом деревьев. Это прекрасно видно. Достаточно открыть FireBug. Методов по работе с маркером у узла в Ext.tree.AsyncTreeNode нет. Поэтому «by design»