Commit 6ee5ea0b authored by Théo GUILLON's avatar Théo GUILLON
Browse files

Ajout : de la suppression d'une condition

Factorisation : de l'application des options d'un champ
parent 32d86bac
......@@ -704,201 +704,30 @@ var createForm = function(typeCreateForm) {
// On applique les modifications du champ en question au clic sur le boutton "Appliquer"
$('#'+idbtnApplicable).click(function () {
var success = true,
newNameField = null,
newLabelField = null,
newPlaceholderField = null,
newOptionsField = null,
newContenuField = null,
newRequiredField = false;
$('#'+idbtnApplicable).closest(fieldOptions).find('input, textarea').each(function () {
// On récupère le "Nom de variable" et on le vérifie
if ($(this).hasClass('nameForm')) {
newNameField = $(this).val();
success = checkNewNameField(newNameField);
}
// On récupère le "Nom du champ" et on le vérifie
if ($(this).hasClass('labelForm')) {
newLabelField = $(this).val();
success = checkNewLabelField(newLabelField);
}
// On récupère l' "Aide à la saisie"
if ($(this).hasClass('placeholderForm')) {
newPlaceholderField = $(this).val();
}
applyOptionsFieldOnField();
});
// On récupère la "Liste des options" et on la vérifie
if ($(this).is('.checkboxForm, .radioForm, .deroulantForm, .multiSelectForm')) {
newOptionsField = $(this).val().split('\n');
success = checkNewOptionsField(newOptionsField);
}
// On supprime le champ en question au clic sur le bouton "Poubelle"
$('#'+idbtnCloser).click(function () {
$(idContainer).find('.ui-selected').remove();
hideDetails();
});
// On récupère le "Contenu" et on le vérifie
if ($(this).is('.titleForm, .helpForm, .texteForm')) {
newContenuField = $(this).val();
success = checkNewContenuField(newContenuField);
}
// On supprime la condition crée sur le champ
$('.removeCondition').click(function () {
var condition_id = $(this).attr('id');
// On récupère le "Champ obligatoire"
if ($(this).hasClass('obligForm')) {
if ($(this).prop('checked')) {
newRequiredField = true;
var conditions = JSON.parse($(idContainer).find('.ui-selected').attr('data-virtual-conditions'));
if (conditions) {
$.each(conditions, function (key, value) {
if (condition_id == key) {
delete conditions[key];
$('#'+key).closest('p').remove();
}
}
// si erreur on sort de la boucle (de .each)
if (success == false) {
return success;
}
});
// On arrête le traitement
if (success == false) {
return success;
});
}
$(idContainer).find('.ui-selected').each(function () {
var objet = '';
// Pour tous les champs ont leur attribut le label et si le champ est obligatoire ou non
if ($(this).is('.small-text, .long-text, .date, .checkboxes, .radios, .deroulant, .multi-select')) {
// give to field the "label"
$(idContainer).find('.ui-selected').find('div').find('label').find('span.labeler').text(newLabelField);
// add attribut "for" to "label"
$(idContainer).find('.ui-selected').find('label').attr('for', newNameField);
// give to field if required
giveToFieldIfRequired(newRequiredField);
}
// Attribution les valeurs aux champs "Petit champ texte" et "Champ date"
if ($(this).is('.small-text, .date')) {
// add attribute "id"
$(idContainer).find('.ui-selected').find('input').attr('id', newNameField);
// give to field the "name"
$(idContainer).find('.ui-selected').find('input').attr('name', newNameField);
// give to field the "placeholder"
$(idContainer).find('.ui-selected').find('input').attr('placeholder', newPlaceholderField);
// if ($(this).hasClass('fieldRepeat')) {
// if ($(this).prop('checked')) {
// $(idContainer).find('.ui-selected').find('label').html('<span class="labeler">' +
// $('.labelForm').val() + '</span><span class="obligatoire"> *</span>'
// );
//
// $(idContainer).find('.ui-selected').attr('virtual-data-repeat', 'fieldRepeat');
// } else {
// $(idContainer).find('.ui-selected').find('label').html('<span class="labeler">' + $('.labelForm').val() + '</span>');
// $(idContainer).find('.ui-selected').attr('virtual-data-repeat', 'fieldNoRepeat');
// }
// }
}
// Attribution les valeurs au champ "Grand champ texte"
if ($(this).hasClass('long-text')) {
// add attribute "id"
$(idContainer).find('.ui-selected').find('textarea').attr('id', newNameField);
// give to field the "name"
$(idContainer).find('.ui-selected').find('textarea').attr('name', newNameField);
// give to field the "placeholder"
$(idContainer).find('.ui-selected').find('textarea').attr('placeholder', newPlaceholderField);
}
// Attribution les valeurs au champ "Cases à cocher"
if ($(this).hasClass('checkboxes')) {
$.each(newOptionsField, function (index, value) {
objet = objet + '<div class="checkbox">' +
'<input id="'+index+'" type="checkbox" name="'+newNameField+'" value="'+value+'">' +
'<label>' +
value +
'</label>' +
'</div>';
});
// give to field the options
$(idContainer).find('.ui-selected').find('.contentCheckbox').html(jQuery(objet));
}
// Attribution les valeurs au champ "Choix unique"
if ($(this).hasClass('radios')) {
$.each(newOptionsField, function (index, value) {
objet = objet + '<div class="radio">' +
'<input id="'+index+'" type="radio" name="'+newNameField+'" value="'+value+'">' +
value +
'</div>';
});
// give to field the options
$(idContainer).find('.ui-selected').find('.contentRadio').html(jQuery(objet));
}
// Attribution les valeurs au champ "Menu déroulant"
if ($(this).hasClass('deroulant')) {
$.each(newOptionsField, function (index, value) {
objet = objet + '<option id="'+index+'" name="'+newNameField+'" value="'+value+'">' +
value +
'</option>';
});
// add attribute "id"
$(idContainer).find('.ui-selected').find('select').attr('id', newNameField);
// give to field the options
$(idContainer).find('.ui-selected').find('.contentDeroulant').html(jQuery(objet));
}
// Attribution les valeurs au champ "Menu multi-sélect"
if ($(this).hasClass('multi-select')) {
$.each(newOptionsField, function (index, value) {
objet = objet + '<option id="'+index+'" name="'+newNameField+'" value="'+value+'">' +
value +
'</option>';
});
// give to field the options
$(idContainer).find('.ui-selected').find('.contentMultiSelect').html(jQuery(objet));
}
// Attribution les valeurs au champ "Titre de catégorie"
if ($(this).hasClass('title')) {
$(idContainer).find('.ui-selected').find('h1').html(newContenuField);
}
// Attribution les valeurs au champ "Champ d'information"
if ($(this).hasClass('help')) {
$(idContainer).find('.ui-selected').find('.messager').html(newContenuField);
}
// Attribution les valeurs au champ "Label"
if ($(this).hasClass('texte')) {
$(idContainer).find('.ui-selected').find('h5').html(newContenuField);
}
});
// $(idContainer).find('.ui-selected').attr('style', function (i, style) {
// return style.replace(/height[^;]+;?/g, '');
// });
// $(idContainer).find('.ui-selected').attr('style', function (i, style) {
// return style.replace(/width[^;]+;?/g, '');
// });
// On rend non modifiable le nom de variable
$('#'+idbtnApplicable).closest(fieldOptions).find('input.nameForm').attr('readonly', true);
});
/*Supprimer le champ en question au clic*/
$('#'+idbtnCloser).click(function () {
$(idContainer).find('.ui-selected').remove();
hideDetails();
$(idContainer).find('.ui-selected').attr('data-virtual-conditions', JSON.stringify(conditions));
});
}
......@@ -1101,4 +930,204 @@ var createForm = function(typeCreateForm) {
return writeConditions;
}
/**
* On vérifie et on applique les "Options du champ" sur le champ
*
* @created 02/04/2020
* @version V1.2.0
* @author Théo GUILLON <theo.guillon@libriciel.coop>
*/
function applyOptionsFieldOnField()
{
var success = true,
newNameField = null,
newLabelField = null,
newPlaceholderField = null,
newOptionsField = null,
newContenuField = null,
newRequiredField = false;
$('#'+idbtnApplicable).closest(fieldOptions).find('input, textarea').each(function () {
// On récupère le "Nom de variable" et on le vérifie
if ($(this).hasClass('nameForm')) {
newNameField = $(this).val();
success = checkNewNameField(newNameField);
}
// On récupère le "Nom du champ" et on le vérifie
if ($(this).hasClass('labelForm')) {
newLabelField = $(this).val();
success = checkNewLabelField(newLabelField);
}
// On récupère l' "Aide à la saisie"
if ($(this).hasClass('placeholderForm')) {
newPlaceholderField = $(this).val();
}
// On récupère la "Liste des options" et on la vérifie
if ($(this).is('.checkboxForm, .radioForm, .deroulantForm, .multiSelectForm')) {
newOptionsField = $(this).val().split('\n');
success = checkNewOptionsField(newOptionsField);
}
// On récupère le "Contenu" et on le vérifie
if ($(this).is('.titleForm, .helpForm, .texteForm')) {
newContenuField = $(this).val();
success = checkNewContenuField(newContenuField);
}
// On récupère le "Champ obligatoire"
if ($(this).hasClass('obligForm')) {
if ($(this).prop('checked')) {
newRequiredField = true;
}
}
// si erreur on sort de la boucle (de .each)
if (success == false) {
return success;
}
});
// On arrête le traitement
if (success == false) {
return success;
}
$(idContainer).find('.ui-selected').each(function () {
var objet = '';
// Pour tous les champs ont leur attribut le label et si le champ est obligatoire ou non
if ($(this).is('.small-text, .long-text, .date, .checkboxes, .radios, .deroulant, .multi-select')) {
// give to field the "label"
$(idContainer).find('.ui-selected').find('div').find('label').find('span.labeler').text(newLabelField);
// add attribut "for" to "label"
$(idContainer).find('.ui-selected').find('label').attr('for', newNameField);
// give to field if required
giveToFieldIfRequired(newRequiredField);
}
// Attribution les valeurs aux champs "Petit champ texte" et "Champ date"
if ($(this).is('.small-text, .date')) {
// add attribute "id"
$(idContainer).find('.ui-selected').find('input').attr('id', newNameField);
// give to field the "name"
$(idContainer).find('.ui-selected').find('input').attr('name', newNameField);
// give to field the "placeholder"
$(idContainer).find('.ui-selected').find('input').attr('placeholder', newPlaceholderField);
// if ($(this).hasClass('fieldRepeat')) {
// if ($(this).prop('checked')) {
// $(idContainer).find('.ui-selected').find('label').html('<span class="labeler">' +
// $('.labelForm').val() + '</span><span class="obligatoire"> *</span>'
// );
//
// $(idContainer).find('.ui-selected').attr('virtual-data-repeat', 'fieldRepeat');
// } else {
// $(idContainer).find('.ui-selected').find('label').html('<span class="labeler">' + $('.labelForm').val() + '</span>');
// $(idContainer).find('.ui-selected').attr('virtual-data-repeat', 'fieldNoRepeat');
// }
// }
}
// Attribution les valeurs au champ "Grand champ texte"
if ($(this).hasClass('long-text')) {
// add attribute "id"
$(idContainer).find('.ui-selected').find('textarea').attr('id', newNameField);
// give to field the "name"
$(idContainer).find('.ui-selected').find('textarea').attr('name', newNameField);
// give to field the "placeholder"
$(idContainer).find('.ui-selected').find('textarea').attr('placeholder', newPlaceholderField);
}
// Attribution les valeurs au champ "Cases à cocher"
if ($(this).hasClass('checkboxes')) {
$.each(newOptionsField, function (index, value) {
objet = objet + '<div class="checkbox">' +
'<input id="'+index+'" type="checkbox" name="'+newNameField+'" value="'+value+'">' +
'<label>' +
value +
'</label>' +
'</div>';
});
// give to field the options
$(idContainer).find('.ui-selected').find('.contentCheckbox').html(jQuery(objet));
}
// Attribution les valeurs au champ "Choix unique"
if ($(this).hasClass('radios')) {
$.each(newOptionsField, function (index, value) {
objet = objet + '<div class="radio">' +
'<input id="'+index+'" type="radio" name="'+newNameField+'" value="'+value+'">' +
value +
'</div>';
});
// give to field the options
$(idContainer).find('.ui-selected').find('.contentRadio').html(jQuery(objet));
}
// Attribution les valeurs au champ "Menu déroulant"
if ($(this).hasClass('deroulant')) {
$.each(newOptionsField, function (index, value) {
objet = objet + '<option id="'+index+'" name="'+newNameField+'" value="'+value+'">' +
value +
'</option>';
});
// add attribute "id"
$(idContainer).find('.ui-selected').find('select').attr('id', newNameField);
// give to field the options
$(idContainer).find('.ui-selected').find('.contentDeroulant').html(jQuery(objet));
}
// Attribution les valeurs au champ "Menu multi-sélect"
if ($(this).hasClass('multi-select')) {
$.each(newOptionsField, function (index, value) {
objet = objet + '<option id="'+index+'" name="'+newNameField+'" value="'+value+'">' +
value +
'</option>';
});
// give to field the options
$(idContainer).find('.ui-selected').find('.contentMultiSelect').html(jQuery(objet));
}
// Attribution les valeurs au champ "Titre de catégorie"
if ($(this).hasClass('title')) {
$(idContainer).find('.ui-selected').find('h1').html(newContenuField);
}
// Attribution les valeurs au champ "Champ d'information"
if ($(this).hasClass('help')) {
$(idContainer).find('.ui-selected').find('.messager').html(newContenuField);
}
// Attribution les valeurs au champ "Label"
if ($(this).hasClass('texte')) {
$(idContainer).find('.ui-selected').find('h5').html(newContenuField);
}
});
// $(idContainer).find('.ui-selected').attr('style', function (i, style) {
// return style.replace(/height[^;]+;?/g, '');
// });
// $(idContainer).find('.ui-selected').attr('style', function (i, style) {
// return style.replace(/width[^;]+;?/g, '');
// });
// On rend non modifiable le nom de variable
$('#'+idbtnApplicable).closest(fieldOptions).find('input.nameForm').attr('readonly', true);
}
};
\ No newline at end of file
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment