diff --git a/src/graphs/control-chart/ControlRenderer.js b/src/graphs/control-chart/ControlRenderer.js index 6f05706..f15e572 100644 --- a/src/graphs/control-chart/ControlRenderer.js +++ b/src/graphs/control-chart/ControlRenderer.js @@ -6,10 +6,11 @@ export class ControlRenderer extends ScatterplotRenderer { timeScale = 'linear'; connectDots = false; - constructor(data, avgMovingRangeFunc, chartName) { + constructor(data, avgMovingRangeFunc, chartName, workTicketsURL) { super(data); this.chartName = chartName; this.chartType = 'CONTROL'; + this.workTicketsURL = workTicketsURL; this.avgMovingRangeFunc = avgMovingRangeFunc; this.dotClass = 'control-dot'; this.yAxisLabel = 'Days'; @@ -50,12 +51,19 @@ export class ControlRenderer extends ScatterplotRenderer { } populateTooltip(event) { + console.log('populateTooltip', event); this.tooltip .style('pointer-events', 'auto') .style('opacity', 0.9) - .append('p') + .append('div') + .append('a') .style('text-decoration', 'underline') - .text(`${event.deliveredDate}`); + .attr('href', `${this.workTicketsURL}/${event.ticketId}`) + .text(event.ticketId) + .attr('target', '_blank') + .on('click', () => { + this.hideTooltip(); + }); } drawScatterplot(chartArea, data, x, y) { diff --git a/src/graphs/moving-range/MovingRangeRenderer.js b/src/graphs/moving-range/MovingRangeRenderer.js index 971ded2..670c852 100644 --- a/src/graphs/moving-range/MovingRangeRenderer.js +++ b/src/graphs/moving-range/MovingRangeRenderer.js @@ -45,14 +45,20 @@ export class MovingRangeRenderer extends ScatterplotRenderer { .style('text-decoration', 'underline') .attr('href', `${this.workTicketsURL}/${event.workItem1}`) .text(event.workItem1) - .attr('target', '_blank'); + .attr('target', '_blank') + .on('click', () => { + this.hideTooltip(); + }); this.tooltip .append('div') .append('a') .style('text-decoration', 'underline') .attr('href', `${this.workTicketsURL}/${event.workItem2}`) - .text(event.workItem1) - .attr('target', '_blank'); + .text(event.workItem2) + .attr('target', '_blank') + .on('click', () => { + this.hideTooltip(); + }); } drawScatterplot(chartArea, data, x, y) { diff --git a/src/graphs/scatterplot/ScatterplotRenderer.js b/src/graphs/scatterplot/ScatterplotRenderer.js index fb14fad..782fbe0 100644 --- a/src/graphs/scatterplot/ScatterplotRenderer.js +++ b/src/graphs/scatterplot/ScatterplotRenderer.js @@ -526,7 +526,10 @@ export class ScatterplotRenderer extends UIControlsRenderer { .style('text-decoration', 'underline') .attr('href', `${this.workTicketsURL}/${event.ticketId}`) .text(event.ticketId) - .attr('target', '_blank'); + .attr('target', '_blank') + .on('click', () => { + this.hideTooltip(); + }); event.observationBody && this.tooltip.append('p').text('Observation: ' + event.observationBody); } @@ -612,6 +615,7 @@ export class ScatterplotRenderer extends UIControlsRenderer { } d3.select(svgNode.parentNode).on('mouseleave', (event) => { if (event.relatedTarget !== this.tooltip?.node()) { + console.log('setup mouse leave to hide tooltip'); this.hideTooltip(); } }); diff --git a/src/graphs/work-item-age/WorkItemAgeRenderer.js b/src/graphs/work-item-age/WorkItemAgeRenderer.js index 7838abe..37c53ac 100644 --- a/src/graphs/work-item-age/WorkItemAgeRenderer.js +++ b/src/graphs/work-item-age/WorkItemAgeRenderer.js @@ -206,6 +206,7 @@ export class WorkItemAgeRenderer extends Renderer { * Hides the tooltip. */ hideTooltip() { + console.log('hide tooltip'); this.tooltip?.transition().duration(100).style('opacity', 0).style('pointer-events', 'none'); } @@ -232,7 +233,10 @@ export class WorkItemAgeRenderer extends Renderer { .style('text-decoration', 'underline') .attr('href', `${this.workTicketsURL}/${item.ticketId}`) .text(item.ticketId) - .attr('target', '_blank'); + .attr('target', '_blank') + .on('click', () => { + this.hideTooltip(); + }); }); }