ax5ui grid header 3단 이상시 오류 발생하는 문제

image

전에도 같은 이슈가 있었던걸로 아는데요
저도 해더를 3단으로 쓰려다보니 같은 오류가 발생해서 수정 내용 공유합니다.

git이나 기타 적용 방법을 몰라서 글로 남겨요

////수정내용/////
//총문제 2개
//바로 아래 단계의 header col수만큼만 span을 증가시키는데
//바로 아래 단계의 header의 자식 col수도 더해줘야함
//또한 3단으로 가면서 colIndex 붙이는것 또한 변경해줘야함

ax5grid.js 파일 수정 내용
makeHeaderTable(_columns) 이함수 1개 수정했습니다.

var makeHeaderTable = function makeHeaderTable(_columns) {
var columns = _columns,
        cfg = this.config,
        table = {       rows: []        },
        colIndex = 0,
        maekRows = function maekRows(_columns, depth, parentField) {
        var row = { cols: [] };
        var i = 0,
            l = _columns.length;
        var colspan = 1;
        var subcolspan = 0;

        for (; i < l; i++) {
            var field = jQuery.extend({}, _columns[i]);
            colspan = 1;

            if (!field.hidden) {
                field.colspan = 1;
                field.rowspan = 1;

                field.rowIndex = depth;
                field.colIndex = function (index) {
                    if (!parentField || index != 0) {
                        return colIndex++;
                    } else {
                        colIndex = parentField.colIndex + i + 1;
                        return parentField.colIndex + i;
                    }
                }(i);

                row.cols.push(field); // 복제된 필드 삽입

                if ('columns' in field) {
                    colspan = maekRows(field.columns, depth + 1, field);
                } else {
                    field.width = 'width' in field ? field.width : cfg.columnMinWidth;
                }
                field.colspan = colspan;
                subcolspan += colspan;
            } else {}
        }

        if (row.cols.length > 0) {
            if (!table.rows[depth]) {
                table.rows[depth] = { cols: [] };
            }
            table.rows[depth].cols = table.rows[depth].cols.concat(row.cols);
            return subcolspan;
        } else {
            return colspan;
        }
    };

    maekRows(columns, 0);

    // set rowspan
    for (var r = 0, rl = table.rows.length; r < rl; r++) {
        for (var c = 0, cl = table.rows[r].cols.length; c < cl; c++) {
            if (!('columns' in table.rows[r].cols[c])) {
                table.rows[r].cols[c].rowspan = rl - r;
            }
        }
    }

    return table;
};
2개의 좋아요

대단하십니다.
기왕이면 pull request해주시면 참 좋을 텐데요.
제가 고친부분도 아닌데 제가 고친 것처럼 되는 것도 아닌거 같구요.

gitHub https://github.com/ax5ui/ax5ui-kernel 에서 fork버튼 누른다음에

git clone [forked git repo]하세요.

소스가 내려받아지면 수정후에 git commit -a, git push 하면 포크된 플젝에 소스가 푸시됩니다.
그 후에 gitHub에서 pull request할 수 있습니다.

안녕하세요 제가 수정한 부분 커밋을 하고싶은데
var makeHeaderTable로 검색을 해보니 path가 몇개 나오는데
그중
src/ax5ui-grid/dist/ax5grid.js
dist/ax5ui/all.js
에다가 수정부분 반영후 commit하면 될까요?

git이 익숙치 않아서;;