Skip to content
Snippets Groups Projects
Commit 64abbb78 authored by Adriel Santiago's avatar Adriel Santiago Committed by Clement Ho
Browse files

Add zoom to metrics dashboard

Adds the ability to change data zoom for metrics graphs
parent d40b55c2
No related branches found
No related tags found
No related merge requests found
Loading
Loading
@@ -57,7 +57,7 @@ export default {
},
width: 0,
height: 0,
scatterSymbol: undefined,
svgs: {},
};
},
computed: {
Loading
Loading
@@ -78,25 +78,25 @@ export default {
axisPointer: {
snap: true,
},
nameTextStyle: {
padding: [18, 0, 0, 0],
},
},
yAxis: {
name: this.yAxisLabel,
axisLabel: {
formatter: value => value.toFixed(3),
},
nameTextStyle: {
padding: [0, 0, 36, 0],
},
},
legend: {
formatter: this.xAxisLabel,
},
series: this.scatterSeries,
dataZoom: this.dataZoomConfig,
};
},
dataZoomConfig() {
const handleIcon = this.svgs['scroll-handle'];
return handleIcon ? { handleIcon } : {};
},
earliestDatapoint() {
return Object.values(this.chartData).reduce((acc, data) => {
const [[timestamp]] = data.sort(([a], [b]) => {
Loading
Loading
@@ -131,7 +131,7 @@ export default {
return {
type: 'scatter',
data: this.recentDeployments.map(deployment => [deployment.createdAt, 0]),
symbol: this.scatterSymbol,
symbol: this.svgs.rocket,
symbolSize: 14,
};
},
Loading
Loading
@@ -151,7 +151,8 @@ export default {
created() {
debouncedResize = debounceByAnimationFrame(this.onResize);
window.addEventListener('resize', debouncedResize);
this.getScatterSymbol();
this.setSvg('rocket');
this.setSvg('scroll-handle');
},
methods: {
formatTooltipText(params) {
Loading
Loading
@@ -167,11 +168,11 @@ export default {
this.tooltip.content = `${this.yAxisLabel} ${seriesData.value[1].toFixed(3)}`;
}
},
getScatterSymbol() {
getSvgIconPathContent('rocket')
setSvg(name) {
getSvgIconPathContent(name)
.then(path => {
if (path) {
this.scatterSymbol = `path://${path}`;
this.$set(this.svgs, name, `path://${path}`);
}
})
.catch(() => {});
Loading
Loading
---
title: Add zoom and scroll to metrics dashboard
merge_request: 25388
author:
type: added
Loading
Loading
@@ -7,6 +7,7 @@ import MonitoringMock, { deploymentData } from '../mock_data';
 
describe('Area component', () => {
const mockWidgets = 'mockWidgets';
const mockSvgPathContent = 'mockSvgPathContent';
let mockGraphData;
let areaChart;
let spriteSpy;
Loading
Loading
@@ -30,7 +31,7 @@ describe('Area component', () => {
});
 
spriteSpy = spyOnDependency(Area, 'getSvgIconPathContent').and.callFake(
() => new Promise(resolve => resolve()),
() => new Promise(resolve => resolve(mockSvgPathContent)),
);
});
 
Loading
Loading
@@ -146,13 +147,22 @@ describe('Area component', () => {
});
});
 
describe('getScatterSymbol', () => {
describe('setSvg', () => {
const mockSvgName = 'mockSvgName';
beforeEach(() => {
areaChart.vm.getScatterSymbol();
areaChart.vm.setSvg(mockSvgName);
});
it('gets svg path content', () => {
expect(spriteSpy).toHaveBeenCalledWith(mockSvgName);
});
 
it('gets rocket svg path content for use as deployment data symbol', () => {
expect(spriteSpy).toHaveBeenCalledWith('rocket');
it('sets svg path content', done => {
areaChart.vm.$nextTick(() => {
expect(areaChart.vm.svgs[mockSvgName]).toBe(`path://${mockSvgPathContent}`);
done();
});
});
});
 
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment