Code Documentation

This commit is contained in:
Divlo
2019-11-11 17:55:52 +01:00
parent 7da569db96
commit 4056781fac
32 changed files with 18680 additions and 108 deletions

View File

@ -1,11 +1,23 @@
/* Fonctions Annexes */
// Vérifie si une valeur est vide
/**
* @function isEmptyValue
* @description Vérifie si une valeur est vide.
* @param {string} value
* @returns {boolean}
* @example isEmptyValue(null) → true
*/
function isEmptyValue(value) {
return value === '' || value === null || value === undefined;
}
}
// Formate les nombres avec des espaces (ex : 76120 = 76 120)
/**
* @function formatNumberResult
* @description Formate un nombre avec des espaces.
* @param {number} num
* @returns {(number|string)} - Le nombre formaté soit en nombre ou soit en string si supérieur à 1000 car pour 1000 par exemple formatNumberResult renvoie '1 000'
* @example formatNumberResult(76120) → '76 120'
*/
function formatNumberResult(num) {
if(!isNaN(num) && num >= 1000) {
return num.toString().replace(/(\d)(?=(\d{3})+(?!\d))/g, '$1 ');
@ -13,32 +25,54 @@ function formatNumberResult(num) {
else {
return num;
}
}
}
// Vérifie si une string est un float (integer exclu)
/**
* @function isFloat
* @description Vérifie si une string est un float (integer exclu).
* @param {number} value
* @returns {boolean}
* @example isFloat(76120.474) → true
*/
function isFloat(value) {
return !isNaN(value) && value.toString().includes('.');
}
}
// 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) {
return formatNumberResult((num).toFixed(0));
}
// Majuscule à la 1ère lettre d'une string
function capitalize (s) {
/**
* @function capitalize
* @description Majuscule à la 1ère lettre d'une string.
* @param {string} s
* @returns {string}
* @example capitalize('hello world!') → 'Hello world!'
*/
function capitalize(s) {
if (typeof s !== 'string') return ''
return s.charAt(0).toUpperCase() + s.slice(1)
}
// Donne la date et l'heure selon l'UTC (Universal Time Coordinated)
/**
* @function dateTimeUTC
* @description Donne la date et l'heure selon l'UTC (Universal Time Coordinated).
* @requires {@link fonctions_annexes.js: showDateTime}
* @requires {@link variables.js: timeNow, utcOffset, timeNow.setMinutes(timeNow.getMinutes() + utcOffset)}
* @param {string} utc Heure de décalage par rapport à l'UTC
* @returns {function} → showDateTime(enteredOffset) → Retourne l'exécution de la fonction showDateTime
* @example dateTimeUTC('0')
*/
function dateTimeUTC(utc) {
const enteredOffset = parseFloat(utc)*60;
timeNow.setMinutes(timeNow.getMinutes() + enteredOffset);
return showDateTime(enteredOffset);
}
}
// Affiche la date et l'heure (format : dd/mm/yyyy - 00:00:00)
/**
* @function showDateTime
* @description Affiche la date et l'heure (format : dd/mm/yyyy - 00:00:00).
* @requires {@link fonctions_annexes.js: showDateTime}
* @param {string} utc Heure de décalage par rapport à l'UTC
* @returns {object} Retourne un objet contenant l'année, le mois, le jour, l'heure, les minutes, les secondes et la date formaté
* @example dateTimeUTC('0') → dateTimeUTC vous renvoie l'exécution de showDateTime
*/
function showDateTime(enteredOffset) {
const year = timeNow.getFullYear();
const month = ('0'+(timeNow.getMonth()+1)).slice(-2);
@ -62,7 +96,13 @@ function showDateTime(enteredOffset) {
return objectDateTime;
}
// Affiche l'heure en temps réel
/**
* @function realDateTime
* @description Affiche l'heure en temps réel.
* @param {string} id
* @returns {boolean} true → Toujours true
* @example window.onload = realDateTime('realDateTime') → va afficher l'heure en temps réel au chargement de la page dans la balise avec l'id realDateTime
*/
function realDateTime(id) {
const realDateTimeNow = new Date;
// const year = realDateTimeNow.getFullYear();
@ -79,7 +119,16 @@ function realDateTime(id) {
return true;
}
// Vérifie si une date est valide par rapport à la date d'aujourd'hui
/**
* @function isValidDate
* @description Vérifie si une date est valide (si la variable verifyDate a déjà exister avant la variable currentDate).
* @param {string} verifyDate (format : dd/mm/yyyy) sachant qu'il faut faire -1 au mois car de 0 à 11 donc par exemple 14/12/2019 sera le 14 novembre 2019
* @param {string} currentDate (format : dd/mm/yyyy) pas besoin de faire -1 au mois donc par exemple 14/12/2019 sera le 14 décembre 2019
* @returns {boolean}
* @example
* isValidDate('10/11/2019', '11/11/2019') → false → Comparaison entre le 10 décembre 2019 et le 11 novembre 2019
* isValidDate('10/10/2019', '11/11/2019') → true → Comparison entre le 10 novembre 2019 et le 11 novembre 2019
*/
function isValidDate(verifyDate, currentDate) {
// Date à vérifier
const toVerifyDate = verifyDate.split('/');
@ -101,7 +150,12 @@ function isValidDate(verifyDate, currentDate) {
}
}
// Créer un cookie de session
/**
* @function createSessionCookie
* @description Créer un cookie de session.
* @param {string} name Nom du cookie
* @param {string} value Valeur du cookie
*/
function createSessionCookie(name, value) {
document.cookie = escape(name) + "=" + escape(value) + " ; path=/";
}

View File

@ -1,6 +1,17 @@
/* Fonctions Principales */
// Affiche la météo et l'heure locale.
/**
* @function weatherRequest
* @description Affiche la météo et l'heure locale grâce à l'API : openweathermap.org.
* Le nom de la ville se récupère en Javascript qui créé un cookie pour récupérer cette variable en php.
* Ainsi PHP va récupérer le JSON de l'api openweathermap.org puis ajax va se charger d'afficher le résultat.
* Plus d'informations : {@link /scripts/main.js} et {@link /php/getWeatherJson.php}
* @requires {@link fonctions_annexes.js: formatNumberResult, dateTimeUTC, showDateTime, capitalize}
* @see {@link https://jquery.com/} Requête en AJAX avec jQuery
* @see {@link https://openweathermap.org/} API de météo
* @example
* Ajoute au DOM de la page dans la div .results, la météo de la ville demandée.
*/
function weatherRequest() {
$.ajax({
url: '/php/getWeatherJson.php',
@ -20,7 +31,14 @@ function weatherRequest() {
});
}
// Génère un nombre aléatoire entre un minimum inclus et un maximum inclus
/**
* @function randomNumber
* @description Génère un nombre aléatoire entre un minimum inclus et un maximum inclus.
* @param {number} min Nombre Minimum
* @param {number} max Nombre Maximum
* @returns {number} Nombre aléatoire
* @example randomNumber(1, 2) → retourne soit 1 ou 2
*/
function randomNumber(min, max) {
if (!isNaN(min) && !isNaN(max)) {
min = Math.ceil(min);
@ -30,9 +48,18 @@ function randomNumber(min, max) {
else {
return messageError;
}
}
}
// Calcule l'âge de quelqu'un selon ça date de naissance
/**
* @function calculateAge
* @description Calcule l'âge de quelqu'un selon ça date de naissance.
* @requires {@link fonctions_annexes.js: formatNumberResult, isValidDate}
* @requires {@link "external:moment.js"}
* @see {@link https://momentjs.com/}
* @param {string} birthDateEntered - Date de naissance (dd/mm/yyyy)
* @returns {string} - L'âge en jours, mois et années
* @example calculateAge('31/03/2003')
*/
function calculateAge(birthDateEntered) {
// Les variables de la fonction
const birthDateDay = parseInt(birthDateEntered.substring(0, 2));
@ -69,9 +96,16 @@ function calculateAge(birthDateEntered) {
else {
return messageError;
}
}
}
// Convertis des °C en °F et l'inverse aussi
/**
* @function convertTemperature
* @description Convertis des °C en °F et l'inverse aussi.
* @param {number} degree - Nombre de degrès
* @param {string} unit - Unité du nombre (°C ou °F)
* @returns {string} - degree unit = temperatureValue
* @example convertTemperature(23, '°C') → 23 °C = 73.4 °F
*/
function convertTemperature(degree, unit) {
if (!isNaN(degree) && unit === "°C") {
const temperatureValue = ((degree * 9/5) + 32) + " °F";
@ -84,9 +118,17 @@ function convertTemperature(degree, unit) {
else {
return messageError;
}
}
}
// Convertis la longueur (distance) avec les unités allant de picomètre au Téramètre
/**
* @function convertDistance
* @description Convertis la longueur (distance) avec les unités allant de picomètre au Téramètre.
* @param {number} firstValue - Le nombre que vous voulez convertir
* @param {string} unitFirstValue - L'unité du nombre que vous voulez convertir
* @param {string} unitFinalValue - L'unité de votre nombre après la conversion
* @returns {string} - Conversion de longueur : firstValue unitFirstValue = result
* @example convertDistance(500, 'cm', 'm') → Conversion de longueur : 500 cm = 5 m
*/
function convertDistance (firstValue, unitFirstValue, unitFinalValue) {
const 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"];
@ -98,15 +140,21 @@ function convertDistance (firstValue, unitFirstValue, unitFinalValue) {
// 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;
return 'Conversion de longueur : ' + formatNumberResult(firstValue).toString() + ' ' + unitFirstValue + ' = ' + formatNumberResult(result) + ' ' + unitFinalValue;
}
else {
return messageError;
}
}
}
// Affiche uniquement les prénoms (qui sont dans la liste) qui commencent par la lettre souhaitée
/**
* @function filterStudents
* @description Affiche uniquement les prénoms (qui sont dans la liste) qui commencent par la lettre souhaitée.
* @param {string} filteredLetter - La lettre à filtré
* @param {array} students - La liste des prénoms
* @returns {string} - Prénoms qui commence par filteredLetter (totalfilteredLetterStudents) : filteredStudents
* @example filterStudents('P', ['Prénom1', 'Prénom2', 'Divlo']) → Prénoms qui commence par P (2) : Prénom1 et Prénom2.
*/
function filterStudents(filteredLetter, students)
{
let filteredStudents = [];
@ -130,16 +178,37 @@ function filterStudents(filteredLetter, students)
else {
return ("Il n'y a pas de prénom commencant par " + filteredLetter + ".");
}
}
}
// Génère aléatoirement une citation ou un proverbe
/**
* @function getRandomQuote
* @description Génère aléatoirement une citation ou un proverbe.
* @requires {@link variables.js: quotes}
* @requires {@link fonctions_principales.js: randomNumber}
* @returns {string} - une citation au hasard à partir de la constante 'quotes' dans variables.js
* @example getRandomQuote() → " Ne fais jamais rien contre ta conscience, même si l'Etat te le demande. " <br> <br> - Albert Einstein
*/
function getRandomQuote() {
const randomNbr = randomNumber(0, (quotes.length - 1));
const randomQuotes = quotes[randomNbr];
return '" ' + randomQuotes["quote"] + ' " <br> <br> - ' + randomQuotes["source"];
}
}
// Convertis une valeur dans une devise dans une autre devise
/**
* @function convertCurrency
* @description Convertis une valeur dans une devise dans une autre devise grâce à l'API exchangeratesapi.io.
* @requires {@link fonctions_annexes.js: formatNumberResult}
* @requires {@link variables.js: correspondancesMonnaie}
* @see {@link https://jquery.com/} Requête en AJAX avec jQuery
* @see {@link https://api.exchangeratesapi.io/} API de taux de change
* @param {number} value - la valeur à convertir
* @param {string} currency - la devise à avoir après conversion
* @param {string} url - l'url de la requête à l'API en fonction du paramètre dans l'url '?base='
* @example convertCurrency(50, "$ Américain", "https://api.exchangeratesapi.io/latest?base=EUR")
* Ajoute au DOM de la page dans la div .results et .rateDate :
* 50 EUR = 55.17 $ Américain
* Dernier rafraîchissement du taux d'échange : 08/11/2019
*/
function convertCurrency(value, currency, url) {
function currencyTest(currencyToTest) {
for (let index in correspondancesMonnaie) {
@ -158,11 +227,8 @@ function convertCurrency(value, currency, url) {
if (currencySymboleAPI === undefined) {
currencySymboleAPI = 1;
}
const exchangeRateYear = jsonFixer.date[0] + jsonFixer.date[1] + jsonFixer.date[2] + jsonFixer.date[3];
const exchangeRateMonth = jsonFixer.date[5] + jsonFixer.date[6];
const exchangeRateDay = jsonFixer.date[8] + jsonFixer.date[9];
$('.results').html(formatNumberResult(value) + ' ' + jsonFixer.base + ' = ' + formatNumberResult((currencySymboleAPI * value).toFixed(2)) + ' ' + currency);
$('.rateDate').html(`Dernier rafraîchissement du taux d'échange : ${exchangeRateDay}/${exchangeRateMonth}/${exchangeRateYear}`);
$('.rateDate').html(`Dernier rafraîchissement du taux d'échange : ${jsonFixer.date[8] + jsonFixer.date[9]}/${jsonFixer.date[5] + jsonFixer.date[6]}/${jsonFixer.date[0] + jsonFixer.date[1] + jsonFixer.date[2] + jsonFixer.date[3]}`);
}
catch (error) {
$('.results').html(messageError);
@ -172,7 +238,13 @@ function convertCurrency(value, currency, url) {
}
// Convertis des nombres de différentes bases et convertis en UTF-8. (source : http://jsfiddle.net/47zwb41o)
// DecimalToBinary
/**
* @function decimalToBinary
* @description Convertis un nombre décimal en binaire.
* @param {string} value - Le nombre à convertir en string
* @returns {string} - Le nombre en binaire
* @example decimalToBinary('2') → '10'
*/
function decimalToBinary(value) {
value = value.replace(" ", "");
value = Number(value);
@ -181,18 +253,32 @@ function decimalToBinary(value) {
} else {
return value.toString(2);
}
}
// BinaryToDecimal
}
/**
* @function binaryToDecimal
* @description Convertis un nombre binaire en décimal.
* @requires {@link fonctions_annexes.js: formatNumberResult}
* @param {string} value - Le nombre à convertir
* @returns {(number|string)} - Le nombre en décimal soit en nombre ou soit en string si supérieur à 1000 car pour 1000 par exemple formatNumberResult renvoie '1 000'
* @example binaryToDecimal('10') → 2
*/
function binaryToDecimal(value) {
value = Number(value);
const result = formatNumberResult(parseInt(value, 2));
const result = parseInt(Number(value), 2);
if (isNaN(result)) {
return messageError;
} else {
return result
return formatNumberResult(result);
}
}
// DecimalToHexadecimal
}
/**
* @function decimalToHexadecimal
* @description Convertis un nombre décimal en hexadécimal.
* @param {string} value - Le nombre à convertir
* @returns {string} - Le nombre en hexadécimal
* @example decimalToHexadecimal('15') → 'F'
*/
function decimalToHexadecimal(value) {
value = value.replace(" ", "");
value = Number(value);
@ -201,17 +287,32 @@ function decimalToHexadecimal(value) {
} else {
return value.toString(16).toUpperCase();
}
}
// HexadecimalToDecimal
}
/**
* @function hexadecimalToDecimal
* @description Convertis un nombre hexadécimal en décimal.
* @requires {@link fonctions_annexes.js: formatNumberResult}
* @param {string} value - Le nombre à convertir
* @returns {(number|string)} - Le nombre en décimal soit en nombre ou soit en string si supérieur à 1000 car pour 1000 par exemple formatNumberResult renvoie '1 000'
* @example hexadecimalToDecimal('F') → 15
*/
function hexadecimalToDecimal(value) {
const result = formatNumberResult(parseInt(value, 16));
const result = parseInt(value, 16);
if (isNaN(result)) {
return messageError;
} else {
return result;
return formatNumberResult(result);
}
}
// BinaryToHexadecimal
}
/**
* @function binaryToHexadecimal
* @description Convertis un nombre binaire en hexadécimal.
* @param {string} value - Le nombre à convertir
* @returns {string} - Le nombre en hexadécimal
* @example binaryToHexadecimal('1111') → 'F'
*/
function binaryToHexadecimal(value) {
value = Number(value);
value = parseInt(value, 2);
@ -221,17 +322,30 @@ function binaryToHexadecimal(value) {
return parseInt(value).toString(16).toUpperCase();
}
}
// HexadecimalToBinary
/**
* @function hexadecimalToBinary
* @description Convertis un nombre hexadécimal en binaire.
* @param {string} value - Le nombre à convertir
* @returns {string} - Le nombre en binaire
* @example hexadecimalToBinary('F') → '1111'
*/
function hexadecimalToBinary(value) {
value = Number(value);
value = parseInt(value, 16);
if (isNaN(value)) {
return messageError;
} else {
return parseInt(value).toString(2);
}
}
// Each letters has its own codePoint (Unicode Code)
}
/**
* @function textToNumberUnicode
* @description Convertis chaque caractère d'une string en codePoint Unicode.
* @param {string} value - La chaîne de caractère à convertir
* @returns {string}
* @example textToNumberUnicode('abc') → '97 98 99'
*/
function textToNumberUnicode(string) {
try {
let resultat = "";
@ -244,7 +358,14 @@ function textToNumberUnicode(string) {
return messageError;
}
}
// Each codePoint has its own letter
/**
* @function numberUnicodeToText
* @description Convertis chaque codePoint Unicode en caractère.
* @param {string} string - Nombre Unicode à convertir espacé par un espace à chaque fois
* @returns {string}
* @example numberUnicodeToText('97 98 99') → 'abc'
*/
function numberUnicodeToText(string) {
try {
const array = string.split(" ");
@ -258,7 +379,14 @@ function numberUnicodeToText(string) {
return messageError;
}
}
// Texte en Binaire (UTF-8)
/**
* @function textToBinary
* @description Convertis un Texte en Binaire (UTF-8).
* @param {string} s - La chaîne de caractère à convertir
* @returns {string}
* @example textToBinary('abc') → '01100001 01100010 01100011'
*/
function textToBinary(s) {
try {
s = unescape( encodeURIComponent(s));
@ -273,7 +401,14 @@ function textToBinary(s) {
return s;
}
}
// Binaire (UTF-8) en Texte
/**
* @function binaryToText
* @description Convertis du Binaire (UTF-8) en Texte.
* @param {string} s - La chaîne de caractère contenant tous les octets à convertir
* @returns {string}
* @example binaryToText('01100001 01100010 01100011') → 'abc'
*/
function binaryToText(s){
try {
s = s.replace(/\s/g,'')
@ -286,8 +421,16 @@ function binaryToText(s){
} catch (error) {
return s;
}
}
// Texte en Hexadécimal (UTF-8)
}
/**
* @function textToHexadecimal
* @description Convertis un Texte en Hexadécimal (UTF-8).
* @param {string} s - La chaîne de caractère à convertir
* @returns {string}
* @example textToHexadecimal('abc') → '61 62 63'
*/
function textToHexadecimal (s) {
try {
s = unescape( encodeURIComponent( s ) );
@ -303,7 +446,14 @@ function textToHexadecimal (s) {
return s;
}
}
// Hexadécimal (UTF-8) en Texte
/**
* @function hexadecimalToText
* @description Convertis de l'Hexadécimal (UTF-8) en Texte.
* @param {string} s - La chaîne de caractère contenant tous les nombres Hexadécimal à convertir
* @returns {string}
* @example hexadecimalToText('61 62 63') → 'abc'
*/
function hexadecimalToText (s) {
try {
s = s.replace(/\s/g,'');
@ -314,7 +464,14 @@ function hexadecimalToText (s) {
}
}
// Convertis un nombre arabe en nombre romain
/**
* @function convertArabicToRoman
* @description Convertis un nombre arabe en nombre romain.
* @requires {@link variables.js: correspondancesRomainArabe}
* @param {number} nombre - Le nombre arabe à convertir
* @returns {string}
* @example convertArabicToRoman(24) → 'XXIV'
*/
function convertArabicToRoman(nombre) {
// Initialisation de la variable qui va contenir le résultat de la conversion
let chiffresRomains = "";
@ -342,16 +499,23 @@ function convertArabicToRoman(nombre) {
correspondancesRomainArabe.forEach(correspondance => {
extraireChiffreRomain(correspondance[0], correspondance[1]);
})
});
if (chiffresRomains === '') {
return messageError;
} else {
return chiffresRomains;
}
}
}
// Convertis un nombre romain en nombre arabe
/**
* @function convertRomanToArabic
* @description Convertis un nombre romain en nombre arabe.
* @requires {@link variables.js: correspondancesRomainArabe}
* @param {string} str - Le nombre romain à convertir
* @returns {number}
* @example convertRomanToArabic('XXIV') → 24
*/
function convertRomanToArabic(str) {
let result = 0;
for (let i = 0;i < correspondancesRomainArabe.length; i++) {
@ -366,9 +530,15 @@ function convertRomanToArabic(str) {
result = 0;
}
return result;
}
}
// Vérifie si un nombre fait partie des nombres d'Armstrong
/**
* @function armstrongNumber
* @description Vérifie si un nombre fait partie des nombres d'Armstrong.
* @param {number} number - Le nombre à tester
* @returns {string}
* @example armstrongNumber(153) → 153 est un nombre d'Armstrong, car 1<sup>3</sup> + 5<sup>3</sup> + 3<sup>3</sup> = 153.
*/
function armstrongNumber(number) {
let numberString = number.toString();
let numberStringLength = numberString.length;
@ -386,9 +556,15 @@ function armstrongNumber(number) {
} else {
return `${number} n'est pas un nombre d'Armstrong, car ${resultString.slice(2)} = ${formatNumberResult(result)}.`;
}
}
}
// Retourne un tableau contenant toutes les possibilités d'anagramme d'un mot
/**
* @function stringPermutations
* @description Retourne un tableau contenant toutes les possibilités d'anagramme d'un mot.
* @param {string} string - La chaîne de caractère à permuter
* @returns {array}
* @example stringPermutations('abc') → ["abc", "acb", "bac", "bca", "cab", "cba"]
*/
function stringPermutations(string) {
let results = [];
@ -406,4 +582,4 @@ function stringPermutations(string) {
}
}
return results;
}
}