2013-08-15 5 views
0

Я пытаюсь использовать InfoVis SpaceTree, чтобы позволить пользователям управлять некоторой информацией. После нажатия на узел форма создается и отображается пользователю, что позволяет ему обновлять свойства этого конкретного узла с помощью ajax.InfoVis SpaceTrees: обновление информации о узле после формы submit

Кроме того, дерево отображается с использованием шаблона узлов «по требованию», поэтому у меня есть специальные методы для извлечения любого поддерева с любой глубиной для определенного узла с использованием данных ajax и json.

Проблема заключается в обновлении информации о узле после того, как пользователь отправил форму узла. Например, имя узла на ярлыке должно обновляться после того, как пользователь отправит изменение имени на узел. Таким образом, есть (многие) другие свойства, которые должны быть отражены на этикетке, и пользователю разрешено изменять.

Мне нужно обновить внутреннее представление одного узла после того, как была отправлена ​​форма, и перерисовать дерево.

В идеале я хотел «партия» обновить все свойства элементов узла одновременно, используя тот же метод я использую для «по требованию» узлов, то есть получать информацию о недавно обновленном узле по AJAX:

  1. обновления пользовательских узлов
  2. узел удаляется из дерева
  3. запрос асинхронной сделан, чтобы получить информацию обновленного узла
  4. узел повторно вставить на дереве; дерево вновь обращается

Я пытался использовать .graph.removeNode() и .graph.addNode() функции, но это щурит раскладку дерева. Добавление и удаление объектов поддерева не является опцией, потому что тогда мне придется запрашивать большой объем информации и повторно вставлять все поддерева, когда обновляется только один узел.

Есть ли какой-либо метод или механизм, который я могу использовать для одновременного изменения внутреннего представления всего узла?

+0

1: Почему вам нужно удалить узел, когда пользователь обновляет узел? –

+0

Я этого не делаю. Я просто хотел подчеркнуть, что я хотел полностью обновить все свойства узла, не переходя через каждое свойство один за другим. Это было важно, потому что есть некоторые свойства, которые косвенно изменены из-за ввода пользователя. Однако вы правы: мне не нужно удалять узел. Если я получу новый json для узла, чтобы сразу обновить весь узел, мне нужно будет только обновить 2 vars: «name» и «data». Благодаря!! – thyandrecardoso

ответ

1

Если позиция узла в графике не изменена, вам не нужно будет удалять узел только для обновления его свойств. Вы можете очень легко сделать это

node.setData('propertyName', 'newPropertyValue'); 

Вы можете изменить имя узла просто

node.name = 'newName'; 

Вы можете перебрать все свойства и обновлять их в узле.

+0

Спасибо за ответ. На самом деле мне должно быть лучше получить новый json после отправки формы, а затем сделать что-то вроде «oldNode.name = newJson.name; oldNode.data = newJson.data'. После этого я просто вызываю обновление на дереве. Спасибо! – thyandrecardoso

Смежные вопросы