Skip to content

Commit 7456273

Browse files
authored
Merge pull request #14 from gbasset/Temperature-convertor-update
Temperature convertor update
2 parents 8acedfb + d797bd2 commit 7456273

File tree

4 files changed

+126
-23
lines changed

4 files changed

+126
-23
lines changed

Temperature-convertor/README.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
# Temperature Converter
22

33
**A simple temperature converter built using HTML, CSS, and JavaScript**
4-
This project allows users to convert temperatures between different units (Celsius, Fahrenheit).
4+
This project allows users to convert temperatures between different units: Celsius, Fahrenheit, and Kelvin.
55

66
### Features
7-
- **Temperature Conversion**: Users can choose between different temperature units (Celsius, Fahrenheit, Kelvin).
7+
- **Temperature Conversion**: Allows conversion between Celsius, Fahrenheit, and Kelvin.
88
- **Dynamic Calculation**: Users can enter a temperature value, select the conversion type, and the result will be displayed instantly.
99
- **Error Handling**: Displays an error message for invalid inputs (e.g., non-numeric values).
1010

1111
## Description
12-
This temperature converter allows users to easily switch between Celsius, Fahrenheit. The user can input a value and choose the desired conversion operation. The result is displayed dynamically on the screen.
12+
This temperature converter allows users to easily switch between different units of temperature. The user can input a value and choose the desired conversion operation. The result is displayed dynamically on the screen.
1313

1414
The project uses simple HTML for structuring the page, CSS for styling and enhancing the user experience, and JavaScript to handle all the logic and perform the conversions in real-time.
1515

@@ -22,15 +22,15 @@ Before running this project, you need to have a basic understanding of the follo
2222
## How to Use
2323
1. Open the HTML file in your web browser.
2424
2. Enter the temperature value you want to convert.
25-
3. Select the type of conversion (Celsius to Fahrenheit, Fahrenheit to Celsius, etc.).
25+
3. Select the type of conversion (Celsius to Fahrenheit, Fahrenheit to Celsius,Celsius to Kelvin etc.).
2626
4. The converted value will be displayed automatically.
2727

2828
## Installation
2929
To run this project locally:
3030
1. Clone the repository or download the files.
3131
2. Open `index.html` in any web browser.
3232

33-
## Installing Instructions
33+
## Installation Instructions
3434
Explain how to set up and run your package/script on the user's local machine. Include steps like:
3535
1. Clone the repository:
3636
```bash
@@ -43,4 +43,4 @@ Explain how to set up and run your package/script on the user's local machine. I
4343
3. Open `index.html` in a web browser.
4444

4545
## Author
46-
- Basset Gaëtan (@[gbasset](https://github.com/gbasset))
46+
- Basset Gaëtan (@[gbasset](https://github.com/gbasset))

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
}

Temperature-convertor/style.css

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,9 @@ h1, h2 {
3636
color: #86b0ff;
3737
text-align: center;
3838
}
39-
39+
label {
40+
font-size: 17px;
41+
}
4042
button {
4143
display: inline-block;
4244
outline: none;
@@ -59,7 +61,9 @@ button {
5961

6062
.btn-section {
6163
display: flex;
62-
justify-content: space-around;
64+
justify-content: space-between;
65+
margin-top: 15px;
66+
margin-bottom: 15px;
6367
}
6468

6569
.btn-section button {
@@ -75,13 +79,13 @@ button {
7579
}
7680

7781
#form {
78-
max-width: 500px;
82+
max-width: 600px;
7983
min-width: 450px;
8084
min-height: 200px;
8185
display: flex;
8286
flex-direction: column;
8387
justify-content: space-around;
84-
height: 400px;
88+
height: 500px;
8589
padding: 35px;
8690
border: 1px solid rgba(255, 255, 255, .25);
8791
border-radius: 20px;

0 commit comments

Comments
 (0)