RealPivot 가이드
피벗 리얼차트 🆕

피벗 리얼차트(RealChart)

RealPivot과 RealChart를 사용하여 연계한 예제입니다. Pivot화면의 body영역 클릭 시 제조사 및 모델에 대한 판매 실적을 RealChart그래프로 보이도록 하였습니다.

RealGrid와 RealChart를 연계

RealChart는 https://www.realchart.co.kr/ (opens in a new tab) 페이지에서 확인하실 수 있습니다.

pivot 데이터, 라벨값 가져오기

포커스 이동 시 onCurrentChanged (opens in a new tab) 이벤트가 발생하며 getAllValues (opens in a new tab), getRowValues (opens in a new tab) 로 값을 가져올 수 있습니다.

사용 목적에 맞게 가져온 데이터를 원하는 형태로 가공해서 사용할 수 있습니다.

pivot.onCurrentChanged = function (grid, index) {
 
    var attrs = Object.keys(index.columns);
    var level = attrs.filter(function (item) { return item == "__sum" || item == "valueField" ? false : true; }).length;
 
    var columnLabels = pivot.getColumnLabels();
    var columnList = getLevelLabels(columnLabels, 1, level)
 
    var vals = []
    var len = Object.keys(pivot.getRowValues("판매량", index.rows).descendants).length;
    for (var i = 0; i < len; i++){
        if(Object.keys(pivot.getRowValues("판매량", index.rows).descendants)[i].split(":::").length == level){
            var key = Object.keys(pivot.getRowValues("판매량", index.rows).descendants)[i];
            vals.push(pivot.getRowValues("판매량", index.rows).descendants[key])
        }
    }
 
    setRealChart(dataProvider, vals, index, columnList);
}
 
function getLevelLabels(columnChilds, level, targetLevel) {
    var list = [];
    for (var i = 0, len = columnChilds.length; i < len; i++) {
        if(level == targetLevel){
            list.push(columnChilds[i].label)
        } else if(level < targetLevel && columnChilds[i].hasOwnProperty("childs")) {
            var levelLabels = getLevelLabels(columnChilds[i].childs, level + 1, targetLevel)
            list.push.apply(list, levelLabels);
        }
    }
    return list;
}

차트 생성 함수

function setRealChart(dataProvider, vals, index, columnList){
  var subtitle;
 
  if (Object.keys(index.rows)[0] == "__sum") {
      subtitle = "전체 요약";
  } else if (index.rows.모델) {
      subtitle = index.rows.모델;
  } else {
      subtitle = index.rows.제조사;
  }
 
  if (!rChart) {
      rChart = RealChart.createChart(document, "realchart", {
          title: { text: "차량 판매 실적" },
          subtitle: { text: subtitle },
          yAxis: [
              { title: { text: "단위(대)" }, label: { numberSymbols: "" } },
          ],
          series: [{ colorByPoint: true, name: "판매량", data: vals }],
      });
  } else {
      rChart.getSeries("판매량").updateData(vals);
      rChart.subtitle.updateOption("text", subtitle, true);
      rChart.xAxis.updateOption("categories", columnList, true);
  }
}