Table contents, tbody, dynamic according to thead angularjs

0

Hello, I have an automatic thead generator, positioning colspan and conforming rowspan of json content, but not being able to link the contents of each column to thead, how would I do that?

angular.module('myapp', []).controller('tableColSpanRowSpan', ['$scope', function($scope){

        $scope.finalArrayHTML = [];

        var jsonDATA = [
            {
                "Title":"Column 1",
                "SubColumns":[

                ]
            },
            {
                "Title":"Column 2",
                "SubColumns":[

                ]
            },
            {
                "Title":"Column 3",
                "SubColumns":[
                    {
                        "Title":"Column 3 : 1",
                        "SubColumns":[

                        ]
                    },
                    {
                        "Title":"Column 3 : 2",
                        "SubColumns":[
                            {
                                "Title":"Column 3 : 2 : 1",
                                "SubColumns":[

                                ]
                            },
                            {
                                "Title":"Column 3 : 2 : 2",
                                "SubColumns":[

                                ]
                            },
                            {
                                "Title":"Column 3 : 2 : 3",
                                "SubColumns":[

                                ]
                            },
                            {
                                "Title":"Column 3 : 2 : 4",
                                "SubColumns":[

                                ]
                            }
                        ]
                    },
                    {
                        "Title":"Column 3 : 3",
                        "SubColumns":[
                            {
                                "Title":"Column 3 : 3 : 1",
                                "SubColumns":[

                                ]
                            },
                            {
                                "Title":"Column 3 : 3 : 2",
                                "SubColumns":[

                                ]
                            },
                            {
                                "Title":"Column 3 : 3 : 3",
                                "SubColumns":[

                                ]
                            }
                        ]
                    }
                ]
            }
        ];

        var getColSpan = function(data, count) {
            if(data.length > 0) {
                for(var c = 0; c < data.length; c++) {
                    if(data[c].SubColumns.length > 0) {
                        count = getColSpan(data[c].SubColumns, count);
                    } else {
                        ++count;
                    }
                }

            }
            return count;
        };

        var getDepth = function (obj) {
            var depth = 0;
            if (obj.SubColumns) {
                obj.SubColumns.forEach(function (d) {
                    var tmpDepth = getDepth(d)
                    if (tmpDepth > depth) {
                        depth = tmpDepth
                    }
                })
            }
            return 1 + depth
        };

        var getRowSpan = function(allData, index, count) {
            if(allData[index].SubColumns.length > 0) {

            } else {
                var depth = 0;
                for(var j = 0; j < allData.length; j++) {
                    var depthTmp = getDepth(allData[j]);
                    if(depthTmp > depth) {
                        depth = depthTmp;
                    }
                }
                return depth;
            }
            return count;
        };

        var rowIndex = 0;
        var RecursiveFunction = function(data, currentRow) {

            for(var i = 0; i < data.length; i++) {
                var tmp = {title: data[i].Title, colSpan: getColSpan(data[i].SubColumns, 0), rowSpan: getRowSpan(data, i, 0)};
                if(typeof $scope.finalArrayHTML[rowIndex] == 'undefined') {
                    $scope.finalArrayHTML[rowIndex] = [];
                }
                $scope.finalArrayHTML[rowIndex].push(tmp);

                if(data[i].SubColumns.length > 0) {
                    ++rowIndex;
                    RecursiveFunction(data[i].SubColumns, data[i]);
                    --rowIndex;
                }
            }

        };

        RecursiveFunction(jsonDATA, 0);

    }]);
<!doctype html>
<html ng-app="myapp">
<head>
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.0/angular.min.js"></script></head><body><divng-controller="tableColSpanRowSpan">
    <table border="1" cellspacing="2" cellpadding="3">
        <thead>
        <tr data-ng-repeat="t in finalArrayHTML">
            <th colspan="{{h.colSpan}}" rowspan="{{h.rowSpan}}" data-ng-repeat="h in t">{{h.title}}</th>
        </tr>
        </thead>
    </table>
</div>

</body>
</html>
    
asked by anonymous 29.01.2018 / 09:38

0 answers