@krowdy-ui/views
Version:
React components that implement Google's Material Design.
137 lines (125 loc) • 4.06 kB
JavaScript
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
var _react = _interopRequireDefault(require("react"));
var _propTypes = _interopRequireDefault(require("prop-types"));
var _clsx = _interopRequireDefault(require("clsx"));
var _core = require("@krowdy-ui/core");
var _Column = _interopRequireDefault(require("./Column"));
var _Price = _interopRequireDefault(require("./Price"));
var interval = 4;
var emptyPrices = new Array(interval);
var parsePrice = function parsePrice(price) {
return Math.ceil(price / Math.pow(10, price.toString().length - 1)) * Math.pow(10, price.toString().length - 1);
};
var GraphicBar = function GraphicBar(_ref) {
var _ref$multiplier = _ref.multiplier,
multiplier = _ref$multiplier === void 0 ? 1 : _ref$multiplier,
_ref$candidates = _ref.candidates,
candidates = _ref$candidates === void 0 ? [] : _ref$candidates;
var divider = candidates.length;
var max = candidates.map(function (_ref2) {
var salary = _ref2.salary;
return salary;
}).sort(function (a, b) {
return b - a;
})[0];
var prices = Array.from(emptyPrices, function (value, index) {
return parsePrice(Math.ceil(max - max / 4 * index));
});
var classes = useStyles({
max: prices[0],
multiplier: multiplier
});
return /*#__PURE__*/_react["default"].createElement("div", {
className: classes.root
}, /*#__PURE__*/_react["default"].createElement("div", {
className: (0, _clsx["default"])(classes.row, classes.container)
}, /*#__PURE__*/_react["default"].createElement("div", {
className: (0, _clsx["default"])(classes.column, classes.prices)
}, prices.map(function (price, index) {
return /*#__PURE__*/_react["default"].createElement(_Price["default"], {
key: index,
max: prices[0],
multiplier: multiplier,
price: price
});
})), /*#__PURE__*/_react["default"].createElement("div", {
className: (0, _clsx["default"])(classes.containerGraphicBar, classes.row)
}, candidates.map(function (_ref3, index) {
var salary = _ref3.salary,
selected = _ref3.selected,
firstName = _ref3.firstName,
lastName = _ref3.lastName,
photo = _ref3.photo;
return /*#__PURE__*/_react["default"].createElement(_Column["default"], {
divider: divider,
firstName: firstName,
index: index,
key: index,
lastName: lastName,
max: prices[0],
multiplier: multiplier,
photo: photo,
salary: salary,
selected: selected
});
}))));
};
process.env.NODE_ENV !== "production" ? GraphicBar.propTypes = {
candidates: _propTypes["default"].arrayOf(_propTypes["default"].shape({
firstName: _propTypes["default"].string,
lastName: _propTypes["default"].string,
photo: _propTypes["default"].string,
salary: _propTypes["default"].number,
selected: _propTypes["default"].bool
})),
multiplier: _propTypes["default"].number
} : void 0;
var useStyles = (0, _core.makeStyles)(function (theme) {
return {
column: {
display: 'flex',
flexDirection: 'column'
},
container: {
height: '100%',
marginTop: theme.spacing(1),
minHeight: 150,
width: '100%'
},
containerGraphicBar: {
borderBottom: "1px solid ".concat(theme.palette.grey[600]),
display: 'flex',
flexDirection: 'row',
height: 'inherit',
width: 'inherit'
},
price: {
color: theme.palette.grey[600]
},
prices: {
position: 'relative',
width: function width(_ref4) {
var max = _ref4.max,
multiplier = _ref4.multiplier;
return (max * multiplier).toString().length * 9;
}
},
root: {
display: 'flex',
height: 'calc(100% - 32px)'
},
row: {
display: 'flex',
flexDirection: 'row'
}
};
}, {
name: 'GraphicBar'
});
var _default = GraphicBar;
exports["default"] = _default;