commit ae77f24fc8d5b282f2c0e447e4253ed3ca1e8262 Author: Divlo Date: Fri Aug 16 12:05:56 2019 +0200 First Version diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ea988d8 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +htaccess +scripts/config.js +img/FunctionProject_brand-logo.psd +img/FunctionProject.psd \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..f39d7fe --- /dev/null +++ b/README.md @@ -0,0 +1,22 @@ +# FunctionProject +![Badge Status](https://cloud.divlo.fr/public_files/others/under_dev.svg) + +[À propos de Divlo](https://divlo.fr/) | [Youtube](https://www.youtube.com/c/Divlo) | [Twitch](https://www.twitch.tv/divlofr) | [Twitter](https://twitter.com/Divlo_FR) | [Steam](https://steamcommunity.com/id/Divlo/) | [Discord](https://discordapp.com/invite/WWK2JPz) + +## À propos de FunctionProject +[FunctionProject](https://function.divlo.fr/) est un projet créé par Divlo qui a pour but de rassembler plein de mini-programme (fonctions JavaScript) permettant de faire plusieurs choses comme savoir la météo, générer un nombre aléatoire, etc. + +Toutes les informations en détails sur le projet sont disponible sur [function.divlo.fr](https://function.divlo.fr/). + +(Projet uniquement en français pour le moment.) + +[![FunctionProject](https://cloud.divlo.fr/public_files/others/FunctionProject.png)](https://function.divlo.fr/) + +## La liste des Fonctions Principales : +| Nom | Description | Paramètre(s) | +| -- | -- | -- | +| **weatherRequest(url,toDo)** | Permet de faire une requête à l'API openweathermap.org. | - url : avec le nom de la ville. - toDo : afficher l'heure uniquement ou aussi la météo ? | +| **randomNumber(minEntered, maxEntered)** | Génère un nombre aléatoire entre un minimum inclus et un maximum inclus. | - minEntered : Nombre Minimum - maxEntered : Nombre Maximum | +| **calculateAge(birthDate)** | Calcule l'âge de quelqu'un selon la date de naissance. | - birthDate : date de naissance au format (dd/mm/yyyy). | +| **convertTemperature(degre,unite)** | Convertit des Degré Celsius en Degré Fahrenheit et l'inverse aussi. | - degre : Le nombre que vous voulez convertir - unite : l'unité du nombre que vous voulez convertir (°C ou °F) | +| **convertDistance (firstValue, unitFirstValue, unitFinalValue)** | Convertit la longueur (distance) avec les unités allant de picomètre au Téramètre. | - firstValue : Le nombre que vous voulez convertir - unitFirstValue : l'unité du nombre que vous voulez convertir - unitFinalValue : l'unité de votre nombre après la conversion | diff --git a/css/style.css b/css/style.css new file mode 100644 index 0000000..fb61fc5 --- /dev/null +++ b/css/style.css @@ -0,0 +1,72 @@ +/* GENERAL */ +body { + background-color: #181818; + color:rgba(222, 222, 222, 0.9); + font-family: 'Montserrat', 'Arial', sans-serif; +} +b { + font-weight: bold; +} +.yellow-color, .yellow-color:hover { + color: #ffd800; +} + +/* HEADER */ +header { + margin-bottom: 5%; +} +.navbar { + border-bottom: 3px rgba(255,255,255,0.7) solid; +} + +/* CONTENT */ +.container > h1, .container > .row > h1 { + font-family: 'Roboto', 'sans-serif'; +} +.container > p, .container > .row > p { + font-size: 18px; + line-height: 1.9; /* représente un facteur multiplicateur de la taille de la police appliquée à l'élément */ +} +.container > p > a, .container > .row > a, .container > table > tbody > tr > td > a, .container > .row > table > tbody > tr > td > a, footer > p > a { + color: #ffd800; + font-weight: bold; +} +.container > p > a:hover, .container > .row > p > a:hover, footer > p > a:hover { + color: rgba(255,255,255,1); + font-weight: bold; + text-decoration: underline; +} +.function-list-title { + margin: auto; + padding-bottom: 45px; +} +.table { + color: #fff; +} + +/* FOOTER */ +footer +{ + border-top: 3px rgba(255,255,255,0.7) solid; + padding: 20px 0 40px; + margin-top: 40px; +} +.footer-text +{ + font-family: 'Montserrat', sans-serif; + font-size: 18px; + font-weight: 700; + margin: 0 0 25px 0; + line-height: 1.1; + color: #9a9da2; +} +footer i +{ + font-size: 25px; + margin: 20px; + height: 30px; +} +footer i:hover +{ + font-size: 30px; +} \ No newline at end of file diff --git a/img/FunctionProject.png b/img/FunctionProject.png new file mode 100644 index 0000000..27edaa2 Binary files /dev/null and b/img/FunctionProject.png differ diff --git a/img/FunctionProject_brand-logo.png b/img/FunctionProject_brand-logo.png new file mode 100644 index 0000000..dcca440 Binary files /dev/null and b/img/FunctionProject_brand-logo.png differ diff --git a/img/FunctionProject_logo.png b/img/FunctionProject_logo.png new file mode 100644 index 0000000..9b092c6 Binary files /dev/null and b/img/FunctionProject_logo.png differ diff --git a/incl/footer.php b/incl/footer.php new file mode 100644 index 0000000..dae6f46 --- /dev/null +++ b/incl/footer.php @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/incl/header.php b/incl/header.php new file mode 100644 index 0000000..4edc3e8 --- /dev/null +++ b/incl/header.php @@ -0,0 +1,57 @@ + + + + Function Project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
\ No newline at end of file diff --git a/index.php b/index.php new file mode 100644 index 0000000..8bc5884 --- /dev/null +++ b/index.php @@ -0,0 +1,37 @@ + + + + + + + + + +
+

Bienvenue sur FunctionProject! 🎉

+

FunctionProject est un projet créé par Divlo qui a pour but de rassembler plein de mini-programme (fonctions JavaScript) permettant de faire plusieurs choses comme savoir la météo, générer un nombre aléatoire, etc. +

+ Cliquez ici pour accéder à la liste des fonctions. +

+ L'intégralité du code source de ce site est disponible sur mon profil GitHub .
+ Je suis débutant en programmation donc si je commets une erreur dans le code, n'hésitez pas à me le faire savoir. +

+ Vous pouvez m'envoyer vos avis, suggestion d'ajouts, éventuel bug/problème grâce à ce Feedback Formulaire 📝. +

+
+ + + \ No newline at end of file diff --git a/scripts/fonctions.js b/scripts/fonctions.js new file mode 100644 index 0000000..78a8037 --- /dev/null +++ b/scripts/fonctions.js @@ -0,0 +1,373 @@ +///////////////////////////////////////////////////////////////// +/* Fonctions Principales */ https://www.google.com/maps/search/?api=1&query=48.86,2.35 + +// Permet de faire une requête à l'API openweathermap.org +function weatherRequest(url,toDo) { + $.ajax({ + url : url, + dataType : "json", + success: function (json) { + let city = json.name; + let showDateTimeValue = timeZone(json); + switch (toDo) { + case 'time': + $('.results').html("La date et l'heure de " + city + " : " + showDateTimeValue); + $("#cityName").click(function() { + document.location.replace("../../views/function-views/weatherRequest.php"); + }); + $("#submitWeatherRequest").click(function() { + document.location.replace("../../views/function-views/weatherRequest.php"); + }); + break; + case 'weather': + if(city === 'Moscou') + { + $('.results').html(`🌎 Position : ${city}, RU
⏰ Date et heure : ${showDateTimeValue}
☁️ Météo : ${capitalize(json.weather[0].description)}
🌡️ Température : ${json.main.temp} °C
💧 Humidité : ${json.main.humidity}%
`); + $("#cityName").click(function() { + document.location.replace("../../views/function-views/weatherRequest.php"); + }); + $("#submitWeatherRequest").click(function() { + document.location.replace("../../views/function-views/weatherRequest.php"); + }); + } + else + { + $('.results').html(`🌎 Position : ${city}, ${json.sys.country}
⏰ Date et heure : ${showDateTimeValue}
☁️ Météo : ${capitalize(json.weather[0].description)}
🌡️ Température : ${json.main.temp} °C
💧 Humidité : ${json.main.humidity}%
`); + $("#cityName").click(function() { + document.location.replace("../../views/function-views/weatherRequest.php"); + }); + $("#submitWeatherRequest").click(function() { + document.location.replace("../../views/function-views/weatherRequest.php"); + }); + } + break; + default: + } + }, + statusCode: { + 404: function() { + document.location.replace("../error404.php"); + } + } + }); +} + +// Génère un nombre aléatoire entre un minimum inclus et un maximum inclus +function randomNumber(minEntered, maxEntered) { + let min = Math.ceil(minEntered); + let max = Math.floor(maxEntered); + + if (!isNaN(min) && !isNaN(max) && min < max) + { + let randomNumber = Math.floor(Math.random() * (max - min +1)) + min; + return randomNumber; + } + else if (min > max) + { + return "Votre nombre minimum est plus grand que le nombre maximum."; + } + else + { + return messageError; + } +} + +// Calcule l'âge de quelqu'un selon la date de naissance +function calculateAge(birthDate) { + // Vérifie si la valeur entrée correspond à une date de naissance + if(birthDate.length === 10 && typeof birthDate === 'string' && birthDate[2] === '/' && birthDate[5] === '/' && !isNaN(parseInt(birthDate[0] + birthDate[1] + birthDate[3] + birthDate[4] + birthDate[6] + birthDate[7]))) + { + // Les variables de la fonction + let birthDateDay = parseInt(birthDate[0] + birthDate[1]); + let birthDateMonth = parseInt(birthDate[3] + birthDate[4]); + let birthDateYear = parseInt(birthDate[6] + birthDate[7] + birthDate[8] + birthDate[9]); + dateTimeUTC('0'); + + // Vérifie si la date entrée correspond à une date valide + if(birthDateDay <= 31 && birthDateMonth <=12 && birthDateYear <= parseInt(year)) + { + // Initialise la date de naissance + let birthDate = new Date(birthDateYear + '-' + birthDateMonth + '-' + birthDateDay); + let ageDiff = timeNow - birthDate; // résultat en millisecondes + + // Vérifie si tu es déjà né + if(ageDiff > 0) + { + let ageDiffYear = ageDiff / 1000 / 60 / 60 / 24 / 365.25; // résultat en années + let ageYear = parseInt(ageDiffYear, 10); // Le 10 permet spécifier que parseInt doit utliser la base 10 + + let ageDiffDay = parseInt((ageDiff / 1000 / 60 / 60 / 24) - (ageYear * 365.25), 10); + let ageDiffMonth = ageDiffDay / 30; + + let ageMonth = parseInt(ageDiffMonth, 10); + let ageDay = ageDiffDay - (ageMonth * 30); + + // Si c'est ton anniversaire aujourd'hui + if(birthDateDay === parseInt(day) && birthDateMonth === parseInt(month)) + { + return 'Vous avez ' + ageYear + ' ans. Joyeux Anniversaire! 🥳'; + } + + else + { + return 'Vous avez ' + ageYear + ' ans, ' + ageMonth + ' mois et ' + ageDay + ' jour(s).'; + } + } + else + { + return "Vous n'êtes pas encore né..."; + } + } + else + { + return messageError; + } + } + else + { + return messageError; + } +} + +// Convertit des °C en °F et l'inverse aussi +function convertTemperature(degree, unit) { + if (!isNaN(degree) && unit === "°C") + { + const temperatureValue = ((degree * 9/5) + 32) + " °F"; + return temperatureValue; + } + else if (!isNaN(degree) && unit === "°F") + { + const temperatureValue = (degree - 32) * 5/9 + " °C"; + return temperatureValue; + } + else + { + return messageError; + } +} + +// Convertit la longueur (distance) avec les unités allant de picomètre au Téramètre +function convertDistance (firstValue, unitFirstValue, unitFinalValue) { + + let reference = ["pm",null,null,"nm",null,null,"µm",null,null,"mm","cm","dm","m","dam","hm","km",null,null,"Mm",null,null,"Gm",null,null,"Tm"]; + let index1 = reference.indexOf(unitFirstValue); + let index2 = reference.indexOf(unitFinalValue); + + // Condition qui vérifie si les valeurs entrées sont justes + if (!isNaN(firstValue) && typeof unitFirstValue === 'string' && typeof unitFinalValue === 'string' && (index1.toString() && index2.toString()) != '-1') + { + // Conversion des longueurs : + let difference = index1 - index2; + let result = firstValue*Math.pow(10,difference); + let response = 'Conversion de longueur : ' + firstValue.toString() + ' ' + unitFirstValue + ' = ' + formatNumberResult(result) + ' ' + unitFinalValue; + return response; + } + else + { + return messageError; + } +} + + +///////////////////////////////////////////////////////////////// +/* Fonctions Annexes */ + +// Vérifie si une valeur est vide +function isEmptyValue(value) { + if (value === '' || value === null || value === undefined) { + return true + } + else { + return false + } +} + +// Fonction qui formate les nombres avec des espaces (ex : 76120 = 76 120) +function formatNumberResult(num) { + if (!isNaN(num)) + { + if(num >= 1000) + { + return num.toString().replace(/(\d)(?=(\d{3})+(?!\d))/g, '$1 '); + } + else + { + return num; + } + } + else + { + return messageError; + } +} + +// Fonction qui convertit les puissances de 10 en nombre (ex: 1e+20 = 100 000 000 000 000 000 000), ne peut pas dépasser 1e+20 (21 ne fonctionne pas) +function convertPuissanceToNumber(num) { + if(!isNaN(num)) + { + let number = formatNumberResult((num).toFixed(0)); + return number; + } + else + { + return messageError; + } +} + +// Fonction qui convertit un résultat en m/s en km/s +function msToKms(num) { + if (!isNaN(num)) + { + return num / 1000; + } + else + { + return messageError; + } +} + +// Fonction qui convertit un résultat en m/s en km/h +function msToKmh(num) { + if (!isNaN(num)) + { + return num * 3.6; + } + else + { + return messageError; + } +} + +// Fonction qui calcul une valeur (= 100%) selon le pourcentage (ex: 25% de 100 = 25) +function calculPercentagePart(percentage,value) { + if (!isNaN(percentage) && !isNaN(value)) + { + return value * (percentage / 100); + } + else + { + return messageError; + } +} + +// Fonction qui met une majuscule à la 1ère lettre d'une string +function capitalize (s) { + if (typeof s !== 'string') return '' + return s.charAt(0).toUpperCase() + s.slice(1) +} + +// Fonction qui donne la date et l'heure selon l'UTC (Universal Time Coordinated) +function dateTimeUTC(utc) { + if(typeof utc === 'string' && utc.length >= 1 && utc[0] === '-' || '0' || '+' || !isNaN(parseFloat(utc[0]))) + { + if (utc[0] === '0' && utc.length === 1) + { + let enteredOffset = 0; + return showDateTime(enteredOffset); + } + else if (utc[0] === '+' || !isNaN(parseFloat(utc[0]))) + { + if (utc.length === 2 && utc[0] === '+') + { + // Entered offset + let enteredOffset = parseFloat(utc[1])*60; + timeNow.setMinutes(timeNow.getMinutes() + enteredOffset); + return showDateTime(enteredOffset); + } + else if (utc.length === 3 && utc[0] === '+') + { + // Entered offset + let enteredOffset = parseFloat(utc[1] + utc[2])*60; + timeNow.setMinutes(timeNow.getMinutes() + enteredOffset); + return showDateTime(enteredOffset); + } + else if (utc.length === 1 && !isNaN(parseFloat(utc[0]))) + { + // Entered offset + let enteredOffset = parseFloat(utc[0])*60; + timeNow.setMinutes(timeNow.getMinutes() + enteredOffset); + return showDateTime(enteredOffset); + } + else if (utc.length === 2 && !isNaN(parseFloat(utc[0]))) + { + // Entered offset + let enteredOffset = parseFloat(utc[0] + utc[1])*60; + timeNow.setMinutes(timeNow.getMinutes() + enteredOffset); + return showDateTime(enteredOffset); + } + else + { + let enteredOffset = 0; + return showDateTime(enteredOffset); + } + } + else if (utc[0] === '-') + { + if (utc.length === 2 && utc[0] === '-') + { + // Entered offset + let enteredOffset = - parseFloat(utc[1])*60; + timeNow.setMinutes(timeNow.getMinutes() + enteredOffset); + return showDateTime(enteredOffset); + } + else if (utc.length === 3 && utc[0] === '-') + { + // Entered offset + let enteredOffset = - parseFloat(utc[1] + utc[2])*60; + timeNow.setMinutes(timeNow.getMinutes() + enteredOffset); + return showDateTime(enteredOffset); + } + else + { + let enteredOffset = 0; + return showDateTime(enteredOffset); + } + } + else + { + let enteredOffset = 0; + return showDateTime(enteredOffset); + } + } + else if (utc === '' || !utc || utc === undefined) + { + utc = false; + let enteredOffset = 0; + return showDateTime(enteredOffset); + } + else + { + let enteredOffset = 0; + return showDateTime(enteredOffset); + } +} + +// Fonction qui affiche la date et l'heure (format : dd/mm/yyyy - 00:00:00) +function showDateTime(enteredOffset) { + year = timeNow.getFullYear(); + month = ('0'+(timeNow.getMonth()+1)).slice(-2); + day = ('0'+timeNow.getDate()).slice(-2); + hour = ('0'+timeNow.getHours()).slice(-2); + minute = ('0'+timeNow.getMinutes()).slice(-2); + second = ('0'+timeNow.getSeconds()).slice(-2); + + showDateTimeValue = day + "/" + month + "/" + year + " - " + hour + ":" + minute + ":" + second; + timeNow.setMinutes(timeNow.getMinutes() - enteredOffset) + + return showDateTimeValue; +} + +// Fonction qui permet de récupérer le décalage en secondes depuis UTC grâce à l'API +function timeZone(json) { + if(json.name === 'Moscou') // Il faut ajouter + 1h de décallage à Moscou + { + timeZoneValue = (json.timezone / 60 / 60) + 1; + } + else + { + timeZoneValue = json.timezone / 60 / 60; + } + let timeZoneStr = timeZoneValue.toString(); + return dateTimeUTC(timeZoneStr); +} \ No newline at end of file diff --git a/scripts/main.js b/scripts/main.js new file mode 100644 index 0000000..368ae81 --- /dev/null +++ b/scripts/main.js @@ -0,0 +1,136 @@ +$(function () { + + // Fichiers qui contient les variables + $.getScript("/scripts/variables.js", function() { + + // Fichiers qui contient les fonctions + $.getScript("/scripts/fonctions.js", function() { + + /* ÉXECUTION DES FONCTONS */ + $( "#submitWeatherRequest" ).click(function() + { + let city = $('#cityName').val(); + let cityName = city.split(' ').join('+'); + if(cityName === '') + { + $('.results').html("Vous ne pouvez pas rentré une valeur vide."); + $("#cityName").click(function() { + document.location.replace("../function-views/weatherRequest.php"); + }); + $("#submitWeatherRequest").click(function() { + document.location.replace("../function-views/weatherRequest.php"); + }); + } + else + { + let url = "https://api.openweathermap.org/data/2.5/weather?q=" + cityName + "&lang=fr&units=metric&appid=" + config.APIkey + ""; + weatherRequest(url, 'weather'); + } + }); + + $( "#submitRandomNumber" ).click(function() + { + let minEntered = $('#minValue').val(); + let maxEntered = $('#maxValue').val(); + + if(isEmptyValue(minEntered) || isEmptyValue(maxEntered)) + { + $('.results').html("Vous ne pouvez pas rentré de valeur vide."); + } + else + { + let result = randomNumber(minEntered, maxEntered); + if(result === messageError) + { + $('.results').html(messageError); + } + else + { + $('.results').html("Nombre aléatoire compris entre " + minEntered + " inclus et " + maxEntered + " inclus : " + result); + } + } + }); + + $( "#submitCalculateAge" ).click(function() + { + let birthDate = $('#birthDateValue').val(); + + if(isEmptyValue(birthDate)) + { + $('.results').html("Vous ne pouvez pas rentré de valeur vide."); + } + else + { + let result = calculateAge(birthDate); + if(result === messageError) + { + $('.results').html(messageError); + } + else + { + $('.results').html(result); + $("#birthDateValue").click(function() { + document.location.replace("../function-views/calculateAge.php"); + }); + $("#submitCalculateAge").click(function() { + document.location.replace("../function-views/calculateAge.php"); + }); + } + } + }); + + $( "#submitConvertTemperature" ).click(function() + { + let temperatureValue = $('#temperatureValue').val(); + let degree = parseFloat(temperatureValue.slice(0, temperatureValue.length - 2)); + let unit = temperatureValue.slice(temperatureValue.length - 2); + + if(isEmptyValue(temperatureValue)) + { + $('.results').html("Vous ne pouvez pas rentré de valeur vide."); + } + else + { + let result = convertTemperature(degree, unit); + if(result === messageError) + { + $('.results').html(messageError); + } + else + { + $('.results').html(degree + " " + unit + " = " + result); + } + } + }); + + $( "#submitConvertDistance" ).click(function() + { + let firstValueEntered = $('#firstValue').val(); + let secondValueEntered = $('#secondValue').val(); + + if(isEmptyValue(firstValueEntered) || isEmptyValue(secondValueEntered)) + { + $('.results').html("Vous ne pouvez pas rentré de valeur vide."); + } + else + { + let firstValue = parseFloat(firstValueEntered.slice(0, firstValueEntered.length - 2));; + let unitFirstValue = firstValueEntered.slice(firstValueEntered.length - 2); + + let result = convertDistance(firstValue, unitFirstValue, secondValueEntered); + if(result === messageError) + { + $('.results').html(messageError); + } + else + { + $('.results').html(result); + } + } + }); + + // Fin de l'import des fonctions + }); + // Fin de l'import des variables + }); +}) \ No newline at end of file diff --git a/scripts/variables.js b/scripts/variables.js new file mode 100644 index 0000000..4f113e1 --- /dev/null +++ b/scripts/variables.js @@ -0,0 +1,18 @@ +/* LES VARIABLES */ + +const anneeJulienne = 365.25; // Jours ou 31 557 600 secondes +const uniteAstronomique = 150000000; // en km - Système : Système astronomique d'unités + +/* Variables utilisés dans les fonctions */ +const messageError = "Vous n'avez pas rentré de valeur valide."; +let timeNow = new Date(); +let utcOffset = timeNow.getTimezoneOffset(); +timeNow.setMinutes(timeNow.getMinutes() + utcOffset); + +// Les Variables de la lumière (en m) +const vitesseLumiere = 299792458; // en m/s - Symbole usuel : c +const secondeLumiere = 299792458; // en m +const minuteLumiere = 17987547480; // en m +const heureLumiere = 1079252848800; // en m +const jourLumiere = 25902068371200; // en m +const anneeLumiere = 9460730472580800; // en m \ No newline at end of file diff --git a/views/error404.php b/views/error404.php new file mode 100644 index 0000000..98ebcfb --- /dev/null +++ b/views/error404.php @@ -0,0 +1,36 @@ + + + + + + + +
+

La météo :

+

Affiche la météo et l'heure local selon la ville.

+
+ + +
+
+
+ +
+
+

+

La ville que vous avez rentré n'existe pas (dans l'API).

+
+
+ + + + \ No newline at end of file diff --git a/views/function-list.php b/views/function-list.php new file mode 100644 index 0000000..0c2c754 --- /dev/null +++ b/views/function-list.php @@ -0,0 +1,61 @@ + + + + + + + + + +
+
+

La liste des Fonctions :

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NomDescription
MétéoAffiche la météo et l'heure local selon la ville.
Nombre aléatoireGénère un nombre aléatoire entre un minimum inclus et un maximum inclus.
Quelle âge avez-vous ?Calcule l'âge de quelqu'un selon la date de naissance.
Conversion de TempératureConvertit des Degré Celsius en Degré Fahrenheit et l'inverse aussi.
Conversion de DistanceConvertit la longueur (distance) avec les unités allant de picomètre au Téramètre.
+
+
+ + + \ No newline at end of file diff --git a/views/function-views/calculateAge.php b/views/function-views/calculateAge.php new file mode 100644 index 0000000..8430f11 --- /dev/null +++ b/views/function-views/calculateAge.php @@ -0,0 +1,26 @@ + + + + + + + +
+

Quelle âge avez-vous ?

+

Calcule l'âge de quelqu'un selon la date de naissance.

+
+ + +
+
+
+ +
+
+

+

+
+
+ + + \ No newline at end of file diff --git a/views/function-views/convertDistance.php b/views/function-views/convertDistance.php new file mode 100644 index 0000000..bc325ad --- /dev/null +++ b/views/function-views/convertDistance.php @@ -0,0 +1,29 @@ + + + + + + + +
+

Conversion de Distance :

+

Convertit la longueur (distance) avec les unités allant de picomètre au Téramètre.

+
+ + +
+ + +
+
+
+ +
+
+

+

+
+
+ + + \ No newline at end of file diff --git a/views/function-views/convertTemperature.php b/views/function-views/convertTemperature.php new file mode 100644 index 0000000..2537db6 --- /dev/null +++ b/views/function-views/convertTemperature.php @@ -0,0 +1,26 @@ + + + + + + + +
+

Conversion de Température :

+

Convertit des Degré Celsius en Degré Fahrenheit et l'inverse aussi.

+
+ + +
+
+
+ +
+
+

+

+
+
+ + + \ No newline at end of file diff --git a/views/function-views/randomNumber.php b/views/function-views/randomNumber.php new file mode 100644 index 0000000..8e506f7 --- /dev/null +++ b/views/function-views/randomNumber.php @@ -0,0 +1,29 @@ + + + + + + + +
+

Nombre Aléatoire :

+

Génère un nombre aléatoire entre un minimum inclus et un maximum inclus.

+
+ + +
+ + +
+
+
+ +
+
+

+

+
+
+ + + \ No newline at end of file diff --git a/views/function-views/weatherRequest.php b/views/function-views/weatherRequest.php new file mode 100644 index 0000000..500fea3 --- /dev/null +++ b/views/function-views/weatherRequest.php @@ -0,0 +1,26 @@ + + + + + + + +
+

Météo :

+

Affiche la météo et l'heure local selon la ville.

+
+ + +
+
+
+ +
+
+

+

+
+
+ + + \ No newline at end of file