344,37 → 344,50 |
// Empêcher de créer plus d'une fois la même clé |
function onChangeCheckKeyUnique() { |
if( 1 < $( '.field-key' ).length ) { |
// Marqueur de valeur dupliquée |
let notUnique = false; |
|
$( '.field-key' ).change( function () { |
// On force le type de thisString en number pour comparer à l'index du for (plus bas) |
let thisIndex = Number( $( this ).attr( 'data-id' ) ), |
thisFieldKey = $( '.field-key[data-id="' + thisIndex + '"]' ), |
count = $( '.field-key' ).length; |
let count = $( '.field-key' ).length; |
|
for(var index = 0 ; index < count ; index++) { |
let loopFieldKey = $( '.field-key[data-id="' + index + '"]' ); |
// Si cet index ne correspond pas à un champ supprimé |
// On compare la valeur avec les autres champs |
if( 0 < loopFieldKey.length && thisIndex !== index && thisFieldKey.val() === loopFieldKey.val()) { |
let thisFieldKey = $( '.field-key[data-id="' + index + '"]' ); |
// Le champ avec cet index paourrait avoir été supprimé |
if( 0 < thisFieldKey.length ) { |
for( var otherIndex = 0 ; otherIndex < count ; otherIndex++ ) { |
let otherFieldKey = $( '.field-key[data-id="' + otherIndex + '"]' ); |
// Le champ avec cet index pourrait avoir été supprimé |
// On vérifie qu'on ne compare pas un champ avec lui-même |
// Que les champs ne sont pas vides |
// Les champs dupliqués déclanchent le marqueur et les alertes |
if( |
0 < otherFieldKey.length && |
index !== otherIndex && |
'' !== otherFieldKey.val() && |
'' !== thisFieldKey.val() && |
thisFieldKey.val() === otherFieldKey.val() |
) { |
// Le marqueur de valeur dupliquée passe à true |
notUnique = true; |
} |
} |
if( notUnique ) { |
if( 0 === $( '.invalid-field-key[data-id="' + index + '"]' ).length ) { |
// Le champ est signalé en rouge |
// Un message d'alerte apparait sous le champ |
thisFieldKey.addClass( 'invalid' ); |
// Un message d'alerte apparait sous le champ |
if( 0 === $( '.invalid-field-key[data-id="' + thisIndex + '"]' ).length ) { |
thisFieldKey.after( |
'<p class="message invalid-field-key" data-id="' + thisIndex + '">' + |
'<p class="message invalid-field-key" data-id="' + index + '">' + |
'<i class="fa fa-exclamation-triangle" aria-hidden="true" style="color:#ff5d55"></i>' + |
' Vous avez déjà utilisé cette clé!' + |
' Vérifiez qu\'aucune clé n\'ait été utilisée plus d\'une fois' + |
'</p>' |
); |
} |
} |
} |
} |
} |
if( notUnique ) { |
// Un message d'alerte apparait au dessus des boutons prévisualiser/valider |
if( 0 === $( '.invalid-field-key-bottom' ).length ) { |
$( '#new-fields' ).append( |
$( '#new-fields' ).after( |
'<p class="message invalid-field-key-bottom">' + |
'<i class="fa fa-exclamation-triangle" aria-hidden="true" style="color:#ff5d55"></i>' + |
' Une clé a été utilisée plusieurs fois' + |
383,16 → 396,22 |
} |
// Les boutons prévisualiser/valider sont désactivés et signalés en rouge |
$( '#preview-field , #validate-new-fields' ).addClass( 'invalid' ).css( 'pointer-events', 'none' ); |
// Si on est ok on retire toutes les alertes |
} else { |
thisFieldKey.removeClass( 'invalid' ); |
} else {// Si on est ok on retire toutes les alertes |
// signalements rouges |
$( '.field-key' ).each( function() { |
$( this ).removeClass( 'invalid' ); |
}); |
$( '#preview-field , #validate-new-fields' ).removeClass( 'invalid' ); |
$( '.invalid-field-key[data-id="' + thisIndex + '"]' ).hide( 200 , function () { |
// messages d'alerte |
$( '.invalid-field-key' ).each( function() { |
$( this ).hide( 200 , function () { |
$( this ).remove(); |
}); |
}); |
$( '.invalid-field-key-bottom' ).hide( 200 , function () { |
$( this ).remove(); |
}); |
//réactivation des boutons prévisualiser/valider |
$( '#preview-field' )[0].style.removeProperty( 'pointer-events' ); |
$( '#validate-new-fields' )[0].style.removeProperty( 'pointer-events' ) |
} |
461,7 → 480,7 |
$( '#preview-field , #validate-new-fields' ).addClass( 'invalid' ); |
// Message pour les options des "listes" |
if( invalidElementInfos ) { |
$( '#new-fields' ).append( |
$( '#new-fields' ).after( |
'<p class="validation-warning message">' + |
'<i class="fa fa-exclamation-triangle" aria-hidden="true" style="color:#ff5d55"></i>' + |
' 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:' + |
471,7 → 490,7 |
} |
// Message pour les champs |
if( invalidTextInfos ) { |
$( '#new-fields' ).append( |
$( '#new-fields' ).after( |
'<p class="validation-warning message">' + |
'<i class="fa fa-exclamation-triangle" aria-hidden="true" style="color:#ff5d55"></i>' + |
' Des informations sont manquantes pour certains champs,' + |