ng-grid
Version:
__Contributors:__
41 lines (40 loc) • 1.9 kB
JavaScript
ngGridFlexibleHeightPlugin = function(opts) {
var self = this;
self.grid = null;
self.scope = null;
self.init = function(scope, grid, services) {
self.grid = grid;
self.scope = scope;
var recalcHeightForData = function () { setTimeout(innerRecalcForData, 1); } ;
var innerRecalcForData = function () {
var rowCount = self.grid.dataChanged.length;
var gridId = self.grid.gridId;
var topPanelSel = '.' + gridId + ' .ngTopPanel';
var footerPanelSel = '.' + gridId + ' .ngFooterPanel';
var canvasSel = '.' + gridId + ' .ngCanvas';
var viewportSel = '.' + gridId + ' .ngViewport';
var extraHeight = $(topPanelSel).height() + $(footerPanelSel).height();
var naturalHeight = $(canvasSel).height() + 15;
if (scope.baseViewportHeight == null || scope.baseViewportHeight == 0) {
scope.baseViewportHeight = $(viewportSel).height();
}
if (scope.baseViewportHeight > naturalHeight ) {
if (opts != null) {
if (opts.minHeight != null && (naturalHeight + extraHeight) < opts.minHeight) {
naturalHeight = opts.minHeight - extraHeight - 2;
}
}
$(viewportSel).css('height', (naturalHeight + 2) + 'px');
$('.' + gridId).css('height', (naturalHeight + extraHeight + 2) + 'px');
}
self.grid.refreshDomSizes();
};
scope.catHashKeys = function() {
hash = '';
for (idx in scope.renderedRows) { hash += scope.renderedRows[idx].$$hashKey; }
return hash;
};
scope.$watch('catHashKeys()', innerRecalcForData);
scope.$watch (grid.config.data, recalcHeightForData);
};
};