- Google предоставляет API визуализации для рисования диаграмм и других компонентов.
- Более подробную информацию можно найти на: —
https://developers.google.com/chart/interactive/docs/
- Различные типы готовых к использованию типов диаграмм предоставляются разработчикам для создания классов java-скриптов.
- В этом демо , «Мы видим , как визуализация графики получить отображаются в браузере для ответа данных JSON из Servlet» .
- Структура проекта ,
- Сервлет java использует библиотеку jar API GSON для преобразования списка массивов студенческих данных в его представление JSON.
Код StudentJsonDataServlet.java ниже,
package com.sandeep.visual.servlet;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.google.gson.Gson;
import com.sandeep.visual.data.Student;
@WebServlet("/StudentJsonDataServlet")
public class StudentJsonDataServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public StudentJsonDataServlet() {
super();
}
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
List<Student> listOfStudent = getStudentData();
Gson gson = new Gson();
String jsonString = gson.toJson(listOfStudent);
response.setContentType("application/json");
response.getWriter().write(jsonString);
}
private List<Student> getStudentData() {
List<Student> listOfStudent = new ArrayList<Student>();
Student s1 = new Student();
s1.setName("Sandeep");
s1.setComputerMark(75);
s1.setMathematicsMark(26);
listOfStudent.add(s1);
Student s2 = new Student();
s2.setName("Bapi");
s2.setComputerMark(60);
s2.setMathematicsMark(63);
listOfStudent.add(s2);
Student s3 = new Student();
s3.setName("Raja");
s3.setComputerMark(40);
s3.setMathematicsMark(45);
listOfStudent.add(s3);
Student s4 = new Student();
s4.setName("Sonu");
s4.setMathematicsMark(29);
s4.setComputerMark(78);
listOfStudent.add(s4);
return listOfStudent;
}
}
- The JSON response data format is as below,
- The HTML markup is present in visualization-chart-demo.html file,
<html> <head> <title>Google Visualization Chart Demo</title> </head> <body> <div id="student-bar-chart"></div> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> <script type="text/javascript" src="https://www.google.com/jsapi"></script> <script type="text/javascript" src="./js/visualization-chart-script.js"></script> </body> </html>
- The above html has a «DIV#student-bar-chart» html element for bar chart container.It calls JQUERY and JSAPI library from Google hosted CDN.Finally it calls our script code present in
visualization-chart-script.js file.
var TUTORIAL_SAVVY = {
/*return google visualization data*/
getvisualizationData: function (jsonData) {
var point1, point2, dataArray = [],
data = new google.visualization.DataTable();
data.addColumn('string', 'Name');
data.addColumn('number', 'Marks in Mathematics');
data.addColumn({
type: 'string',
role: 'tooltip',
'p': {
'html': true
}
});
data.addColumn('number', 'Marks In Computer');
data.addColumn({
type: 'string',
role: 'tooltip',
'p': {
'html': true
}
});
/* for loop code for changing inputdata to 'data' of type google.visualization.DataTable*/
$.each(jsonData, function (i, obj) {
point1 = "Math : " + obj.mathematicsMark + "";
point2 = "Computer : " + obj.computerMark + "";
dataArray.push([obj.name, obj.mathematicsMark, TUTORIAL_SAVVY.returnTooltip(point1, point2), obj.computerMark, TUTORIAL_SAVVY.returnTooltip(point1, point2)]);
});
data.addRows(dataArray);
return data;
},
/*return options for bar chart: these options are for various configuration of chart*/
getOptionForBarchart: function () {
var options = {
animation: {
duration: 2000,
easing: 'out'
},
hAxis: {
baselineColor: '#ccc'
},
vAxis: {
baselineColor: '#ccc',
gridlineColor: '#fff'
},
isStacked: true,
height: 400,
backgroundColor: '#fff',
colors: ["#68130E", "#c65533"],
fontName: 'roboto',
fontSize: 12,
legend: {
position: 'top',
alignment: 'end',
textStyle: {
color: '#b3b8bc',
fontName: 'roboto',
fontSize: 12
}
},
tooltip: {
isHtml: true,
showColorCode: true,
isStacked: true
}
};
return options;
},
/*Draws a Bar chart*/
drawBarChart: function (inputdata) {
var barOptions = TUTORIAL_SAVVY.getOptionForBarchart(),
data = TUTORIAL_SAVVY.getvisualizationData(inputdata),
chart = new google.visualization.ColumnChart(document.getElementById('student-bar-chart'));
chart.draw(data, barOptions);
/*for redrawing the bar chart on window resize*/
$(window).resize(function () {
chart.draw(data, barOptions);
});
},
/* Returns a custom HTML tooltip for Visualization chart*/
returnTooltip: function (dataPoint1, dataPoint2) {
return "<div style='height:30px;width:150px;font:12px,roboto;padding:15px 5px 5px 5px;border-radius:3px;'>" +
"<span style='color:#68130E;font:12px,roboto;padding-right:20px;'>" + dataPoint1 + "</span>" +
"<span style='color:#c65533;font:12px,roboto;'>" + dataPoint2 + "</span></div>";
},
/*Makes ajax call to servlet and download data */
getStudentData: function () {
$.ajax({
url: "StudentJsonDataServlet",
dataType: "JSON",
success: function (data) {
TUTORIAL_SAVVY.drawBarChart(data);
}
});
}
};
google.load("visualization", "1", {
packages: ["corechart"]
});
$(document).ready(function () {
TUTORIAL_SAVVY.getStudentData();
});
- Приведенный выше JavaScript имеет следующую функцию:
getStudentData () —— Когда DOM готов, он вызывает AJAX и загружает данные Student.
drawBarChart () —— При УСПЕХЕ вызова AJAX этот метод вызывается.
getOptionForBarchart () —— Возвращает КОНФИГУРАЦИЮ для гистограммы.
getvisualizationData () —— Форматирует данные JSON в формат данных визуализации Google.
returnTooltip () ——- Возвращает строку HTML для подсказки CUSTOM.
- Гистограмма выхода : —
- Ссылка для скачивания демо-проекта: —



