Skip to content

Commit 18056e5

Browse files
committed
ux(dashboard): Fixing broken unit test made by changes for dash edit mode, grafana#6442
1 parent 786afda commit 18056e5

File tree

10 files changed

+33
-65
lines changed

10 files changed

+33
-65
lines changed

public/app/features/dashboard/model.ts

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -158,12 +158,6 @@ export class DashboardModel {
158158
return null;
159159
}
160160

161-
rowSpan(row) {
162-
return _.reduce(row.panels, function(p,v) {
163-
return p + v.span;
164-
},0);
165-
};
166-
167161
addPanel(panel, row) {
168162
panel.id = this.getNextPanelId();
169163
row.addPanel(panel);
@@ -540,6 +534,7 @@ export class DashboardModel {
540534
// update graph yaxes changes
541535
panelUpgrades.push(function(panel) {
542536
if (panel.type !== 'graph') { return; }
537+
if (!panel.grid) { return; }
543538

544539
panel.thresholds = [];
545540
var t1: any = {}, t2: any = {};

public/app/features/dashboard/row/add_panel.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -81,13 +81,13 @@ export class AddPanelCtrl {
8181

8282
addPanel(panelPluginInfo) {
8383
var defaultSpan = 12;
84-
var _as = 12 - this.dashboard.rowSpan(this.row);
84+
var span = 12 - this.row.span;
8585

8686
var panel = {
8787
id: null,
8888
title: config.new_panel_title,
8989
error: false,
90-
span: _as < defaultSpan && _as > 0 ? _as : defaultSpan,
90+
span: span < defaultSpan && span > 0 ? span : defaultSpan,
9191
editable: true,
9292
type: panelPluginInfo.id,
9393
isNew: true,

public/app/features/dashboard/row/row_ctrl.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -198,7 +198,7 @@ coreModule.directive('panelDropZone', function($timeout) {
198198
return showPanel(12, 'Empty Space');
199199
}
200200

201-
var dropZoneSpan = 12 - scope.ctrl.dashboard.rowSpan(scope.ctrl.row);
201+
var dropZoneSpan = 12 - row.span;
202202
if (dropZoneSpan > 0) {
203203
if (indrag) {
204204
return showPanel(dropZoneSpan, 'Drop Here');
@@ -209,7 +209,7 @@ coreModule.directive('panelDropZone', function($timeout) {
209209
}
210210

211211
if (indrag === true) {
212-
var dropZoneSpan = 12 - scope.ctrl.dashboard.rowSpan(scope.ctrl.row);
212+
var dropZoneSpan = 12 - row.span;
213213
if (dropZoneSpan > 1) {
214214
return showPanel(dropZoneSpan, 'Drop Here');
215215
}

public/app/features/dashboard/specs/dashboard_srv_specs.ts

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -51,18 +51,13 @@ describe('dashboardSrv', function() {
5151
dashboard = _dashboardSrv.create({});
5252
});
5353

54-
it('row span should sum spans', function() {
55-
var spanLeft = dashboard.rowSpan({ panels: [{ span: 2 }, { span: 3 }] });
56-
expect(spanLeft).to.be(5);
57-
});
58-
5954
it('adding default should split span in half', function() {
60-
dashboard.rows = [{ panels: [{ span: 12, id: 7 }] }];
61-
dashboard.addPanel({span: 4}, dashboard.rows[0]);
55+
dashboard.addEmptyRow();
56+
dashboard.rows[0].addPanel({span: 12});
57+
dashboard.rows[0].addPanel({span: 12});
6258

6359
expect(dashboard.rows[0].panels[0].span).to.be(6);
6460
expect(dashboard.rows[0].panels[1].span).to.be(6);
65-
expect(dashboard.rows[0].panels[1].id).to.be(8);
6661
});
6762

6863
it('duplicate panel should try to add it to same row', function() {

public/app/features/dashboard/specs/exporter_specs.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import {describe, beforeEach, it, sinon, expect, angularMocks} from 'test/lib/co
33
import _ from 'lodash';
44
import config from 'app/core/config';
55
import {DashboardExporter} from '../export/exporter';
6+
import {DashboardModel} from '../model';
67

78
describe('given dashboard with repeated panels', function() {
89
var dash, exported;
@@ -77,6 +78,7 @@ describe('given dashboard with repeated panels', function() {
7778
info: {version: "1.1.0"}
7879
};
7980

81+
dash = new DashboardModel(dash, {});
8082
var exporter = new DashboardExporter(datasourceSrvStub);
8183
exporter.makeExportable(dash).then(clean => {
8284
exported = clean;
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
import {describe, beforeEach, it, sinon, expect, angularMocks} from 'test/lib/common';
2+
3+
import _ from 'lodash';
4+
import {DashboardRow} from '../row/row_model';
5+
6+
describe('DashboardRow', function() {
7+
8+
});
9+
10+

public/app/features/dashboard/unsavedChangesSrv.js

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ function(angular, _) {
99

1010
module.service('unsavedChangesSrv', function($rootScope, $q, $location, $timeout, contextSrv, $window) {
1111

12-
function Tracker(dashboard, scope) {
12+
function Tracker(dashboard, scope, originalCopyDelay) {
1313
var self = this;
1414

1515
this.current = dashboard;
@@ -44,10 +44,14 @@ function(angular, _) {
4444
}
4545
});
4646

47-
// wait for different services to patch the dashboard (missing properties)
48-
$timeout(function() {
47+
if (originalCopyDelay) {
48+
$timeout(function() {
49+
// wait for different services to patch the dashboard (missing properties)
50+
self.original = dashboard.getSaveModelClone();
51+
}, originalCopyDelay);
52+
} else {
4953
self.original = dashboard.getSaveModelClone();
50-
}, 1000);
54+
}
5155
}
5256

5357
var p = Tracker.prototype;
@@ -157,7 +161,7 @@ function(angular, _) {
157161

158162
this.Tracker = Tracker;
159163
this.init = function(dashboard, scope) {
160-
new Tracker(dashboard, scope);
164+
return new Tracker(dashboard, scope, 1000);
161165
};
162166
});
163167
});

public/app/features/panel/panel_directive.ts

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,8 @@ module.directive('panelResizer', function($rootScope) {
143143
ctrl.panel.span = originalWidth + (((e.pageX - handleOffset.left) / maxWidth) * 12);
144144
ctrl.panel.span = Math.min(Math.max(ctrl.panel.span, 1), 12);
145145

146-
var rowSpan = ctrl.dashboard.rowSpan(ctrl.row);
146+
ctrl.row.updateRowSpan();
147+
var rowSpan = ctrl.row.span;
147148

148149
// auto adjust other panels
149150
if (Math.floor(rowSpan) < 14) {
@@ -170,12 +171,6 @@ module.directive('panelResizer', function($rootScope) {
170171
lastPanel.span = Math.round(lastPanel.span);
171172
}
172173

173-
// if close to 12
174-
var rowSpan = ctrl.dashboard.rowSpan(ctrl.row);
175-
if (rowSpan < 12 && rowSpan > 11) {
176-
lastPanel.span += 12 - rowSpan;
177-
}
178-
179174
ctrl.row.panelSpanChanged();
180175

181176
// first digest to propagate panel width change

public/test/specs/row-ctrl-specs.js

Lines changed: 0 additions & 34 deletions
This file was deleted.

public/test/specs/unsavedChangesSrv-specs.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,8 @@ define([
7777
});
7878

7979
it('Should ignore row repeats', function() {
80-
dash.rows.push({repeatRowId: 10});
80+
dash.addEmptyRow();
81+
dash.rows[1].repeatRowId = 10;
8182
expect(tracker.hasChanges()).to.be(false);
8283
});
8384

0 commit comments

Comments
 (0)