Я нахожусь в некоторой уникальной ситуации, когда мне нужно реализовать древовидный элемент управления в браузере с состоянием узлов (открыто / закрыто / выбрано), связанных с URL, чтобы пользователь мог добавить в закладки или поделиться URL-адресом, а второйПользователь на другом конце провода, когда открывает ссылку, может видеть дерево с точно такими же открытыми узлами. В основном все дерево в одном и том же состоянии. В настоящее время под состоянием мы подразумеваем только открытые / закрытые и выбранные узлы.
Долго я думаю реализовать его путем сохранения состояния каждого узла обратно в БД, генерирования хеша из девяти или одиннадцати символов (как у youtubeуникальный URL-адрес видео) и обновите адресную строку пользователя с помощью этого хэша.
Что-то вроде
http://myapp/directory/my-docs/UlksjhT65
Хэш генерируется путем рекурсивной проверки всех узлов на их открытое / закрытое и выбранное состояние изатем объединение всех этих данных в виде текста и генерирование хеша md5 из этой строки (md5 только для ссылки).
Есть два вопроса относительно ссылки на вышеуказанную проблему.
1-Может ли вся эта часть генерации URL и отображения дерева быть выполнена только в javascript? Это имеет очевидное преимущество, заключающееся в сохранении большого количества обращений к серверу при обновлении состояния каждого узла. Может ли существовать обратимый алгоритм генерации хеша, который также может отобразить хеш обратно в дерево?
2 - Если решение только с использованием javascript невозможно, то мое текущее решение даже близко к надежности для развертывания вПроизводственная система?