FunctionProject/scripts/fonctions_principales.js

263 lines
12 KiB
JavaScript

/* Fonctions Principales */
// Requête à l'API openweathermap.org
function weatherRequest(url) {
$.ajax({
url : url,
dataType : "json",
success: function (json) {
let city = json.name;
let showDateTimeValue = timeZone(json);
if(city === 'Moscou')
{
$('.results').html(`🌎 Position : <a href='https://www.google.com/maps/place/${city}/' class="yellow-color" target="_blank">${city}, RU</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"/>`);
$("#cityName, #submitWeatherRequest").click(function() {
document.location.replace("../../views/function-views/weatherRequest.php");
});
}
else
{
$('.results').html(`🌎 Position : <a href='https://www.google.com/maps/place/${city}/' 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"/>`);
$("#cityName, #submitWeatherRequest").click(function() {
document.location.replace("../../views/function-views/weatherRequest.php");
});
}
},
statusCode: {
404: function() {
document.location.replace("../error404Weather");
}
}
});
}
// Génère un nombre aléatoire entre un minimum inclus et un maximum inclus
function randomNumber(min, max) {
min = Math.ceil(min);
max = Math.floor(max);
if (!isNaN(min) && !isNaN(max) && min < max)
{
return Math.floor(Math.random() * (max - min +1)) + min;
}
else {
return null;
}
}
// Calcule l'âge de quelqu'un selon la date de naissance
function calculateAge(birthDateEntered) {
// Les variables de la fonction
let birthDateDay = parseInt(birthDateEntered[0] + birthDateEntered[1]);
let birthDateMonth = parseInt((birthDateEntered[3] + birthDateEntered[4]) - 1);
let birthDateYear = parseInt(birthDateEntered[6] + birthDateEntered[7] + birthDateEntered[8] + birthDateEntered[9]);
dateTimeUTC('0');
day = parseInt(day)
month = parseInt(month - 1);
year = parseInt(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');
let isValidDateFunction = isValidDate(birthDateDay + '/' + birthDateMonth + '/' + birthDateYear);
// Vérifie si la valeur entrée correspond à une date de naissance valide
if(isValidDateFunction === true)
{
// Si c'est ton anniversaire aujourd'hui
if(birthDateDay === parseInt(day) && (parseInt(birthDateMonth) + 1) === parseInt(month))
{
return 'Vous avez ' + ageYears + ' ans. Joyeux Anniversaire! 🥳';
}
else
{
return 'Vous avez ' + ageYears + ' ans, ' + ageMonths + ' mois et ' + ageDays + ' jour(s).';
}
}
else
{
return messageError;
}
}
// Convertis des °C en °F et l'inverse aussi
function convertTemperature(degree, unit) {
if (!isNaN(degree) && unit === "°C")
{
const temperatureValue = ((degree * 9/5) + 32) + " °F";
return temperatureValue;
}
else if (!isNaN(degree) && unit === "°F")
{
const temperatureValue = (degree - 32) * 5/9 + " °C";
return temperatureValue;
}
else
{
return messageError;
}
}
// Convertis la longueur (distance) avec les unités allant de picomètre au Téramètre
function convertDistance (firstValue, unitFirstValue, unitFinalValue) {
let reference = ["pm",null,null,"nm",null,null,"µm",null,null,"mm","cm","dm","m","dam","hm","km",null,null,"Mm",null,null,"Gm",null,null,"Tm"];
let index1 = reference.indexOf(unitFirstValue);
let index2 = reference.indexOf(unitFinalValue);
// Condition qui vérifie si les valeurs entrées sont justes
if (!isNaN(firstValue) && typeof unitFirstValue === 'string' && typeof unitFinalValue === 'string' && (index1.toString() && index2.toString()) != '-1')
{
// Conversion des longueurs :
let difference = index1 - index2;
let result = firstValue*Math.pow(10,difference);
let response = 'Conversion de longueur : ' + formatNumberResult(firstValue).toString() + ' ' + unitFirstValue + ' = ' + formatNumberResult(result) + ' ' + unitFinalValue;
return response;
}
else
{
return messageError;
}
}
// Affiche uniquement les prénoms (qui sont dans la liste) qui commence par la lettre souhaitée
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...
let last = filteredStudents[filteredStudents.length - 1]; // Accéde au dernier élément du tableau
let 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 + ".");
}
}
// Génère aléatoirement une citation ou un proverbe
function getRandomQuote() {
let randomNbr = randomNumber(0, (quotes.length - 1));
let randomQuotes = quotes[randomNbr];
return '" ' + randomQuotes["quote"] + ' " <br> <br> - ' + randomQuotes["source"];
}
// Convertis une valeur dans une devise dans une autre devise
function convertCurrency(value, currency, url) {
$.ajax({
url : url,
dataType : "json",
success: function (jsonFixer) {
switch(currency) {
case '£':
$('.results').html(formatNumberResult(value) + ' ' + jsonFixer.base + ' = ' + ((parseFloat(jsonFixer.rates.GBP) * value)).toFixed(2) + ' ' + currency);
$('.rateDate').html("Dernier rafraîchissement du taux d'échange : " + jsonFixer.date);
break;
case '$ Américain':
$('.results').html(formatNumberResult(value) + ' ' + jsonFixer.base + ' = ' + ((parseFloat(jsonFixer.rates.USD) * value)).toFixed(2) + ' ' + currency);
$('.rateDate').html("Dernier rafraîchissement du taux d'échange : " + jsonFixer.date);
break;
case '$ Canadien':
$('.results').html(formatNumberResult(value) + ' ' + jsonFixer.base + ' = ' + ((parseFloat(jsonFixer.rates.CAD) * value)).toFixed(2) + ' ' + currency);
$('.rateDate').html("Dernier rafraîchissement du taux d'échange : " + jsonFixer.date);
break;
case '$ Australien':
$('.results').html(formatNumberResult(value) + ' ' + jsonFixer.base + ' = ' + ((parseFloat(jsonFixer.rates.AUD) * value)).toFixed(2) + ' ' + currency);
$('.rateDate').html("Dernier rafraîchissement du taux d'échange : " + jsonFixer.date);
break;
case '$ Mexicain':
$('.results').html(formatNumberResult(value) + ' ' + jsonFixer.base + ' = ' + ((parseFloat(jsonFixer.rates.MXN) * value)).toFixed(2) + ' ' + currency);
$('.rateDate').html("Dernier rafraîchissement du taux d'échange : " + jsonFixer.date);
break;
case 'CHF':
$('.results').html(formatNumberResult(value) + ' ' + jsonFixer.base + ' = ' + ((parseFloat(jsonFixer.rates.CHF) * value)).toFixed(2) + ' ' + currency);
$('.rateDate').html("Dernier rafraîchissement du taux d'échange : " + jsonFixer.date);
break;
case '₽':
$('.results').html(formatNumberResult(value) + ' ' + jsonFixer.base + ' = ' + ((parseFloat(jsonFixer.rates.RUB) * value)).toFixed(2) + ' ' + currency);
$('.rateDate').html("Dernier rafraîchissement du taux d'échange : " + jsonFixer.date);
break;
case 'R$':
$('.results').html(formatNumberResult(value) + ' ' + jsonFixer.base + ' = ' + ((parseFloat(jsonFixer.rates.BRL) * value)).toFixed(2) + ' ' + currency);
$('.rateDate').html("Dernier rafraîchissement du taux d'échange : " + jsonFixer.date);
break;
case '¥':
$('.results').html(formatNumberResult(value) + ' ' + jsonFixer.base + ' = ' + ((parseFloat(jsonFixer.rates.JPY) * value)).toFixed(2) + ' ' + currency);
$('.rateDate').html("Dernier rafraîchissement du taux d'échange : " + jsonFixer.date);
break;
case '€':
let rateEUR = jsonFixer.rates.EUR;
if (isNaN(rateEUR)) {
$('.results').html(formatNumberResult(value) + ' €');
} else {
$('.results').html(formatNumberResult(value) + ' ' + jsonFixer.base + ' = ' + ((parseFloat(rateEUR) * value)).toFixed(2) + ' ' + currency);
$('.rateDate').html("Dernier rafraîchissement du taux d'échange : " + jsonFixer.date);
}
break;
default:
$('.results').html(formatNumberResult(value) + ' €');
break;
}
},
statusCode: {
404: function() {
document.location.replace("../404.php");
}
}
});
}
// Convertis du texte (encodé en UTF-8) en binaire et l'inverse aussi (source : http://jsfiddle.net/47zwb41o)
// UTF-8 vers Binaire
function utf8ToBin(s) {
try {
s = unescape( encodeURIComponent(s));
var 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;
} catch (error) {
return s;
}
}
// Binaire vers UTF-8
function binToUtf8(s){
try {
var 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;
}
}