Skip to content
Snippets Groups Projects
Commit 2f66dcb7 authored by Gabriel Clark's avatar Gabriel Clark
Browse files

Conversions now work between already defined values.

parent 82f889b9
No related branches found
No related tags found
No related merge requests found
/* eslint-disable no-magic-numbers */
import { useSelector } from 'react-redux';
import { selectCurrentOutputUnit } from '../unit-selector/unitSelectorSlice';
import { selectDesiredConversionNumber } from '../number-input-field/numberInputFieldSlice';
import { selectCurrentOutputUnit, selectCurrentInputUnit} from '../unit-selector/unitSelectorSlice';
import { selectNumberOfUnits } from '../number-input-field/numberInputFieldSlice';
export function EndingNumberOutput() {
const conversionTable = {
// To use these conversion multiply your specified unit with
// its number to get meters.
unitsToMeters: {
km: 1000,
m: 1.0,
cm: 1 / 100,
ft: 1 / 3.281,
in: 1 / 39.3701,
},
// Multiply a number of meters by one of these conversions to
// get that number of units.
metersToUnits: {
km: 1 / 1000,
m: 1.0,
cm: 100,
ft: 3.281,
in: 39.3701,
},
};
const currentInputUnit = useSelector(selectCurrentInputUnit);
const currentOutputUnit = useSelector(selectCurrentOutputUnit);
const unconvertedNumber = useSelector(selectDesiredConversionNumber);
const convertedNumber = unconvertedNumber * 100;
const numberOfUnits = parseFloat(useSelector(selectNumberOfUnits));
const numberOfMeters = numberOfUnits * conversionTable.unitsToMeters[currentInputUnit];
let convertedNumber = numberOfMeters * conversionTable.metersToUnits[currentOutputUnit];
if (isNaN(convertedNumber)) {
convertedNumber = 'Please enter number to convert to ';
}
return (
<div>
<h1>{convertedNumber} {currentOutputUnit}</h1>
......
import { useSelector, useDispatch } from 'react-redux';
import { selectCurrentInputUnit } from '../unit-selector/unitSelectorSlice';
import { setDesiredConversionNumber } from './numberInputFieldSlice';
import { setNumberOfUnits } from './numberInputFieldSlice';
export function NumberInputField() {
const currentInputUnit = useSelector(selectCurrentInputUnit);
......@@ -9,7 +9,7 @@ export function NumberInputField() {
function handleChange(e) {
const currentNumber = e.target.value;
dispatch(setDesiredConversionNumber(currentNumber));
dispatch(setNumberOfUnits(currentNumber));
}
function handleSubmit(e) {
......
......@@ -6,7 +6,7 @@ const numberInputFieldSlice = createSlice({
numberToConvert: 0,
},
reducers: {
setDesiredConversionNumber: (state, action) => {
setNumberOfUnits: (state, action) => {
const numToConvert = action.payload;
return {
...state,
......@@ -18,9 +18,9 @@ const numberInputFieldSlice = createSlice({
export default numberInputFieldSlice;
export const {
setDesiredConversionNumber,
setNumberOfUnits,
} = numberInputFieldSlice.actions;
export function selectDesiredConversionNumber(state) {
export function selectNumberOfUnits(state) {
return state.numberInputField.numberToConvert;
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment