Subversion Repositories eFlore/Applications.cel

Compare Revisions

Ignore whitespace Rev 3891 → Rev 3892

/trunk/widget/modules/manager/squelettes/js/utils.js
New file
0,0 → 1,96
export const findFieldset = fieldIndex => $(`fieldset.new-field[data-id=${fieldIndex}]`);
// effet d'affichage
export const showField = $field => $field.hide().show(200);
export const hideNRemove = ($element, $elemenToRemove = $element) => $element.hide(200, () => {
$elemenToRemove.remove();
});
 
// JSON.stringify : Gestion des apostrophes dans les valeurs :
export const replacer = (key, value) => {
if ('fieldValues' === key && 'object' === typeof value) {
for (let i in value) {
if (typeof value[i] === 'string') {
// value[i] = value[i].replace( /\u0027/g, "''" );
// La solution ci-dessus convient pour stockage dans la base mais pas pour la lecture dans saisie
// du coup astuce moisie:
value[i] = value[i].replace(/\u0027/g, "@apos@").replace(/\u0022/g, '@quot@')
}
}
} else if (typeof value === 'string') {
// value = value.replace( /\u0027/g, "''" );
// La solution ci-dessus convient pour stockage dans la base mais pas pour la lecture dans saisie
// du coup astuce moisie:
value = value.replace(/\u0027/g, "@apos@").replace(/\u0022/g, '@quot@')
}
return value;
}
 
/**
* Permet à la fois de vérifier qu'une valeur ou objet existe et n'est pas vide
* et de comparer à une autre valeur :
* Vérifie qu'une variable ou objet n'est pas : vide, null, undefined, NaN
* Si comparer est défini on le compare à valeur en fonction de sensComparaison
* Un booléen est une variable valide : on retourne true
* @param { string || number || object || undefined } valeur
* @param { boolean } sensComparaison : true = rechercher, false = refuser
* @param { string || number || object || undefined || boolean } comparer :valeur à comparer
* @returns {boolean}
*/
export const valeurOk = (
valeur,
sensComparaison = true,
comparer = undefined
) => {
let retour;
 
if ('boolean' !== typeof valeur) {
switch(typeof valeur) {
case 'string' :
retour = ('' !== valeur);
break;
case 'number' :
retour = (NaN !== valeur);
break;
case 'object' :
retour = (null !== valeur && undefined !== valeur && !$.isEmptyObject(valeur));
if (retour && undefined !== valeur.length) {
retour = (retour && 0 < valeur.length);
}
break;
case 'undefined' :
default :
retour = false;
}
if (retour && comparer !== undefined) {
const resultComparaison = (comparer === valeur);
 
retour = (sensComparaison) ? resultComparaison : !resultComparaison;
}
return retour;
} else {
// Un booléen est une valeur valable
return true;
}
};
 
export const potDeMiel = () => {
const $submit = $('#signup_submit');
 
if (!valeurOk($('#basic-widget-form #email').val())) {
$submit.prop('disabled', false);
}
$submit.off().on('click dblclick mousedown submit focus keydown keypress keyup touchstart touchend', () => {
if (valeurOk($('#basic-widget-form #email').val())) {
return false;
}
});
$('#basic-widget-form #email').css({position: 'absolute', left: '-2000px'}).on('input blur change', function(event) {
event.preventDefault();
if (valeurOk($(this).val())) {
$('form').each(function() {
$(this)[0].reset();
});
$submit.prop('disabled', true);
}
});
};