Hotfix: Réorganisation fonctions principales

This commit is contained in:
Divlo 2019-12-31 17:49:19 +01:00
parent c9d6f4d5c7
commit d80ab61be4
40 changed files with 1099 additions and 1019 deletions

View File

@ -28,8 +28,13 @@
<script defer src="/scripts/libs/marked.min.js"></script> <script defer src="/scripts/libs/marked.min.js"></script>
<script defer src="/scripts/variables.js"></script> <script defer src="/scripts/variables.js"></script>
<script defer src="/scripts/fonctions_annexes.js"></script> <script defer src="/scripts/fonctions_annexes.js"></script>
<script defer src="/scripts/fonctions_principales.js"></script>
<script defer src="/scripts/main.js"></script> <script defer src="/scripts/main.js"></script>
<script defer src="/scripts/executeFunction.js"></script> <script defer src="/scripts/executeFunction.js"></script>
<?php
// Ajouts des scripts personnalisés pour chaque page
foreach ($scripts as $script) {
echo $script;
}
?>
</body> </body>
</html> </html>

View File

@ -6,6 +6,7 @@ $indexActive = '';
$functionlistActive = ''; $functionlistActive = '';
$feedbackActive = ''; $feedbackActive = '';
$toDoListCSS = false; $toDoListCSS = false;
$scripts = array();
switch ($currentpage) { switch ($currentpage) {
case '/index.php': case '/index.php':
@ -35,36 +36,43 @@ switch ($currentpage) {
$title = 'Quel âge avez-vous ?'; $title = 'Quel âge avez-vous ?';
$description = "Calcule l'âge selon la date de naissance."; $description = "Calcule l'âge selon la date de naissance.";
$image = 'https://function.divlo.fr/img/function-image/calculateAge.png'; $image = 'https://function.divlo.fr/img/function-image/calculateAge.png';
$scripts = array('<script type="module" defer src="/scripts/execute-function/calculateAge_DOM.js"></script>');
break; break;
case '/views/function-views/convertDistance.php': case '/views/function-views/convertDistance.php':
$title = 'Conversion de Distance'; $title = 'Conversion de Distance';
$description = 'Convertis 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'; $image = 'https://function.divlo.fr/img/function-image/convertDistance.png';
$scripts = array('<script type="module" defer src="/scripts/execute-function/convertDistance_DOM.js"></script>');
break; break;
case '/views/function-views/convertTemperature.php': case '/views/function-views/convertTemperature.php':
$title = 'Conversion de Température'; $title = 'Conversion de Température';
$description = "Convertis 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'; $image = 'https://function.divlo.fr/img/function-image/convertTemperature.png';
$scripts = array('<script type="module" defer src="/scripts/execute-function/convertTemperature_DOM.js"></script>');
break; break;
case '/views/function-views/randomNumber.php': case '/views/function-views/randomNumber.php':
$title = 'Nombre Aléatoire'; $title = 'Nombre Aléatoire';
$description = 'Génère un nombre aléatoire entre un minimum inclus et un maximum inclus.'; $description = 'Génère un nombre aléatoire entre un minimum inclus et un maximum inclus.';
$image = 'https://function.divlo.fr/img/function-image/randomNumber.png'; $image = 'https://function.divlo.fr/img/function-image/randomNumber.png';
$scripts = array('<script type="module" defer src="/scripts/execute-function/randomNumber_DOM.js"></script>');
break; break;
case '/views/function-views/weatherRequest.php': case '/views/function-views/weatherRequest.php':
$title = 'Météo'; $title = 'Météo';
$description = "Affiche la météo et l'heure locale."; $description = "Affiche la météo et l'heure locale.";
$image = 'https://function.divlo.fr/img/function-image/weatherRequest.png'; $image = 'https://function.divlo.fr/img/function-image/weatherRequest.png';
$scripts = array('<script type="module" defer src="/scripts/execute-function/weatherRequest_DOM.js"></script>');
break; break;
case '/views/function-views/filterStudents.php': case '/views/function-views/filterStudents.php':
$title = 'Trie les prénoms par leur première lettre'; $title = 'Trie les prénoms par leur première lettre';
$description = "Affiche uniquement les prénoms (qui sont dans la liste) qui commencent par la lettre souhaitée."; $description = "Affiche uniquement les prénoms (qui sont dans la liste) qui commencent par la lettre souhaitée.";
$image = 'https://function.divlo.fr/img/function-image/filterStudents.png'; $image = 'https://function.divlo.fr/img/function-image/filterStudents.png';
$scripts = array('<script type="module" defer src="/scripts/execute-function/filterStudents_DOM.js"></script>');
break; break;
case '/views/function-views/randomQuote.php': case '/views/function-views/randomQuote.php':
$title = 'Générateur de citation'; $title = 'Générateur de citation';
$description = "Génère aléatoirement une citation ou un proverbe."; $description = "Génère aléatoirement une citation ou un proverbe.";
$image = 'https://function.divlo.fr/img/function-image/randomQuote.png'; $image = 'https://function.divlo.fr/img/function-image/randomQuote.png';
$scripts = array('<script type="module" defer src="/scripts/execute-function/randomQuote_DOM.js"></script>');
break; break;
case '/views/quote-list.php': case '/views/quote-list.php':
$title = 'Liste des citations'; $title = 'Liste des citations';
@ -75,26 +83,31 @@ switch ($currentpage) {
$title = 'Conversion de devise'; $title = 'Conversion de devise';
$description = "Convertis une valeur dans une devise dans une autre devise."; $description = "Convertis une valeur dans une devise dans une autre devise.";
$image = 'https://function.divlo.fr/img/function-image/convertCurrency.png'; $image = 'https://function.divlo.fr/img/function-image/convertCurrency.png';
$scripts = array('<script type="module" defer src="/scripts/execute-function/convertCurrency_DOM.js"></script>');
break; break;
case '/views/function-views/convertEncoding.php': case '/views/function-views/convertEncoding.php':
$title = "Conversion des Encodages de caractères"; $title = "Conversion des Encodages de caractères";
$description = "Convertis des nombres de différentes bases et convertis en UTF-8."; $description = "Convertis des nombres de différentes bases et convertis en UTF-8.";
$image = 'https://function.divlo.fr/img/function-image/convertEncoding.png'; $image = 'https://function.divlo.fr/img/function-image/convertEncoding.png';
$scripts = array('<script type="module" defer src="/scripts/execute-function/convertEncoding_DOM.js"></script>');
break; break;
case '/views/function-views/convertRomanArabicNumbers.php': case '/views/function-views/convertRomanArabicNumbers.php':
$title = "Conversion d'un nombre arabe en nombre romain"; $title = "Conversion d'un nombre arabe en nombre romain";
$description = "Convertis un nombre arabe en nombre romain (et l'inverse aussi)."; $description = "Convertis un nombre arabe en nombre romain (et l'inverse aussi).";
$image = 'https://function.divlo.fr/img/function-image/convertRomanArabicNumbers.png'; $image = 'https://function.divlo.fr/img/function-image/convertRomanArabicNumbers.png';
$scripts = array('<script type="module" defer src="/scripts/execute-function/convertRomanArabicNumbers_DOM.js"></script>');
break; break;
case '/views/function-views/armstrongNumber.php': case '/views/function-views/armstrongNumber.php':
$title = "Nombre d'Armstrong"; $title = "Nombre d'Armstrong";
$description = "Un nombre d'<a href='https://fr.wikipedia.org/wiki/Nombre_narcissique' target='_blank'>Armstrong</a> est un nombre entier positif qui est égal à la somme de ses chiffres portés à la puissance du nombre de chiffres le composant. Cette fonction permet de savoir si un nombre fait partie des nombres d'Armstrong."; $description = "Un nombre d'<a href='https://fr.wikipedia.org/wiki/Nombre_narcissique' target='_blank'>Armstrong</a> est un nombre entier positif qui est égal à la somme de ses chiffres portés à la puissance du nombre de chiffres le composant. Cette fonction permet de savoir si un nombre fait partie des nombres d'Armstrong.";
$image = 'https://function.divlo.fr/img/function-image/armstrongNumber.png'; $image = 'https://function.divlo.fr/img/function-image/armstrongNumber.png';
$scripts = array('<script type="module" defer src="/scripts/execute-function/armstrongNumber_DOM.js"></script>');
break; break;
case '/views/function-views/heapAlgorithm.php': case '/views/function-views/heapAlgorithm.php':
$title = "Heap's algorithm"; $title = "Heap's algorithm";
$description = "<a href='https://en.wikipedia.org/wiki/Heap%27s_algorithm' target='_blank'>Heap's algorithm</a> est un algorithme qui génère toutes les permutations uniques possibles d'une chaîne de caractère, ce sont en quelque sorte toutes les possibilités d'anagramme d'un mot (en changeant de place, les lettres dun mot, permettent den créer un nouveau), par contre les mots n'ont pas besoin d'être de vrais mots qui ont du sens."; $description = "<a href='https://en.wikipedia.org/wiki/Heap%27s_algorithm' target='_blank'>Heap's algorithm</a> est un algorithme qui génère toutes les permutations uniques possibles d'une chaîne de caractère, ce sont en quelque sorte toutes les possibilités d'anagramme d'un mot (en changeant de place, les lettres dun mot, permettent den 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'; $image = 'https://function.divlo.fr/img/function-image/heapAlgorithm.png';
$scripts = array('<script type="module" defer src="/scripts/execute-function/heapAlgorithm_DOM.js"></script>');
break; break;
case '/views/function-views/convertMarkdown.php': case '/views/function-views/convertMarkdown.php':
$title = "Markdown"; $title = "Markdown";

View File

@ -0,0 +1,14 @@
import { armstrongNumber } from '../functions/fonctions_principales/armstrongNumber_Function.js';
$(function () {
$("#numberToTest").bind("keyup change", () => {
let numbersValue = $('#numberToTest').val();
numbersValue = parseInt(numbersValue.replace(/\s/g,''));
if (!isNaN(numbersValue) && numbersValue >= 0) {
$('.results').html(armstrongNumber(numbersValue));
}
else {
$('.results').html(messageError);
}
});
});

View File

@ -0,0 +1,7 @@
import { calculateAge } from '../functions/fonctions_principales/calculateAge_Function.js';
$(function () {
$("#birthDateValue").bind("keyup change", () => {
$('.results').html(calculateAge($('#birthDateValue').val()));
});
});

View File

@ -0,0 +1,17 @@
import { convertDistance } from '../functions/fonctions_principales/convertDistance_Function.js';
$(function () {
$("#convertDistanceForm").submit((event) => {
event.preventDefault();
let firstValue = $('#firstValue').val();
const unitFirstValue = $("#firstValueUnit option:selected").text();
const secondValue = $("#secondValue option:selected").text();
if(isEmptyValue(firstValue) || isEmptyValue(secondValue)) {
$('.results').html(emptyMessageError);
}
else {
firstValue = parseFloat(firstValue.replace(/\s/g,''));
$('.results').html(convertDistance(firstValue, unitFirstValue, secondValue));
}
});
});

View File

@ -0,0 +1,24 @@
import { decimalToBinary, binaryToDecimal, decimalToHexadecimal, hexadecimalToDecimal, binaryToHexadecimal, hexadecimalToBinary, textToNumberUnicode, numberUnicodeToText, textToBinary, binaryToText, textToHexadecimal, hexadecimalToText } from '../functions/fonctions_principales/convertEncoding_Functions.js';
$(function () {
$("#convertEncodingForm").submit((event) => {
event.preventDefault();
const value = $('#value').val();
const option = $("#option option:selected").val();
if(isEmptyValue(value)) {
$('.results').html(messageError);
}
else {
// Objet qui recense toutes les fonctions de convertEncoding
const convertEncoding = { decimalToBinary, binaryToDecimal, decimalToHexadecimal, hexadecimalToDecimal, binaryToHexadecimal, hexadecimalToBinary, textToNumberUnicode, numberUnicodeToText, textToBinary, binaryToText, textToHexadecimal, hexadecimalToText };
try {
function executionFunction(option, value) {
return convertEncoding[option](value);
}
$('.results').html(executionFunction(option, value));
} catch (error) {
$('.results').html(messageError);
}
}
});
});

View File

@ -0,0 +1,37 @@
import { convertArabicToRoman, convertRomanToArabic } from '../functions/fonctions_principales/convertRomanArabicNumbers_Functions.js';
$(function () {
$("#convertRomanArabicNumbersForm").submit((event) => {
event.preventDefault();
let numbersValue = $('#numbersArabic').val();
numbersValue = numbersValue.replace(/\s/g,'');
const convertNumberType = $("#convertNumberType option:selected").text();
if(isEmptyValue(numbersValue)) {
$('.results').html(emptyMessageError);
}
else if (!isNaN(Number(numbersValue))) {
if (convertNumberType === "Nombre Romain") {
const result = convertArabicToRoman(parseInt(numbersValue));
let numbersValueFormat = formatNumberResult(numbersValue);
if (result === messageError || isFloat(numbersValue)) {
$('.results').html(messageError);
} else {
$('.results').html(`<b>${numbersValueFormat}</b> s'écrit <b>${result}</b> en chiffres romains.`);
}
} else {
$('.results').html(`<b>${numbersValue}</b> est déjà en chiffres arabes.`);
}
}
else if (convertNumberType === "Nombre Arabe") {
const result = convertRomanToArabic(numbersValue.toUpperCase());
if (result === 0) {
$('.results').html(messageError);
} else {
$('.results').html(`<b>${numbersValue}</b> s'écrit <b>${formatNumberResult(result)}</b> en chiffres arabes.`);
}
}
else {
$('.results').html(messageError);
}
});
});

View File

@ -0,0 +1,16 @@
import { convertTemperature } from '../functions/fonctions_principales/convertTemperature_Function.js';
$(function () {
$("#convertTemperatureForm").submit((event) => {
event.preventDefault();
const temperatureValue = $('#temperatureValue').val();
const degree = parseFloat(temperatureValue.slice(0, temperatureValue.length - 2));
const unit = temperatureValue.slice(temperatureValue.length - 2);
if(isEmptyValue(temperatureValue)) {
$('.results').html(emptyMessageError);
}
else {
$('.results').html(convertTemperature(degree, unit));
}
});
});

View File

@ -0,0 +1,20 @@
import { filterStudents } from '../functions/fonctions_principales/filterStudents_Function.js';
$(function () {
$("#filterStudentsForm").submit((event) => {
event.preventDefault();
const nameEntered = $('#nameEntered').val();
let filteredLetter = $("#filteredLetter").val();
if(isEmptyValue(nameEntered) || isEmptyValue(filteredLetter)) {
$('.results').html(emptyMessageError);
}
else if(filteredLetter.length === 1) {
const students = nameEntered.split(', ');
filteredLetter = capitalize(filteredLetter);
$('.results').html(filterStudents(filteredLetter, students));
}
else {
$('.results').html(messageError);
}
});
});

View File

@ -0,0 +1,21 @@
import { heapAlgorithm } from '../functions/fonctions_principales/heapAlgorithm_Function.js';
$(function () {
$("#heapAlgorithmForm").submit((event) => {
event.preventDefault();
const value = $('#value').val();
if(isEmptyValue(value)) {
$('.results').html(emptyMessageError);
}
else {
const start = new Date();
const stringPermutationsResult = heapAlgorithm(value);
let result = "";
for (let element in stringPermutationsResult) {
result = result + stringPermutationsResult[element] + "<br>";
}
const end = new Date();
$('.results').html(`Temps d'éxecution du script : ${end - start} ms. <br>Il y a ${formatNumberResult(stringPermutationsResult.length)} possibilités d'anagramme pour le mot "${value}" qui contient ${value.length} caractères, la liste : <br><br> ${result}`);
}
});
});

View File

@ -0,0 +1,20 @@
import { randomNumber } from '../functions/fonctions_principales/randomNumber_Function.js';
$(function () {
$("#randomNumberForm").submit((event) => {
event.preventDefault();
const minEntered = $('#minValue').val();
const maxEntered = $('#maxValue').val();
if(isEmptyValue(minEntered) || isEmptyValue(maxEntered)) {
$('.results').html(emptyMessageError);
}
else {
const result = randomNumber(minEntered, maxEntered);
if(result === messageError) {
$('.results').html(messageError);
} else {
$('.results').html("Nombre aléatoire compris entre " + minEntered + " inclus et " + maxEntered + " inclus : " + formatNumberResult(result));
}
}
});
});

View File

@ -0,0 +1,17 @@
import { randomQuote } from '../functions/fonctions_principales/randomQuote_Function.js';
$(function () {
function showQuote() {
const randomQuoteChosen = randomQuote();
const quote = randomQuoteChosen.quote;
const source = randomQuoteChosen.source;
$('.resultsRandomQuote').html(`<p id="citation">" ${quote} "</p> <p id="auteur"> - ${source} </p>`);
$('#twitterLink').attr('href', `https://twitter.com/intent/tweet?text="${quote}" - ${source}&via=Divlo_FR&hashtags=citation,FunctionProject&url=https://function.divlo.fr/views/function-views/randomQuote.php`);
}
$("#submitRandomQuote").click(() => {
showQuote();
});
// Affichage d'une citation au chargement de la page
showQuote();
});

View File

@ -0,0 +1,16 @@
import { weatherRequest } from '../functions/fonctions_principales/weatherRequest_Function.js';
$(function () {
$("#weatherForm").submit((event) => {
event.preventDefault();
const city = $('#cityName').val();
const cityName = city.split(' ').join('+');
const data = `city=${cityName}`;
if(isEmptyValue(cityName)) {
$('.results').html(emptyMessageError);
}
else {
weatherRequest(data);
}
});
});

View File

@ -8,195 +8,6 @@ $(function () {
} }
}); });
$("#submitWeatherRequest").click((event) => {
event.preventDefault();
const city = $('#cityName').val();
const cityName = city.split(' ').join('+');
const data = `city=${cityName}`;
if(isEmptyValue(cityName)) {
$('.results').html(emptyMessageError);
}
else {
weatherRequest(data);
}
});
$("#submitRandomNumber").click(() => {
const minEntered = $('#minValue').val();
const maxEntered = $('#maxValue').val();
if(isEmptyValue(minEntered) || isEmptyValue(maxEntered)) {
$('.results').html(emptyMessageError);
}
else {
const result = randomNumber(minEntered, maxEntered);
if(result === messageError) {
$('.results').html(messageError);
} else {
$('.results').html("Nombre aléatoire compris entre " + minEntered + " inclus et " + maxEntered + " inclus : " + formatNumberResult(result));
}
}
});
$("#birthDateValue").bind("keyup change", () =>
{
$('.results').html(calculateAge($('#birthDateValue').val()));
});
$("#submitConvertTemperature").click(() =>
{
const temperatureValue = $('#temperatureValue').val();
const degree = parseFloat(temperatureValue.slice(0, temperatureValue.length - 2));
const unit = temperatureValue.slice(temperatureValue.length - 2);
if(isEmptyValue(temperatureValue)) {
$('.results').html(emptyMessageError);
}
else {
$('.results').html(convertTemperature(degree, unit));
}
});
$("#submitConvertDistance").click(() =>
{
let firstValue = $('#firstValue').val();
const unitFirstValue = $("#firstValueUnit option:selected").text();
const secondValue = $("#secondValue option:selected").text();
if(isEmptyValue(firstValue) || isEmptyValue(secondValue)) {
$('.results').html(emptyMessageError);
}
else {
firstValue = parseFloat(firstValue.replace(/\s/g,''));
$('.results').html(convertDistance(firstValue, unitFirstValue, secondValue));
}
});
$("#submitFilterStudents").click(() =>
{
const nameEntered = $('#nameEntered').val();
let filteredLetter = $("#filteredLetter").val();
if(isEmptyValue(nameEntered) || isEmptyValue(filteredLetter)) {
$('.results').html(emptyMessageError);
}
else if(filteredLetter.length === 1) {
const students = nameEntered.split(', ');
filteredLetter = capitalize(filteredLetter);
$('.results').html(filterStudents(filteredLetter, students));
}
else {
$('.results').html(messageError);
}
});
function showQuote() {
const randomQuote = getRandomQuote();
const quote = randomQuote.quote;
const source = randomQuote.source;
$('.resultsRandomQuote').html(`<p id="citation">" ${quote} "</p> <p id="auteur"> - ${source} </p>`);
$('#twitterLink').attr('href', `https://twitter.com/intent/tweet?text="${quote}" - ${source}&via=Divlo_FR&hashtags=citation,FunctionProject&url=https://function.divlo.fr/views/function-views/randomQuote.php`);
}
$("#submitRandomQuote").click(() => {
showQuote();
});
// Affichage d'une citation au chargement de la page
showQuote();
$("#submitConvertCurrency").click(() => {
let value = $('#value').val();
const currencyOfTheValue = $("#currencyOfTheValue option:selected").val();
const currencyAfter = $("#currencyAfter option:selected").val();
if(isEmptyValue(value) || isNaN(parseFloat(value))) {
$('.results').html(emptyMessageError);
}
else {
const url = 'https://api.exchangeratesapi.io/latest?base=' + currencyOfTheValue;
value = parseFloat(value);
convertCurrency(value, currencyAfter, url);
}
});
$("#submitConvertEncoding").click(() => {
const value = $('#value').val();
const option = $("#option option:selected").val();
if(isEmptyValue(value)) {
$('.results').html(messageError);
}
else {
// Objet qui recense toutes les fonctions de convertEncoding
const convertEncoding = { decimalToBinary, binaryToDecimal, decimalToHexadecimal, hexadecimalToDecimal, binaryToHexadecimal, hexadecimalToBinary, textToNumberUnicode, numberUnicodeToText, textToBinary, binaryToText, textToHexadecimal, hexadecimalToText };
try {
function executionFunction(option, value) {
return convertEncoding[option](value)
}
$('.results').html(executionFunction(option, value));
} catch (error) {
$('.results').html(messageError);
}
}
});
$("#submitConvertRomanArabicNumbers").click(() => {
let numbersValue = $('#numbersArabic').val();
numbersValue = numbersValue.replace(/\s/g,'');
const convertNumberType = $("#convertNumberType option:selected").text();
if(isEmptyValue(numbersValue)) {
$('.results').html(emptyMessageError);
}
else if (!isNaN(Number(numbersValue))) {
if (convertNumberType === "Nombre Romain") {
const result = convertArabicToRoman(parseInt(numbersValue));
let numbersValueFormat = formatNumberResult(numbersValue);
if (result === messageError || isFloat(numbersValue)) {
$('.results').html(messageError);
} else {
$('.results').html(`<b>${numbersValueFormat}</b> s'écrit <b>${result}</b> en chiffres romains.`);
}
} else {
$('.results').html(`<b>${numbersValue}</b> est déjà en chiffres arabes.`);
}
}
else if (convertNumberType === "Nombre Arabe") {
const result = convertRomanToArabic(numbersValue.toUpperCase());
if (result === 0) {
$('.results').html(messageError);
} else {
$('.results').html(`<b>${numbersValue}</b> s'écrit <b>${formatNumberResult(result)}</b> en chiffres arabes.`);
}
}
else {
$('.results').html(messageError);
}
});
$("#numberToTest").bind("keyup change", () => {
let numbersValue = $('#numberToTest').val();
numbersValue = parseInt(numbersValue.replace(/\s/g,''));
if (!isNaN(numbersValue) && numbersValue >= 0) {
$('.results').html(armstrongNumber(numbersValue));
}
else {
$('.results').html(messageError);
}
});
$("#submitHeapAlgorithm").click(() => {
const value = $('#value').val();
if(isEmptyValue(value)) {
$('.results').html(emptyMessageError);
}
else {
const start = new Date();
const stringPermutationsResult = stringPermutations(value);
let result = "";
for (element in stringPermutationsResult) {
result = result + stringPermutationsResult[element] + "<br>";
}
const end = new Date();
$('.results').html(`Temps d'éxecution du script : ${end - start} ms. <br>Il y a ${formatNumberResult(stringPermutationsResult.length)} possibilités d'anagramme pour le mot "${value}" qui contient ${value.length} caractères, la liste : <br><br> ${result}`);
}
});
if (chemin === "/views/function-views/convertMarkdown.php" && localStorage.getItem('convertedHTML') && localStorage.getItem('texteMarkdown')) { if (chemin === "/views/function-views/convertMarkdown.php" && localStorage.getItem('convertedHTML') && localStorage.getItem('texteMarkdown')) {
$('.results').html(localStorage.getItem('convertedHTML')); $('.results').html(localStorage.getItem('convertedHTML'));
$('#texteMarkdown').val(localStorage.getItem('texteMarkdown')); $('#texteMarkdown').val(localStorage.getItem('texteMarkdown'));

View File

@ -29,7 +29,7 @@ function formatNumberResult(num) {
/** /**
* @function isFloat * @function isFloat
* @description Vérifie si une string est un float (integer exclu). * @description Vérifie si un nombre est un float (integer exclu).
* @param {number} value * @param {number} value
* @returns {boolean} * @returns {boolean}
* @example isFloat(76120.474) true * @example isFloat(76120.474) true

View File

@ -1,584 +0,0 @@
/* Fonctions Principales */
/**
* @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(cityData) {
$.ajax({
type: 'POST',
url: '/php/getWeatherJson.php',
data: cityData,
success: function(data) {
try {
const json = jQuery.parseJSON(data);
const city = json.name;
const showDateTimeValue = dateTimeUTC((json.timezone / 60 / 60).toString()).showDateTimeValue;
$('.results').html(`🌎 Position : <a href='https://www.google.com/maps/search/?api=1&query=${json.coord.lat},${json.coord.lon}' class="yellow-color" target="_blank">${city}, ${json.sys.country}</a><br>⏰ Date et heure : ${showDateTimeValue}<br>☁️ Météo : ${capitalize(json.weather[0].description)}<br> 🌡️ Température : ${json.main.temp} °C<br> 💧 Humidité : ${json.main.humidity}% <br> <img src="https://openweathermap.org/img/wn/${json.weather[0].icon}@2x.png"/>`);
}
catch(error) {
$('.results').html("La ville que vous avez rentré n'existe pas (dans l'API).");
}
}
});
}
/**
* @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);
max = Math.floor(max);
return Math.floor(Math.random() * (max - min +1)) + min;
}
else {
return messageError;
}
}
/**
* @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));
const birthDateMonth = parseInt((birthDateEntered.substring(3, 5)) - 1);
const birthDateYear = parseInt(birthDateEntered.substring(6, 10));
const currentDateObject = dateTimeUTC('0');
const day = parseInt(currentDateObject.day);
const month = parseInt(currentDateObject.month - 1);
const year = parseInt(currentDateObject.year);
let dateNow = moment([year, month, day]);
let birthDate = moment([birthDateYear, birthDateMonth, birthDateDay]);
// Calcule l'âge - Moment.js
let ageYears = dateNow.diff(birthDate, 'year');
birthDate.add(ageYears, 'years');
let ageMonths = dateNow.diff(birthDate, 'months');
birthDate.add(ageMonths, 'months');
let ageDays = dateNow.diff(birthDate, 'days');
const isValidDateFunction = isValidDate(birthDateDay + '/' + birthDateMonth + '/' + birthDateYear, currentDateObject.showDateTimeValue);
// Vérifie si la valeur entrée correspond à une date de naissance valide
if(isValidDateFunction === true && !isNaN(ageDays)) {
ageYears = formatNumberResult(ageYears);
// Si c'est ton anniversaire aujourd'hui
if(birthDateDay === day && parseInt(birthDateMonth) === month) {
return 'Vous avez ' + ageYears + ' ans. Joyeux Anniversaire! 🥳';
}
else {
return 'Vous avez ' + ageYears + ' ans, ' + ageMonths + ' mois et ' + ageDays + ' jour(s).';
}
}
else {
return messageError;
}
}
/**
* @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";
return degree + " " + unit + " = " + temperatureValue;
}
else if (!isNaN(degree) && unit === "°F") {
const temperatureValue = (degree - 32) * 5/9 + " °C";
return degree + " " + unit + " = " + temperatureValue;
}
else {
return messageError;
}
}
/**
* @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"];
const index1 = reference.indexOf(unitFirstValue);
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') {
// Conversion des longueurs :
const difference = index1 - index2;
const result = firstValue*Math.pow(10,difference);
return 'Conversion de longueur : ' + formatNumberResult(firstValue).toString() + ' ' + unitFirstValue + ' = ' + formatNumberResult(result) + ' ' + unitFinalValue;
}
else {
return messageError;
}
}
/**
* @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 = [];
for(let i = 0; i < students.length; i++) {
let studentBoucle = capitalize(students[i]);
if (studentBoucle[0] === filteredLetter) {
filteredStudents.push(studentBoucle);
}
}
if (filteredStudents.length === 1) {
return ("Prénom qui commence par " + filteredLetter + " : " + filteredStudents + '.');
}
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;
filteredStudents.pop(); // Supprime le dernier élément du tableau
// 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 {
return ("Il n'y a pas de prénom commencant par " + filteredLetter + ".");
}
}
/**
* @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 {object} - une citation au hasard à partir de la constante 'quotes' dans variables.js
* @example getRandomQuote() { quote: "Ne fais jamais rien contre ta conscience, même si l'Etat te le demande.", source: "Albert Einstein" }
*/
function getRandomQuote() {
return quotes[randomNumber(0, (quotes.length - 1))];
}
/**
* @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) {
if(currencyToTest === correspondancesMonnaie[index]['currency']) {
return correspondancesMonnaie[index]['symbol'];
}
continue;
}
}
$.ajax({
url : url,
dataType : "json",
success: function (jsonFixer) {
try {
let currencySymboleAPI = eval(`jsonFixer.rates.${currencyTest(currency)}`);
if (currencySymboleAPI === undefined) {
currencySymboleAPI = 1;
}
$('.results').html(formatNumberResult(value) + ' ' + jsonFixer.base + ' = ' + formatNumberResult((currencySymboleAPI * value).toFixed(2)) + ' ' + currency);
$('.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);
}
}
});
}
// Convertis des nombres de différentes bases et convertis en UTF-8. (source : http://jsfiddle.net/47zwb41o)
/**
* @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);
if (isNaN(value)) {
return messageError;
} else {
return value.toString(2);
}
}
/**
* @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) {
const result = parseInt(Number(value), 2);
if (isNaN(result)) {
return messageError;
} else {
return formatNumberResult(result);
}
}
/**
* @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);
if (isNaN(value)) {
return messageError;
} else {
return value.toString(16).toUpperCase();
}
}
/**
* @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 = parseInt(value, 16);
if (isNaN(result)) {
return messageError;
} else {
return formatNumberResult(result);
}
}
/**
* @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);
if (isNaN(value)) {
return messageError;
} else {
return parseInt(value).toString(16).toUpperCase();
}
}
/**
* @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 = parseInt(value, 16);
if (isNaN(value)) {
return messageError;
} else {
return parseInt(value).toString(2);
}
}
/**
* @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 = "";
for (let index in string) {
resultat = resultat + string.codePointAt(index) + " ";
}
return resultat;
}
catch(error) {
return messageError;
}
}
/**
* @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(" ");
let resultat = "";
for (let index in array) {
resultat = resultat + String.fromCodePoint(parseInt(array[index]).toString());
}
return resultat;
}
catch(error) {
return messageError;
}
}
/**
* @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));
let chr, i = 0, l = s.length, out = '';
for( ; i < l; i ++ ){
chr = s.charCodeAt( i ).toString(2);
while(chr.length % 8 != 0 ){ chr = '0' + chr; }
out += chr;
}
return out.replace(/(\d{8})/g, '$1 ').replace(/(^\s+|\s+$)/,'');
} catch (error) {
return s;
}
}
/**
* @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,'')
let i = 0, l = s.length, chr, out = '';
for( ; i < l; i += 8){
chr = parseInt( s.substr(i, 8 ), 2).toString(16);
out += '%' + ((chr.length % 2 == 0) ? chr : '0' + chr);
}
return decodeURIComponent(out);
} catch (error) {
return s;
}
}
/**
* @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 ) );
let chr, i = 0, l = s.length, out = '';
for( ; i < l; i++ ){
chr = s.charCodeAt( i ).toString( 16 );
out += ( chr.length % 2 == 0 ) ? chr : '0' + chr;
out += " ";
}
return out.toUpperCase();
}
catch (error) {
return s;
}
}
/**
* @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,'');
return decodeURIComponent( s.replace( /../g, '%$&' ) );
}
catch (error) {
return s;
}
}
/**
* @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 = "";
/*
Étapes pour écrire un nombre romain :
On vérifie quand le nombre arabe est >= à la plus grande valeur possible dans la table de correspondance des nombres romains de haut en bas puis on rajoute la lettre romaine correspondante à la plus grande valeur possible dans la variable chiffresRomains et on soustrait la valeur du chiffre romain qu'on vient d'ajouter au nombre arabe puis on répète l'opération jusqu'à nombre arabe vaut 0...
Exemple avec 27 :
27 - X (10) = 17
17 - X (10) = 7
7 - V (5) = 2
2 - I (1) = 1
1 - I (1) = 0
XXVII
*/
function extraireChiffreRomain(valeurLettre, lettres) {
while (nombre >= valeurLettre) {
chiffresRomains = chiffresRomains + lettres;
nombre = nombre - valeurLettre;
}
}
correspondancesRomainArabe.forEach(correspondance => {
extraireChiffreRomain(correspondance[0], correspondance[1]);
});
if (chiffresRomains === '') {
return messageError;
} else {
return chiffresRomains;
}
}
/**
* @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++) {
while (str.indexOf(correspondancesRomainArabe[i][1]) === 0){
// Ajout de la valeur décimale au résultat
result += correspondancesRomainArabe[i][0];
// Supprimer la lettre romaine correspondante du début
str = str.replace(correspondancesRomainArabe[i][1],'');
}
}
if (str != '') {
result = 0;
}
return result;
}
/**
* @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;
let result = 0;
let resultString = "";
for (let i = 0; i < numberStringLength; i++) {
result = result + parseInt(numberString[i])**numberStringLength;
resultString = resultString + " + " + numberString[i] + "<sup>" + numberStringLength + "</sup>";
}
const formattedNumber = formatNumberResult(number);
if (result === number) {
return `${formattedNumber} est un nombre d'Armstrong, car ${resultString.slice(2)} = ${formatNumberResult(result)}.`;
} else {
return `${formattedNumber} n'est pas un nombre d'Armstrong, car ${resultString.slice(2)} = ${formatNumberResult(result)}.`;
}
}
/**
* @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 = [];
if (string.length === 1) {
results.push(string);
return results;
}
for (let i = 0; i < string.length; i++) {
let firstChar = string[i];
let charsLeft = string.substring(0, i) + string.substring(i + 1);
let innerPermutations = stringPermutations(charsLeft);
for (let i = 0; i < innerPermutations.length; i++) {
results.push(firstChar + innerPermutations[i]);
}
}
return results;
}

View File

@ -0,0 +1,28 @@
/**
* @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;
let result = 0;
let resultString = "";
for (let i = 0; i < numberStringLength; i++) {
result = result + parseInt(numberString[i])**numberStringLength;
resultString = resultString + " + " + numberString[i] + "<sup>" + numberStringLength + "</sup>";
}
const formattedNumber = formatNumberResult(number);
if (result === number) {
return `${formattedNumber} est un nombre d'Armstrong, car ${resultString.slice(2)} = ${formatNumberResult(result)}.`;
} else {
return `${formattedNumber} n'est pas un nombre d'Armstrong, car ${resultString.slice(2)} = ${formatNumberResult(result)}.`;
}
}
/* Exports */
export { armstrongNumber };

View File

@ -0,0 +1,50 @@
/**
* @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));
const birthDateMonth = parseInt((birthDateEntered.substring(3, 5)) - 1);
const birthDateYear = parseInt(birthDateEntered.substring(6, 10));
const currentDateObject = dateTimeUTC('0');
const day = parseInt(currentDateObject.day);
const month = parseInt(currentDateObject.month - 1);
const year = parseInt(currentDateObject.year);
let dateNow = moment([year, month, day]);
let birthDate = moment([birthDateYear, birthDateMonth, birthDateDay]);
// Calcule l'âge - Moment.js
let ageYears = dateNow.diff(birthDate, 'year');
birthDate.add(ageYears, 'years');
let ageMonths = dateNow.diff(birthDate, 'months');
birthDate.add(ageMonths, 'months');
let ageDays = dateNow.diff(birthDate, 'days');
const isValidDateFunction = isValidDate(birthDateDay + '/' + birthDateMonth + '/' + birthDateYear, currentDateObject.showDateTimeValue);
// Vérifie si la valeur entrée correspond à une date de naissance valide
if(isValidDateFunction === true && !isNaN(ageDays)) {
ageYears = formatNumberResult(ageYears);
// Si c'est ton anniversaire aujourd'hui
if(birthDateDay === day && parseInt(birthDateMonth) === month) {
return 'Vous avez ' + ageYears + ' ans. Joyeux Anniversaire! 🥳';
}
else {
return 'Vous avez ' + ageYears + ' ans, ' + ageMonths + ' mois et ' + ageDays + ' jour(s).';
}
}
else {
return messageError;
}
}
/* Exports */
export { calculateAge };

View File

@ -0,0 +1,45 @@
/**
* @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) {
if(currencyToTest === correspondancesMonnaie[index]['currency']) {
return correspondancesMonnaie[index]['symbol'];
}
continue;
}
}
$.ajax({
url : url,
dataType : "json",
success: function (jsonFixer) {
try {
let currencySymboleAPI = eval(`jsonFixer.rates.${currencyTest(currency)}`);
if (currencySymboleAPI === undefined) {
currencySymboleAPI = 1;
}
$('.results').html(formatNumberResult(value) + ' ' + jsonFixer.base + ' = ' + formatNumberResult((currencySymboleAPI * value).toFixed(2)) + ' ' + currency);
$('.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);
}
}
});
}
/* Exports */
export { convertCurrency };

View File

@ -0,0 +1,29 @@
/**
* @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"];
const index1 = reference.indexOf(unitFirstValue);
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') {
// Conversion des longueurs :
const difference = index1 - index2;
const result = firstValue*Math.pow(10,difference);
return 'Conversion de longueur : ' + formatNumberResult(firstValue).toString() + ' ' + unitFirstValue + ' = ' + formatNumberResult(result) + ' ' + unitFinalValue;
}
else {
return messageError;
}
}
/* Exports */
export { convertDistance };

View File

@ -0,0 +1,228 @@
// Convertis des nombres de différentes bases et convertis en UTF-8. (source : http://jsfiddle.net/47zwb41o)
/**
* @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);
if (isNaN(value)) {
return messageError;
} else {
return value.toString(2);
}
}
/**
* @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) {
const result = parseInt(Number(value), 2);
if (isNaN(result)) {
return messageError;
} else {
return formatNumberResult(result);
}
}
/**
* @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);
if (isNaN(value)) {
return messageError;
} else {
return value.toString(16).toUpperCase();
}
}
/**
* @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 = parseInt(value, 16);
if (isNaN(result)) {
return messageError;
} else {
return formatNumberResult(result);
}
}
/**
* @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);
if (isNaN(value)) {
return messageError;
} else {
return parseInt(value).toString(16).toUpperCase();
}
}
/**
* @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 = parseInt(value, 16);
if (isNaN(value)) {
return messageError;
} else {
return parseInt(value).toString(2);
}
}
/**
* @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 = "";
for (let index in string) {
resultat = resultat + string.codePointAt(index) + " ";
}
return resultat;
}
catch(error) {
return messageError;
}
}
/**
* @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(" ");
let resultat = "";
for (let index in array) {
resultat = resultat + String.fromCodePoint(parseInt(array[index]).toString());
}
return resultat;
}
catch(error) {
return messageError;
}
}
/**
* @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));
let chr, i = 0, l = s.length, out = '';
for( ; i < l; i ++ ){
chr = s.charCodeAt( i ).toString(2);
while(chr.length % 8 != 0 ){ chr = '0' + chr; }
out += chr;
}
return out.replace(/(\d{8})/g, '$1 ').replace(/(^\s+|\s+$)/,'');
} catch (error) {
return s;
}
}
/**
* @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,'')
let i = 0, l = s.length, chr, out = '';
for( ; i < l; i += 8){
chr = parseInt( s.substr(i, 8 ), 2).toString(16);
out += '%' + ((chr.length % 2 == 0) ? chr : '0' + chr);
}
return decodeURIComponent(out);
} catch (error) {
return s;
}
}
/**
* @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 ) );
let chr, i = 0, l = s.length, out = '';
for( ; i < l; i++ ){
chr = s.charCodeAt( i ).toString( 16 );
out += ( chr.length % 2 == 0 ) ? chr : '0' + chr;
out += " ";
}
return out.toUpperCase();
}
catch (error) {
return s;
}
}
/**
* @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,'');
return decodeURIComponent( s.replace( /../g, '%$&' ) );
}
catch (error) {
return s;
}
}
/* Exports */
export { decimalToBinary, binaryToDecimal, decimalToHexadecimal, hexadecimalToDecimal, binaryToHexadecimal, hexadecimalToBinary, textToNumberUnicode, numberUnicodeToText, textToBinary, binaryToText, textToHexadecimal, hexadecimalToText };

View File

@ -0,0 +1,70 @@
/**
* @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 = "";
/*
Étapes pour écrire un nombre romain :
On vérifie quand le nombre arabe est >= à la plus grande valeur possible dans la table de correspondance des nombres romains de haut en bas puis on rajoute la lettre romaine correspondante à la plus grande valeur possible dans la variable chiffresRomains et on soustrait la valeur du chiffre romain qu'on vient d'ajouter au nombre arabe puis on répète l'opération jusqu'à nombre arabe vaut 0...
Exemple avec 27 :
27 - X (10) = 17
17 - X (10) = 7
7 - V (5) = 2
2 - I (1) = 1
1 - I (1) = 0
XXVII
*/
function extraireChiffreRomain(valeurLettre, lettres) {
while (nombre >= valeurLettre) {
chiffresRomains = chiffresRomains + lettres;
nombre = nombre - valeurLettre;
}
}
correspondancesRomainArabe.forEach(correspondance => {
extraireChiffreRomain(correspondance[0], correspondance[1]);
});
if (chiffresRomains === '') {
return messageError;
} else {
return chiffresRomains;
}
}
/**
* @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++) {
while (str.indexOf(correspondancesRomainArabe[i][1]) === 0){
// Ajout de la valeur décimale au résultat
result += correspondancesRomainArabe[i][0];
// Supprimer la lettre romaine correspondante du début
str = str.replace(correspondancesRomainArabe[i][1],'');
}
}
if (str != '') {
result = 0;
}
return result;
}
/* Exports */
export { convertArabicToRoman, convertRomanToArabic };

View File

@ -0,0 +1,24 @@
/**
* @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";
return degree + " " + unit + " = " + temperatureValue;
}
else if (!isNaN(degree) && unit === "°F") {
const temperatureValue = (degree - 32) * 5/9 + " °C";
return degree + " " + unit + " = " + temperatureValue;
}
else {
return messageError;
}
}
/* Exports */
export { convertTemperature };

View File

@ -0,0 +1,33 @@
/**
* @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 = [];
for(let i = 0; i < students.length; i++) {
let studentBoucle = capitalize(students[i]);
if (studentBoucle[0] === filteredLetter) {
filteredStudents.push(studentBoucle);
}
}
if (filteredStudents.length === 1) {
return ("Prénom qui commence par " + filteredLetter + " : " + filteredStudents + '.');
}
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;
filteredStudents.pop(); // Supprime le dernier élément du tableau
// 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 {
return ("Il n'y a pas de prénom commencant par " + filteredLetter + ".");
}
}
export { filterStudents };

View File

@ -0,0 +1,28 @@
/**
* @function heapAlgorithm
* @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 heapAlgorithm('abc') ["abc", "acb", "bac", "bca", "cab", "cba"]
*/
function heapAlgorithm(string) {
let results = [];
if (string.length === 1) {
results.push(string);
return results;
}
for (let i = 0; i < string.length; i++) {
let firstChar = string[i];
let charsLeft = string.substring(0, i) + string.substring(i + 1);
let innerPermutations = heapAlgorithm(charsLeft);
for (let i = 0; i < innerPermutations.length; i++) {
results.push(firstChar + innerPermutations[i]);
}
}
return results;
}
/* Exports */
export { heapAlgorithm };

View File

@ -0,0 +1,21 @@
/**
* @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);
max = Math.floor(max);
return Math.floor(Math.random() * (max - min +1)) + min;
}
else {
return messageError;
}
}
/* Exports */
export { randomNumber };

View File

@ -0,0 +1,16 @@
import { randomNumber } from './randomNumber_Function.js';
/**
* @function randomQuote
* @description Génère aléatoirement une citation ou un proverbe.
* @requires {@link variables.js: quotes}
* @requires {@link fonctions_principales.js: randomNumber}
* @returns {object} - une citation au hasard à partir de la constante 'quotes' dans variables.js
* @example getRandomQuote() { quote: "Ne fais jamais rien contre ta conscience, même si l'Etat te le demande.", source: "Albert Einstein" }
*/
function randomQuote() {
return quotes[randomNumber(0, (quotes.length - 1))];
}
/* Exports */
export { randomQuote };

View File

@ -0,0 +1,33 @@
/**
* @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 /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(cityData) {
$.ajax({
type: 'POST',
url: '/php/getWeatherJson.php',
data: cityData,
success: function(data) {
try {
const json = jQuery.parseJSON(data);
const city = json.name;
const showDateTimeValue = dateTimeUTC((json.timezone / 60 / 60).toString()).showDateTimeValue;
$('.results').html(`🌎 Position : <a href='https://www.google.com/maps/search/?api=1&query=${json.coord.lat},${json.coord.lon}' class="yellow-color" target="_blank">${city}, ${json.sys.country}</a><br>⏰ Date et heure : ${showDateTimeValue}<br>☁️ Météo : ${capitalize(json.weather[0].description)}<br> 🌡️ Température : ${json.main.temp} °C<br> 💧 Humidité : ${json.main.humidity}% <br> <img src="https://openweathermap.org/img/wn/${json.weather[0].icon}@2x.png"/>`);
}
catch(error) {
$('.results').html("La ville que vous avez rentré n'existe pas (dans l'API).");
}
}
});
}
/* Exports */
export { weatherRequest };

View File

@ -6,19 +6,19 @@
<!-- Page Content --> <!-- Page Content -->
<main class="container-fluid flex-fill"> <main class="container-fluid flex-fill">
<div class="container"> <div class="container">
<h1><span class="important"><?php echo $title?></span> :</h1> <h1><span class="important"><?php echo $title?></span> :</h1>
<p class="pt-3 text-center"><?php echo $description?></p> <p class="pt-3 text-center"><?php echo $description?></p>
<div class="text-center"> <div class="text-center">
<img class="function-image" src="/img/function-image/armstrongNumber.png" alt="Nombre d'Armstrong"> <img class="function-image" src="/img/function-image/armstrongNumber.png" alt="Nombre d'Armstrong">
</div>
<div class="form-group">
<label for="numberToTest">Entrez votre nombre :</label>
<input name="numberToTest" type="number" id="numberToTest" placeholder="(e.g : 153)" class="form-control">
<br> <br>
<p class="results text-center"></p>
</div>
</div> </div>
<div class="form-group">
<label for="numberToTest">Entrez votre nombre :</label>
<input name="numberToTest" type="number" id="numberToTest" placeholder="(e.g : 153)" class="form-control">
<br> <br>
<p class="results text-center"></p>
</div>
</div>
</main> </main>
<!-- Footer --> <!-- Footer -->

View File

@ -7,56 +7,59 @@
<!-- Page Content --> <!-- Page Content -->
<main class="container-fluid flex-fill"> <main class="container-fluid flex-fill">
<div class="container"> <div class="container">
<h1><span class="important"><?php echo $title?></span> :</h1> <h1><span class="important"><?php echo $title?></span> :</h1>
<p class="pt-3 text-center"><?php echo $description?> <p class="pt-3 text-center"><?php echo $description?>
<br> <br>
Les taux de change sont récupérés grâce à l'API <a href="https://exchangeratesapi.io/" target="_blank">exchangeratesapi.io</a>. Les taux de change sont récupérés grâce à l'API <a href="https://exchangeratesapi.io/" target="_blank">exchangeratesapi.io</a>.
</p> </p>
<div class="text-center"> <div class="text-center">
<img class="function-image" src="/img/function-image/convertCurrency.png" alt="Sac de pièces"> <img class="function-image" src="/img/function-image/convertCurrency.png" alt="Sac de pièces">
</div> </div>
<br> <br>
<div class="form-group"> <form id="convertCurrencyForm" action="#" method="POST">
<label for="value">Entrez le nombre à convertir et sélectionner la devise de celui-çi :</label> <div class="form-group">
<br> <label for="value">Entrez le nombre à convertir et sélectionner la devise de celui-çi :</label>
<input name="value" type="text" class="inlineInput" id="value" placeholder="(e.g : 50)" class="form-control">
<select class="form-control selectInline" id="currencyOfTheValue">
<option value="EUR">Euro () - EUR</option>
<option value="GBP">Livre sterling (£) - GBP</option>
<option value="USD">Dollar Américain ($) - USD</option>
<option value="CAD">Dollar Canadien ($) - CAD</option>
<option value="AUD">Dollar Australien ($) - AUD</option>
<option value="MXN">Peso Mexicain ($) - MXN</option>
<option value="CHF">Franc Suisse (Fr) - CHF</option>
<option value="RUB">Rouble Russe () - RUB</option>
<option value="BRL">Réal brésilien (R$) - BRL</option>
<option value="JPY">Yen (¥) - JPY</option>
</select>
<br> <br>
<label for="currencyAfter">Choisissez la devise que voulez avoir après conversion :</label> <br>
<select class="form-control selectInline" id="currencyAfter">
<option value="£">Livre sterling (£) - GBP</option>
<option value="$ Américain">Dollar Américain ($) - USD</option>
<option value="$ Canadien">Dollar Canadien ($) - CAD</option>
<option value="$ Australien">Dollar Australien ($) - AUD</option>
<option value="$ Mexicain">Peso Mexicain ($) - MXN</option>
<option value="CHF">Franc Suisse (Fr) - CHF</option>
<option value="">Rouble Russe () - RUB</option>
<option value="R$">Réal brésilien (R$) - BRL</option>
<option value="¥">Yen (¥) - JPY</option>
<option value="">Euro () - EUR</option>
</select>
<br>
<div class="form-row text-center">
<div class="col-12">
<br> <br>
<button type="submit" id="submitConvertCurrency" class="btn btn-dark text-center">Envoyer</button> <input name="value" type="text" class="inlineInput" id="value" placeholder="(e.g : 50)" class="form-control">
<select class="form-control selectInline" id="currencyOfTheValue">
<option value="EUR">Euro () - EUR</option>
<option value="GBP">Livre sterling (£) - GBP</option>
<option value="USD">Dollar Américain ($) - USD</option>
<option value="CAD">Dollar Canadien ($) - CAD</option>
<option value="AUD">Dollar Australien ($) - AUD</option>
<option value="MXN">Peso Mexicain ($) - MXN</option>
<option value="CHF">Franc Suisse (Fr) - CHF</option>
<option value="RUB">Rouble Russe () - RUB</option>
<option value="BRL">Réal brésilien (R$) - BRL</option>
<option value="JPY">Yen (¥) - JPY</option>
</select>
<br> <br>
<label for="currencyAfter">Choisissez la devise que voulez avoir après conversion :</label> <br>
<select class="form-control selectInline" id="currencyAfter">
<option value="£">Livre sterling (£) - GBP</option>
<option value="$ Américain">Dollar Américain ($) - USD</option>
<option value="$ Canadien">Dollar Canadien ($) - CAD</option>
<option value="$ Australien">Dollar Australien ($) - AUD</option>
<option value="$ Mexicain">Peso Mexicain ($) - MXN</option>
<option value="CHF">Franc Suisse (Fr) - CHF</option>
<option value="">Rouble Russe () - RUB</option>
<option value="R$">Réal brésilien (R$) - BRL</option>
<option value="¥">Yen (¥) - JPY</option>
<option value="">Euro () - EUR</option>
</select>
<br>
<div class="form-row text-center">
<div class="col-12">
<br>
<button type="submit" id="submitConvertCurrency" class="btn btn-dark text-center">Envoyer</button>
</div>
</div>
<br> <br>
<p class="results text-center"></p>
<p class="rateDate text-center"></p>
</div> </div>
</div> </div>
<br> <br> </form>
<p class="results text-center"></p>
<p class="rateDate text-center"></p>
</div>
</div> </div>
</main> </main>

View File

@ -7,58 +7,61 @@
<!-- Page Content --> <!-- Page Content -->
<main class="container-fluid flex-fill"> <main class="container-fluid flex-fill">
<div class="container"> <div class="container">
<h1><span class="important"><?php echo $title?></span> :</h1> <h1><span class="important"><?php echo $title?></span> :</h1>
<p class="pt-3 text-center"><?php echo $description?></p> <p class="pt-3 text-center"><?php echo $description?></p>
<div class="text-center"> <div class="text-center">
<img class="function-image" src="/img/function-image/convertDistance.png" alt="Règle"> <img class="function-image" src="/img/function-image/convertDistance.png" alt="Règle">
</div> </div>
<br> <br>
<div class="form-group"> <form id="convertDistanceForm" action="#" method="POST">
<label for="firstValue">Entrez la distance que vous voulez convertir et sélectionner l'unité de celle-çi :</label> <div class="form-group">
<br> <label for="firstValue">Entrez la distance que vous voulez convertir et sélectionner l'unité de celle-çi :</label>
<input name="firstValue" type="text" class="inlineInput" id="firstValue" placeholder="(e.g : 50)" class="form-control"> <br>
<select class="form-control selectInline" id="firstValueUnit"> <input name="firstValue" type="text" class="inlineInput" id="firstValue" placeholder="(e.g : 50)" class="form-control">
<option value="pm">pm</option> <select class="form-control selectInline" id="firstValueUnit">
<option value="nm">nm</option> <option value="pm">pm</option>
<option value="µm">µm</option> <option value="nm">nm</option>
<option value="mm">mm</option> <option value="µm">µm</option>
<option value="cm">cm</option> <option value="mm">mm</option>
<option value="dm">dm</option> <option value="cm">cm</option>
<option value="m">m</option> <option value="dm">dm</option>
<option value="dam">dam</option> <option value="m">m</option>
<option value="hm">hm</option> <option value="dam">dam</option>
<option value="km">km</option> <option value="hm">hm</option>
<option value="Mm">Mm</option> <option value="km">km</option>
<option value="Gm">Gm</option> <option value="Mm">Mm</option>
<option value="Tm">Tm</option> <option value="Gm">Gm</option>
</select> <option value="Tm">Tm</option>
<br> <br> </select>
<label for="secondValue">Choisissez l'unité que vous voulez avoir après conversion :</label> <br> <br> <br>
<select class="form-control selectInline" id="secondValue"> <label for="secondValue">Choisissez l'unité que vous voulez avoir après conversion :</label> <br>
<option value="pm">pm</option> <select class="form-control selectInline" id="secondValue">
<option value="nm">nm</option> <option value="pm">pm</option>
<option value="µm">µm</option> <option value="nm">nm</option>
<option value="mm">mm</option> <option value="µm">µm</option>
<option value="cm">cm</option> <option value="mm">mm</option>
<option value="dm">dm</option> <option value="cm">cm</option>
<option value="m">m</option> <option value="dm">dm</option>
<option value="dam">dam</option> <option value="m">m</option>
<option value="hm">hm</option> <option value="dam">dam</option>
<option value="km">km</option> <option value="hm">hm</option>
<option value="Mm">Mm</option> <option value="km">km</option>
<option value="Gm">Gm</option> <option value="Mm">Mm</option>
<option value="Tm">Tm</option> <option value="Gm">Gm</option>
</select> <option value="Tm">Tm</option>
<br> </select>
<div class="form-row text-center">
<div class="col-12">
<br> <br>
<button type="submit" id="submitConvertDistance" class="btn btn-dark text-center">Envoyer</button> <div class="form-row text-center">
<div class="col-12">
<br>
<button type="submit" id="submitConvertDistance" class="btn btn-dark text-center">Envoyer</button>
</div>
</div>
<br> <br>
<p class="results text-center"></p>
</div> </div>
</div> </div>
<br> <br> </form>
<p class="results text-center"></p>
</div>
</div> </div>
</main> </main>

View File

@ -12,35 +12,37 @@
<div class="text-center"> <div class="text-center">
<img class="function-image" src="/img/function-image/convertEncoding.png" alt="Binaire"> <img class="function-image" src="/img/function-image/convertEncoding.png" alt="Binaire">
</div> </div>
<div class="form-group"> <form id="convertEncodingForm" action="#" method="POST">
<label for="value">Entrez votre valeur :</label> <div class="form-group">
<textarea name="value" type="text" id="value" placeholder="Votre valeur..." class="form-control"></textarea> <label for="value">Entrez votre valeur :</label>
<br> <textarea name="value" type="text" id="value" placeholder="Votre valeur..." class="form-control"></textarea>
<label for="option">Choisissez une option : </label> <br> <br>
<select class="form-control selectInline" id="option"> <label for="option">Choisissez une option : </label> <br>
<option value="decimalToBinary">Décimal en Binaire</option> <select class="form-control selectInline" id="option">
<option value="binaryToDecimal">Binaire en Décimal</option> <option value="decimalToBinary">Décimal en Binaire</option>
<option value="decimalToHexadecimal">Décimal en Hexadecimal</option> <option value="binaryToDecimal">Binaire en Décimal</option>
<option value="hexadecimalToDecimal">Hexadecimal en Décimal</option> <option value="decimalToHexadecimal">Décimal en Hexadecimal</option>
<option value="binaryToHexadecimal">Binaire en Hexadécimal</option> <option value="hexadecimalToDecimal">Hexadecimal en Décimal</option>
<option value="hexadecimalToBinary">Hexadécimal en Binaire</option> <option value="binaryToHexadecimal">Binaire en Hexadécimal</option>
<option value="textToNumberUnicode">Chaque caractère a un nombre Unicode</option> <option value="hexadecimalToBinary">Hexadécimal en Binaire</option>
<option value="numberUnicodeToText">Chaque nombre Unicode a un caractère</option> <option value="textToNumberUnicode">Chaque caractère a un nombre Unicode</option>
<option value="textToBinary">Texte en Binaire (UTF-8)</option> <option value="numberUnicodeToText">Chaque nombre Unicode a un caractère</option>
<option value="binaryToText">Binaire (UTF-8) en Texte</option> <option value="textToBinary">Texte en Binaire (UTF-8)</option>
<option value="textToHexadecimal">Texte en Hexadécimal (UTF-8)</option> <option value="binaryToText">Binaire (UTF-8) en Texte</option>
<option value="hexadecimalToText">Hexadécimal (UTF-8) en Texte</option> <option value="textToHexadecimal">Texte en Hexadécimal (UTF-8)</option>
</select> <option value="hexadecimalToText">Hexadécimal (UTF-8) en Texte</option>
<div class="form-row text-center"> </select>
<div class="col-12"> <div class="form-row text-center">
<br> <div class="col-12">
<button type="submit" id="submitConvertEncoding" class="btn btn-dark text-center">Envoyer</button> <br>
<button type="submit" id="submitConvertEncoding" class="btn btn-dark text-center">Envoyer</button>
</div>
</div> </div>
<br> <br>
<p class="results text-center"></p>
</div> </div>
<br> <br>
<p class="results text-center"></p>
</div> </div>
</div> </form>
</div> </div>
</main> </main>

View File

@ -7,29 +7,32 @@
<!-- Page Content --> <!-- Page Content -->
<main class="container-fluid flex-fill"> <main class="container-fluid flex-fill">
<div class="container"> <div class="container">
<h1><span class="important"><?php echo $title?></span> :</h1> <h1><span class="important"><?php echo $title?></span> :</h1>
<p class="pt-3 text-center"><?php echo $description?></p> <p class="pt-3 text-center"><?php echo $description?></p>
<div class="text-center"> <div class="text-center">
<img class="function-image" src="/img/function-image/convertRomanArabicNumbers.png" alt="Chiffres Romains"> <img class="function-image" src="/img/function-image/convertRomanArabicNumbers.png" alt="Chiffres Romains">
</div> </div>
<div class="form-group"> <form id="convertRomanArabicNumbersForm" action="#" method="POST">
<label for="numbersArabic">Entrez votre nombre :</label> <div class="form-group">
<input name="numbersArabic" type="text" id="numbersArabic" placeholder="(e.g : 50)" class="form-control"> <label for="numbersArabic">Entrez votre nombre :</label>
<br> <input name="numbersArabic" type="text" id="numbersArabic" placeholder="(e.g : 50)" class="form-control">
<label for="convertNumberType">Convertir en : </label> <br>
<select class="form-control" id="convertNumberType">
<option value="Nombre Romain">Nombre Romain</option>
<option value="Nombre Arabe">Nombre Arabe</option>
</select>
<div class="form-row text-center">
<div class="col-12">
<br> <br>
<button type="submit" id="submitConvertRomanArabicNumbers" class="btn btn-dark text-center">Envoyer</button> <label for="convertNumberType">Convertir en : </label> <br>
<select class="form-control" id="convertNumberType">
<option value="Nombre Romain">Nombre Romain</option>
<option value="Nombre Arabe">Nombre Arabe</option>
</select>
<div class="form-row text-center">
<div class="col-12">
<br>
<button type="submit" id="submitConvertRomanArabicNumbers" class="btn btn-dark text-center">Envoyer</button>
</div>
</div>
<br> <br>
<p class="results text-center"></p>
</div> </div>
</div> </div>
<br> <br> </form>
<p class="results text-center"></p>
</div>
</div> </div>
</main> </main>

View File

@ -12,18 +12,20 @@
<div class="text-center"> <div class="text-center">
<img class="function-image" src="/img/function-image/convertTemperature.png" alt="Thermomètre"> <img class="function-image" src="/img/function-image/convertTemperature.png" alt="Thermomètre">
</div> </div>
<div class="form-group"> <form id="convertTemperatureForm" action="#" method="POST">
<label for="temperatureValue">Entrez la température :</label> <div class="form-group">
<input name="temperatureValue" type="text" id="temperatureValue" placeholder="(e.g : 23°C)" class="form-control"> <label for="temperatureValue">Entrez la température :</label>
<br> <input name="temperatureValue" type="text" id="temperatureValue" placeholder="(e.g : 23°C)" class="form-control">
<div class="form-row text-center"> <br>
<div class="col-12"> <div class="form-row text-center">
<button type="submit" id="submitConvertTemperature" class="btn btn-dark text-center">Envoyer</button> <div class="col-12">
</div> <button type="submit" id="submitConvertTemperature" class="btn btn-dark text-center">Envoyer</button>
</div> </div>
<br> <br> </div>
<p class="results text-center"></p> <br> <br>
</div> <p class="results text-center"></p>
</div>
</form>
</div> </div>
</main> </main>

View File

@ -7,26 +7,29 @@
<!-- Page Content --> <!-- Page Content -->
<main class="container-fluid flex-fill"> <main class="container-fluid flex-fill">
<div class="container"> <div class="container">
<h1><span class="important"><?php echo $title?></span> :</h1> <form id="filterStudentsForm" action="#" method="POST">
<p class="pt-3 text-center"><?php echo $description?></p> <h1><span class="important"><?php echo $title?></span> :</h1>
<div class="text-center"> <p class="pt-3 text-center"><?php echo $description?></p>
<img class="function-image" src="/img/function-image/filterStudents.png" alt="Carte étudiant"> <div class="text-center">
</div> <img class="function-image" src="/img/function-image/filterStudents.png" alt="Carte étudiant">
<div class="form-group"> </div>
<label for="nameEntered">Entrer les prénoms :</label> <div class="form-group">
<input name="nameEntered" type="text" id="nameEntered" placeholder="(e.g : 'Prénom1, Prénom2, Prénom3, ...')" class="form-control"> <label for="nameEntered">Entrer les prénoms :</label>
<br> <input name="nameEntered" type="text" id="nameEntered" placeholder="(e.g : 'Prénom1, Prénom2, Prénom3, ...')" class="form-control">
<label for="filteredLetter">Entrer la lettre à filtré :</label> <br>
<input name="filteredLetter" type="text" id="filteredLetter" placeholder="(e.g : 'A')" class="form-control"> <label for="filteredLetter">Entrer la lettre à filtré :</label>
<br> <input name="filteredLetter" type="text" id="filteredLetter" placeholder="(e.g : 'A')" class="form-control">
<div class="form-row text-center"> <br>
<div class="col-12"> <div class="form-row text-center">
<button type="submit" id="submitFilterStudents" class="btn btn-dark text-center">Envoyer</button> <div class="col-12">
<button type="submit" id="submitFilterStudents" class="btn btn-dark text-center">Envoyer</button>
</div>
</div>
<br> <br>
<p class="results text-center"></p>
</div> </div>
</div> </div>
<br> <br> </form>
<p class="results text-center"></p>
</div>
</div> </div>
</main> </main>

View File

@ -6,27 +6,29 @@
<!-- Page Content --> <!-- Page Content -->
<main class="container-fluid flex-fill"> <main class="container-fluid flex-fill">
<div class="container"> <div class="container">
<h1><span class="important"><?php echo $title?></span> :</h1> <h1><span class="important"><?php echo $title?></span> :</h1>
<p class="pt-3 text-center"><?php echo $description?> <br> <br> <p class="pt-3 text-center"><?php echo $description?> <br> <br>
<em>Par souci de performance, je recommande de ne pas essayer un mot avec + de 8 lettres.</em> <em>Par souci de performance, je recommande de ne pas essayer un mot avec + de 8 lettres.</em>
</p> </p>
<div class="text-center"> <div class="text-center">
<img class="function-image" src="/img/function-image/heapAlgorithm.png" alt="Heap's algorithm"> <img class="function-image" src="/img/function-image/heapAlgorithm.png" alt="Heap's algorithm">
</div>
<form id="heapAlgorithmForm" action="#" method="POST">
<div class="form-group">
<label for="value">Entrez un mot :</label>
<input name="value" type="text" id="value" placeholder="(e.g : Mot)" class="form-control">
<br>
<div class="form-row text-center">
<div class="col-12">
<button type="submit" id="submitHeapAlgorithm" class="btn btn-dark text-center">Envoyer</button>
</div>
</div>
<br> <br>
<p class="results text-center"></p>
</div>
</form>
</div> </div>
<div class="form-group">
<label for="value">Entrez un mot :</label>
<input name="value" type="text" id="value" placeholder="(e.g : Mot)" class="form-control">
<br>
<div class="form-row text-center">
<div class="col-12">
<button type="submit" id="submitHeapAlgorithm" class="btn btn-dark text-center">Envoyer</button>
</div>
</div>
<br> <br>
<p class="results text-center"></p>
</div>
</div>
</main> </main>
<!-- Footer --> <!-- Footer -->

View File

@ -7,26 +7,28 @@
<!-- Page Content --> <!-- Page Content -->
<main class="container-fluid flex-fill"> <main class="container-fluid flex-fill">
<div class="container"> <div class="container">
<h1><span class="important"><?php echo $title?></span> :</h1> <h1><span class="important"><?php echo $title?></span> :</h1>
<p class="pt-3 text-center"><?php echo $description?></p> <p class="pt-3 text-center"><?php echo $description?></p>
<div class="text-center"> <div class="text-center">
<img class="function-image" src="/img/function-image/randomNumber.png" alt="Nombre aléatoire"> <img class="function-image" src="/img/function-image/randomNumber.png" alt="Nombre aléatoire">
</div>
<div class="form-group">
<label for="minValue">Entrez la valeur minimale :</label>
<input name="minValue" type="number" min="0" id="minValue" placeholder="(e.g : 1)" class="form-control">
<br>
<label for="maxValue">Entrez la valeur maximale :</label>
<input name="maxValue" type="number" min="1" id="maxValue" placeholder="(e.g : 100)" class="form-control">
<br>
<div class="form-row text-center">
<div class="col-12">
<button type="submit" id="submitRandomNumber" class="btn btn-dark text-center">Envoyer</button>
</div>
</div>
<br> <br>
<p class="results text-center"></p>
</div> </div>
<form id="randomNumberForm" action="#" method="POST">
<div class="form-group">
<label for="minValue">Entrez la valeur minimale :</label>
<input name="minValue" type="number" min="0" id="minValue" placeholder="(e.g : 1)" class="form-control">
<br>
<label for="maxValue">Entrez la valeur maximale :</label>
<input name="maxValue" type="number" min="1" id="maxValue" placeholder="(e.g : 100)" class="form-control">
<br>
<div class="form-row text-center">
<div class="col-12">
<button type="submit" id="submitRandomNumber" class="btn btn-dark text-center">Envoyer</button>
</div>
</div>
<br> <br>
<p class="results text-center"></p>
</div>
</form>
</div> </div>
</main> </main>

View File

@ -7,28 +7,29 @@
<!-- Page Content --> <!-- Page Content -->
<main class="container-fluid flex-fill"> <main class="container-fluid flex-fill">
<div class="container"> <div class="container">
<h1><span class="important"><?php echo $title?></span> :</h1> <h1><span class="important"><?php echo $title?></span> :</h1>
<p class="pt-3 text-center"> <p class="pt-3 text-center">
<?php echo $description?> <?php echo $description?>
<div class="text-center"> <div class="text-center">
<img class="function-image" src="/img/function-image/randomQuote.png" alt="Citation"> <img class="function-image" src="/img/function-image/randomQuote.png" alt="Citation">
</div>
<br>
<div class="text-center">
<a href="/views/quote-list.php">La liste de toutes les citations/proverbes.</a>
</div>
</p> <br>
<div class="form-group">
<div class="form-row text-center">
<div class="col-12">
<button type="submit" id="submitRandomQuote" class="btn btn-dark text-center">Générer une nouvelle citation</button>
</div>
</div> </div>
<br>
<p class="resultsRandomQuote text-center"></p>
<br> <br>
<div class="text-center"> <div class="text-center">
<a target="_blank" id="twitterLink" class="btn btn-lg btn-primary"><i class="fab fa-twitter"></i> Twitter</a> <a href="/views/quote-list.php">La liste de toutes les citations/proverbes.</a>
</div>
</p> <br>
<div class="form-group">
<div class="form-row text-center">
<div class="col-12">
<button type="submit" id="submitRandomQuote" class="btn btn-dark text-center">Générer une nouvelle citation</button>
</div>
</div>
<br>
<p class="resultsRandomQuote text-center"></p>
<br>
<div class="text-center">
<a target="_blank" id="twitterLink" class="btn btn-lg btn-primary"><i class="fab fa-twitter"></i> Twitter</a>
</div>
</div> </div>
</div> </div>
</div> </div>

View File

@ -10,7 +10,7 @@
<h1><span class="important"><?php echo $title?></span> :</h1> <h1><span class="important"><?php echo $title?></span> :</h1>
<p class="pt-3 text-center"><?php echo $description?> <br> <p class="pt-3 text-center"><?php echo $description?> <br>
Pour une meilleure précision, je recommande de préciser le pays de la ville. <br> Pour une meilleure précision, je recommande de préciser le pays de la ville. <br>
La météo est récupérée grâce à l'API <a href="https://openweathermap.org/" target="_blank">openweathermap.org</a>. <br> Il faut rentrer le nom anglais de la ville (si il est différent qu'en français). <br> La météo est récupérée grâce à l'API <a href="https://openweathermap.org/" target="_blank">openweathermap.org</a>. <br> Il faut rentrer le nom anglais de la ville (s'il est différent qu'en français). <br>
Exemples : Paris, FR - London, UK - Moscow, RU - etc. Exemples : Paris, FR - London, UK - Moscow, RU - etc.
</p> </p>
<div class="text-center"> <div class="text-center">
@ -30,7 +30,7 @@
<p class="results text-center"></p> <p class="results text-center"></p>
</div> </div>
</div> </div>
</form> </form>
</main> </main>
<!-- Footer --> <!-- Footer -->