Skip to content

Commit

Permalink
Optimize DataView flattenGroupedRows().
Browse files Browse the repository at this point in the history
  • Loading branch information
mleibman committed Mar 8, 2013
1 parent f322990 commit 5601f55
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 3 deletions.
4 changes: 4 additions & 0 deletions examples/example-checkbox-row-select.html
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
<link rel="stylesheet" href="../slick.grid.css" type="text/css"/>
<link rel="stylesheet" href="../css/smoothness/jquery-ui-1.8.16.custom.css" type="text/css"/>
<link rel="stylesheet" href="examples.css" type="text/css"/>
<link rel="stylesheet" href="../controls/slick.columnpicker.css" type="text/css"/>
<style>
.slick-cell-checkboxsel {
background: #f0f0f0;
Expand Down Expand Up @@ -41,6 +42,7 @@ <h2>Demonstrates:</h2>
<script src="../plugins/slick.cellcopymanager.js"></script>
<script src="../plugins/slick.cellselectionmodel.js"></script>
<script src="../plugins/slick.rowselectionmodel.js"></script>
<script src="../controls/slick.columnpicker.js"></script>
<script src="../slick.formatters.js"></script>
<script src="../slick.editors.js"></script>
<script src="../slick.grid.js"></script>
Expand Down Expand Up @@ -81,6 +83,8 @@ <h2>Demonstrates:</h2>
grid = new Slick.Grid("#myGrid", data, columns, options);
grid.setSelectionModel(new Slick.RowSelectionModel({selectActiveRow: false}));
grid.registerPlugin(checkboxSelector);

var columnpicker = new Slick.Controls.ColumnPicker(columns, grid, options);
})
</script>
</body>
Expand Down
8 changes: 5 additions & 3 deletions slick.dataview.js
Original file line number Diff line number Diff line change
Expand Up @@ -564,20 +564,22 @@
}
}

function flattenGroupedRows(groups) {
function flattenGroupedRows(groups, level) {
level = level || 0;
var gi = groupingInfos[level];
var groupedRows = [], rows, gl = 0, g;
for (var i = 0, l = groups.length; i < l; i++) {
g = groups[i];
groupedRows[gl++] = g;

if (!g.collapsed) {
rows = g.groups ? flattenGroupedRows(g.groups) : g.rows;
rows = g.groups ? flattenGroupedRows(g.groups, level + 1) : g.rows;
for (var j = 0, jj = rows.length; j < jj; j++) {
groupedRows[gl++] = rows[j];
}
}

if (g.totals && (!g.collapsed || groupingInfos[g.level].aggregateCollapsed)) {
if (g.totals && (!g.collapsed || gi.aggregateCollapsed)) {
groupedRows[gl++] = g.totals;
}
}
Expand Down

0 comments on commit 5601f55

Please sign in to comment.