Динамически изменяемая метка в линейном графике - PullRequest
2 голосов
/ 02 мая 2011

Я получаю следующий объект JSON от веб-сервера в объекте ответа:

(JSON Array :[{"JUL":"5"},{"AUG":"7"},{"SEP":"9"},{"OCT":"11"},{"NOV":"13"},    {"DEC":"15"},{"JAN":"17"},{"FEB":"19"},{"MAR":"21"},{"APR":"23"},{"MAY":"25"},{"JUN":"27"}]) 

Я беру ключи объекта JSON в массиве

var al_key = [];

//For loop for x axis dispaly.
alert("al_key.length --------->"+al_key.length);

var jsonObj = []; //declare array

for (var i = 0; i < al_key.length; i++) {
    jsonObj.push({value: i, text: al_key[i].value});
}

// Add axes
chart.addAxis("x", {min:1, max: 12 ,labels: jsonObj , fixLower: "major", microTicks: true, majorTickStep: 1});  

chart.addAxis("y", { min: 0, max: 50, vertical: true, fixLower: "major", fixUpper: "major", includeZero: true });

Однако это не такработает так, как я ожидаю.Любые предложения относительно того, где я получаю это неправильно?Или альтернативные способы динамического отображения месяцев на оси абсцисс?Заранее благодарен за любую помощь.


Вставил ответ в виде вопроса edit:

На самом деле я получаю JSONArray Object, который содержит один JSONObject, который содержит значения типа

// Кодирование на стороне сервера ..

JSONObject object=new JSONObject(); 
object.put("JAN":"17"); 
object.put("FEB":"19"); 
object.put("MAR":"21"); 
object.put("APR":"23"); 
object.put("MAY":"24"); 
object.put("JUN":"27");

JSONArray arrayObj=new JSONArray(); 
arrayObj.add(object);

On System.out.println(arrayObj); // our json appears like {"JAN":"17"},{"FEB":"19"},{"MAR":"21"},{"APR":"23"}, //{"MAY":"24"},{"JUN":"27"}];

На jsp:

//Call to the database to fetch the desired value 
dojo.xhrGet( { url : "/POC/Action.do", 
               handleAs : "json", 
               sync: true, 
               load : function(response, ioArgs) { 
  alert("retrived response ------"+response); 
  for(var i in response) 
    for(var x in response[i]) 
      output.push(response[i][x]); 
  alert("Get value to draw line chart---------------------->"+output); 
},
error: function(response, ioArgs){ 
  dojo.byId("grid").innerHTML = "An error occurred, with response: " + response; 
  return response; 
}, 
handleAs: "json" });

объект ответа содержит возвращаемое значение (объект JSONArray);

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

1 Ответ

1 голос
/ 02 мая 2011

В ответ на обновленную информацию:

Изменение способа отправки JSON (исходя из доступной ограниченной информации, я предполагаю, что это сервлет Java, использующий пакет org.jon)

JSONArray array = new JSONArray();
arrayObj.put (new JSONObject("{'month':'JAN', 'value':'17'}");
// and repeat for the rest of the data

Затем вы можете использовать его в своей диаграмме додзё, как я писал ниже (jsonObj3).


Оригинальный комментарий.

Проверьте на примерах здесь , особенно часть:

labels: [{value: 0, text: "zero"},
         {value: 2, text: "two"},
         {value: 4, text: "four"} 

и добавьте две серии

addSeries("Series A", [1, 2, 3, 4, 5], {stroke: {color: "red"}, fill: "lightpink"}).
addSeries("Series B", [5, 4, 3, 2, 1], {stroke: {color: "blue"}, fill: "lightblue"}).

Для серии JSON может быть

var months = ["JUL","AUG","SEP","OCT","NOV","DEC","JAN","FEB","MAR","APR","MAY","JUN"];
var jsonObj2 = [];

for (var i = 0; i < months.length ; i++) {
    jsonObj2.push({value: i, text: months[i]});
}

Если вам нужен один единственный объект JSON, попробуйте расположить его так:

var data = [{month: "JUL", value:"5"},
            {month: "AUG", value:"7"},
            {month: "SEP", value:"9"},
            {month: "OCT", value:"11"},
            {month: "NOV", value:"13"},    
            {month: "DEC", value:"15"},
            {month: "JAN", value:"17"},
            {month: "FEB", value:"19"},
            {month: "MAR", value:"21"},
            {month: "APR", value:"23"},
            {month: "MAY", value:"25"},
            {month: "JUN", value:"27"}];

var jsonObj3 = [];

for (var i = 0; i < data.length ; i++) {
    jsonObj3.push({value: i, text: data[i].month});
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...