diff --git a/public/app/features/dashboard/dashboard_ctrl.ts b/public/app/features/dashboard/dashboard_ctrl.ts index 94d0b18f157..77e5ca88552 100644 --- a/public/app/features/dashboard/dashboard_ctrl.ts +++ b/public/app/features/dashboard/dashboard_ctrl.ts @@ -4,7 +4,8 @@ import coreModule from 'app/core/core_module'; import { PanelContainer } from './dashgrid/PanelContainer'; import { DashboardModel } from './dashboard_model'; import { PanelModel } from './panel_model'; - +import { GRID_CELL_HEIGHT } from 'app/core/constants'; +import { PanelLinksEditorCtrl } from '../panellinks/module'; export class DashboardCtrl implements PanelContainer { dashboard: DashboardModel; dashboardViewState: any; @@ -62,6 +63,33 @@ export class DashboardCtrl implements PanelContainer { .finally(() => { this.dashboard = dashboard; this.dashboard.processRepeats(); + console.log(this.dashboard.panels); + + let maxRows = Math.max( + ...this.dashboard.panels.map(panel => { + return panel.gridPos.h + panel.gridPos.y; + }) + ); + console.log('maxRows: ' + maxRows); + //Consider navbar and submenu controls + let availableHeight = window.innerHeight - 280; + let availableRows = Math.floor(availableHeight / GRID_CELL_HEIGHT); + + console.log('availableRows: ' + availableRows); + if (maxRows > availableRows) { + let scaleFactor = maxRows / availableRows; + console.log(scaleFactor); + + this.dashboard.panels.forEach((panel, i) => { + console.log(i); + console.log(panel.gridPos); + panel.gridPos.y = Math.floor(panel.gridPos.y / scaleFactor) || 1; + panel.gridPos.h = Math.floor(panel.gridPos.h / scaleFactor) || 1; + + console.log(panel.gridPos); + }); + } + console.log(this.dashboard.panels); this.unsavedChangesSrv.init(dashboard, this.$scope);