Subversion Repositories eFlore/Applications.cel

Rev

Blame | Last modification | View Log | RSS feed

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);
    }
  });
};