Skip to content

Commit a64998f

Browse files
committed
Feat(temperature_convertor) add kelvin logic conversion
1 parent a579ec9 commit a64998f

File tree

2 files changed

+112
-13
lines changed

2 files changed

+112
-13
lines changed

Temperature-convertor/index.html

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,25 @@ <h2 >Type of conversion</h2>
1919
<button
2020
class="Fahrenheit"
2121
type="button" onclick="getTypeTemperatureInput('Fahrenheit');">Fahrenheit </button>
22+
<button
23+
class="Kelvin"
24+
type="button" onclick="getTypeTemperatureInput('Kelvin');">Kelvin </button>
2225
</div>
2326
<div class="input-section">
2427
<label for="response">Temperature</label>
2528
<input type="text" name="response" id="response" placeholder="12">
2629
</div>
30+
<div class="btn-section">
31+
<button type="button"
32+
class="Celsius_output"
33+
onclick="getTypeTemperatureOutput('Celsius');">Celsius</button>
34+
<button
35+
class="Fahrenheit_output"
36+
type="button" onclick="getTypeTemperatureOutput('Fahrenheit');">Fahrenheit </button>
37+
<button
38+
class="Kelvin_output"
39+
type="button" onclick="getTypeTemperatureOutput('Kelvin');">Kelvin </button>
40+
</div>
2741
<button id="btn-submit" type="button" onclick="getSentenceResult();">Submit</button>
2842
<section id="element_result" style="font-size: larger;">
2943

Temperature-convertor/main.js

Lines changed: 98 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -4,26 +4,109 @@ const res = document.getElementById('response');
44
const form = document.getElementById('form');
55
const celsiusBtn = document.querySelector('.Celsius');
66
const fahrenheitBtn = document.querySelector('.Fahrenheit');
7+
const KelvinBtn = document.querySelector('.Kelvin');
78
const element_result = document.getElementById('element_result');
9+
const Celsius_output = document.querySelector('.Celsius_output');
10+
const Fahrenheit_output = document.querySelector('.Fahrenheit_output');
11+
const Kelvin_output = document.querySelector('.Kelvin_output');
812
let sentence = '';
913
let temperatureInput = '';
14+
let temperatureOutput = '';
1015

1116
function getTypeTemperatureInput(ipt){
12-
if(ipt === 'Celsius'){
13-
fahrenheitBtn.classList.remove('selected')
14-
celsiusBtn.classList.add('selected');
15-
}else{
16-
fahrenheitBtn.classList.add('selected');
17-
celsiusBtn.classList.remove('selected')
17+
switch (ipt) {
18+
case 'Celsius': {
19+
fahrenheitBtn.classList.remove('selected');
20+
KelvinBtn.classList.remove('selected');
21+
celsiusBtn.classList.add('selected');
22+
return temperatureInput = ipt;
23+
}
24+
case 'Fahrenheit': {
25+
celsiusBtn.classList.remove('selected');
26+
KelvinBtn.classList.remove('selected');
27+
fahrenheitBtn.classList.add('selected');
28+
return temperatureInput = ipt;
29+
}
30+
case 'Kelvin': {
31+
fahrenheitBtn.classList.remove('selected')
32+
celsiusBtn.classList.remove('selected');
33+
KelvinBtn.classList.add('selected');
34+
return temperatureInput = ipt;
35+
}
1836
}
19-
return temperatureInput = ipt;
2037
}
38+
function getTypeTemperatureOutput(ipt){
39+
switch (ipt) {
40+
case 'Celsius': {
41+
Fahrenheit_output.classList.remove('selected');
42+
Kelvin_output.classList.remove('selected');
43+
Celsius_output.classList.add('selected');
44+
return temperatureOutput = ipt;
45+
}
46+
case 'Fahrenheit': {
47+
Celsius_output.classList.remove('selected');
48+
Kelvin_output.classList.remove('selected');
49+
Fahrenheit_output.classList.add('selected');
50+
return temperatureOutput = ipt;
51+
}
52+
case 'Kelvin': {
53+
Fahrenheit_output.classList.remove('selected')
54+
Celsius_output.classList.remove('selected');
55+
Kelvin_output.classList.add('selected');
56+
return temperatureOutput = ipt;
57+
}
58+
}
59+
}
60+
2161
function transformCelsiusToFahrenheit(degCel){
2262
return (degCel * (9/5) + 32);
2363
}
64+
function transformCelsiusToKelvin(celsius) {
65+
return celsius + 273.15;
66+
}
2467
function transformFahrenheitToCelsius(degCel){
2568
return (degCel - 32 * 5/9);
26-
}
69+
}
70+
function transformFahrenheitToKelvin(fahrenheit) {
71+
return (fahrenheit - 32) * 5/9 + 273.15;
72+
}
73+
function transformKelvinToCelsius(kelvin) {
74+
return kelvin - 273.15;
75+
}
76+
function transformKelvinToFahrenheit(kelvin) {
77+
return (kelvin - 273.15) * 9/5 + 32;
78+
}
79+
80+
function getTransformFunction(input, output,value){
81+
if( input === 'Celsius'){
82+
switch (output) {
83+
case 'Fahrenheit' : {
84+
return transformCelsiusToFahrenheit(value);
85+
}
86+
case 'Kelvin' : {
87+
return transformCelsiusToKelvin(value);
88+
}
89+
}
90+
} if( input === 'Fahrenheit'){
91+
switch (output) {
92+
case 'Celsius' : {
93+
return transformFahrenheitToCelsius(value);
94+
}
95+
case 'Kelvin' : {
96+
return transformFahrenheitToKelvin(value);
97+
}
98+
}
99+
} if( input === 'Kelvin'){
100+
switch (output) {
101+
case 'Fahrenheit' : {
102+
return transformKelvinToFahrenheit(value);
103+
}
104+
case 'Celsius' : {
105+
return transformKelvinToCelsius(value);
106+
}
107+
}
108+
}
109+
}
27110
form.onkeydown = function(e){
28111
if(e.keyCode == 13){
29112
e.preventDefault();
@@ -32,14 +115,16 @@ form.onkeydown = function(e){
32115
};
33116
function getSentenceResult(){
34117
const value = +res.value;
118+
if(isNaN(value)){
119+
return element_result.innerHTML = 'Input data not correct.';
120+
}
35121
if(temperatureInput === ''){
36122
return element_result.innerHTML = 'Please enter valid conversion';
37123
}
38-
if(isNaN(value)){
39-
return element_result.innerHTML = 'Input data not correct.';
124+
else if(temperatureOutput === temperatureInput){
125+
return element_result.innerHTML = 'Please enter valid conversion';
40126
}
41-
const val = temperatureInput === 'Celsius' ? transformCelsiusToFahrenheit(value) : transformFahrenheitToCelsius(value);
42-
const labelTemperature = (temperatureInput === 'Celsius') ? ' Fahrenheit' : ' Celsius' ;
43-
return element_result.innerHTML = `<p class='response'>${value} ${temperatureInput} give ${parseInt(val)} ${labelTemperature}</p>`;
127+
const val = getTransformFunction(temperatureInput, temperatureOutput, value)
128+
return element_result.innerHTML = `<p class='response'>${value} ${temperatureInput} give ${parseInt(val)} ${temperatureOutput}</p>`;
44129

45130
}

0 commit comments

Comments
 (0)