mongaku/mongaku

View on GitHub
src/views/types/view/Dimension.js

Summary

Maintainability
A
40 mins
Test Coverage
// @flow

const React = require("react");
const pd = require("parse-dimensions");

type DimensionType = {
    _id: string,
    height?: number,
    width?: number,
    unit?: string,
    label?: string,
};

type Props = {
    defaultUnit?: string,
    value: Array<DimensionType>,
};

const getDimension = (oldDimension, defaultUnit = "mm") => {
    const {label} = oldDimension;
    const dimension = pd.convertDimension(oldDimension, defaultUnit);
    const unit = dimension.unit;
    return [
        dimension.width,
        unit,
        " x ",
        dimension.height,
        unit,
        label ? ` (${label})` : "",
    ].join("");
};

const Dimension = ({
    dimension,
    defaultUnit,
}: {
    defaultUnit?: string,
    dimension: DimensionType,
}) => (
    <span>
        {getDimension(dimension, defaultUnit)}
        <br />
    </span>
);

const DimensionView = ({value, defaultUnit}: Props) => (
    <span>
        {value.map(dimension => (
            <Dimension
                key={dimension._id}
                dimension={dimension}
                defaultUnit={defaultUnit}
            />
        ))}
    </span>
);

module.exports = DimensionView;