Subversion Repositories eFlore/Applications.cel

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
3897 delphine 1
export const findFieldset = fieldIndex => $(`fieldset.new-field[data-id=${fieldIndex}]`);
2
// effet d'affichage
3
export const showField    = $field => $field.hide().show(200);
4
export const hideNRemove  = ($element, $elemenToRemove = $element) => $element.hide(200, () => {
5
  $elemenToRemove.remove();
6
});
7
 
8
// JSON.stringify : Gestion des apostrophes dans les valeurs :
9
export const replacer = (key, value) => {
10
  if ('fieldValues' === key && 'object' === typeof value) {
11
    for (let i in value) {
12
      if (typeof value[i] === 'string') {
13
        // value[i] = value[i].replace( /\u0027/g, "''" );
14
        // La solution ci-dessus convient pour stockage dans la base mais pas pour la lecture dans saisie
15
        // du coup astuce moisie:
16
        value[i] = value[i].replace(/\u0027/g, "@apos@").replace(/\u0022/g, '@quot@')
17
      }
18
    }
19
  } else if (typeof value === 'string') {
20
    // value = value.replace( /\u0027/g, "''" );
21
    // La solution ci-dessus convient pour stockage dans la base mais pas pour la lecture dans saisie
22
    // du coup astuce moisie:
23
    value = value.replace(/\u0027/g, "@apos@").replace(/\u0022/g, '@quot@')
24
  }
25
  return value;
26
}
27
 
28
/**
29
* Permet à la fois de vérifier qu'une valeur ou objet existe et n'est pas vide
30
* et de comparer à une autre valeur :
31
* Vérifie qu'une variable ou objet n'est pas : vide, null, undefined, NaN
32
* Si comparer est défini on le compare à valeur en fonction de sensComparaison
33
* Un booléen est une variable valide : on retourne true
34
* @param { string || number || object || undefined } valeur
35
* @param { boolean } sensComparaison : true = rechercher, false = refuser
36
* @param { string || number || object || undefined || boolean } comparer :valeur à comparer
37
* @returns {boolean}
38
*/
39
export const valeurOk = (
40
  valeur,
41
  sensComparaison = true,
42
  comparer = undefined
43
) => {
44
  let retour;
45
 
46
  if ('boolean' !== typeof valeur) {
47
    switch(typeof valeur) {
48
      case 'string' :
49
        retour = ('' !== valeur);
50
        break;
51
      case 'number' :
52
        retour = (NaN !== valeur);
53
        break;
54
      case 'object' :
55
        retour = (null !== valeur && undefined !== valeur && !$.isEmptyObject(valeur));
56
        if (retour && undefined !== valeur.length) {
57
          retour = (retour  && 0 < valeur.length);
58
        }
59
        break;
60
      case 'undefined' :
61
      default :
62
        retour = false;
63
    }
64
    if (retour && comparer !== undefined) {
65
      const resultComparaison = (comparer === valeur);
66
 
67
      retour = (sensComparaison) ? resultComparaison : !resultComparaison;
68
    }
69
    return retour;
70
  } else {
71
    // Un booléen est une valeur valable
72
    return true;
73
  }
74
};
75
 
76
export const potDeMiel = () => {
77
  const $submit = $('#signup_submit');
78
 
79
  if (!valeurOk($('#basic-widget-form #email').val())) {
80
    $submit.prop('disabled', false);
81
  }
82
  $submit.off().on('click dblclick mousedown submit focus keydown keypress keyup touchstart touchend', () => {
83
    if (valeurOk($('#basic-widget-form #email').val())) {
84
      return false;
85
    }
86
  });
87
  $('#basic-widget-form #email').css({position: 'absolute', left: '-2000px'}).on('input blur change', function(event) {
88
    event.preventDefault();
89
    if (valeurOk($(this).val())) {
90
      $('form').each(function() {
91
        $(this)[0].reset();
92
      });
93
      $submit.prop('disabled', true);
94
    }
95
  });
96
};