All files / owid-grapher/grapher/controls ScaleSelector.tsx

90.77% Statements 59/65
83.33% Branches 5/6
50% Functions 1/2
90.77% Lines 59/65

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 551x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x             1x 1x 35x 35x 35x 35x 35x 35x 35x 35x 35x 35x 35x 35x 35x 35x 35x 35x 35x 35x 35x 35x 35x 35x 35x 35x 35x 35x 35x 35x 1x 1x
import * as React from "react"
import { action } from "mobx"
import { observer } from "mobx-react"
import { ScaleType } from "../core/GrapherConstants"
import classNames from "classnames"
import { next } from "../../clientUtils/Util"
 
export interface ScaleSelectorManager {
    scaleType?: ScaleType
}
 
@observer
export class ScaleSelector extends React.Component<{
    manager?: ScaleSelectorManager
    prefix?: string
}> {
    @action.bound private onClick(): void {
        const manager = this.props.manager ?? {}
        manager.scaleType = next(
            [ScaleType.linear, ScaleType.log],
            manager.scaleType ?? ScaleType.linear
        )
    }
 
    render(): JSX.Element {
        const { manager, prefix } = this.props
        const { scaleType } = manager ?? {}
        return (
            <span
                onClick={this.onClick}
                className={classNames(["clickable", "toggleSwitch"])}
            >
                <span
                    data-track-note="chart-toggle-scale"
                    className={
                        "leftToggle " +
                        (scaleType === ScaleType.linear ? "activeToggle" : "")
                    }
                >
                    {prefix}Linear
                </span>
                <span
                    data-track-note="chart-toggle-scale"
                    className={
                        "rightToggle " +
                        (scaleType === ScaleType.log ? "activeToggle" : "")
                    }
                >
                    {prefix}Log
                </span>
            </span>
        )
    }
}