Я пользуюсь Tabulator чуть больше года, и мне это очень нравится. Я использую табулятор в нескольких местах в своем веб-приложении, поэтому я хотел придерживаться его для внешнего вида. Но для конкретной страницы, на которой я нахожусь, мне нужно иметь редактируемое дерево. Используя структуру дерева данных Табулятора, я получаю желаемый вид, но любые манипуляции, которые мне нужно сделать, помимо редактирования простых данных, требуют сложного кода.
Пример 1: одно из моих требований - добавить дочерний элемент в данный узел. Насколько я могу судить, функция addRow () работает только на уровне таблицы и всегда добавляет строку уровня root, верно? поэтому для добавления дочерней строки мне нужно получить массив _children, добавить элемент в массив, а затем обновить родительскую строку с помощью row.update ({_ children: updatedArray}). Кажется, что это должно работать, но это неизменно разрушает форматирование.
Перед добавлением потомка:
после добавления потомка:
Я принял долгий обходной путь, чтобы исправить это, упорядочив все дерево и повторно проанализировав данные, а затем обновляя строку root каждый раз, когда вносятся какие-либо изменения. это работает, за исключением того, что мой анализ немного подвержен ошибкам, и я продолжаю вводить новые ошибки.
Точно так же я столкнулся с проблемами удаления, продвижения или демодуляции узла, и единственное решение, которое я нашел, это повторно анализировать всю структуру всякий раз, когда вносятся какие-либо изменения.
Поэтому мой вопрос: есть ли в Tabulator встроенные функции для работы с древовидной структурой, которые я не нашел для добавления дочерних узлов, удаления узлов, продвижения или демонтирование узла, или я должен использовать другой элемент управления?