RealGrid2 가이드
리얼차트 연동
리얼차트 연동 컬럼 필터링

리얼차트 연동 컬럼 필터링

RealGrid와 RealChart를 사용하여 연계한 예제입니다.
RealGrid의 Column Filter를 변경하면 발생하는 onFilteringChanged이벤트를 통해 필터링된 데이터를 RealChart에 적용되도록 구현하였습니다.
Year 컬럼의 필터를 변경해여 차트가 변경되는것을 확인하세요.

RealGrid와 RealChart를 연계

RealChart는 https://service.realgrid.com/ (opens in a new tab) 에서 다운 받을수 있습니다.

그리드 필터 설정

function setFilter() {
    var filters = [];
    var vals = dataProvider.getDistinctValues("year");
    $.each(vals, function (k, v) {
        var filter = {};
        filter.name = v;
        filter.criteria = "value = '" + v + "'";
        filters.push(filter);
    });
 
    var col = gridView.columnByName("Year");
    col.filters = filters;
    gridView.setColumn(col);
}

필터 목록 변경 및 데이터 행 변경 이벤트

function gridEvents(grid, provider) {
    grid.onFilteringChanged = function (grid) {
        var count = grid.getItemCount();
        var jArr = [];
        for (var i = 0; i < count; i++) {
            var jObj = grid.getValues(i);
            if (!jObj.Year) jObj.Year = null;
            jArr.push(jObj);
        }
        if (!config) return;
        $.each(config.series, function (index, series) {
            var updateData = jArr.map(function (val) {
                return [val.Year, val[series.name]];
            });
            rChart.getSeries(series.name).updateData(updateData);
        });
    };
}

차트 생성 함수

function setRealChart(provider) {
    var categories = provider.getFieldValues("year");
    var diVal = provider.getFieldValues("DIncome");
    $.each(diVal, function (k, v) {
        if (v == undefined) diVal[k] = null;
    });
 
    config = {
        title: {
            text: "통계청 총생산소득",
        },
        subtitle: {
            text: "www.realgrid.com",
        },
        options: {},
        xAxis: {
            categories: categories,
        },
        yAxis: [
            {
                title: {
                    text: "소득 ($)",
                },
                label: {
                    suffix: " $",
                    numberSymbols: "",
                },
            },
        ],
        series: [
            {
                name: "GDP",
                data: provider.getFieldValues("GDP"),
                color: "#7cb5ec",
            },
            {
                name: "GNI",
                data: provider.getFieldValues("GNI"),
                color: "#434348",
            },
            {
                name: "PGNI",
                data: provider.getFieldValues("PGNI"),
                color: "#90ed7d",
            },
            {
                name: "DIncome",
                data: diVal,
                color: "#f7a35c",
            },
        ],
    };
 
    rChart = RealChart.createChart(document, "realchart", config);
}