/** * admin/userPost */ var mcare_admin_userPost = function(){ //상속 mcare_admin.call(this); var self = this; //변수 var $grid = $("#grid"), $chart = $("#chart"), $legend = $("#chart_legend"), $crudServiceBaseUrl = contextPath + "/admin/stats"; /** * 초기화 */ this.init = function(){ initGrid(); //initChart(); addEvent(); }; /** * 이벤트 등록 */ var addEvent = function(){ }; //데이터소스 var postNoValue = [], dataCnt = []; /** * 데이터소스 설정 */ var setDataSource = function(){ var dataSource = new kendo.data.DataSource({ transport: { read: { url: $crudServiceBaseUrl + "/getUserPostnoList.json", method: "post", dataType: "json", contentType: "application/json" }, parameterMap: getParameterMap }, schema: { data : getSchemaData }, change: function(e) { // update chart } }); /** * 데이터소스 파라미터맵 * @private */ function getParameterMap( options, operation ){ var today = new Date(); today.setDate( today.getDate() - 1 ); var param = $.extend(true, {}, options, { strDate : new Date( today ).setHours(0, 0, 0, 0), endDate : new Date( today ).setHours(0, 0, 0, 0), }, null); return self.util.stringifyJson( param ); }; /** * 데이터소스 스키마설정 * @private */ function getSchemaData(e){ if( e.msg !== undefined ){ alert(e.msg); return []; } var userPostList = e.aggUserPostnoList; var postNoValueArr = postNoValue = new Array(), dataCntArr = dataCnt = new Array(); var param = []; if( userPostList.length <= 0 ){ postNoValueArr.push( "없음" ); dataCntArr.push( 0 ); param.push({ "postNoValue" : "없음", // "postNoDesc" : "없음", "dataCnt" : 0 }); } else { for( var i = 0 ; i < userPostList.length; i++ ) { var item = userPostList[i]; postNoValueArr.push( item["postnoValue"] ); dataCntArr.push( item["dataCnt"] ); param.push({ // "postNoValue" : item["postnoValue"], "postNoValue" : item["postnoValue"] == "" ? "기간계 데이터오류" : item["postnoValue"], // "postNoDesc" : item["postnoValue"]!=="000" ? item["postnoDesc"] : "알 수 없음", "dataCnt" : item["dataCnt"] }); } } return param; }; return dataSource; }; var dataSource = setDataSource(); /** * 그리드 초기화 */ var initGrid = function(){ // 그리드 옵션 var option = { dataSource: dataSource, //그리드 데이터 받아온 뒤 차트 초기화 dataBound: initChart, pageable: false, selectable: true, height : 215, columns : [ // { // field : "postNoValue", // title : "시군구코드", // width: 252, // attributes: { // "class": "table-cell", // style: "text-align: center;" // } // }, { field : "postNoValue", title : "지역", width: 252, attributes: { "class": "table-cell", style: "text-align: center;" } }, { field : "dataCnt", title : "인원수", width: 152, template: "#= kendo.toString(data.dataCnt,'n0')# 명", attributes: { "class": "table-cell", style: "text-align: center;" } } ] }; //그리드 초기화 - mcare_admin self.grid( $grid, option ); }; /** * 차트 초기화 */ var initChart = function(){ // 차트 옵션 TODO: chartjs로 변경한다 var data = { labels: postNoValue, datasets: [ { label: "지역", fillColor: "rgba(151,187,205,0.0)", strokeColor: "rgba(151,187,205,1)", pointColor: "rgba(151,187,205,1)", pointStrokeColor: "#fff", pointHighlightFill: "#fff", pointHighlightStroke: "rgba(151,187,205,1)", data: dataCnt } ] }; var option = { tooltipTemplate: "<%= value %> 명", //tooltip 표시 감지 거리 px pointHitDetectionRadius : 1 }; //차트 초기화 mcare_admin self.chart( $chart, "line", option, data, $legend ); }; };