У меня есть интересная проблема.
По сути, у меня есть список Предметов, где у каждого Предмета есть фиксированный набор метаданных разных значений.
Например:
- Элемент 1: {Type = "Text", Автор = "Пользователь A", Дата редактирования = "03/03/2003"}
- Элемент 2: {Type = "Таблица", Автор = "Пользователь A", Дата редактирования = "04/05/2006"}
- Элемент 3: {Type = "Изображение", Автор = "Пользователь B", Дата редактирования = "05/05/2005"}
- Элемент 4: {Type = "Text", Author = "Пользователь B", Дата редактирования = "05/07/2007"}
Теперь, в существующем виде, этот список предметов сведен и представлен в таблице.
Однако мы хотели бы найти способ, позволяющий пользователям просматривать его в дереве, но с дополнительной гибкостью, позволяющей им «поворачивать» порядок, в котором каждый из тегов метаданных появляется в дереве.
Итак, изначально это может выглядеть так:
Items
+ Table
+ User A
+ 04/05/2006
-> Item 2
-> Item 2
-> Item 2
+ Text
+ User A
+ 03/03/2003
-> Item 1
-> Item 1
+ User B
+ 05/07/2007
-> Item 4
-> Item 4
-> Item 1
-> Item 4
+ Image
..
Однако, предположим, что вместо этого пользователь хочет перевернуть его и просмотреть все элементы, связанные с конкретным пользователем:
Items
+ User A
+ Text
+ Table
-> Item 1
-> Item 2
+ User B
+ Image
+ Text
-> Item 3
-> Item 4
и т. Д.
Надеюсь, это имеет смысл.
Итак, что меня интересует, так это то, что существует ли наилучший практический подход для достижения этого при низких затратах? Результат каждого 'flip / shuffle / pivot' красиво представлен в дереве, поэтому очевидно, что первая мысль состоит в том, что, когда пользователь запрашивает изменение представления, может быть сгенерировано новое дерево из списка элементов по мере необходимости. Однако я надеялся, что, возможно, найдется лучший способ, просто повернув одно дерево и т. Д.
Кроме того, это можно сделать вычислительно дешево в JavaScript в браузере пользователя, если бэкэнд просто вернет плоский список элементов?
Большое спасибо и всего наилучшего,
Джейми