You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
163 lines
4.9 KiB
JavaScript
163 lines
4.9 KiB
JavaScript
export default class Utils {
|
|
/**
|
|
* Une variable vaut-elle "undefined" ?
|
|
*
|
|
* @param {any} variable La variable à tester
|
|
*
|
|
* @returns {boolean} Vrai si la variable vaut "undefined", sinon Faux
|
|
*/
|
|
static isUndefined (variable) {
|
|
return typeof variable === 'undefined';
|
|
}
|
|
/**
|
|
* Une variable est-elle une chaîne de caractère ?
|
|
*
|
|
* @param {any} variable La variable à tester
|
|
*
|
|
* @returns {boolean} Vrai si la variable est uen chaîne de caractères, sinon Faux
|
|
*/
|
|
static isString (variable) {
|
|
return typeof variable === 'string' || variable instanceof String;
|
|
}
|
|
/**
|
|
* Une variable est-elle une chaine de caractère vide ou équivalent (undefined ou null) ?
|
|
*
|
|
* @param {any} variable La variable à tester
|
|
*
|
|
* @returns {boolean} Vrai si la variable est une chaine de caractères vide (ou équivalent)
|
|
*/
|
|
static empty_str (variable) {
|
|
return Utils.isUndefined(variable) || variable === null || variable === '';
|
|
}
|
|
|
|
/**
|
|
* Vérifie qu'au moins une case à cocher d'une liste de cases à cocher est bien cochée
|
|
*
|
|
* @param {jQuery} list Une liste de case à cocher
|
|
*
|
|
* @returns {boolean} Vrai si au moins l'un de case à cocher est cochée.
|
|
*/
|
|
static checkAtLeastOnChecked (list) {
|
|
return list.filter(':checked').length > 0;
|
|
}
|
|
|
|
/**
|
|
* Est-ce qu'un objet jQuery possède un attribut et qu'il est différent de Faux
|
|
*
|
|
* @param {jQuery} objJquery L'objet jQuery
|
|
* @param {string} attrName Le nom de l'attribut
|
|
*
|
|
* @returns {boolean} Vrai si l'attribut existe et est différent de Faux.
|
|
*/
|
|
static hasAttr (objJquery, attrName) {
|
|
let val = objJquery.attr(attrName);
|
|
return !Utils.isUndefined(val) && val !== false;
|
|
}
|
|
/**
|
|
* Récupère le formulaire associé à un champ
|
|
*
|
|
* Tient compte de l'attribut "form" si renseigné.
|
|
*
|
|
* @param {jQuery} input Le champ pour lequel on veut le formulaire
|
|
*
|
|
* @returns {jQuery} Le formulaire correspondant
|
|
*/
|
|
static getFormOfInput (input) {
|
|
let form;
|
|
|
|
if (Utils.hasAttr(input, 'form')) {
|
|
form = $('#' + input.attr('form'));
|
|
}
|
|
else {
|
|
form = input.parents('form').first();
|
|
}
|
|
|
|
return form;
|
|
}
|
|
|
|
/**
|
|
* Supprime les doublons d'un tableau
|
|
*
|
|
* @param {any[]} array Le tableau à dédoublonner
|
|
*
|
|
* @returns {any[]} Le tableau dédoublonné
|
|
*/
|
|
static array_uniq (array) {
|
|
return Array.from(new Set(array));
|
|
}
|
|
|
|
/**
|
|
* Met la première lettre d'une chaine de caractères en majuscule
|
|
*
|
|
* @param {string} string La chaine de caractères
|
|
*
|
|
* @returns {string} La chaine de caractères avec la première lettre en majuscule
|
|
*/
|
|
static string_ucFirst (string) {
|
|
return string.charAt(0).toUpperCase() + string.slice(1);
|
|
}
|
|
|
|
/**
|
|
* Calcule la taille RÉELLE d'un élément jQuery
|
|
*
|
|
* Prends la plus grande valeur entre la hauteur CSS de l'élément et la hauteur réelle de ses enfants.
|
|
*
|
|
* Cela permet de "corriger" le problème des conteneurs plus petit que leurs enfants
|
|
*
|
|
* @param {jQuery} element
|
|
*
|
|
* @returns {int} La hauteur réelle (en px)
|
|
*/
|
|
static getElementRealHeight (element) {
|
|
if (element.length <= 0) {
|
|
return 0;
|
|
}
|
|
const elementHeight = element.outerHeight(true);
|
|
|
|
let childrenHeight = 0;
|
|
element.children().each(function () {
|
|
childrenHeight = Utils.getElementRealHeight($(this));
|
|
});
|
|
|
|
return parseInt(childrenHeight > elementHeight ? childrenHeight : elementHeight, 10);
|
|
}
|
|
|
|
/**
|
|
* Ajoute des arguments à une URL
|
|
*
|
|
* @param {object} arguments Les arguments à ajouter
|
|
* @param {string} url L'URL à laquelle ajouter les arguments ; celle actuelle (location.href) si non fournie
|
|
*
|
|
* @return {string} L'URL de résultat
|
|
*/
|
|
static addArgumentsToUrl (args, url = undefined) {
|
|
if (Utils.isUndefined(url)) {
|
|
url = document.location.href;
|
|
}
|
|
|
|
let urlObj = new URL(url);
|
|
for (const [argumentName, argumentValue] of Object.entries(args)) {
|
|
urlObj.searchParams.set(argumentName, argumentValue);
|
|
}
|
|
|
|
return urlObj.toString();
|
|
}
|
|
|
|
/**
|
|
* Récupère une valeur data-*, avec gestion valeur par défaut
|
|
*
|
|
* @param {jQuery} element L'élément jQuery
|
|
* @param {string} key La clé de la donnée voulue
|
|
* @param {any} defaultValue La valeur par défaut
|
|
*
|
|
* @return {any} La valeur de la donnée
|
|
*/
|
|
static getData (element, key, defaultValue = undefined) {
|
|
const value = element.data(key);
|
|
if (Utils.isUndefined(value)) {
|
|
return defaultValue;
|
|
}
|
|
|
|
return value;
|
|
}
|
|
} |