Динамический составной столбец amCharts, добавление urlField или ID в JSON

Я генерирую график с помощью загрузчика данных. Мои данные 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».

Надеюсь, кто-то может помочь мне решить это. Я пытался часами без всякой удачи.

С наилучшими пожеланиями

Мартин

1

Решение

Вы должны «сплющить» свой 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» нет элементов данных, график просто не будет отображаться (однако, он будет отображаться в легенде).

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector