Полноценный конвертер валюты на JS с использованием API

Пытался создать ответ для вопроса но застрял на логических вычислениях.

Само API скудно и по моему мнению выдает курс только по отношению к рублю, а желание было написать конвертер валют по отношению к разным валютам, скорее всего то решение, которое предоставляет Google.

JsFiddle

const container = document.querySelector('.container .group');
const currencyDate = document.querySelector('.container .date');

const firstInput = container.querySelector('.first-input');
const secondInput = container.querySelector('.second-input');

const firstSelect = container.querySelector('.first-select');
const secondSelect = container.querySelector('.second-select');

firstInput.addEventListener('input', () => firstHandle());
secondInput.addEventListener('input', () => secondHandle());

firstSelect.addEventListener('change', () => firstHandle());
secondSelect.addEventListener('change', () => secondHandle());

const firstHandle = () => {
	const value = firstInput.value;
	const currency = firstSelect.options[firstSelect.selectedIndex].dataset.currency;
	secondInput.value = value * currency;
}
const secondHandle = () => {
	const value = secondInput.value;
	const currency = secondSelect.options[secondSelect.selectedIndex].dataset.currency;
	firstInput.value = value * currency;
}

const handleInput = () => {
	const first = firstSelect.options[firstSelect.selectedIndex].dataset.currency;
	const second = secondSelect.options[secondSelect.selectedIndex].dataset.currency;
	
	firstInput.value = 1;
	firstHandle();
};

const handleRequest = ({ data }) => {
	const date = new Date(data.PreviousDate);
	const optionsDateFormat = {
		year: 'numeric',
		month: '2-digit',
		day: '2-digit',
		hour: 'numeric',
 		minute: 'numeric',
		second: 'numeric'
	};
	
	currencyDate.innerHTML = date.toLocaleDateString('ru-RU', optionsDateFormat);


	Object.values(data.Valute).forEach(valute => {
		const option = document.createElement('option');
		const option2 = document.createElement('option');
		
		option.innerHTML = valute.Name;
		option.dataset.currency = valute.Value;
		if (valute.CharCode === 'EUR')
			option.selected = true;
			
		option2.innerHTML = valute.Name;
		option2.dataset.currency = valute.Value;
		if (valute.CharCode === 'BYN')
			option2.selected = true;
			
		firstSelect.append(option);
		secondSelect.append(option2);
	});
	
	handleInput();
}

const options = {
	headers: { 'Content-Type': 'application/json' }
}
axios.get('https://www.cbr-xml-daily.ru/daily_json.js', options)
	.then(handleRequest).catch();
@import url("https://fonts.googleapis.com/css?family=Nunito:400,600&display=swap");
* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
  outline: none;
}

body {
  min-height: 100vh;
  line-height: 1;
  display: flex;
  font-family: "Nunito", sans-serif;
}

input::-webkit-outer-spin-button, input::-webkit-inner-spin-button {
  -webkit-appearance: none;
  margin: 0;
}

.container {
  margin: auto;
  width: 450px;
  height: 300px;
  border: 1px solid #dfe6e9;
  border-radius: 10px;
  padding: 20px 16px;
  display: flex;
  flex-direction: column;
}
.container h2 {
  font-size: 28px;
  margin-bottom: 20px;
  font-weight: 600;
  text-align: center;
  text-transform: uppercase;
  color: #2d3436;
}
.container p {
  margin-bottom: 20px;
  color: #636e72;
}
.container .group {
  margin: auto;
  display: grid;
  grid-template-columns: 1fr 1fr;
  grid-gap: 10px;
}
.container .group input, .container .group select {
  height: 40px;
  border-radius: 8px;
  border: 1px solid #b2bec3;
  width: 100%;
  padding: 10px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/axios/0.19.2/axios.min.js"></script>
<div class="container">
	<h2>Конвертер валют</h2>
	<p>Последнее обновление: <b class="date">26.03.2020 18:35:57</b></p>
	<div class="group">
		<input type="number" class="first-input">
		<select class="first-select"></select>

		<input type="number" class="second-input">
		<select class="second-select"></select>
	</div>
</div>


Ответы (0 шт):