Skip to content

Summary 관련 문제 2건 보고 및 수정 제안 #2106

Description

@HIMZ5221

Version : 4.21.19

1. appendRows 사용 시 Summary 값이 갱신되지 않는 문제

문제 설명

appendRows함수 사용시 summary가 업데이트 되지 않음.

기대 동작

appendRows 호출 이후 summary가 즉시 정상적으로 갱신되어야 함.

수정 제안 코드

// appendRows: summary가 자동 갱신되지 않음 → updateAllSummaryValues 호출 필요

function appendRows(store, inputData) {
    var data = store.data, column = store.column, id = store.id;
    var startIndex = data.rawData.length;
    var _a = data_1.createData(id, inputData, column, { lazyObservable: true }), rawData = _a.rawData, viewData = _a.viewData;

    if (!column.keyColumnName) {
        var rowKey_1 = data_2.getMaxRowKey(data);
        rawData.forEach(function (row, index) {
            row.rowKey = rowKey_1 + index;
        });
        viewData.forEach(function (row, index) {
            row.rowKey = rowKey_1 + index;
        });
    }

    data.rawData = data.rawData.concat(rawData);
    data.viewData = data.viewData.concat(viewData);

    sort_1.resetSortKey(data, startIndex);
    sort_1.sortByCurrentState(store);
    updateHeights(store);

    // ✅ updateAllSummaryValues함수 딱 한줄만 추가 필요
    summary_1.updateAllSummaryValues(store);

    rawData.forEach(rawRow => instance_1.getDataManager(id).push('CREATE', [rawRow]));
    postUpdateAfterManipulation(store, startIndex, 'DONE', rawData);
    rowSpan_2.updateRowSpan(store);
}

2. getSummaryValue 함수에서 필터링된 summary 값이 일관되지 않게 반환되는 문제

문제 설명

필터사용시, summary는 getDate()의 summary로 반영됨.

문제 코드(기존)

return tslib_1.__assign(tslib_1.__assign({}, summaryValue), // <-- summaryValue 를 쓰고있음. filteredColumnValues 가 되어야 적합해보임.
 assignFilteredSummaryValue(calculate(filteredColumnValues)));

기대 동작

필터링이 적용된 경우, summary의 값도 필터링된 행의 계산값이 나와야함.

수정 제안 코드

function getSummaryValue(columnName, rawData, filteredRawData) {
            var columnValues = rawData.map(function (row) {
                return row[columnName];
            });
            var summaryValue = calculate(columnValues);
            if (rawData.length === filteredRawData.length) {
                return tslib_1.__assign(tslib_1.__assign({}, summaryValue), assignFilteredSummaryValue(summaryValue));
            }

            var filteredColumnValues = filteredRawData.map(function (row) {
                return row[columnName];
            });
            var filteredSummaryValue = calculate(filteredColumnValues);

            // ✅ 필터 상황에서는 필터 filteredSummaryValue 기준으로 전체 객체를 구성
            return tslib_1.__assign(tslib_1.__assign({}, filteredSummaryValue),
                assignFilteredSummaryValue(filteredSummaryValue));
        }

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions