JIT добавление цвета графа подграфа

У меня есть радиальный график, показывающий два уровня узлов. При нажатии на узел можно добавить подграф с вызовом функции sum(). Все работает отлично, кроме установки индивидуального цвета для вновь добавленных краев. Кто-нибудь когда-нибудь пытался загрузить подграфы с отдельными краями или есть подсказка, что я делаю неправильно?

Здесь я получаю и добавляю подграф:

subtree = getSubtree(node.id);  

//perform animation.  
subtree.success(function(data){
    rg.op.sum(data, {  
        type: 'fade:seq',  
        fps: 40,  
        duration: 1000,  
        hideLabels: false,  
    });  
});

Я также проверил загруженные данные, но для меня они полностью совпадают. Я также загрузил те же данные в исходный график вместо вложенного графика, а затем он был окрашен правильно. Тем не менее, вот некоторые тестовые данные, которые являются результатом функции getSubtree (идентификатор "placeholder" соответствует идентификатору существующего, где должен быть добавлен подграф):

{
"id": "placeholder1",
"name": "country",
"children": [{
    "id": "2_3mSV~_scat_1",
    "name": "hyponym",
    "children": [{
        "children": [],
        "adjacencies": {
            "nodeTo": "2_3mSV~_scat_1",
            "data": {
                "$color": "#29A22D"
            }
        },
        "data": {
            "$color": "#29A22D"
        },
        "id": "3_58z3q_sc_174_6",
        "name": "location"
    }],
    "data": {
        "$type": "star",
        "$color": "#666666"
    },
    "adjacencies": [{
        "nodeTo": "3_58z3q_sc_174_6",
        "data": {
            "$color": "#29A22D"
        }
    }]
}]
}

1 ответ

Решение

Я наконец нашел проблему в самой структуре...

При вызове функции конструкции внутри вызова sum(), который фактически добавляет поддерево, объект данных, содержащий информацию об индивидуальной визуализации смежности, не используется для добавления новой смежности. Поэтому я изменил код вручную (этот цикл for является новой версией существующего цикла внутри функции construct()):

for(var i=0, ch = json.children; i<ch.length; i++) {

  //CUSTOM CODE: GET DATA OF THIS ADJACENCE
      data = null;
      if(ch[i].adjacencies[0]==undefined){
      data = ch[i].adjacencies.data;
      }
      else{
          data = ch[i].adjacencies.data;
      }

      ans.addAdjacence(json, ch[i], data);
      arguments.callee(ans, ch[i]);
      //CUSTOM CODE END

}
Другие вопросы по тегам