Line 237... |
Line 237... |
237 |
case 'checkbox':
|
237 |
case 'checkbox':
|
238 |
case 'list-checkbox':
|
238 |
case 'list-checkbox':
|
239 |
case 'radio':
|
239 |
case 'radio':
|
240 |
displayFieldDetailsCollect(
|
240 |
displayFieldDetailsCollect(
|
241 |
fieldIndex,
|
241 |
fieldIndex,
|
- |
|
242 |
'<p class="message element-message">' +
|
- |
|
243 |
'<i class="fa fa-exclamation-triangle" aria-hidden="true" style="color:#ff5d55"></i> ' +
|
242 |
'<p class="message">Ajoutez les valeurs de \"' + $( this ).children( 'option:selected' ).text() + '\"</p>'+
|
244 |
'Entrez au moins une valeur de ' + $( this ).children( 'option:selected' ).text() +
|
- |
|
245 |
'</p>'+
|
- |
|
246 |
// Première option
|
- |
|
247 |
'<div class="new-value" data-list-value-id="' + valueIndex +'">'+
|
- |
|
248 |
// Recueil d'une valeur de la liste
|
- |
|
249 |
'<label for="list-value">Valeur *:</label>'+
|
- |
|
250 |
'<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>'+
|
- |
|
251 |
// Checkbox valeur par défaut
|
- |
|
252 |
'<label for="is-defaut-value" title="Ceci est la valeur par défaut">Valeur par défaut</label>'+
|
- |
|
253 |
'<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 >'+
|
- |
|
254 |
'</div>' +
|
243 |
// Bouton ajout d'une valeur à la liste
|
255 |
// Bouton ajout d'une valeur à la liste
|
244 |
'<label for="add-value" class="add-value" data-id="' + fieldIndex + '" title="Ajouter une valeur à la liste">Ajouter une valeur</label>'+
|
256 |
'<label for="add-value" class="add-value" data-id="' + fieldIndex + '" title="Ajouter une valeur à la liste">Ajouter une valeur</label>'+
|
245 |
'<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>'+
|
257 |
'<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>'+
|
246 |
// checkbox ajouter une valeur "Autre:"
|
258 |
// checkbox ajouter une valeur "Autre:"
|
247 |
'<label for="option-other-value" title="Ajouter une option \'Autre:\' à la fin">Valeur "Autre"</label>'+
|
259 |
'<label for="option-other-value" title="Ajouter une option \'Autre:\' à la fin">Valeur "Autre"</label>'+
|
Line 279... |
Line 291... |
279 |
/**** Ajout des valeurs (options) des "champs de listes" (select, checkbox, radio, etc.) ****/
|
291 |
/**** Ajout des valeurs (options) des "champs de listes" (select, checkbox, radio, etc.) ****/
|
Line 280... |
Line 292... |
280 |
|
292 |
|
281 |
// Ajout des options des listes (deroulantes, cases à cocher etc.)
|
293 |
// Ajout des options des listes (deroulantes, cases à cocher etc.)
|
282 |
function onClickAddNewValueToList( fieldIndex , valueIndex ) {
|
294 |
function onClickAddNewValueToList( fieldIndex , valueIndex ) {
|
- |
|
295 |
$( '.add-value-button[data-id="' + fieldIndex + '"]' ).click( function() {
|
283 |
$( '.add-value-button[data-id="' + fieldIndex + '"]' ).click( function() {
|
296 |
valueIndex++;
|
284 |
$( '.add-value[data-id="' + fieldIndex + '"]' ).before(
|
297 |
$( '.add-value[data-id="' + fieldIndex + '"]' ).before(
|
285 |
'<div class="new-value" data-list-value-id="' + valueIndex +'">'+
|
298 |
'<div class="new-value" data-list-value-id="' + valueIndex +'">'+
|
286 |
// Recueil d'une valeur de la liste
|
299 |
// Recueil d'une valeur de la liste
|
287 |
'<label for="list-value">Valeur *:</label>'+
|
300 |
'<label for="list-value">Valeur *:</label>'+
|
Line 305... |
Line 318... |
305 |
onInputListValueLabelEnableDefaultCheckbox( valueIndex );
|
318 |
onInputListValueLabelEnableDefaultCheckbox( valueIndex );
|
306 |
// Une seule valeur par défaut pour select et radio
|
319 |
// Une seule valeur par défaut pour select et radio
|
307 |
onClickDefaultValueRemoveOthers( fieldIndex );
|
320 |
onClickDefaultValueRemoveOthers( fieldIndex );
|
308 |
// Supprimer une valeur
|
321 |
// Supprimer une valeur
|
309 |
onClickRemoveListValue( fieldIndex );
|
322 |
onClickRemoveListValue( fieldIndex );
|
310 |
|
- |
|
311 |
valueIndex++;
|
- |
|
312 |
});
|
323 |
});
|
313 |
}
|
324 |
}
|
Line 314... |
Line 325... |
314 |
|
325 |
|
315 |
// Activer la checkbox de valeur par default uniquement si une valeur est entrée
|
326 |
// Activer la checkbox de valeur par default uniquement si une valeur est entrée
|
Line 379... |
Line 390... |
379 |
// Le marqueur de valeur dupliquée passe à true
|
390 |
// Le marqueur de valeur dupliquée passe à true
|
380 |
notUnique = true;
|
391 |
notUnique = true;
|
381 |
if( 0 === $( '.invalid-field-key[data-id="' + index + '"]' ).length ) {
|
392 |
if( 0 === $( '.invalid-field-key[data-id="' + index + '"]' ).length ) {
|
382 |
// Le champ est signalé en rouge
|
393 |
// Le champ est signalé en rouge
|
383 |
// Un message d'alerte apparait sous le champ
|
394 |
// Un message d'alerte apparait sous le champ
|
384 |
thisFieldKey.addClass( 'invalid' );
|
395 |
thisFieldKey.addClass( 'invalid-key' );
|
385 |
thisFieldKey.after(
|
396 |
thisFieldKey.after(
|
386 |
'<p class="message invalid-field-key" data-id="' + index + '">' +
|
397 |
'<p class="message invalid-field-key" data-id="' + index + '">' +
|
387 |
'<i class="fa fa-exclamation-triangle" aria-hidden="true" style="color:#ff5d55"></i>' +
|
398 |
'<i class="fa fa-exclamation-triangle" aria-hidden="true" style="color:#ff5d55"></i>' +
|
388 |
' Vérifiez qu\'aucune clé n\'ait été utilisée plus d\'une fois' +
|
399 |
' Vérifiez qu\'aucune clé n\'ait été utilisée plus d\'une fois' +
|
389 |
'</p>'
|
400 |
'</p>'
|
Line 402... |
Line 413... |
402 |
' Une clé a été utilisée plusieurs fois' +
|
413 |
' Une clé a été utilisée plusieurs fois' +
|
403 |
'</p>'
|
414 |
'</p>'
|
404 |
);
|
415 |
);
|
405 |
}
|
416 |
}
|
406 |
// Les boutons prévisualiser/valider sont désactivés et signalés en rouge
|
417 |
// Les boutons prévisualiser/valider sont désactivés et signalés en rouge
|
407 |
$( '#preview-field , #validate-new-fields' ).addClass( 'invalid' ).css( 'pointer-events', 'none' );
|
418 |
$( '#preview-field , #validate-new-fields' ).addClass( 'invalid-key' ).css( 'pointer-events', 'none' );
|
408 |
} else {// Si on est ok on retire toutes les alertes
|
419 |
} else {// Si on est ok on retire toutes les alertes
|
409 |
// signalements rouges
|
420 |
// signalements rouges
|
410 |
$( '.field-key' ).each( function() {
|
421 |
$( '.field-key' ).each( function() {
|
411 |
$( this ).removeClass( 'invalid' );
|
422 |
$( this ).removeClass( 'invalid-key' );
|
412 |
});
|
423 |
});
|
413 |
$( '#preview-field , #validate-new-fields' ).removeClass( 'invalid' );
|
424 |
$( '#preview-field , #validate-new-fields' ).removeClass( 'invalid-key' );
|
414 |
// messages d'alerte
|
425 |
// messages d'alerte
|
415 |
$( '.invalid-field-key' ).each( function() {
|
426 |
$( '.invalid-field-key' ).each( function() {
|
416 |
$( this ).hide( 200 , function () {
|
427 |
$( this ).hide( 200 , function () {
|
417 |
$( this ).remove();
|
428 |
$( this ).remove();
|
418 |
});
|
429 |
});
|
Line 428... |
Line 439... |
428 |
notUnique = false;
|
439 |
notUnique = false;
|
429 |
});
|
440 |
});
|
430 |
}
|
441 |
}
|
431 |
}
|
442 |
}
|
Line 432... |
Line 443... |
432 |
|
443 |
|
433 |
//Activation/Désactivation des boutons valider/prévisualiser
|
444 |
// Activation/desactivation des champs valider/previsualiser
|
434 |
function activatePreviewAndValidateButtons() {
|
- |
|
435 |
var invalidElementInfos = false, // true si aucune option n'a été entrée pour un élément de liste (select, radio, etc.)
|
- |
|
436 |
invalidTextInfos = false; // true si au moins un input required n'est pas renseigné
|
- |
|
437 |
// Clique sur le bouton prévisualiser ou valider
|
445 |
function onClickButtonsTagMissingValues() {
|
- |
|
446 |
$( '#preview-field , #validate-new-fields' ).on( 'click' , function() {
|
438 |
$('#preview-field , #validate-new-fields').on( 'click' , function() {
|
447 |
var $button = $( this );
|
439 |
// S'il n'y a pas (plus) de bloc nouveau champ
|
448 |
//S'il n'y a pas (plus) de bloc nouveau champ
|
440 |
if( 0 === $( 'fieldset' ).length ) {
|
449 |
if( 0 === $( 'fieldset' ).length ) {
|
441 |
return;
|
450 |
return;
|
442 |
}
|
451 |
}
|
443 |
var count = $( 'fieldset' ).last().attr('data-id');
|
452 |
// Classe "invalid"
|
444 |
// si on a déjà des avertissements on les supprime
|
453 |
missingValuesClass();
|
445 |
if( 0 < $( '.validation-warning' ).length ) {
|
- |
|
446 |
// Supprimer les messages
|
454 |
if( !$( this ).hasClass( 'invalid' ) ) {
|
447 |
$( '.validation-warning' ).each( function() {
|
455 |
if( $( this ).is( '#validate-new-fields') ) {
|
448 |
$( this ).hide( 200 , function () {
|
456 |
// Lancement de l'enregistrement des valeurs à transmettre
|
449 |
$( this ).remove();
|
- |
|
450 |
});
|
- |
|
451 |
});
|
457 |
onClickStoreNewFields();
|
452 |
// Supprimer les bordures en rouge vif
|
458 |
} else if( $( this ).is( '#preview-field') ) {
|
453 |
$('.add-value-button , input[required]' ).each( function() {
|
459 |
// Lancement de la prévisualisation
|
454 |
$( this ).removeClass( 'invalid' );
|
- |
|
455 |
});
|
460 |
newFieldsPreview();
|
456 |
}
|
- |
|
457 |
// Parcourir tous les blocs d'infos de champs supplémentaires
|
- |
|
458 |
for( var index = $( 'fieldset' ).first().attr('data-id') ; index <= count ; index++ ) {
|
- |
|
459 |
var thisFieldset = $( 'fieldset[data-id="' + index + '"]');
|
- |
|
460 |
// Certains indices peuvent correspondre à un champ supprimé
|
- |
|
461 |
if( 0 < $( thisFieldset ).length ) {
|
- |
|
462 |
var $fieldElement = $( '.field-element' , thisFieldset ),
|
- |
|
463 |
fieldElementVal = $fieldElement.val(),
|
- |
|
464 |
isList = ( // true si c'est un élément "liste"
|
- |
|
465 |
fieldElementVal === 'list-checkbox' ||
|
- |
|
466 |
fieldElementVal === 'checkbox' ||
|
- |
|
467 |
fieldElementVal === 'radio' ||
|
- |
|
468 |
fieldElementVal === 'select'
|
- |
|
469 |
);
|
- |
|
470 |
// Si aucune option n'a été créée pour un élément "liste"
|
- |
|
471 |
if( isList && 0 === $( '.list-value' , thisFieldset ).length ) {
|
- |
|
472 |
invalidElementInfos = true;
|
- |
|
473 |
// Le bouton "Ajouter une valeur" est signalé en rouge
|
- |
|
474 |
$( '.add-value-button' , thisFieldset ).addClass( 'invalid' );
|
461 |
}
|
- |
|
462 |
}
|
- |
|
463 |
});
|
- |
|
464 |
// Si un champ manquant est renseigné
|
- |
|
465 |
// ou on choisit nouvel élément liste (au moins une option)
|
- |
|
466 |
// Cette action doit être prise en compte dans la validation
|
- |
|
467 |
$( '#new-fields' ).on( 'change' , '.invalid[type="text"] , .field-element' , function() {
|
- |
|
468 |
// S'il on a pas encore cliqué sur prévisualiser/valider
|
- |
|
469 |
// changer l'élément ne doit pas déclancher le signalement en rouge
|
- |
|
470 |
if( $( this ).is( '.field-element' ) && !$( '#preview-field , #validate-new-fields' ).hasClass( 'invalid' ) ) {
|
- |
|
471 |
return;
|
- |
|
472 |
} else {
|
- |
|
473 |
// Classe "invalid"
|
475 |
}
|
474 |
missingValuesClass();
|
- |
|
475 |
}
|
476 |
}
|
476 |
});
|
- |
|
477 |
}
|
- |
|
478 |
|
- |
|
479 |
|
- |
|
480 |
// Classe "invalid"
|
477 |
}
|
481 |
function missingValuesClass() {
|
478 |
// Si au moins un champ "required" n'est pas rempli
|
482 |
// Si au moins un champ "required" n'est pas rempli
|
479 |
$( 'input[required]' , thisFieldset ).each( function() {
|
483 |
$( '#new-fields input[required]' ).each( function() {
|
480 |
if( 0 === $( this ).val().length ) {
|
- |
|
481 |
invalidTextInfos = true;
|
484 |
if( 0 === $( this ).val().length ) {
|
482 |
// Le champ est signalé en rouge
|
485 |
// Le champ est signalé en rouge
|
483 |
$( this ).addClass( 'invalid' );
|
- |
|
484 |
}
|
- |
|
485 |
});
|
- |
|
486 |
// Si la saisie est invalide
|
- |
|
487 |
if( invalidElementInfos || invalidTextInfos ) {
|
486 |
$( this ).addClass( 'invalid' );
|
488 |
// Désactivation des boutons valider et prévisualiser
|
487 |
// Un message d'alerte apparait après le champ
|
489 |
$( '#preview-field , #validate-new-fields' ).addClass( 'invalid' );
|
- |
|
490 |
// Message pour les options des "listes"
|
- |
|
491 |
if( invalidElementInfos ) {
|
488 |
if( 0 === $( this).next( '.validation-warning' ).length ) {
|
492 |
$( '#new-fields' ).after(
|
489 |
$( this).after(
|
493 |
'<p class="validation-warning message">' +
|
490 |
'<p class="validation-warning message">' +
|
494 |
'<i class="fa fa-exclamation-triangle" aria-hidden="true" style="color:#ff5d55"></i>' +
|
- |
|
495 |
' 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:' +
|
491 |
'<i class="fa fa-exclamation-triangle" aria-hidden="true" style="color:#ff5d55"></i>' +
|
496 |
' il faut au moins une valeur pour les éléments "menu déroulant", "boutons radio", "cases à cocher" ou "liste de cases à cocher", ' +
|
492 |
' Ce champ est requis' +
|
497 |
'</p>'
|
493 |
'</p>'
|
498 |
);
|
494 |
);
|
- |
|
495 |
}
|
- |
|
496 |
} else {
|
- |
|
497 |
// Le champ est signalé en rouge
|
499 |
}
|
498 |
$( this ).removeClass( 'invalid' );
|
- |
|
499 |
// Le message d'alerte du champ est supprimé
|
- |
|
500 |
if( 0 < $( this).next( '.validation-warning' ).length ) {
|
500 |
// Message pour les champs
|
501 |
$( this ).next( '.validation-warning' ).hide( 200 , function () {
|
- |
|
502 |
$( this ).remove();
|
- |
|
503 |
});
|
- |
|
504 |
}
|
- |
|
505 |
}
|
- |
|
506 |
});
|
- |
|
507 |
// Si on a des champs à compléter
|
- |
|
508 |
if( 0 < $( '.invalid[type="text"]' ).length ) {
|
- |
|
509 |
// Les boutons sont signalés en rouge
|
- |
|
510 |
$( '#preview-field , #validate-new-fields' ).addClass( 'invalid' );
|
- |
|
511 |
// Un message d'alerte apparait avant les boutons
|
501 |
if( invalidTextInfos ) {
|
512 |
if( 0 === $( '#new-fields' ).next( '.validation-warning' ).length ) {
|
502 |
$( '#new-fields' ).after(
|
513 |
$( '#new-fields' ).after(
|
503 |
'<p class="validation-warning message">' +
|
514 |
'<p class="validation-warning message">' +
|
504 |
'<i class="fa fa-exclamation-triangle" aria-hidden="true" style="color:#ff5d55"></i>' +
|
515 |
'<i class="fa fa-exclamation-triangle" aria-hidden="true" style="color:#ff5d55"></i>' +
|
505 |
' Des informations sont manquantes pour certains champs,' +
|
516 |
' Des informations sont manquantes pour certains champs,' +
|
506 |
' vérifiez ceux signalés en rouge' +
|
517 |
' vérifiez ceux signalés en rouge' +
|
507 |
'</p>'
|
518 |
'</p>'
|
508 |
);
|
519 |
);
|
509 |
}
|
520 |
}
|
- |
|
521 |
} else {
|
510 |
} else {
|
522 |
// Les signalements et messages sont supprimés
|
511 |
$( '#preview-field , #validate-new-fields' ).removeClass( 'invalid' );
|
523 |
$( '#preview-field , #validate-new-fields' ).removeClass( 'invalid' );
|
512 |
if( $( this ).is( '#validate-new-fields') ) {
|
- |
|
513 |
// Lancement de l'enregistrement des valeurs à transmettre
|
- |
|
514 |
onClickStoreNewFields();
|
- |
|
515 |
} else if( $( this ).is( '#preview-field') ) {
|
- |
|
516 |
// Lancement de la prévisualisation
|
524 |
$( '#new-fields' ).next( '.validation-warning' ).hide( 200 , function () {
|
517 |
newFieldsPreview();
|
- |
|
518 |
}
|
- |
|
519 |
}
|
- |
|
520 |
// Réinitialisation des drapeaux de saisie invalide
|
- |
|
521 |
invalidElementInfos = false;
|
- |
|
522 |
invalidTextInfos = false;
|
525 |
$( this ).remove();
|
523 |
});
|
526 |
});
|
- |
|
527 |
}
|
Line 524... |
Line 528... |
524 |
}
|
528 |
}
|
525 |
|
529 |
|
526 |
// Enregistrement des valeurs à transmettre
|
530 |
// Enregistrement des valeurs à transmettre
|
527 |
function onClickStoreNewFields() {
|
531 |
function onClickStoreNewFields() {
|
Line 539... |
Line 543... |
539 |
// dans ce cas intégrer dans le formulaire à soumettre un bloc
|
543 |
// dans ce cas intégrer dans le formulaire à soumettre un bloc
|
540 |
// qui contiendra une copie de chacun de ces input[type="file"]
|
544 |
// qui contiendra une copie de chacun de ces input[type="file"]
|
541 |
if( helpFileExists ){
|
545 |
if( helpFileExists ){
|
542 |
$('#submit-button').before( '<div id="help-doc-submit" class="hidden"></div>' );
|
546 |
$('#submit-button').before( '<div id="help-doc-submit" class="hidden"></div>' );
|
543 |
}
|
547 |
}
|
544 |
|
- |
|
545 |
// On déroule les blocs de champs supplémentaires
|
548 |
// On déroule les blocs de champs supplémentaires
|
546 |
for( var index = $( 'fieldset' ).first().attr('data-id') ; index <= count ; index++ ) {
|
549 |
for( var index = $( 'fieldset' ).first().attr('data-id') ; index <= count ; index++ ) {
|
547 |
var thisFieldset = $( 'fieldset[data-id="' + index + '"]');
|
550 |
var thisFieldset = $( 'fieldset[data-id="' + index + '"]');
|
548 |
// Certains indices peuvent correspondre à un champ supprimé
|
551 |
// Certains indices peuvent correspondre à un champ supprimé
|
549 |
if( 0 < $( thisFieldset ).length ) {
|
552 |
if( 0 < $( thisFieldset ).length ) {
|
Line 1500... |
Line 1503... |
1500 |
// Identifiant de champ
|
1503 |
// Identifiant de champ
|
1501 |
var fieldIndex = 0;
|
1504 |
var fieldIndex = 0;
|
1502 |
// Ajout de nouveaux champs
|
1505 |
// Ajout de nouveaux champs
|
1503 |
onClickAddNewFields( fieldIndex );
|
1506 |
onClickAddNewFields( fieldIndex );
|
1504 |
// Activation/Desactivation des boutons valider et prévisualiser
|
1507 |
// Activation/Desactivation des boutons valider et prévisualiser
|
1505 |
activatePreviewAndValidateButtons();
|
1508 |
onClickButtonsTagMissingValues();
|
1506 |
// Prévisualisation des champs classiques
|
1509 |
// Prévisualisation des champs classiques
|
1507 |
DisplayClassicFields();
|
1510 |
DisplayClassicFields();
|
1508 |
// Affichage des images ou nom des documents importés
|
1511 |
// Affichage des images ou nom des documents importés
|
1509 |
inputFile();
|
1512 |
inputFile();
|
1510 |
// Affichage des List-checkbox
|
1513 |
// Affichage des List-checkbox
|