239,7 → 239,19 |
case 'radio': |
displayFieldDetailsCollect( |
fieldIndex, |
'<p class="message">Ajoutez les valeurs de \"' + $( this ).children( 'option:selected' ).text() + '\"</p>'+ |
'<p class="message element-message">' + |
'<i class="fa fa-exclamation-triangle" aria-hidden="true" style="color:#ff5d55"></i> ' + |
'Entrez au moins une valeur de ' + $( this ).children( 'option:selected' ).text() + |
'</p>'+ |
// Première option |
'<div class="new-value" data-list-value-id="' + valueIndex +'">'+ |
// Recueil d'une valeur de la liste |
'<label for="list-value">Valeur *:</label>'+ |
'<input type="text" name="list-value" data-id="' + fieldIndex + '" class="list-value" data-list-value-id="' + valueIndex +'" placeholder="Une des valeurs de la liste" required>'+ |
// Checkbox valeur par défaut |
'<label for="is-defaut-value" title="Ceci est la valeur par défaut">Valeur par défaut</label>'+ |
'<input type="checkbox" name="is-defaut-value" data-id="' + fieldIndex + '" class="is-defaut-value" title="entrez une valeur pour activer cette case" data-list-value-id="' + valueIndex +'" disabled >'+ |
'</div>' + |
// Bouton ajout d'une valeur à la liste |
'<label for="add-value" class="add-value" data-id="' + fieldIndex + '" title="Ajouter une valeur à la liste">Ajouter une valeur</label>'+ |
'<div class="button add-value-button" name="add-value" data-id="' + fieldIndex + '" title="Ajouter une valeur à la liste"><i class="fa fa-puzzle-piece" aria-hidden="true"></i></div>'+ |
281,6 → 293,7 |
// Ajout des options des listes (deroulantes, cases à cocher etc.) |
function onClickAddNewValueToList( fieldIndex , valueIndex ) { |
$( '.add-value-button[data-id="' + fieldIndex + '"]' ).click( function() { |
valueIndex++; |
$( '.add-value[data-id="' + fieldIndex + '"]' ).before( |
'<div class="new-value" data-list-value-id="' + valueIndex +'">'+ |
// Recueil d'une valeur de la liste |
307,8 → 320,6 |
onClickDefaultValueRemoveOthers( fieldIndex ); |
// Supprimer une valeur |
onClickRemoveListValue( fieldIndex ); |
|
valueIndex++; |
}); |
} |
|
381,7 → 392,7 |
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' ); |
thisFieldKey.addClass( 'invalid-key' ); |
thisFieldKey.after( |
'<p class="message invalid-field-key" data-id="' + index + '">' + |
'<i class="fa fa-exclamation-triangle" aria-hidden="true" style="color:#ff5d55"></i>' + |
404,13 → 415,13 |
); |
} |
// 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' ); |
$( '#preview-field , #validate-new-fields' ).addClass( 'invalid-key' ).css( 'pointer-events', 'none' ); |
} else {// Si on est ok on retire toutes les alertes |
// signalements rouges |
$( '.field-key' ).each( function() { |
$( this ).removeClass( 'invalid' ); |
$( this ).removeClass( 'invalid-key' ); |
}); |
$( '#preview-field , #validate-new-fields' ).removeClass( 'invalid' ); |
$( '#preview-field , #validate-new-fields' ).removeClass( 'invalid-key' ); |
// messages d'alerte |
$( '.invalid-field-key' ).each( function() { |
$( this ).hide( 200 , function () { |
430,75 → 441,75 |
} |
} |
|
//Activation/Désactivation des boutons valider/prévisualiser |
function activatePreviewAndValidateButtons() { |
var invalidElementInfos = false, // true si aucune option n'a été entrée pour un élément de liste (select, radio, etc.) |
invalidTextInfos = false; // true si au moins un input required n'est pas renseigné |
// Clique sur le bouton prévisualiser ou valider |
// Activation/desactivation des champs valider/previsualiser |
function onClickButtonsTagMissingValues() { |
$('#preview-field , #validate-new-fields').on( 'click' , function() { |
var $button = $( this ); |
// S'il n'y a pas (plus) de bloc nouveau champ |
if( 0 === $( 'fieldset' ).length ) { |
return; |
} |
var count = $( 'fieldset' ).last().attr('data-id'); |
// si on a déjà des avertissements on les supprime |
if( 0 < $( '.validation-warning' ).length ) { |
// Supprimer les messages |
$( '.validation-warning' ).each( function() { |
$( this ).hide( 200 , function () { |
$( this ).remove(); |
}); |
}); |
// Supprimer les bordures en rouge vif |
$('.add-value-button , input[required]' ).each( function() { |
$( this ).removeClass( 'invalid' ); |
}); |
// Classe "invalid" |
missingValuesClass(); |
if( !$( this ).hasClass( 'invalid' ) ) { |
if( $( this ).is( '#validate-new-fields') ) { |
// Lancement de l'enregistrement des valeurs à transmettre |
onClickStoreNewFields(); |
} else if( $( this ).is( '#preview-field') ) { |
// Lancement de la prévisualisation |
newFieldsPreview(); |
} |
// Parcourir tous les blocs d'infos de champs supplémentaires |
for( var index = $( 'fieldset' ).first().attr('data-id') ; index <= count ; index++ ) { |
var thisFieldset = $( 'fieldset[data-id="' + index + '"]'); |
// Certains indices peuvent correspondre à un champ supprimé |
if( 0 < $( thisFieldset ).length ) { |
var $fieldElement = $( '.field-element' , thisFieldset ), |
fieldElementVal = $fieldElement.val(), |
isList = ( // true si c'est un élément "liste" |
fieldElementVal === 'list-checkbox' || |
fieldElementVal === 'checkbox' || |
fieldElementVal === 'radio' || |
fieldElementVal === 'select' |
); |
// Si aucune option n'a été créée pour un élément "liste" |
if( isList && 0 === $( '.list-value' , thisFieldset ).length ) { |
invalidElementInfos = true; |
// Le bouton "Ajouter une valeur" est signalé en rouge |
$( '.add-value-button' , thisFieldset ).addClass( 'invalid' ); |
} |
}); |
// Si un champ manquant est renseigné |
// ou on choisit nouvel élément liste (au moins une option) |
// Cette action doit être prise en compte dans la validation |
$( '#new-fields' ).on( 'change' , '.invalid[type="text"] , .field-element' , function() { |
// S'il on a pas encore cliqué sur prévisualiser/valider |
// changer l'élément ne doit pas déclancher le signalement en rouge |
if( $( this ).is( '.field-element' ) && !$( '#preview-field , #validate-new-fields' ).hasClass( 'invalid' ) ) { |
return; |
} else { |
// Classe "invalid" |
missingValuesClass(); |
} |
}); |
} |
|
|
// Classe "invalid" |
function missingValuesClass() { |
// Si au moins un champ "required" n'est pas rempli |
$( 'input[required]' , thisFieldset ).each( function() { |
$( '#new-fields input[required]' ).each( function() { |
if( 0 === $( this ).val().length ) { |
invalidTextInfos = true; |
// Le champ est signalé en rouge |
$( this ).addClass( 'invalid' ); |
} |
}); |
// Si la saisie est invalide |
if( invalidElementInfos || invalidTextInfos ) { |
// Désactivation des boutons valider et prévisualiser |
$( '#preview-field , #validate-new-fields' ).addClass( 'invalid' ); |
// Message pour les options des "listes" |
if( invalidElementInfos ) { |
$( '#new-fields' ).after( |
// Un message d'alerte apparait après le champ |
if( 0 === $( this).next( '.validation-warning' ).length ) { |
$( this).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:' + |
' il faut au moins une valeur pour les éléments "menu déroulant", "boutons radio", "cases à cocher" ou "liste de cases à cocher", ' + |
' Ce champ est requis' + |
'</p>' |
); |
} |
// Message pour les champs |
if( invalidTextInfos ) { |
} else { |
// Le champ est signalé en rouge |
$( this ).removeClass( 'invalid' ); |
// Le message d'alerte du champ est supprimé |
if( 0 < $( this).next( '.validation-warning' ).length ) { |
$( this ).next( '.validation-warning' ).hide( 200 , function () { |
$( this ).remove(); |
}); |
} |
} |
}); |
// Si on a des champs à compléter |
if( 0 < $( '.invalid[type="text"]' ).length ) { |
// Les boutons sont signalés en rouge |
$( '#preview-field , #validate-new-fields' ).addClass( 'invalid' ); |
// Un message d'alerte apparait avant les boutons |
if( 0 === $( '#new-fields' ).next( '.validation-warning' ).length ) { |
$( '#new-fields' ).after( |
'<p class="validation-warning message">' + |
'<i class="fa fa-exclamation-triangle" aria-hidden="true" style="color:#ff5d55"></i>' + |
508,20 → 519,13 |
); |
} |
} else { |
// Les signalements et messages sont supprimés |
$( '#preview-field , #validate-new-fields' ).removeClass( 'invalid' ); |
if( $( this ).is( '#validate-new-fields') ) { |
// Lancement de l'enregistrement des valeurs à transmettre |
onClickStoreNewFields(); |
} else if( $( this ).is( '#preview-field') ) { |
// Lancement de la prévisualisation |
newFieldsPreview(); |
$( '#new-fields' ).next( '.validation-warning' ).hide( 200 , function () { |
$( this ).remove(); |
}); |
} |
} |
// Réinitialisation des drapeaux de saisie invalide |
invalidElementInfos = false; |
invalidTextInfos = false; |
}); |
} |
|
// Enregistrement des valeurs à transmettre |
function onClickStoreNewFields() { |
541,7 → 545,6 |
if( helpFileExists ){ |
$('#submit-button').before( '<div id="help-doc-submit" class="hidden"></div>' ); |
} |
|
// On déroule les blocs de champs supplémentaires |
for( var index = $( 'fieldset' ).first().attr('data-id') ; index <= count ; index++ ) { |
var thisFieldset = $( 'fieldset[data-id="' + index + '"]'); |
1502,7 → 1505,7 |
// Ajout de nouveaux champs |
onClickAddNewFields( fieldIndex ); |
// Activation/Desactivation des boutons valider et prévisualiser |
activatePreviewAndValidateButtons(); |
onClickButtonsTagMissingValues(); |
// Prévisualisation des champs classiques |
DisplayClassicFields(); |
// Affichage des images ou nom des documents importés |