mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
ux: new grid progress
This commit is contained in:
@@ -170,15 +170,6 @@ export function dashGridItem($timeout, $rootScope) {
|
|||||||
'data-gs-no-resize': panel.type === 'row',
|
'data-gs-no-resize': panel.type === 'row',
|
||||||
});
|
});
|
||||||
|
|
||||||
// listen for row moments
|
|
||||||
scope.$watch("panel.y", function(newModelY) {
|
|
||||||
let elementY = parseInt(element.attr('data-gs-y'));
|
|
||||||
console.log('new panel y', newModelY, elementY);
|
|
||||||
if (_.isNumber(newModelY) && elementY !== newModelY) {
|
|
||||||
gridCtrl.gridstack.move(element, panel.x, panel.y);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
$rootScope.onAppEvent('panel-fullscreen-exit', (evt, payload) => {
|
$rootScope.onAppEvent('panel-fullscreen-exit', (evt, payload) => {
|
||||||
if (panel.id !== payload.panelId) {
|
if (panel.id !== payload.panelId) {
|
||||||
return;
|
return;
|
||||||
|
|||||||
@@ -144,13 +144,10 @@ export class DashboardModel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
getNextPanelId() {
|
getNextPanelId() {
|
||||||
var i, j, row, panel, max = 0;
|
var j, panel, max = 0;
|
||||||
for (i = 0; i < this.rows.length; i++) {
|
for (j = 0; j < this.panels.length; j++) {
|
||||||
row = this.rows[i];
|
panel = this.panels[j];
|
||||||
for (j = 0; j < row.panels.length; j++) {
|
if (panel.id > max) { max = panel.id; }
|
||||||
panel = row.panels[j];
|
|
||||||
if (panel.id > max) { max = panel.id; }
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return max + 1;
|
return max + 1;
|
||||||
}
|
}
|
||||||
@@ -170,9 +167,9 @@ export class DashboardModel {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
addPanel(panel, row) {
|
addPanel(panel) {
|
||||||
panel.id = this.getNextPanelId();
|
panel.id = this.getNextPanelId();
|
||||||
row.addPanel(panel);
|
this.panels.push(panel);
|
||||||
}
|
}
|
||||||
|
|
||||||
removePanel(panel, ask?) {
|
removePanel(panel, ask?) {
|
||||||
|
|||||||
@@ -17,8 +17,6 @@
|
|||||||
ng-repeat="panel in ctrl.panelHits"
|
ng-repeat="panel in ctrl.panelHits"
|
||||||
ng-class="{active: $index === ctrl.activeIndex}"
|
ng-class="{active: $index === ctrl.activeIndex}"
|
||||||
ng-click="ctrl.addPanel(panel)"
|
ng-click="ctrl.addPanel(panel)"
|
||||||
ui-draggable="true"
|
|
||||||
drag="panel.id"
|
|
||||||
title="{{panel.name}}">
|
title="{{panel.name}}">
|
||||||
<img class="add-panel-item-img" ng-src="{{panel.info.logos.small}}"></img>
|
<img class="add-panel-item-img" ng-src="{{panel.info.logos.small}}"></img>
|
||||||
<div class="add-panel-item-name">{{panel.name}}</div>
|
<div class="add-panel-item-name">{{panel.name}}</div>
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ export class AddPanelCtrl {
|
|||||||
|
|
||||||
keyDown(evt) {
|
keyDown(evt) {
|
||||||
if (evt.keyCode === 27) {
|
if (evt.keyCode === 27) {
|
||||||
//this.rowCtrl.dropView = 0;
|
this.dismiss();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -79,6 +79,24 @@ export class AddPanelCtrl {
|
|||||||
}
|
}
|
||||||
|
|
||||||
addPanel(panelPluginInfo) {
|
addPanel(panelPluginInfo) {
|
||||||
|
let defaultHeight = 6;
|
||||||
|
let defaultWidth = 6;
|
||||||
|
|
||||||
|
if (panelPluginInfo.id === "singlestat") {
|
||||||
|
defaultWidth = 3;
|
||||||
|
defaultHeight = 3;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.dashboard.addPanel({
|
||||||
|
type: panelPluginInfo.id,
|
||||||
|
x: 0,
|
||||||
|
y: 0,
|
||||||
|
width: defaultWidth,
|
||||||
|
height: defaultHeight,
|
||||||
|
title: 'New panel',
|
||||||
|
});
|
||||||
|
|
||||||
|
this.dismiss();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -18,7 +18,6 @@ import {Emitter} from 'app/core/core';
|
|||||||
export class PanelCtrl {
|
export class PanelCtrl {
|
||||||
panel: any;
|
panel: any;
|
||||||
error: any;
|
error: any;
|
||||||
row: any;
|
|
||||||
dashboard: any;
|
dashboard: any;
|
||||||
editorTabIndex: number;
|
editorTabIndex: number;
|
||||||
pluginName: string;
|
pluginName: string;
|
||||||
@@ -201,21 +200,12 @@ export class PanelCtrl {
|
|||||||
}
|
}
|
||||||
|
|
||||||
duplicate() {
|
duplicate() {
|
||||||
this.dashboard.duplicatePanel(this.panel, this.row);
|
this.dashboard.duplicatePanel(this.panel);
|
||||||
this.$timeout(() => {
|
this.$timeout(() => {
|
||||||
this.$scope.$root.$broadcast('render');
|
this.$scope.$root.$broadcast('render');
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
updateColumnSpan(span) {
|
|
||||||
this.panel.span = Math.min(Math.max(Math.floor(this.panel.span + span), 1), 12);
|
|
||||||
this.row.panelSpanChanged();
|
|
||||||
|
|
||||||
this.$timeout(() => {
|
|
||||||
this.render();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
removePanel() {
|
removePanel() {
|
||||||
this.dashboard.removePanel(this.panel);
|
this.dashboard.removePanel(this.panel);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,33 +11,20 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="section gf-form-group">
|
<div class="section gf-form-group">
|
||||||
<h5 class="section-heading">Dimensions</h5>
|
<h5 class="section-heading">Options</h5>
|
||||||
<div class="gf-form">
|
<gf-form-switch class="gf-form" label-class="width-8" switch-class="max-width-6" label="Transparent" checked="ctrl.panel.transparent" on-change="ctrl.render()"></gf-form-switch>
|
||||||
<span class="gf-form-label width-7">Span</span>
|
|
||||||
<select class="gf-form-input width-6" ng-model="ctrl.panel.span" ng-options="f for f in [0,1,2,3,4,5,6,7,8,9,10,11,12]"></select>
|
|
||||||
</div>
|
|
||||||
<div class="gf-form">
|
|
||||||
<span class="gf-form-label width-7">Height</span>
|
|
||||||
<input type="text" class="gf-form-input width-6" ng-model='ctrl.panel.height' placeholder="100px"></input>
|
|
||||||
</div>
|
|
||||||
<gf-form-switch class="gf-form" label-class="width-7" switch-class="max-width-6" label="Transparent" checked="ctrl.panel.transparent" on-change="ctrl.render()"></gf-form-switch>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="section gf-form-group">
|
|
||||||
<h5 class="section-heading">Templating</h5>
|
|
||||||
<div class="gf-form">
|
<div class="gf-form">
|
||||||
<span class="gf-form-label width-8">Repeat Panel</span>
|
<span class="gf-form-label width-8">Repeat Panel</span>
|
||||||
<dash-repeat-option model="ctrl.panel"></dash-repeat-option>
|
<dash-repeat-option model="ctrl.panel"></dash-repeat-option>
|
||||||
</div>
|
</div>
|
||||||
<div class="gf-form">
|
<div class="gf-form">
|
||||||
<span class="gf-form-label width-8">Min span</span>
|
<span class="gf-form-label width-8">Min width</span>
|
||||||
<select class="gf-form-input" ng-model="ctrl.panel.minSpan" ng-options="f for f in [1,2,3,4,5,6,7,8,9,10,11,12]">
|
<select class="gf-form-input" ng-model="ctrl.panel.minSpan" ng-options="f for f in [1,2,3,4,5,6,7,8,9,10,11,12]">
|
||||||
<option value=""></option>
|
<option value=""></option>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
|
|
||||||
<panel-links-editor panel="ctrl.panel"></panel-links-editor>
|
<panel-links-editor panel="ctrl.panel"></panel-links-editor>
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
display: block;
|
display: block;
|
||||||
overflow: visible;
|
overflow: visible;
|
||||||
position: relative;
|
position: relative;
|
||||||
margin-left: $side-menu-width;
|
padding-left: $side-menu-width;
|
||||||
box-shadow: 0 0 20px black;
|
box-shadow: 0 0 20px black;
|
||||||
z-index: 1;
|
z-index: 1;
|
||||||
}
|
}
|
||||||
@@ -17,7 +17,7 @@
|
|||||||
|
|
||||||
.sidemenu-open {
|
.sidemenu-open {
|
||||||
.navbar {
|
.navbar {
|
||||||
margin-left: 0;
|
padding-left: 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -6,7 +6,6 @@
|
|||||||
width: $side-menu-width;
|
width: $side-menu-width;
|
||||||
background: $navbarBackground;
|
background: $navbarBackground;
|
||||||
z-index: 10;
|
z-index: 10;
|
||||||
box-shadow: 0 0 20px black;
|
|
||||||
|
|
||||||
a:focus {
|
a:focus {
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
|
|||||||
Reference in New Issue
Block a user