in client/client/modules/render/tracks/vcf/multi-sample-vcf.js [673:810]
onHover(originalPoint) {
if (this._positionFitsScrollIndicatorBoundaries(originalPoint)) {
if (this.hoverVerticalScroll()) {
this.updateScene();
}
this.tooltip.hide();
this._lastHovered = undefined;
this.requestAnimation();
return false;
}
else if (this.unhoverVerticalScroll()) {
this.updateScene();
}
const {
x,
y,
coverage,
sample,
collapsedSamples
} = this.getMousePositionOverSample(originalPoint);
let hoveredItem;
let tooltipShown = false;
if (coverage) {
hoveredItem = this.coverageRenderer.onMove({x, y});
if (hoveredItem) {
const chromosomePrefix = this.config &&
this.config.chromosome &&
this.config.chromosome.name
? this.config.chromosome.name.concat(': ')
: '';
const tooltip = [
['Count', hoveredItem.coverage.total],
this.viewport.factor > 1
? undefined
: ['Position', `${chromosomePrefix}${hoveredItem.startIndex}`],
...(
Object
.keys(hoveredItem.coverage)
.filter(o => o !== 'total')
.sort((a, b) => b.length - a.length)
.map(key => [key, hoveredItem.coverage[key]])
)
].filter(Boolean);
this.tooltip.setContent(tooltip);
this.tooltip.move(originalPoint);
this.tooltip.show(originalPoint);
tooltipShown = true;
}
this.collapsedSamplesRenderer.onMove();
this.renderers
.forEach(rendererBySample => {
const renderer = this.pickRenderer(rendererBySample);
renderer.onMove();
});
} else if (collapsedSamples) {
hoveredItem = this.collapsedSamplesRenderer.onMove({x, y});
if (
hoveredItem &&
!(hoveredItem instanceof StatisticsContainer) &&
this.shouldDisplayTooltips
) {
const tooltip = [
['Sample', sample],
['Chromosome', this.config.chromosome.name],
['Start', hoveredItem.variant.startIndex],
['End', hoveredItem.variant.endIndex],
['ID', hoveredItem.variant.identifier],
['Type', hoveredItem.variant.type],
['REF', hoveredItem.variant.referenceAllele],
['ALT', hoveredItem.variant.alternativeAlleles.join(', ')],
['Quality', hoveredItem.variant.quality && hoveredItem.variant.quality.toFixed(2)]
];
const filters = hoveredItem.variant.failedFilters || [];
if (filters.length > 0) {
tooltip.push(['Filter', filters.map(filter => filter.value).join(', ')]);
}
this.tooltip.setContent(tooltip);
this.tooltip.move(originalPoint);
this.tooltip.show(originalPoint);
tooltipShown = true;
}
this.renderers
.forEach(rendererBySample => {
const renderer = this.pickRenderer(rendererBySample);
renderer.onMove();
});
} else if (sample) {
const [rendererBySample] = this.renderers.filter(o => o.sample === sample);
this.coverageRenderer.onMove();
this.collapsedSamplesRenderer.onMove();
this.renderers
.filter(o => o.sample !== sample)
.forEach(rendererBySample => {
const renderer = this.pickRenderer(rendererBySample);
renderer.onMove();
});
if (rendererBySample) {
const renderer = this.pickRenderer(rendererBySample);
hoveredItem = renderer.onMove({x, y});
if (
hoveredItem &&
!(hoveredItem instanceof StatisticsContainer) &&
hoveredItem.variant &&
!hoveredItem.variant.isStatistics &&
this.shouldDisplayTooltips
) {
const tooltip = [
['Sample', sample],
['Chromosome', this.config.chromosome.name],
['Start', hoveredItem.variant.startIndex],
['End', hoveredItem.variant.endIndex],
['ID', hoveredItem.variant.identifier],
['Type', hoveredItem.variant.type],
['REF', hoveredItem.variant.referenceAllele],
['ALT', hoveredItem.variant.alternativeAlleles.join(', ')],
['Quality', hoveredItem.variant.quality && hoveredItem.variant.quality.toFixed(2)]
];
const filters = hoveredItem.variant.failedFilters || [];
if (filters.length > 0) {
tooltip.push(['Filter', filters.map(filter => filter.value).join(', ')]);
}
this.tooltip.setContent(tooltip);
this.tooltip.move(originalPoint);
this.tooltip.show(originalPoint);
tooltipShown = true;
}
}
}
if (!tooltipShown) {
this.tooltip.hide();
}
if (hoveredItem !== this._lastHovered) {
this._lastHovered = hoveredItem;
this.requestAnimation();
return false;
}
return true;
}