Я генерирую график с помощью загрузчика данных. Мои данные JSON выглядят примерно так.
{
"Month": 1,
"District1": 2.6,
"District2": 5.7,
"District3": 6.2,
"District4": 7.3,
}, {
"Month": 2,
"District1": 4.6,
"District2": 5.7,
"District3": 2.2,
"District4": 6.3,
"District5": 4.3,
"District7": 1.3,
}
В моем JavaScrit я использую этот код для генерации графиков, загруженных из файла PHP.
for ( var key in chart.dataProvider[ 0 ] ) {
if ( chart.dataProvider[ 0 ].hasOwnProperty( key ) && key != chart.categoryField ) {
var graph = new AmCharts.AmGraph();
graph.valueField = key;
graph.type = "column";
graph.title = key;
graph.lineThickness = 0;
graph.urlField =?????????????????????
graph.urlTarget ="_blank";
graph.labelColor = "#cccccc";
graph.connect = false;
graph.fillAlphas = 0.8;
graph.balloonFunction = adjustBalloonText;
graph.labelText = key;
chart.addGraph( graph );
}
}
Данные являются динамическими, некоторые мотыльки насчитывают 15 объектов, некоторые только 12.
Я хочу добавить ссылку на каждый район или идентификатор, чтобы я мог создать новую диаграмму.
Как мне добавить это в строку JSON. Я пытался сделать это с объектами
как это.
{
"Month":1
"District1": {"value":1, "url":"url.php?id=1", "id":1}
"District2": {"value":2, "url":"url.php?id=2", "id":2}
}
Я не мог назначить объект graph.valueField = key;
Возможно ли это решить? Событие on click просто возвращает индекс месяца, а не информацию о графе «ID».
Надеюсь, кто-то может помочь мне решить это. Я пытался часами без всякой удачи.
С наилучшими пожеланиями
Мартин
Вы должны «сплющить» свой dataProvider
, как amCharts ‘ urlField
а также valueField
не может ссылаться на ключ внутри вложенного объекта. Итак, вместо:
{
"Month":1
"District1": {"value":1, "url":"url.php?id=1", "id":1}
"District2": {"value":2, "url":"url.php?id=2", "id":2}
}
Попробуйте вывести что-то вроде этого:
{
"Month":1
"Dist1Value": 1,
"Dist1Url": "url.php?id=1",
"Dist1id": 1,
"Dist2Value": 2,
"Dist2Url": "url.php?id=2",
"Dist2id": 2
}
Я бы тоже поменял for key ... in
цикл до нормального for
Цикл за циклом по заранее определенным районам (я полагаю, вы знаете, сколько округов может быть).
var amount_districts = 12;
for(var i = 0; i < amount_districts.length; i++){
// create a graph for each of our districts
var graph = new AmCharts.AmGraph();
graph.type = "column";
graph.title = "District " + (i+1);
graph.valueField = "Dist" + (i+1) + "Value";
graph.UrlField = "Dist" + (i+1) + "Url";
// ... etc
// finally, add this graph to the chart
chart.addGraph(graph);
}
Если это произойдет, для «Района 10» нет элементов данных, график просто не будет отображаться (однако, он будет отображаться в легенде).
Других решений пока нет …