FrontEnd/JavaScript & jQuery
jQuery :: Highcharts (차트/그래프 구현)
초록 (green)
2017. 9. 21. 22:57
jsp에서 쉽게 차트나 그래프를 표현할 수 있는 api이며, 여러 모양이나 형태로도 손쉽게 구현이 가능하다.
1. Controller에 데이터를 담음
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | @Controller public class HomeController { @RequestMapping(value = "/", method = RequestMethod.GET) public String home(Model model) { PercentVO percentVO = new PercentVO(); percentVO.setYesPercent("40"); percentVO.setNoPercent("60"); System.out.println("debug> percentVO : " + percentVO); model.addAttribute("percentVO", percentVO); return "home"; } } | cs |
yesPercent에 40, noPercent에 60이라는 값이 들어있는 PercentVO 모델이 있다고 가정한다.
2. jsp Highcharts 구현
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 | <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <%@ page session="false" %> <html> <head> <title>Highcharts Example</title> <!-- Highchars CDN --> <script src="http://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script> <script src="http://code.highcharts.com/highcharts.js"></script> <script type="text/javascript"> $(function() { // body > div 부분에 적은 id를 파라미터로 직접 넘긴다. Highcharts.chart('container', { chart: { plotBackgroundColor: null, plotBorderWidth: 0, plotShadow: false, height: 500 }, title: { text: '', align: 'center', verticalAlign: 'bottom', y: -300, x: -80 }, credits: { enabled: false }, tooltip: { pointFormat: '{series.name}: <b>{point.percentage: 1f}%</b>' }, plotOptions: { pie: { dataLabels: { enabled: true, distance: -50, style: { fontWeight: 'bold', color: 'white', fontSize: '15px' } }, startAngle: -90, endAngle: 90, center: ['50%', '75%'] } }, series: [{ // Highcharts를 pie 형태로 구현했다. type: 'pie', name: '응답률', innerSize: '20%', /* data: [name:'params1', value:'params2'] 의 형태이다. name과 value는 생략이 가능하며, 'params1'과 'params2' 값만 적어도 무방하다. * 주의 * => Highcharts로 표현하려는 값이 변수일 경우에는 반드시 JSON.parse() 함수 안에 변수 값을 적어야 한다. */ data: [ ['YES(${percentVO.yesPercent}%)', JSON.parse('${percentVO.yesPercent}')], ['NO(${percentVO.noPercent}%)', JSON.parse('${percentVO.noPercent}')], ] }] }); }); </script> </head> <body> <div id="container" style="min-width:350px;height:200px;max-width:250px;margin:0 auto"></div> </body> </html> |
실제로 작업 당시 series의 data 부분에 변수를 넣어야 했는데 아무리 검색을 해도 나오지 않았고, JSON 형태로 담아야 파라미터가 출력된다는 검색 결과들에 힌트를 얻어 해결할 수 있었다.