Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 | 1x 1x 1x 1x 1x 1x 1x 1x 1x 2x 2x 1x 1x 2x 2x 2x 2x 2x 2x 2x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 1x 1x 1x 1x | import React from "react" import { TextWrap } from "../text/TextWrap" import { first, last, compact, uniq } from "../../clientUtils/Util" import { observer } from "mobx-react" import { ScatterTooltipProps, SeriesPoint } from "./ScatterPlotChartConstants" @observer export class ScatterTooltip extends React.Component<ScatterTooltipProps> { formatValueY(value: SeriesPoint): string { return "Y Axis: " + this.props.yColumn.formatValueLong(value.y) } formatValueX(value: SeriesPoint): string { let s = `X Axis: ${this.props.xColumn.formatValueLong(value.x)}` if (!value.time.span && value.time.y !== value.time.x) s += ` (data from ${this.props.xColumn.originalTimeColumn.formatValue( value.time.x )})` return s } render(): JSX.Element { const { x, y, maxWidth, fontSize, series } = this.props const lineHeight = 5 const firstValue = first(series.points) const lastValue = last(series.points) const values = compact(uniq([firstValue, lastValue])) const elements: Array<{ x: number; y: number; wrap: TextWrap }> = [] let offset = 0 const heading = { x: x, y: y + offset, wrap: new TextWrap({ maxWidth: maxWidth, fontSize: 0.75 * fontSize, text: series.label, }), } elements.push(heading) offset += heading.wrap.height + lineHeight const { yColumn } = this.props values.forEach((v) => { const year = { x: x, y: y + offset, wrap: new TextWrap({ maxWidth: maxWidth, fontSize: 0.65 * fontSize, text: v.time.span ? `${yColumn.table.formatTime( v.time.span[0] )} to ${yColumn.originalTimeColumn.formatValue( v.time.span[1] )}` : yColumn.originalTimeColumn.formatValue(v.time.y), }), } offset += year.wrap.height const line1 = { x: x, y: y + offset, wrap: new TextWrap({ maxWidth: maxWidth, fontSize: 0.55 * fontSize, text: this.formatValueY(v), }), } offset += line1.wrap.height const line2 = { x: x, y: y + offset, wrap: new TextWrap({ maxWidth: maxWidth, fontSize: 0.55 * fontSize, text: this.formatValueX(v), }), } offset += line2.wrap.height + lineHeight elements.push(...[year, line1, line2]) }) return ( <g className="scatterTooltip"> {elements.map((el, i) => el.wrap.render(el.x, el.y, { key: i }) )} </g> ) } } |