From 26ff28aae6bfbcdd8c9d80d514094406ef1602ff Mon Sep 17 00:00:00 2001 From: Mark McDowall Date: Tue, 23 Apr 2019 23:48:43 -0700 Subject: [PATCH] New: Tooltips for quality size limits --- .../Quality/Definition/QualityDefinition.js | 40 ++++++++++++++----- .../Definition/QualityDefinitionLimits.js | 33 +++++++++++++++ 2 files changed, 64 insertions(+), 9 deletions(-) create mode 100644 frontend/src/Settings/Quality/Definition/QualityDefinitionLimits.js diff --git a/frontend/src/Settings/Quality/Definition/QualityDefinition.js b/frontend/src/Settings/Quality/Definition/QualityDefinition.js index ea5075334..9b8abc525 100644 --- a/frontend/src/Settings/Quality/Definition/QualityDefinition.js +++ b/frontend/src/Settings/Quality/Definition/QualityDefinition.js @@ -3,10 +3,12 @@ import React, { Component } from 'react'; import ReactSlider from 'react-slider'; import formatBytes from 'Utilities/Number/formatBytes'; import roundNumber from 'Utilities/Number/roundNumber'; -import { kinds } from 'Helpers/Props'; +import { kinds, tooltipPositions } from 'Helpers/Props'; import Label from 'Components/Label'; import NumberInput from 'Components/Form/NumberInput'; import TextInput from 'Components/Form/TextInput'; +import Popover from 'Components/Tooltip/Popover'; +import QualityDefinitionLimits from './QualityDefinitionLimits'; import styles from './QualityDefinition.css'; const MIN = 0; @@ -139,12 +141,10 @@ class QualityDefinition extends Component { } = this.state; const minBytes = minSize * 1024 * 1024; - const minThirty = formatBytes(minBytes * 30, 2); - const minSixty = formatBytes(minBytes * 60, 2); + const minSixty = `${formatBytes(minBytes * 60, 2)}/h`; const maxBytes = maxSize && maxSize * 1024 * 1024; - const maxThirty = maxBytes ? formatBytes(maxBytes * 30, 2) : 'Unlimited'; - const maxSixty = maxBytes ? formatBytes(maxBytes * 60, 2) : 'Unlimited'; + const maxSixty = maxBytes ? `${formatBytes(maxBytes * 60, 2)}/h` : 'Unlimited'; return (
@@ -178,13 +178,35 @@ class QualityDefinition extends Component {
- - + {minSixty} + } + title="Minimum Limits" + body={ + + } + position={tooltipPositions.BOTTOM} + />
- - + {maxSixty} + } + title="Maximim Limits" + body={ + + } + position={tooltipPositions.BOTTOM} + />
diff --git a/frontend/src/Settings/Quality/Definition/QualityDefinitionLimits.js b/frontend/src/Settings/Quality/Definition/QualityDefinitionLimits.js new file mode 100644 index 000000000..85b0a0e0f --- /dev/null +++ b/frontend/src/Settings/Quality/Definition/QualityDefinitionLimits.js @@ -0,0 +1,33 @@ +import PropTypes from 'prop-types'; +import React from 'react'; +import formatBytes from 'Utilities/Number/formatBytes'; + +function QualityDefinitionLimits(props) { + const { + bytes, + message + } = props; + + if (!bytes) { + return
{message}
; + } + + const thirty = formatBytes(bytes * 30, 2); + const fourtyFive = formatBytes(bytes * 30, 2); + const sixty = formatBytes(bytes * 30, 2); + + return ( +
+
30 Minutes: {thirty}
+
45 Minutes: {fourtyFive}
+
60 Minutes: {sixty}
+
+ ); +} + +QualityDefinitionLimits.propTypes = { + bytes: PropTypes.number.isRequired, + message: PropTypes.string.isRequired +}; + +export default QualityDefinitionLimits;