Open duran-duran opened 9 years ago
Зачем юзается setTimeout? Ооооочень забавное дело. Судя по всему, узлы добавляются в систему асинхронно, потому что если оставить один узел и кликнуть отмену, счетчик насчитает только один узел и не изменит параметры. При этом если эти же операции вызвать вручную, все сработает нормально.Поэтому юзается костыльный setTimeout вместо непосредственного вызова функции.
К одной вершине нельзя добавить одиночный вершины и потом установить нормальное отталкивание, т.к. они добавляются все в одной точке и в тот момент, когда устанавливается отталкивание, судя по всему, слетает вся физика. Проявляется это, например, при откате некоторых операц. Нужно поэкспериментировать с параметром gravity.
Updated: эксперименты с gravity не помогли.
Помимо вышеописанного, есть такая фича: если в системе остается одна вершина, к ней нельзя добавить не только одиночную вершину, но и ребро. Во всяком случае, это решается установкой отталкивания (repulsion) в ноль, если вершина одна, и возвращением к нормальному значению после добавления ребра.
При отображении "связей" (не ребер древовидной структуры) между какими-либо вершинами онтологии, граф начинает стягиваться, что не очень-то красиво. Решается обращением натяжения (stiffness) в ноль, если связи отображены хотя бы для одной вершины, и возвращением нормального значения в противном случае.
Приведу здесь список известных мне багов Arbor'а.