diff options
author | Phil Hughes <me@iamphill.com> | 2017-04-19 12:06:14 +0100 |
---|---|---|
committer | Phil Hughes <me@iamphill.com> | 2017-04-19 12:06:14 +0100 |
commit | 8d3b2581b8e1f3aff82fb8bf76203430fde064b3 (patch) | |
tree | c503ff30915bac9081d2e5729928ac369ca1550f | |
parent | 5d8891fb85a4646557e2f478c6c08c997868c8fb (diff) | |
download | gitlab-ce-8d3b2581b8e1f3aff82fb8bf76203430fde064b3.tar.gz |
Style improvements
Fixed an issue where the line wouldnt move when hovering over deployment
-rw-r--r-- | app/assets/javascripts/monitoring/deployments.js | 51 | ||||
-rw-r--r-- | app/assets/javascripts/monitoring/prometheus_graph.js | 8 | ||||
-rw-r--r-- | app/assets/stylesheets/pages/environments.scss | 16 | ||||
-rw-r--r-- | spec/javascripts/monitoring/deployments_spec.js | 44 |
4 files changed, 83 insertions, 36 deletions
diff --git a/app/assets/javascripts/monitoring/deployments.js b/app/assets/javascripts/monitoring/deployments.js index a6d7a1fbd7c..aa75cdcaeaf 100644 --- a/app/assets/javascripts/monitoring/deployments.js +++ b/app/assets/javascripts/monitoring/deployments.js @@ -8,6 +8,8 @@ export default class Deployments { this.timeFormat = d3.time.format('%H:%M%p'); this.endpoint = document.getElementById('js-metrics').dataset.deploymentEndpoint; + + Deployments.createGradientDef(); } init(chartData) { @@ -61,6 +63,36 @@ export default class Deployments { }); } + static createGradientDef() { + const defs = d3.select('body') + .append('svg') + .attr({ + height: 0, + width: 0, + }) + .append('defs'); + + defs.append('linearGradient') + .attr({ + id: 'shadow-gradient', + }) + .append('stop') + .attr({ + offset: '0%', + 'stop-color': '#000', + 'stop-opacity': 0.4, + }) + .select(function selectParentNode() { + return this.parentNode; + }) + .append('stop') + .attr({ + offset: '100%', + 'stop-color': '#000', + 'stop-opacity': 0, + }); + } + createLine(chart) { chart.append('g') .attr({ @@ -74,6 +106,17 @@ export default class Deployments { class: d => `deploy-info-${d.id}`, transform: d => `translate(${Math.floor(d.xPos) + 1}, 0)`, }) + .append('rect') + .attr({ + x: 1, + y: 0, + height: this.height, + width: 3, + fill: 'url(#shadow-gradient)', + }) + .select(function selectParentNode() { + return this.parentNode; + }) .append('line') .attr({ class: 'deployment-line', @@ -110,7 +153,7 @@ export default class Deployments { textGroup.append('text') .attr({ - style: 'dominant-baseline: text-before-edge;', + class: 'deploy-info-text deploy-info-text-bold', }) .text(() => { const isTag = d.tag; @@ -121,14 +164,14 @@ export default class Deployments { textGroup.append('text') .attr({ - style: 'dominant-baseline: text-before-edge;', + class: 'deploy-info-text', y: 18, }) .text(() => this.dateFormat(d.time)); textGroup.append('text') .attr({ - style: 'dominant-baseline: text-before-edge;', + class: 'deploy-info-text', y: 36, }) .text(() => this.timeFormat(d.time)); @@ -153,7 +196,7 @@ export default class Deployments { this.data.forEach((d) => { if (d.xPos >= mouseXPos - 10 && d.xPos <= mouseXPos + 10 && !dataFound) { - dataFound = true; + dataFound = d.xPos + 1; Deployments.toggleDeployTextbox(d, true); } else { diff --git a/app/assets/javascripts/monitoring/prometheus_graph.js b/app/assets/javascripts/monitoring/prometheus_graph.js index 03d47c052c8..212fbce91ba 100644 --- a/app/assets/javascripts/monitoring/prometheus_graph.js +++ b/app/assets/javascripts/monitoring/prometheus_graph.js @@ -214,17 +214,17 @@ class PrometheusGraph { const maxValueMetric = Math.floor( y(d3.max(valuesToPlot.map(metricValue => metricValue.value))), ); + const currentDeployXPos = this.deployments.mouseOverDeployInfo(mouse); const currentTimeCoordinate = Math.floor(x(currentData.time)); const graphSpecifics = this.graphSpecificProperties[key]; - const shouldHideTextMetric = this.deployments.mouseOverDeployInfo(mouse); // Remove the current selectors d3.selectAll(`${prometheusGraphContainer} .selected-metric-line`).remove(); d3.selectAll(`${prometheusGraphContainer} .circle-metric`).remove(); d3.selectAll(`${prometheusGraphContainer} .rect-text-metric:not(.deploy-info-rect)`).remove(); chart.append('line') - .attr('class', 'selected-metric-line') .attr({ + class: `${currentDeployXPos ? 'hidden' : ''} selected-metric-line`, x1: currentTimeCoordinate, y1: y(0), x2: currentTimeCoordinate, @@ -234,11 +234,11 @@ class PrometheusGraph { chart.append('circle') .attr('class', 'circle-metric') .attr('fill', graphSpecifics.line_color) - .attr('cx', currentTimeCoordinate) + .attr('cx', currentDeployXPos || currentTimeCoordinate) .attr('cy', y(currentData.value)) .attr('r', this.commonGraphProperties.circle_radius_metric); - if (shouldHideTextMetric) return; + if (currentDeployXPos) return; // The little box with text const rectTextMetric = chart.append('svg') diff --git a/app/assets/stylesheets/pages/environments.scss b/app/assets/stylesheets/pages/environments.scss index 40905787716..30e665213b6 100644 --- a/app/assets/stylesheets/pages/environments.scss +++ b/app/assets/stylesheets/pages/environments.scss @@ -157,7 +157,7 @@ .prometheus-graph { text { - fill: #525252; + fill: $gl-text-color; stroke-width: 0; } } @@ -201,7 +201,7 @@ .rect-text-metric { fill: $white-light; stroke-width: 1; - stroke: #e1e1e1; + stroke: $gray-darkest; } .rect-axis-text { @@ -213,11 +213,19 @@ } .selected-metric-line { - stroke: #8c8c8c; + stroke: $gl-gray-dark; stroke-width: 1; } .deployment-line { - stroke: #000; + stroke: $black; stroke-width: 2; } + +.deploy-info-text { + dominant-baseline: text-before-edge; +} + +.deploy-info-text-bold { + font-weight: 600; +} diff --git a/spec/javascripts/monitoring/deployments_spec.js b/spec/javascripts/monitoring/deployments_spec.js index c0e7fc9fb0e..b091b0550aa 100644 --- a/spec/javascripts/monitoring/deployments_spec.js +++ b/spec/javascripts/monitoring/deployments_spec.js @@ -3,33 +3,11 @@ import PrometheusGraph from '~/monitoring/prometheus_graph'; import Deployments from '~/monitoring/deployments'; import { prometheusMockData } from './prometheus_mock_data'; -fdescribe('Metrics deployments', () => { +describe('Metrics deployments', () => { const fixtureName = 'static/environments/metrics.html.raw'; let deployment; let prometheusGraph; - const createDeploymentMockData = (done) => { - return { - deployments: [{ - id: 1, - created_at: deployment.chartData[10].time, - sha: 'testing', - tag: false, - ref: { - name: 'testing', - }, - }, { - id: 2, - created_at: deployment.chartData[15].time, - sha: '', - tag: true, - ref: { - name: 'tag', - }, - }], - }; - }; - const graphElement = () => document.querySelector('.prometheus-graph'); preloadFixtures(fixtureName); @@ -48,7 +26,25 @@ fdescribe('Metrics deployments', () => { spyOn(prometheusGraph, 'init'); spyOn($, 'ajax').and.callFake(() => { const d = $.Deferred(); - d.resolve(createDeploymentMockData()); + d.resolve({ + deployments: [{ + id: 1, + created_at: deployment.chartData[10].time, + sha: 'testing', + tag: false, + ref: { + name: 'testing', + }, + }, { + id: 2, + created_at: deployment.chartData[15].time, + sha: '', + tag: true, + ref: { + name: 'tag', + }, + }], + }); setTimeout(done); |