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 |
' Vérifiez les boutons<br>"<i class="fa fa-puzzle-piece" aria-hidden="true" style="color:#4bbacb"></i> Ajouter une valeur" signalés en rouge:' +
|
486 |
' Vérifiez les boutons<br>"<i class="fa fa-puzzle-piece" aria-hidden="true" style="color:#4bbacb"></i> 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 |
' Des informations sont manquantes pour certains champs,' +
|
496 |
' 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>'
|