Я пытаюсь перебрать файл Json, используя Javascript / jQuery (у меня нет контроля над файлом Json, поэтому я не могу просто импортировать его прямо в Treant js), преобразовать его в массив Javascript, а затем передать его в Treant js.
Проблема, которую я получаю, заключается в том, что она не понимает родительские ссылки. Это мой код:
var config = {
container: "#myChart",
rootOrientation: 'WEST',
levelSeparation: 100,
siblingSeparation: 10,
connectors: {
type: 'stright',
style: {
"stroke": '#c7c7c7',
"stroke-width": 1
}
},
node: {
HTMLclass: 'nodeStyle'
},
}
chart_config = [config];
$.getJSON('myFile.json', function(data) {
rootLevel = {};
rootLevel["text"] = { "name": data.something };
rootLevel["image"] = data.somethingImage;
chart_config.push(rootLevel);
$.each(data.root.secondLevel, function(i, v) {
var iName = v.something;
var iKey = iName + "-" + i;
window[iKey] = {};
window[iKey]["parent"] = rootLevel;
window[iKey]["text"] = { "name": iName };
window[iKey]["stackChildren"] = true;
chart_config.push(window[iKey]);
});
}).done(function() {
new Treant(chart_config);
});
Я получаю ошибку
Uncaught TypeError: Cannot read property 'join' of undefined
at Tree.getPathString (Treant.js:1040)
at Tree.setConnectionToParent (Treant.js:892)
at Tree.positionNodes (Treant.js:817)
at Tree.positionTree (Treant.js:509)
at Treant.js:533
Я думаю, что происходит, потому что я не объявляю массив все в одном go:
EG:
rootLevel = {
text: {
name: "stuff",
},
},
secondLevel = {
parent: rootLevel,
text: {
name: "things",
},
} //..... etc
Непонятно родительское связывание.
В качестве теста я также попробовал
window[iKey]["parent"] = chart_config[1];
Но это бросает та же ошибка.
Если я сделаю console.log(chart_config)
в конце, массив выглядит нормально. Я смею сказать, что ответ прост, но он ускользает от меня.
Заранее спасибо.