2013-04-15 19 views
7

Tôi muốn xem những thống kê (hay nói chung là bất kỳ chức năng tập hợp) đối với từng nhóm trong một mạng lưới.Làm thế nào để thiết lập kết hợp với nhóm trong ng-lưới

này đã được yêu cầu và đóng cửa như thực hiện trong vấn đề: https://github.com/angular-ui/ng-grid/issues/95 (nhưng tiếc là không có bất kỳ ví dụ).

Tôi có thể xác định lại mẫu mặc định https://github.com/angular-ui/ng-grid/blob/master/src/templates/aggregateTemplate.html theo tùy chọn cấu hình aggregateTemplate. Nhưng tôi không biết làm thế nào để mở rộng nó đúng cách.

mẫu này được đánh giá trong phạm vi ng-lưới và tôi không biết làm thế nào để kích hoạt chức năng tập hợp tùy chỉnh của tôi. Tôi muốn tạo ra chức năng tương tự như '' 'totalChildren' '' (từ https://github.com/angular-ui/ng-grid/blob/master/src/classes/aggregate.js)

Bất kỳ ý tưởng?

Trả lời

9

Tôi tìm thấy câu trả lời: https://github.com/angular-ui/ng-grid/issues/290

Đối với một completenes đây là một ví dụ về chức năng aggredate tôi:

function WorkLoadCtrl($scope, Issue, $routeParams, HttpCache) { 
    $scope.issues = Issue.jql_search({jql: $routeParams.jql}); 

    $scope.aggFC = function (row) { 
    var res = 0; 

    var calculateChildren = function(cur) { 
     var res = 0; 
     var remaining; 
     angular.forEach(cur.children, function(a) { 
     remaining = a.getProperty('fields.timetracking.remainingEstimateSeconds'); 
     if (remaining) { res += remaining; } 
     }); 
     return res; 
    }; 

    var calculateAggChildren = function(cur) { 
     var res = 0; 
     res += calculateChildren(cur); 
     angular.forEach(cur.aggChildren, function(a) { 
     res += calculateAggChildren(a); 
     }); 
     return res; 
    }; 

    return (calculateAggChildren(row)/3600).toFixed(2); 
    } 

    $scope.mySelections = []; 
    $scope.gridOptions = { 
    data: 'issues.issues', 
    columnDefs: [ 
     {field:'key', displayName:'key'}, 
     {field:'fields.assignee.name', displayName:'Assignee'}, 
     {field:'fields.status.name', displayName:'Status'}, 
     {field:'fields.summary', displayName:'Summary'}, 
     {field:'fields.timetracking.remainingEstimate', displayName:'Remaining'}, 
    ], 
    showFooter: true, 
    showGroupPanel: true, 
    enablePinning: true, 
    enableColumnResize: true, 
    enableColumnReordering: true, 
    showColumnMenu: true, 
    showFilter: true, 
    //jqueryUIDraggable: true, bug: when used grouping stop work, but column reordering start to work:(
    selectedItems: $scope.mySelections, 
    multiSelect: false, 
    aggregateTemplate: '<div ng-click="row.toggleExpand()" ng-style="rowStyle(row)" class="ngAggregate"> <span class="ngAggregateText">{{row.label CUSTOM_FILTERS}} (count: {{row.totalChildren()}} {{AggItemsLabel}} Remaining: {{aggFC(row)}})</span> <div class="{{row.aggClass()}}"></div> </div>' 
    }; 
} 
Các vấn đề liên quan