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 { useSelector } from 'react-redux';
import { selectCurrentOutputUnit } from '../unit-selector/unitSelectorSlice'; import { selectCurrentOutputUnit, selectCurrentInputUnit} from '../unit-selector/unitSelectorSlice';
import { selectDesiredConversionNumber } from '../number-input-field/numberInputFieldSlice'; import { selectNumberOfUnits } from '../number-input-field/numberInputFieldSlice';
export function EndingNumberOutput() { 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 currentOutputUnit = useSelector(selectCurrentOutputUnit);
const unconvertedNumber = useSelector(selectDesiredConversionNumber); const numberOfUnits = parseFloat(useSelector(selectNumberOfUnits));
const convertedNumber = unconvertedNumber * 100; const numberOfMeters = numberOfUnits * conversionTable.unitsToMeters[currentInputUnit];
let convertedNumber = numberOfMeters * conversionTable.metersToUnits[currentOutputUnit];
if (isNaN(convertedNumber)) {
convertedNumber = 'Please enter number to convert to ';
}
return ( return (
<div> <div>
<h1>{convertedNumber} {currentOutputUnit}</h1> <h1>{convertedNumber} {currentOutputUnit}</h1>
......
import { useSelector, useDispatch } from 'react-redux'; import { useSelector, useDispatch } from 'react-redux';
import { selectCurrentInputUnit } from '../unit-selector/unitSelectorSlice'; import { selectCurrentInputUnit } from '../unit-selector/unitSelectorSlice';
import { setDesiredConversionNumber } from './numberInputFieldSlice'; import { setNumberOfUnits } from './numberInputFieldSlice';
export function NumberInputField() { export function NumberInputField() {
const currentInputUnit = useSelector(selectCurrentInputUnit); const currentInputUnit = useSelector(selectCurrentInputUnit);
...@@ -9,7 +9,7 @@ export function NumberInputField() { ...@@ -9,7 +9,7 @@ export function NumberInputField() {
function handleChange(e) { function handleChange(e) {
const currentNumber = e.target.value; const currentNumber = e.target.value;
dispatch(setDesiredConversionNumber(currentNumber)); dispatch(setNumberOfUnits(currentNumber));
} }
function handleSubmit(e) { function handleSubmit(e) {
......
...@@ -6,7 +6,7 @@ const numberInputFieldSlice = createSlice({ ...@@ -6,7 +6,7 @@ const numberInputFieldSlice = createSlice({
numberToConvert: 0, numberToConvert: 0,
}, },
reducers: { reducers: {
setDesiredConversionNumber: (state, action) => { setNumberOfUnits: (state, action) => {
const numToConvert = action.payload; const numToConvert = action.payload;
return { return {
...state, ...state,
...@@ -18,9 +18,9 @@ const numberInputFieldSlice = createSlice({ ...@@ -18,9 +18,9 @@ const numberInputFieldSlice = createSlice({
export default numberInputFieldSlice; export default numberInputFieldSlice;
export const { export const {
setDesiredConversionNumber, setNumberOfUnits,
} = numberInputFieldSlice.actions; } = numberInputFieldSlice.actions;
export function selectDesiredConversionNumber(state) { export function selectNumberOfUnits(state) {
return state.numberInputField.numberToConvert; 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