Source: fonctions_annexes.js

/* Fonctions Annexes */

/** 
 * @function isEmptyValue
 * @description Vérifie si une valeur est vide.
 * @param {string} value 
 * @returns {boolean} 
 * @example isEmptyValue(null) → true
 */ 
function isEmptyValue(value) {
    return value === '' || value === null || value === undefined;
} 

/** 
 * @function formatNumberResult
 * @description Formate un nombre avec des espaces.
 * @param {number} num
 * @returns {(number|string)} - Le nombre formaté soit en nombre ou soit en string si supérieur à 1000 car pour 1000 par exemple formatNumberResult renvoie '1 000'
 * @example formatNumberResult(76120) → '76 120'
 */ 
function formatNumberResult(num) {
    if(!isNaN(num) && num >= 1000) {
        return num.toString().replace(/(\d)(?=(\d{3})+(?!\d))/g, '$1 ');
    }
    else {
        return num;
    }
} 

/** 
 * @function isFloat
 * @description Vérifie si une string est un float (integer exclu).
 * @param {number} value 
 * @returns {boolean} 
 * @example isFloat(76120.474) → true
 */
function isFloat(value) {
    return !isNaN(value) && value.toString().includes('.');
} 

/** 
 * @function capitalize
 * @description Majuscule à la 1ère lettre d'une string.
 * @param {string} s 
 * @returns {string} 
 * @example capitalize('hello world!') → 'Hello world!'
 */
function capitalize(s) { 
    if (typeof s !== 'string') return ''
    return s.charAt(0).toUpperCase() + s.slice(1)
}

/** 
 * @function dateTimeUTC
 * @description Donne la date et l'heure selon l'UTC (Universal Time Coordinated).
 * @requires {@link fonctions_annexes.js: showDateTime}
 * @requires {@link variables.js: timeNow, utcOffset, timeNow.setMinutes(timeNow.getMinutes() + utcOffset)}
 * @param {string} utc Heure de décalage par rapport à l'UTC 
 * @returns {function} → showDateTime(enteredOffset) → Retourne l'exécution de la fonction showDateTime
 * @example dateTimeUTC('0') 
 */ 
function dateTimeUTC(utc) {
    const enteredOffset = parseFloat(utc)*60;
    timeNow.setMinutes(timeNow.getMinutes() + enteredOffset);
    return showDateTime(enteredOffset);
} 

/** 
 * @function showDateTime
 * @description Affiche la date et l'heure (format : dd/mm/yyyy - 00:00:00).
 * @requires {@link fonctions_annexes.js: showDateTime}
 * @param {string} utc Heure de décalage par rapport à l'UTC 
 * @returns {object} Retourne un objet contenant l'année, le mois, le jour, l'heure, les minutes, les secondes et la date formaté
 * @example dateTimeUTC('0') → dateTimeUTC vous renvoie l'exécution de showDateTime
 */ 
function showDateTime(enteredOffset) {
    const year    = timeNow.getFullYear();
    const month   = ('0'+(timeNow.getMonth()+1)).slice(-2);
    const day     = ('0'+timeNow.getDate()).slice(-2);
    const hour    = ('0'+timeNow.getHours()).slice(-2);
    const minute  = ('0'+timeNow.getMinutes()).slice(-2);
    const second  = ('0'+timeNow.getSeconds()).slice(-2);

    const showDateTimeValue = day + "/" + month + "/" + year + " - " + hour + ":" + minute + ":" + second;
    const objectDateTime = {
        year: year,
        month: month,
        day: day,
        hour: hour,
        minute: minute,
        second: second,
        showDateTimeValue: showDateTimeValue
    };
    timeNow.setMinutes(timeNow.getMinutes() - enteredOffset)

    return objectDateTime;
}

/** 
 * @function realDateTime
 * @description Affiche l'heure en temps réel.
 * @param {string} id 
 * @returns {boolean} true → Toujours true
 * @example window.onload = realDateTime('realDateTime') → va afficher l'heure en temps réel au chargement de la page dans la balise avec l'id realDateTime
 */
function realDateTime(id) {
    const realDateTimeNow = new Date;
    // const year    = realDateTimeNow.getFullYear();
    // const month   = ('0'+(realDateTimeNow.getMonth()+1)).slice(-2);
    // const day     = ('0'+realDateTimeNow.getDate()).slice(-2);
    const hour    = ('0'+realDateTimeNow.getHours()).slice(-2);
    const minute  = ('0'+realDateTimeNow.getMinutes()).slice(-2);
    const second  = ('0'+realDateTimeNow.getSeconds()).slice(-2);

    const resultat = hour + ":" + minute + ":" + second;

    document.getElementById(id).innerHTML = resultat;
    setTimeout('realDateTime("'+id+'");','1000');
    return true;
}

/** 
 * @function isValidDate
 * @description Vérifie si une date est valide (si la variable verifyDate a déjà exister avant la variable currentDate).
 * @param {string} verifyDate (format : dd/mm/yyyy) sachant qu'il faut faire -1 au mois car de 0 à 11 donc par exemple 14/12/2019 sera le 14 novembre 2019
 * @param {string} currentDate (format : dd/mm/yyyy) pas besoin de faire -1 au mois donc par exemple 14/12/2019 sera le 14 décembre 2019
 * @returns {boolean}
 * @example 
 * isValidDate('10/11/2019', '11/11/2019') → false → Comparaison entre le 10 décembre 2019 et le 11 novembre 2019
 * isValidDate('10/10/2019', '11/11/2019') → true → Comparison entre le 10 novembre 2019 et le 11 novembre 2019
 */ 
function isValidDate(verifyDate, currentDate) {
    // Date à vérifier 
    const toVerifyDate = verifyDate.split('/');
    const splitedToVerifyDate = toVerifyDate[2] + '-' + (parseInt(toVerifyDate[1]) + 1) + '-' + toVerifyDate[0];
    const msToVerifyDate = Date.parse(splitedToVerifyDate);

    // Date courante
    currentDate = currentDate.substr(0,10);
    const currentDateSplited = currentDate.split('/');
    const currentDateFormat = currentDateSplited[2] + '-' + currentDateSplited[1] + '-' + currentDateSplited[0];
    const msCurrentDate = Date.parse(currentDateFormat);

    if(msToVerifyDate <= msCurrentDate) {
        return true;
    } else if(msToVerifyDate > msCurrentDate) {
        return false;
    } else {
        return messageError;
    }
}

/** 
 * @function createSessionCookie
 * @description Créer un cookie de session.
 * @param {string} name Nom du cookie
 * @param {string} value Valeur du cookie
 */
function createSessionCookie(name, value) { 
    document.cookie = escape(name) + "=" + escape(value) + " ; path=/"; 
}