diff --git a/README.md b/README.md index 250ae38..1e8adc8 100644 --- a/README.md +++ b/README.md @@ -15,7 +15,7 @@ Le projet est disponible sur [function.divlo.fr](https://function.divlo.fr/). ## La liste des Fonctions Principales : | Nom | Description | Paramètre(s) | | -- | -- | -- | -| **weatherRequest()** | Affiche la météo et l'heure locale selon la ville grâce à l'API : [openweathermap.org](https://openweathermap.org/). | Aucun paramètre | +| **weatherRequest()** | Affiche la météo et l'heure locale grâce à l'API : [openweathermap.org](https://openweathermap.org/). | Aucun paramètre | | **randomNumber(min, max)** | Génère un nombre aléatoire entre un minimum inclus et un maximum inclus. | - min : Nombre Minimum - max : Nombre Maximum | | **calculateAge(birthDate)** | Calcule l'âge de quelqu'un selon ça date de naissance. | - birthDate : date de naissance au format (dd/mm/yyyy). | | **convertTemperature(degree,unit)** | 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) | @@ -30,7 +30,7 @@ Le projet est disponible sur [function.divlo.fr](https://function.divlo.fr/). | **convertDecimalBinaryHexadecimal(value, option)** | Convertis des nombres de différents bases. | - value : la valeur à convertir - option : En quelle base convertir | | **convertArabicToRoman(nombre)** | Convertis un nombre arabe en nombre romain. | - nombre : le nombre à convertir | | **convertRomanToArabic(str)** | Convertis un nombre romain en nombre arabe. | - str : le nombre romain à convertir | -| **armstrongNumber(nombre)** | Vérifie si un nombre fait partie des nombres d'Armstrong ou non. | - nombre : le nombre à tester | +| **armstrongNumber(nombre)** | Vérifie si un nombre fait partie des nombres d'Armstrong. | - nombre : le nombre à tester | | **stringPermutations(string)** | Retourne un tableau contenant toutes les possibilités d'anagramme d'un mot | - string : le mot | ## La liste des Fonctions Annexes : diff --git a/php/config.php b/php/config.php index 5e4a75f..43c4610 100644 --- a/php/config.php +++ b/php/config.php @@ -19,18 +19,18 @@ switch ($currentpage) { $functionlistActive = 'active'; break; case '/views/function-views/calculateAge.php': - $title = 'Quelle âge avez-vous ?'; - $description = "Calcule l'âge de quelqu'un selon ça date de naissance."; + $title = 'Quel âge avez-vous ?'; + $description = "Calcule l'âge selon la date de naissance."; $image = 'https://function.divlo.fr/img/function-image/calculateAge.png'; break; case '/views/function-views/convertDistance.php': $title = 'Conversion de Distance'; - $description = 'Convertit la longueur (distance) avec les unités allant de picomètre au Téramètre.'; + $description = 'Convertis la longueur (distance) avec les unités allant de picomètre au Téramètre.'; $image = 'https://function.divlo.fr/img/function-image/convertDistance.png'; break; case '/views/function-views/convertTemperature.php': $title = 'Conversion de Température'; - $description = "Convertit des Degré Celsius en Degré Fahrenheit et l'inverse aussi."; + $description = "Convertis des Degré Celsius en Degré Fahrenheit et l'inverse aussi."; $image = 'https://function.divlo.fr/img/function-image/convertTemperature.png'; break; case '/views/function-views/randomNumber.php': @@ -40,7 +40,7 @@ switch ($currentpage) { break; case '/views/function-views/weatherRequest.php': $title = 'Météo'; - $description = "Affiche la météo et l'heure locale selon la ville."; + $description = "Affiche la météo et l'heure locale."; $image = 'https://function.divlo.fr/img/function-image/weatherRequest.png'; break; case '/views/function-views/filterStudents.php': @@ -80,7 +80,7 @@ switch ($currentpage) { break; case '/views/function-views/heapAlgorithm.php': $title = "Heap's algorithm"; - $description = "Heap's algorithm est un algorithme qui génère toutes les permutations unique possibles d'une châine de caractère, c'est en quelque sorte toutes les possibilités d'anagramme d'un mot (en changeant de place les lettres d’un mot, permet d’en créer un nouveau), par contre les mots n'ont pas besoin d'être de vrais mots qui ont du sens."; + $description = "Heap's algorithm est un algorithme qui génère toutes les permutations unique possibles d'une chaîne de caractère, c'est en quelque sorte toutes les possibilités d'anagramme d'un mot (en changeant de place les lettres d’un mot, permet d’en créer un nouveau), par contre les mots n'ont pas besoin d'être de vrais mots qui ont du sens."; $image = 'https://function.divlo.fr/img/function-image/heapAlgorithm.png'; break; default: diff --git a/scripts/fonctions_annexes.js b/scripts/fonctions_annexes.js index e62ced7..cf4a61e 100644 --- a/scripts/fonctions_annexes.js +++ b/scripts/fonctions_annexes.js @@ -7,32 +7,26 @@ function isEmptyValue(value) { // 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; - } + if(!isNaN(num) && num >= 1000) { + return num.toString().replace(/(\d)(?=(\d{3})+(?!\d))/g, '$1 '); } - else - { - return messageError; + else { + return num; } } +// Vérifie si une string est un float (integer exclu) +function isFloat(value) { + return !isNaN(value) && value.toString().indexOf('.') != -1; +} + // 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)) - { + if(!isNaN(num)) { const number = formatNumberResult((num).toFixed(0)); return number; } - else - { + else { return messageError; } } @@ -102,7 +96,7 @@ function isValidDate(s) { const msToVerifyDate = Date.parse(splitedToVerifyDate); // Date courante - const currentDate = dateTimeUTC('0'); + let currentDate = dateTimeUTC('0'); currentDate = currentDate.substr(0,10); const currentDateSplited = currentDate.split('/'); const currentDateFormat = currentDateSplited[2] + '-' + currentDateSplited[1] + '-' + currentDateSplited[0]; diff --git a/scripts/fonctions_principales.js b/scripts/fonctions_principales.js index 1b40fe6..a0f82b6 100644 --- a/scripts/fonctions_principales.js +++ b/scripts/fonctions_principales.js @@ -1,6 +1,6 @@ /* Fonctions Principales */ -// Affiche la météo et l'heure local selon la ville. +// Affiche la météo et l'heure locale. function weatherRequest() { $.ajax({ url: '/php/getWeatherJson.php', @@ -22,8 +22,7 @@ function weatherRequest() { // Génère un nombre aléatoire entre un minimum inclus et un maximum inclus function randomNumber(min, max) { - if (!isNaN(min) && !isNaN(max)) - { + if (!isNaN(min) && !isNaN(max)) { min = Math.ceil(min); max = Math.floor(max); return Math.floor(Math.random() * (max - min +1)) + min; @@ -33,7 +32,7 @@ function randomNumber(min, max) { } } -// Calcule l'âge de quelqu'un selon la date de naissance +// Calcule l'âge de quelqu'un selon ça date de naissance function calculateAge(birthDateEntered) { // Les variables de la fonction const birthDateDay = parseInt(birthDateEntered.substring(0, 2)); @@ -57,39 +56,32 @@ function calculateAge(birthDateEntered) { const isValidDateFunction = isValidDate(birthDateDay + '/' + birthDateMonth + '/' + birthDateYear); // Vérifie si la valeur entrée correspond à une date de naissance valide - if(isValidDateFunction === true && !isNaN(ageDays)) - { + if(isValidDateFunction === true && !isNaN(ageDays)) { ageYears = formatNumberResult(ageYears); // Si c'est ton anniversaire aujourd'hui - if(birthDateDay === parseInt(day) && (parseInt(birthDateMonth) + 1) === parseInt(month)) - { + if(birthDateDay === parseInt(day) && (parseInt(birthDateMonth) + 1) === parseInt(month)) { return 'Vous avez ' + ageYears + ' ans. Joyeux Anniversaire! 🥳'; } - else - { + else { return 'Vous avez ' + ageYears + ' ans, ' + ageMonths + ' mois et ' + ageDays + ' jour(s).'; } } - else - { + else { return messageError; } } // Convertis des °C en °F et l'inverse aussi function convertTemperature(degree, unit) { - if (!isNaN(degree) && unit === "°C") - { + if (!isNaN(degree) && unit === "°C") { const temperatureValue = ((degree * 9/5) + 32) + " °F"; - return temperatureValue; + return degree + " " + unit + " = " + temperatureValue; } - else if (!isNaN(degree) && unit === "°F") - { + else if (!isNaN(degree) && unit === "°F") { const temperatureValue = (degree - 32) * 5/9 + " °C"; - return temperatureValue; + return degree + " " + unit + " = " + temperatureValue; } - else - { + else { return messageError; } } @@ -102,16 +94,14 @@ function convertDistance (firstValue, unitFirstValue, unitFinalValue) { const 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') - { + if (!isNaN(firstValue) && typeof unitFirstValue === 'string' && typeof unitFinalValue === 'string' && (index1.toString() && index2.toString()) != '-1') { // Conversion des longueurs : const difference = index1 - index2; const result = firstValue*Math.pow(10,difference); const response = 'Conversion de longueur : ' + formatNumberResult(firstValue).toString() + ' ' + unitFirstValue + ' = ' + formatNumberResult(result) + ' ' + unitFinalValue; return response; } - else - { + else { return messageError; } } @@ -120,19 +110,16 @@ function convertDistance (firstValue, unitFirstValue, unitFinalValue) { function filterStudents(filteredLetter, students) { let filteredStudents = []; - for(let i = 0; i < students.length; i++) - { + for(let i = 0; i < students.length; i++) { let studentBoucle = capitalize(students[i]); if (studentBoucle[0] === filteredLetter) { filteredStudents.push(studentBoucle); } } - if (filteredStudents.length === 1) - { + if (filteredStudents.length === 1) { return ("Prénom qui commence par " + filteredLetter + " : " + filteredStudents + '.'); } - else if (filteredStudents.length >= 2) - { + else if (filteredStudents.length >= 2) { // Affiche la liste des prénoms... const last = filteredStudents[filteredStudents.length - 1]; // Accéde au dernier élément du tableau const totalfilteredLetterStudents = filteredStudents.length; @@ -140,8 +127,7 @@ function filterStudents(filteredLetter, students) // filteredStudents.join(', ') permet de rajouter un espace entre chaque élément du tableau return ("Prénoms qui commence par " + filteredLetter + " (" + totalfilteredLetterStudents + ") : " + filteredStudents.join(', ') + ' et ' + last + '.'); } - else - { + else { return ("Il n'y a pas de prénom commencant par " + filteredLetter + "."); } } @@ -340,7 +326,7 @@ function convertRomanToArabic(str) { return result; } -// Vérifie si un nombre fait partie des nombres d'Armstrong ou non +// Vérifie si un nombre fait partie des nombres d'Armstrong function armstrongNumber(number) { let numberString = number.toString(); let numberStringLength = numberString.length; diff --git a/scripts/main.js b/scripts/main.js index 7f8e4a2..0b71ba0 100644 --- a/scripts/main.js +++ b/scripts/main.js @@ -39,8 +39,7 @@ $(function () { $("#birthDateValue").bind("keyup change", function() { const birthDateEntered = $('#birthDateValue').val(); - const result = calculateAge(birthDateEntered); - $('.results').html(result); + $('.results').html(calculateAge(birthDateEntered)); }); $("#submitConvertTemperature").click(function() @@ -48,21 +47,11 @@ $(function () { const temperatureValue = $('#temperatureValue').val(); const degree = parseFloat(temperatureValue.slice(0, temperatureValue.length - 2)); const unit = temperatureValue.slice(temperatureValue.length - 2); - if(isEmptyValue(temperatureValue)) - { + if(isEmptyValue(temperatureValue)) { $('.results').html(emptyMessageError); } - else - { - const result = convertTemperature(degree, unit); - if(result === messageError) - { - $('.results').html(messageError); - } - else - { - $('.results').html(degree + " " + unit + " = " + result); - } + else { + $('.results').html(convertTemperature(degree, unit)); } }); @@ -71,15 +60,12 @@ $(function () { let firstValue = $('#firstValue').val(); const unitFirstValue = $("#firstValueUnit option:selected").text(); const secondValue = $("#secondValue option:selected").text(); - if(isEmptyValue(firstValue) || isEmptyValue(secondValue)) - { + if(isEmptyValue(firstValue) || isEmptyValue(secondValue)) { $('.results').html(emptyMessageError); } - else - { + else { firstValue = parseFloat(firstValue.replace(/\s/g,'')); - const result = convertDistance(firstValue, unitFirstValue, secondValue); - $('.results').html(result); + $('.results').html(convertDistance(firstValue, unitFirstValue, secondValue)); } }); @@ -87,16 +73,13 @@ $(function () { { const nameEntered = $('#nameEntered').val(); let filteredLetter = $("#filteredLetter").val(); - if(isEmptyValue(nameEntered) || isEmptyValue(filteredLetter)) - { + if(isEmptyValue(nameEntered) || isEmptyValue(filteredLetter)) { $('.results').html(emptyMessageError); } - else if(filteredLetter.length === 1) - { + else if(filteredLetter.length === 1) { const students = nameEntered.split(', '); filteredLetter = capitalize(filteredLetter); - const result = filterStudents(filteredLetter, students); - $('.results').html(result); + $('.results').html(filterStudents(filteredLetter, students)); } else { $('.results').html(messageError); @@ -129,13 +112,11 @@ $(function () { let value = $('#value').val(); const currencyOfTheValue = $("#currencyOfTheValue option:selected").val(); const currencyAfter = $("#currencyAfter option:selected").val(); - if(isEmptyValue(value) || isNaN(parseFloat(value))) - { + if(isEmptyValue(value) || isNaN(parseFloat(value))) { $('.results').html(emptyMessageError); } - else - { - let url = 'https://api.exchangeratesapi.io/latest?base=' + currencyOfTheValue; + else { + const url = 'https://api.exchangeratesapi.io/latest?base=' + currencyOfTheValue; value = parseFloat(value); convertCurrency(value, currencyAfter, url); } @@ -145,8 +126,7 @@ $(function () { { const value = $('#value').val(); const option = $("#option option:selected").val(); - if(isEmptyValue(value)) - { + if(isEmptyValue(value)) { $('.results').html(messageError); } else @@ -183,14 +163,15 @@ $(function () { $("#submitConvertRomanArabicNumbers").click(function() { let numbersValue = $('#numbersArabic').val(); + numbersValue = numbersValue.replace(/\s/g,''); const convertNumberType = $("#convertNumberType option:selected").text(); if(isEmptyValue(numbersValue)) { $('.results').html(emptyMessageError); } - else if (!isNaN(parseInt(numbersValue)) && convertNumberType === "Nombre Romain") { - const result = convertArabicToRoman(parseInt(numbersValue.replace(/\s/g,''))); - let numbersValueFormat = formatNumberResult(numbersValue.replace(/\s/g,'')); - if (numbersValueFormat === messageError || result === messageError) { + else if (!isNaN(Number(numbersValue)) && convertNumberType === "Nombre Romain") { + const result = convertArabicToRoman(parseInt(numbersValue)); + let numbersValueFormat = formatNumberResult(numbersValue); + if (result === messageError || isFloat(numbersValue)) { $('.results').html(messageError); } else { $('.results').html(`${numbersValueFormat} s'écrit ${result} en chiffres romains.`); @@ -218,9 +199,8 @@ $(function () { { let numbersValue = $('#numberToTest').val(); numbersValue = parseInt(numbersValue.replace(/\s/g,'')); - if (!isNaN(numbersValue) && numbersValue >= 0) { - const result = armstrongNumber(numbersValue); - $('.results').html(result); + if (!isNaN(numbersValue) && numbersValue >= 0) { + $('.results').html(armstrongNumber(numbersValue)); } else { $('.results').html(messageError); @@ -230,12 +210,10 @@ $(function () { $("#submitHeapAlgorithm").click(function() { const value = $('#value').val(); - if(isEmptyValue(value)) - { + if(isEmptyValue(value)) { $('.results').html(emptyMessageError); } - else - { + else { const stringPermutationsResult = stringPermutations(value); let result = ""; for (element in stringPermutationsResult) { @@ -270,7 +248,7 @@ $(function () { }; $('.datepicker').datepicker({ language: 'fr', - autoclose: true, + autoclose: false, todayHighlight: true }) diff --git a/views/function-list.php b/views/function-list.php index 17d2b66..348b4c4 100644 --- a/views/function-list.php +++ b/views/function-list.php @@ -15,7 +15,7 @@
Calcule l'âge de quelqu'un selon ça date de naissance.
+Calcule l'âge selon la date de naissance.
Convertit des Degré Celsius en Degré Fahrenheit et l'inverse aussi.
+Convertis des Degré Celsius en Degré Fahrenheit et l'inverse aussi.
Convertit la longueur (distance) avec les unités allant de picomètre au Téramètre.
+Convertis la longueur (distance) avec les unités allant de picomètre au Téramètre.
Génère toutes les permutations unique possibles d'une châine de caractère (en changeant de place les lettres du mot, permet d’en créer un nouveau qui n'a pas forcément de sens).
+Génère toutes les permutations unique possibles d'une chaîne de caractère (en changeant de place les lettres du mot, permet d’en créer un nouveau qui n'a pas forcément de sens).
Pour une meilleure précision, je recommande de préciser le pays de la ville.
- La météo est récupérée grâce à l'API openweathermap.org.
Il faut rentré le nom anglais de la ville (si il est différent qu'en français).
+ La météo est récupérée grâce à l'API openweathermap.org.
Il faut rentrer le nom anglais de la ville (si il est différent qu'en français).
Exemples : Paris, FR - London, UK - Moscow, RU - etc.