Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 11.08.2016, 02:37
Интересующийся
Отправить личное сообщение для nextdrift Посмотреть профиль Найти все сообщения от nextdrift
 
Регистрация: 23.10.2011
Сообщений: 25

Nested выборка из базы. Вопрос
Всем привет. Помогите советом или где можно поискать.

В общем ситуация такая.

Есть база с объектами (не путать с объектами JS).
Объекты расположены по каталогам.

Максимальный уровень вложенности - 3.

у объекта есть текущие параметры и эталонные.

А вот теперь сама проблема:

Допустим человек зашёл на страницу объектов (1-й уровень).
В ответ получает список объектов и предупреждения, если текущие параметры не сходятся с эталонными. (В данной реализации проблем нет).

Но вот если каталог, то он должен быть красным, если в каком-то из дочерних объектов есть проблемы.

- объект
- объект
- каталог (содержит объекты)
- каталог (содержит каталоги которые содержат объекты)


Пока первое что всплывает в голове - делать выборку всех объектов начиная с корня. А дальше делать обработку данных и если в дочерних есть проблемы - каталог помечать как проблемный.

Но такой подход кажется избыточен.

Как бы вы этот процесс организовали бы?

Последний раз редактировалось nextdrift, 11.08.2016 в 03:20.
Ответить с цитированием
  #2 (permalink)  
Старый 11.08.2016, 14:18
Аватар для Vlasenko Fedor
Профессор
Отправить личное сообщение для Vlasenko Fedor Посмотреть профиль Найти все сообщения от Vlasenko Fedor
 
Регистрация: 13.03.2013
Сообщений: 1,572

http://wwwendt.de/tech/dynatree/doc/samples.html Lazy loading Оно?
Ответить с цитированием
  #3 (permalink)  
Старый 11.08.2016, 22:17
Интересующийся
Отправить личное сообщение для nextdrift Посмотреть профиль Найти все сообщения от nextdrift
 
Регистрация: 23.10.2011
Сообщений: 25

Не, не то.

Каталог - это абстрактное понятие (по другому группа объектов). Это объект, который содержит другие объекты.

Только в отличии от объекта (статус которого легко вычислить сравнив текущий state с эталонным) - его статус зависит от статусов внутренних объектов.

// с объектом всё просто
obj.problems = obj.currentState === obj.setState;


// а вот каталог зависит от внутренних объектов
groupObjs = groupObjs.map(item => item.currentState === item.setState);

if (groupObjs.indexOf(false) !== -1 ) {
  groupObjs.problems = true;
}



Написал упрощённую версию. Кодом просто показал зависимость статуса.

Просто есть подозрения на избыточность, когда на первом экране будут объект и группа объектов. При этом в группе например 500 объектов и тогда приходится грузит их все, чтобы пометить группу, как проблемную... Просто другого решения сейчас не вижу.
Ответить с цитированием
  #4 (permalink)  
Старый 12.08.2016, 02:15
Аватар для Vlasenko Fedor
Профессор
Отправить личное сообщение для Vlasenko Fedor Посмотреть профиль Найти все сообщения от Vlasenko Fedor
 
Регистрация: 13.03.2013
Сообщений: 1,572

из вашего кода some будет в помощь
и где будут данные хранится? если это база, то пусть она возвращает значение вашей группы
назвали же Nested, а ведь некоторые и рекурсивные запросы могут делать
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Меню с выезжающим сайдбаром Jaz Элементы интерфейса 17 26.06.2016 19:21
Простой скрипт выбора из базы данных. Atridies Элементы интерфейса 31 14.02.2016 12:49
Выводить значение раньше переменных Гробовщик Общие вопросы Javascript 11 10.09.2013 08:42
Выборка из базы на основании результата выборки djonA Серверные языки и технологии 12 13.05.2013 14:37
Всплытие событий или что то не так... Кирюха =) jQuery 6 30.03.2013 12:56