Subversion Repositories eFlore/Applications.cel

Rev

Rev 3176 | Rev 3178 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 3176 Rev 3177
Line 342... Line 342...
342
 *********************************************/
342
 *********************************************/
Line 343... Line 343...
343
 
343
 
344
// Empêcher de créer plus d'une fois la même clé
344
// Empêcher de créer plus d'une fois la même clé
345
function onChangeCheckKeyUnique() {
345
function onChangeCheckKeyUnique() {
-
 
346
 if( 1 < $( '.field-key' ).length ) {
346
 if( 1 < $( '.field-key' ).length ) {
347
    // Marqueur de valeur dupliquée
Line 347... Line 348...
347
    let notUnique = false;
348
    let notUnique = false;
348
 
-
 
349
    $( '.field-key' ).change( function () {
-
 
350
          // On force le type de thisString en number pour comparer à l'index du for (plus bas)
-
 
351
      let thisIndex = Number( $( this ).attr( 'data-id' ) ),
349
 
Line 352... Line 350...
352
          thisFieldKey = $( '.field-key[data-id="' + thisIndex + '"]' ),
350
    $( '.field-key' ).change( function () {
353
          count = $( '.field-key' ).length;
351
      let count = $( '.field-key' ).length;
354
 
352
 
-
 
353
      for(var index = 0 ; index < count ; index++) {
-
 
354
        let thisFieldKey = $( '.field-key[data-id="' + index + '"]' );
-
 
355
        // Le champ avec cet index paourrait avoir été supprimé
-
 
356
        if( 0 < thisFieldKey.length ) {
-
 
357
          for( var otherIndex = 0 ; otherIndex < count ; otherIndex++ ) {
355
      for(var index = 0 ; index < count ; index++) {
358
            let otherFieldKey = $( '.field-key[data-id="' + otherIndex + '"]' );
-
 
359
            // Le champ avec cet index pourrait avoir été supprimé
-
 
360
            // On vérifie qu'on ne compare pas un champ avec lui-même
-
 
361
            // Que les champs ne sont pas vides
-
 
362
            // Les champs dupliqués déclanchent le marqueur et les alertes
-
 
363
            if(
-
 
364
              0 < otherFieldKey.length &&
356
        let loopFieldKey = $( '.field-key[data-id="' + index + '"]' );
365
              index !== otherIndex &&
-
 
366
              '' !== otherFieldKey.val() &&
-
 
367
              '' !== thisFieldKey.val() &&
357
        // Si cet index ne correspond pas à un champ supprimé
368
              thisFieldKey.val() === otherFieldKey.val()
-
 
369
            ) {
-
 
370
              // Le marqueur de valeur dupliquée passe à true
-
 
371
              notUnique = true;
-
 
372
              if( 0 === $( '.invalid-field-key[data-id="' + index + '"]' ).length ) {
-
 
373
                // Le champ est signalé en rouge
-
 
374
                // Un message d'alerte apparait sous le champ
-
 
375
                thisFieldKey.addClass( 'invalid' );
-
 
376
                thisFieldKey.after(
-
 
377
                  '<p class="message invalid-field-key" data-id="' + index + '">' +
-
 
378
                    '<i class="fa fa-exclamation-triangle" aria-hidden="true" style="color:#ff5d55"></i>' +
-
 
379
                    ' Vérifiez qu\'aucune clé n\'ait été utilisée plus d\'une fois'  +
-
 
380
                  '</p>'
-
 
381
                );
358
        // On compare la valeur avec les autres champs
382
              }
359
        if( 0 < loopFieldKey.length && thisIndex !== index && thisFieldKey.val() === loopFieldKey.val()) {
383
            }
360
          notUnique = true;
384
          }
361
        }
-
 
362
      }
-
 
363
      if( notUnique ) {
-
 
364
        // Le champ est signalé en rouge
-
 
365
        thisFieldKey.addClass( 'invalid' );
-
 
366
        // Un message d'alerte apparait sous le champ
-
 
367
        if( 0 === $( '.invalid-field-key[data-id="' + thisIndex + '"]' ).length ) {
-
 
368
          thisFieldKey.after(
-
 
369
            '<p class="message invalid-field-key" data-id="' + thisIndex + '">' +
-
 
370
              '<i class="fa fa-exclamation-triangle" aria-hidden="true" style="color:#ff5d55"></i>' +
-
 
371
              ' Vous avez déjà utilisé cette clé!' +
-
 
372
            '</p>'
385
        }
373
          );
386
      }
374
        }
387
      if( notUnique ) {
375
        // Un message d'alerte apparait au dessus des boutons prévisualiser/valider
388
        // Un message d'alerte apparait au dessus des boutons prévisualiser/valider
376
        if( 0 === $( '.invalid-field-key-bottom' ).length ) {
389
        if( 0 === $( '.invalid-field-key-bottom' ).length ) {
377
          $( '#new-fields' ).append(
390
          $( '#new-fields' ).after(
378
            '<p class="message invalid-field-key-bottom">' +
391
            '<p class="message invalid-field-key-bottom">' +
379
              '<i class="fa fa-exclamation-triangle" aria-hidden="true" style="color:#ff5d55"></i>' +
392
              '<i class="fa fa-exclamation-triangle" aria-hidden="true" style="color:#ff5d55"></i>' +
380
              ' Une clé a été utilisée plusieurs fois' +
393
              ' Une clé a été utilisée plusieurs fois' +
381
            '</p>'
394
            '</p>'
382
          );
395
          );
383
        }
396
        }
384
        // Les boutons prévisualiser/valider sont désactivés et signalés en rouge
397
        // Les boutons prévisualiser/valider sont désactivés et signalés en rouge
-
 
398
        $( '#preview-field , #validate-new-fields' ).addClass( 'invalid' ).css( 'pointer-events', 'none' );
385
        $( '#preview-field , #validate-new-fields' ).addClass( 'invalid' ).css( 'pointer-events', 'none' );
399
      } else {// Si on est ok on retire toutes les alertes
-
 
400
        // signalements rouges
386
      // Si on est ok on retire toutes les alertes
401
        $( '.field-key' ).each( function() {
-
 
402
          $( this ).removeClass( 'invalid' );
387
      } else {
403
        });
-
 
404
        $( '#preview-field , #validate-new-fields' ).removeClass( 'invalid' );
388
        thisFieldKey.removeClass( 'invalid' );
405
        // messages d'alerte
-
 
406
        $( '.invalid-field-key' ).each( function() {
389
        $( '#preview-field , #validate-new-fields' ).removeClass( 'invalid' );
407
          $( this ).hide( 200 , function () {
390
        $( '.invalid-field-key[data-id="' + thisIndex + '"]' ).hide( 200 , function () {
408
            $( this ).remove();
391
          $( this ).remove();
409
          });
392
        });
410
        });
-
 
411
        $( '.invalid-field-key-bottom' ).hide( 200 , function () {
393
        $( '.invalid-field-key-bottom' ).hide( 200 , function () {
412
          $( this ).remove();
394
          $( this ).remove();
413
        });
395
        });
414
        //réactivation des boutons prévisualiser/valider
396
        $( '#preview-field' )[0].style.removeProperty( 'pointer-events' );
415
        $( '#preview-field' )[0].style.removeProperty( 'pointer-events' );
397
        $( '#validate-new-fields' )[0].style.removeProperty( 'pointer-events' )
416
        $( '#validate-new-fields' )[0].style.removeProperty( 'pointer-events' )
Line 459... Line 478...
459
    if( invalidElementInfos ||  invalidTextInfos ) {
478
    if( invalidElementInfos ||  invalidTextInfos ) {
460
      // Désactivation des boutons valider et prévisualiser
479
      // Désactivation des boutons valider et prévisualiser
461
      $( '#preview-field , #validate-new-fields' ).addClass( 'invalid' );
480
      $( '#preview-field , #validate-new-fields' ).addClass( 'invalid' );
462
      // Message pour les options des "listes"
481
      // Message pour les options des "listes"
463
      if( invalidElementInfos ) {
482
      if( invalidElementInfos ) {
464
        $( '#new-fields' ).append(
483
        $( '#new-fields' ).after(
465
          '<p class="validation-warning message">' +
484
          '<p class="validation-warning message">' +
466
            '<i class="fa fa-exclamation-triangle" aria-hidden="true" style="color:#ff5d55"></i>' +
485
            '<i class="fa fa-exclamation-triangle" aria-hidden="true" style="color:#ff5d55"></i>' +
467
             '&nbsp;Vérifiez les boutons<br>"<i class="fa fa-puzzle-piece" aria-hidden="true" style="color:#4bbacb"></i>&nbsp;Ajouter une valeur" signalés en rouge:' +
486
             '&nbsp;Vérifiez les boutons<br>"<i class="fa fa-puzzle-piece" aria-hidden="true" style="color:#4bbacb"></i>&nbsp;Ajouter une valeur" signalés en rouge:' +
468
             ' il faut au moins une valeur pour les éléments "menu déroulant", "boutons radio", "cases à cocher" ou "liste de cases à cocher", ' +
487
             ' il faut au moins une valeur pour les éléments "menu déroulant", "boutons radio", "cases à cocher" ou "liste de cases à cocher", ' +
469
          '</p>'
488
          '</p>'
470
        );
489
        );
471
      }
490
      }
472
      // Message pour les champs
491
      // Message pour les champs
473
      if( invalidTextInfos ) {
492
      if( invalidTextInfos ) {
474
        $( '#new-fields' ).append(
493
        $( '#new-fields' ).after(
475
          '<p class="validation-warning message">' +
494
          '<p class="validation-warning message">' +
476
            '<i class="fa fa-exclamation-triangle" aria-hidden="true" style="color:#ff5d55"></i>' +
495
            '<i class="fa fa-exclamation-triangle" aria-hidden="true" style="color:#ff5d55"></i>' +
477
             '&nbsp;Des informations sont manquantes pour certains champs,' +
496
             '&nbsp;Des informations sont manquantes pour certains champs,' +
478
             ' vérifiez ceux signalés en rouge' +
497
             ' vérifiez ceux signalés en rouge' +
479
          '</p>'
498
          '</p>'