|
|
|
@ -1,7 +1,7 @@ |
|
|
|
|
import moment from 'moment'; |
|
|
|
|
import _ from 'lodash'; |
|
|
|
|
|
|
|
|
|
import { GRID_COLUMN_COUNT, REPEAT_DIR_VERTICAL } from 'app/core/constants'; |
|
|
|
|
import { GRID_COLUMN_COUNT, REPEAT_DIR_VERTICAL, GRID_CELL_HEIGHT, GRID_CELL_VMARGIN } from 'app/core/constants'; |
|
|
|
|
import { DEFAULT_ANNOTATION_COLOR } from 'app/core/utils/colors'; |
|
|
|
|
import { Emitter } from 'app/core/utils/emitter'; |
|
|
|
|
import { contextSrv } from 'app/core/services/context_srv'; |
|
|
|
@ -830,4 +830,32 @@ export class DashboardModel { |
|
|
|
|
|
|
|
|
|
return !_.isEqual(updated, this.originalTemplating); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
autoFitPanels(viewHeight: number) { |
|
|
|
|
if (!this.meta.autofitpanels) { |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
const currentGridHeight = Math.max( |
|
|
|
|
...this.panels.map(panel => { |
|
|
|
|
return panel.gridPos.h + panel.gridPos.y; |
|
|
|
|
}) |
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
// Consider navbar and submenu controls, padding and margin
|
|
|
|
|
let visibleHeight = window.innerHeight - 55 - 20; |
|
|
|
|
|
|
|
|
|
// Remove submenu if visible
|
|
|
|
|
if (this.meta.submenuEnabled) { |
|
|
|
|
visibleHeight -= 50; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
const visibleGridHeight = Math.floor(visibleHeight / (GRID_CELL_HEIGHT + GRID_CELL_VMARGIN)); |
|
|
|
|
const scaleFactor = currentGridHeight / visibleGridHeight; |
|
|
|
|
|
|
|
|
|
this.panels.forEach((panel, i) => { |
|
|
|
|
panel.gridPos.y = Math.round(panel.gridPos.y / scaleFactor) || 1; |
|
|
|
|
panel.gridPos.h = Math.round(panel.gridPos.h / scaleFactor) || 1; |
|
|
|
|
}); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|