23/10/2023 - 16h
parent
2db635c451
commit
05dc0b6569
|
@ -51,36 +51,42 @@ const Config_Champs_Personnalise = (props) => {
|
|||
{ field: 'field_name', headerName: 'Nom champ', hideable: false, flex: 1 },
|
||||
{ field: 'field_label', headerName: 'label', hideable: false, flex: 1 },
|
||||
{ field: 'related_collection', headerName: 'Entité metier', width: 150, hideable: false, },
|
||||
{ field: 'is_displayed', headerName: 'Affichable', width: 150, hide: false, editable: false ,
|
||||
valueFormatter: (params) => {
|
||||
if (String(params.value) === "0")
|
||||
return "Non";
|
||||
else if (String(params.value) === "1")
|
||||
return "Oui";
|
||||
{
|
||||
field: 'is_displayed', headerName: 'Affichable', width: 150, hide: false, editable: false,
|
||||
valueFormatter: (params) => {
|
||||
if (String(params.value) === "0")
|
||||
return "Non";
|
||||
else if (String(params.value) === "1")
|
||||
return "Oui";
|
||||
|
||||
else
|
||||
return "?";
|
||||
},},
|
||||
{ field: 'field_type', headerName: 'Type', width: 150, hide: false, editable: false,
|
||||
valueFormatter: (params) => {
|
||||
if (String(params.value) === "string")
|
||||
return "Alphanum";
|
||||
else if (String(params.value) === "float")
|
||||
return "Num";
|
||||
else
|
||||
return "?";
|
||||
},
|
||||
},
|
||||
{
|
||||
field: 'field_type', headerName: 'Type', width: 150, hide: false, editable: false,
|
||||
valueFormatter: (params) => {
|
||||
if (String(params.value) === "string")
|
||||
return "Alphanum";
|
||||
else if (String(params.value) === "float")
|
||||
return "Num";
|
||||
|
||||
else
|
||||
return "?";
|
||||
}, },
|
||||
{ field: 'is_mandatory', headerName: 'Obligatoire', width: 150, hide: false, editable: false,
|
||||
valueFormatter: (params) => {
|
||||
if (String(params.value) === "0")
|
||||
return "Non";
|
||||
else if (String(params.value) === "1")
|
||||
return "Oui";
|
||||
else
|
||||
return "?";
|
||||
},
|
||||
},
|
||||
{
|
||||
field: 'is_mandatory', headerName: 'Obligatoire', width: 150, hide: false, editable: false,
|
||||
valueFormatter: (params) => {
|
||||
if (String(params.value) === "0")
|
||||
return "Non";
|
||||
else if (String(params.value) === "1")
|
||||
return "Oui";
|
||||
|
||||
else
|
||||
return "?";
|
||||
}, },
|
||||
else
|
||||
return "?";
|
||||
},
|
||||
},
|
||||
|
||||
|
||||
/*{
|
||||
|
@ -259,8 +265,16 @@ const Config_Champs_Personnalise = (props) => {
|
|||
setp_detail_is_displayed_label("Non");
|
||||
}
|
||||
|
||||
if (mylocal_spec_field.field_type)
|
||||
if (mylocal_spec_field.field_type){
|
||||
setp_detail_field_type(mylocal_spec_field.field_type);
|
||||
if (String(mylocal_spec_field.field_type) === "string")
|
||||
setp_detail_field_type_label("Alphanumérique");
|
||||
else if (String(mylocal_spec_field.field_type) === "float")
|
||||
setp_detail_field_type_label("Numérique");
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
if (mylocal_spec_field.is_mandatory) {
|
||||
setp_detail_is_mandatory(mylocal_spec_field.is_mandatory);
|
||||
|
@ -675,8 +689,10 @@ const Config_Champs_Personnalise = (props) => {
|
|||
|
||||
|
||||
//Get_List_Personnalisable_Default_Document();
|
||||
setdisplay_personalised_field();
|
||||
setadd_one_personal_field("1");
|
||||
|
||||
|
||||
}
|
||||
|
||||
const [p_detail_field_name, setp_detail_field_name] = useState("");
|
||||
|
@ -686,6 +702,7 @@ const Config_Champs_Personnalise = (props) => {
|
|||
const [p_detail_is_displayed, setp_detail_is_displayed] = useState("");
|
||||
const [p_detail_is_displayed_label, setp_detail_is_displayed_label] = useState("");
|
||||
const [p_detail_field_type, setp_detail_field_type] = useState("");
|
||||
const [p_detail_field_type_label, setp_detail_field_type_label] = useState("");
|
||||
const [p_detail_is_mandatory, setp_detail_is_mandatory] = useState("");
|
||||
const [p_detail_is_mandatory_label, setp_detail_is_mandatory_label] = useState("");
|
||||
|
||||
|
@ -704,6 +721,7 @@ const Config_Champs_Personnalise = (props) => {
|
|||
setp_detail_related_collection_name("");
|
||||
setp_detail_is_displayed("");
|
||||
setp_detail_field_type("");
|
||||
setp_detail_field_type_label("");
|
||||
setp_detail_is_mandatory("");
|
||||
setp_detail_is_mandatory_label("");
|
||||
setp_detail_is_displayed_label("");
|
||||
|
@ -760,6 +778,11 @@ const Config_Champs_Personnalise = (props) => {
|
|||
}
|
||||
|
||||
|
||||
var tmp_val = String(p_detail_field_name).replaceAll("my_", "");
|
||||
if (!tmp_val.match(/^[0-9a-z]+$/)) {
|
||||
alert(" Sur le nom technique, les information apres le 'my_' doit être alphanumerique. Vous avez saisi : " + String(tmp_val));
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
if (p_detail_field_label)
|
||||
|
@ -846,6 +869,126 @@ const Config_Champs_Personnalise = (props) => {
|
|||
}
|
||||
|
||||
|
||||
const [Add_One_Specific_field_Data_api, setAdd_One_Specific_field_Data_api] = useState();
|
||||
const [Add_One_Specific_field_Data_message, setAdd_One_Specific_field_Data_message] = useState();
|
||||
const [Add_One_Specific_field_Data_result, setAdd_One_Specific_field_Data_result] = useState();
|
||||
function Add_One_Specific_field_Data() {
|
||||
var form = new FormData();
|
||||
//form.append("token","K3cw63eKokKSbV4spjQ48SUNnfy80yrXfA");
|
||||
|
||||
|
||||
const stored_cookie = getCookie('tokenmysypart');
|
||||
form.append("token", stored_cookie);
|
||||
|
||||
if (p_one_detail_field_name) {
|
||||
form.append("field_name", p_one_detail_field_name);
|
||||
}
|
||||
else {
|
||||
alert(" Vous devez definir le technique du champ. Il doit commencer impérativement par 'my_'");
|
||||
return;
|
||||
}
|
||||
if (!p_one_detail_field_name.startsWith('my_')) {
|
||||
alert(" Le nom technique du champ doit commencer impérativement par 'my_'");
|
||||
return;
|
||||
}
|
||||
if (String(p_one_detail_field_name).length < 6) {
|
||||
alert(" Le nom technique du champ doit au moins 6 caractères");
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
if (p_one_detail_field_label)
|
||||
form.append("field_label", p_one_detail_field_label);
|
||||
else {
|
||||
alert(" Vous devez definir le label du champ ");
|
||||
return;
|
||||
}
|
||||
if (String(p_one_detail_field_label).length < 3) {
|
||||
alert(" Le label du champ doit faire au moins 3 caractères");
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
if (p_one_detail_related_collection)
|
||||
form.append("related_collection", p_one_detail_related_collection);
|
||||
else {
|
||||
alert(" Vous devez definir l'entité");
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
if (p_one_detail_is_displayed)
|
||||
form.append("is_displayed", p_one_detail_is_displayed);
|
||||
else {
|
||||
alert(" Vous devez definir si le champ est affichable");
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
if (p_one_detail_field_type)
|
||||
form.append("field_type", p_one_detail_field_type);
|
||||
else {
|
||||
alert(" Vous devez definir le type du champ");
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
if (p_one_detail_is_mandatory)
|
||||
form.append("is_mandatory", p_one_detail_is_mandatory);
|
||||
else {
|
||||
alert(" Vous devez definir si le champ est obligatoire");
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
//console.log(" Add_One_Specific_field_Data affectation form == ", form);
|
||||
|
||||
|
||||
var myurl = process.env.REACT_APP_API_URL + "myclass/api/Add_specific_field/";
|
||||
|
||||
axios.post(myurl, form).then(res => {
|
||||
//console.log(" In Add_One_Specific_field_Data res.data.status = " + res.data.status);
|
||||
//console.log(" In Add_One_Specific_field_Data res.data.message r_class = " + res.data.message);
|
||||
|
||||
if (String(res.data.status) === String("true")) {
|
||||
setAdd_One_Specific_field_Data_api("true");
|
||||
setAdd_One_Specific_field_Data_result(res.data.message);
|
||||
|
||||
|
||||
disable_Partner_personalFields();
|
||||
setpersonal_field_data_edit_mode("0");
|
||||
setpersonal_field_data_changed("0");
|
||||
Getall_Partner_Personalised_Fields_No_filter();
|
||||
clear_one_detail_fields();
|
||||
setdisplay_personalised_field();
|
||||
setadd_one_personal_field();
|
||||
alert(res.data.message);
|
||||
if (document.getElementById('myRef_head')) {
|
||||
var divh = document.getElementById('myRef_head').offsetTop;
|
||||
window.scrollTo({
|
||||
top: divh,
|
||||
behavior: "smooth",
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
else {
|
||||
setAdd_One_Specific_field_Data_api("false");
|
||||
setAdd_One_Specific_field_Data_message(res.data.message);
|
||||
alert(res.data.message);
|
||||
}
|
||||
|
||||
}).catch((error) => {
|
||||
|
||||
console.log('UpdateStagiaireData : Not good man :( Add_One_Specific_field_Data = ' + error);
|
||||
setAdd_One_Specific_field_Data_api("false");
|
||||
alert(" Impossible d'ajouter le document");
|
||||
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
|
||||
return (
|
||||
<div className="config_champs_personnalise">
|
||||
<Dialog
|
||||
|
@ -1203,21 +1346,25 @@ const Config_Champs_Personnalise = (props) => {
|
|||
<div className="session_data" >
|
||||
|
||||
|
||||
{String(personal_field_data_edit_mode) !== "1" && <div className="session_caract"> Entité métier <br />
|
||||
<TextField
|
||||
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
|
||||
required
|
||||
name="related_collection"
|
||||
id="related_collection"
|
||||
{String(personal_field_data_edit_mode) !== "1" &&
|
||||
|
||||
InputLabelProps={{
|
||||
shrink: true,
|
||||
}}
|
||||
disabled={false}
|
||||
className="disabled_style"
|
||||
value={p_detail_related_collection_name}
|
||||
/>
|
||||
</div>}
|
||||
<div className="session_caract">
|
||||
Entité métier <br />
|
||||
<TextField
|
||||
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
|
||||
required
|
||||
name="related_collection"
|
||||
id="related_collection"
|
||||
|
||||
InputLabelProps={{
|
||||
shrink: true,
|
||||
}}
|
||||
disabled={false}
|
||||
className="disabled_style"
|
||||
value={p_detail_related_collection_name}
|
||||
/>
|
||||
|
||||
</div>}
|
||||
|
||||
{String(personal_field_data_edit_mode) === "1" && <div className="session_caract"> Entité métier <br />
|
||||
<TextField
|
||||
|
@ -1252,7 +1399,10 @@ const Config_Champs_Personnalise = (props) => {
|
|||
</div>}
|
||||
|
||||
|
||||
<div className="session_caract"> Nom Technique<br />
|
||||
<div className="session_caract">
|
||||
<Tooltip id="my-related_collection" style={{ "fontSize": "12px" }} />
|
||||
<a data-tooltip-id="my-related_collection" data-tooltip-content="Le champ commence par 'my_' et finit par une chaine alphanumerique de 3 à 50 caractères">
|
||||
Nom Technique (commence par <i>my_</i>)<br />
|
||||
<TextField
|
||||
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
|
||||
required
|
||||
|
@ -1270,6 +1420,7 @@ const Config_Champs_Personnalise = (props) => {
|
|||
setpersonal_field_data_changed("1");
|
||||
}}
|
||||
/>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
|
||||
|
@ -1305,7 +1456,7 @@ const Config_Champs_Personnalise = (props) => {
|
|||
}}
|
||||
disabled={false}
|
||||
className="disabled_style"
|
||||
value={p_detail_field_type}
|
||||
value={p_detail_field_type_label}
|
||||
/>
|
||||
</div>}
|
||||
|
||||
|
@ -1465,6 +1616,197 @@ const Config_Champs_Personnalise = (props) => {
|
|||
|
||||
</div>}
|
||||
|
||||
{String(display_personalised_field) !== "1" && String(add_one_personal_field) === "1" && <div className="div_row">
|
||||
<h3> Ajout d'un nouveau champ spécifique</h3>
|
||||
|
||||
<div className="session_data" >
|
||||
|
||||
<div className="session_caract"> Entité métier <br />
|
||||
<TextField
|
||||
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
|
||||
required
|
||||
name="one_related_collection"
|
||||
id="one_related_collection"
|
||||
|
||||
InputLabelProps={{
|
||||
shrink: true,
|
||||
}}
|
||||
select
|
||||
disabled={false}
|
||||
className="disabled_style"
|
||||
value={p_one_detail_related_collection}
|
||||
onChange={(e) => {
|
||||
setp_one_detail_related_collection(e.target.value);
|
||||
setpersonal_field_data_changed("1");
|
||||
}}
|
||||
>
|
||||
{Get_Obj_Metier_Eligible_Cham_Spe_result &&
|
||||
Get_Obj_Metier_Eligible_Cham_Spe_result.map((mycollection) => (
|
||||
<MenuItem key={JSON.parse(mycollection).objet_metier}
|
||||
value={JSON.parse(mycollection).objet_metier}
|
||||
style={{ "paddingLeft": "5px", "textAlign": "left", "width": "100%", "fontSize": "12px" }}>
|
||||
{JSON.parse(mycollection).nom}
|
||||
|
||||
</MenuItem>
|
||||
))}
|
||||
|
||||
</TextField>
|
||||
</div>
|
||||
|
||||
|
||||
<div className="session_caract">
|
||||
<Tooltip id="my-related_collection" style={{ "fontSize": "12px" }} />
|
||||
<a data-tooltip-id="my-related_collection" data-tooltip-content="Le champ commence par 'my_' et finit par une chaine alphanumerique de 3 à 50 caractères">
|
||||
Nom Technique (commence par <i>my_</i>)<br />
|
||||
<TextField
|
||||
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
|
||||
required
|
||||
name="one_field_name"
|
||||
id="one_one_field_name"
|
||||
|
||||
InputLabelProps={{
|
||||
shrink: true,
|
||||
}}
|
||||
disabled={false}
|
||||
className="disabled_style"
|
||||
value={p_one_detail_field_name}
|
||||
onChange={(e) => {
|
||||
setp_one_detail_field_name(e.target.value);
|
||||
setpersonal_field_data_changed("1");
|
||||
}}
|
||||
/>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
|
||||
<div className="session_caract"> Label<br />
|
||||
<TextField
|
||||
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
|
||||
required
|
||||
name="one_field_label"
|
||||
id="one_field_label"
|
||||
|
||||
InputLabelProps={{
|
||||
shrink: true,
|
||||
}}
|
||||
disabled={false}
|
||||
className="disabled_style"
|
||||
value={p_one_detail_field_label}
|
||||
onChange={(e) => {
|
||||
setp_one_detail_field_label(e.target.value);
|
||||
setpersonal_field_data_changed("1");
|
||||
}}
|
||||
/>
|
||||
</div>
|
||||
|
||||
|
||||
<div className="session_caract"> Type <i> (numérique / Alphanumérique)</i><br />
|
||||
<TextField
|
||||
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
|
||||
required
|
||||
name="one_field_type"
|
||||
id="one_field_type"
|
||||
|
||||
InputLabelProps={{
|
||||
shrink: true,
|
||||
}}
|
||||
select
|
||||
disabled={false}
|
||||
className="disabled_style"
|
||||
value={p_one_detail_field_type}
|
||||
onChange={(e) => {
|
||||
setp_one_detail_field_type(e.target.value);
|
||||
setpersonal_field_data_changed("1");
|
||||
}}
|
||||
>
|
||||
<MenuItem value="float" style={{ "paddingLeft": "5px", "textAlign": "left", "width": "100%" }}>numérique </MenuItem>
|
||||
<MenuItem value="string" style={{ "paddingLeft": "5px", "textAlign": "left", "width": "100%" }} >Alphanumérique </MenuItem>
|
||||
|
||||
</TextField>
|
||||
</div>
|
||||
|
||||
|
||||
<div className="session_caract"> Obligatoire <br />
|
||||
<TextField
|
||||
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
|
||||
required
|
||||
name="one_is_mandatory"
|
||||
id="one_is_mandatory"
|
||||
|
||||
InputLabelProps={{
|
||||
shrink: true,
|
||||
}}
|
||||
select
|
||||
disabled={false}
|
||||
className="disabled_style"
|
||||
value={p_one_detail_is_mandatory}
|
||||
onChange={(e) => {
|
||||
setp_one_detail_is_mandatory(e.target.value);
|
||||
setpersonal_field_data_changed("1");
|
||||
}}
|
||||
>
|
||||
<MenuItem value="1" style={{ "paddingLeft": "5px", "textAlign": "left", "width": "100%" }}>Oui </MenuItem>
|
||||
<MenuItem value="0" style={{ "paddingLeft": "5px", "textAlign": "left", "width": "100%" }} >Non </MenuItem>
|
||||
|
||||
</TextField>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div className="session_caract"> Affichable <br />
|
||||
<TextField
|
||||
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
|
||||
required
|
||||
name="one_is_displayed"
|
||||
id="one_is_displayed"
|
||||
|
||||
InputLabelProps={{
|
||||
shrink: true,
|
||||
}}
|
||||
select
|
||||
disabled={false}
|
||||
className="disabled_style"
|
||||
value={p_one_detail_is_displayed}
|
||||
onChange={(e) => {
|
||||
setp_one_detail_is_displayed(e.target.value);
|
||||
setpersonal_field_data_changed("1");
|
||||
}}
|
||||
>
|
||||
<MenuItem value="1" style={{ "paddingLeft": "5px", "textAlign": "left", "width": "100%" }}>Oui </MenuItem>
|
||||
<MenuItem value="0" style={{ "paddingLeft": "5px", "textAlign": "left", "width": "100%" }} >Non </MenuItem>
|
||||
</TextField>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
<div className="div_row" style={{ "border": "None" }}>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div className="div_row" style={{ "border": "None", "color": "orange", "textAlign": "center" }}>
|
||||
|
||||
<div className="div_row_gauche" style={{ "textAlign": 'left', 'marginLeft': '15px' }}>
|
||||
|
||||
<Button variant="contained" className="bton_enreg" onClick={Add_One_Specific_field_Data}>Enregistrer les modifications
|
||||
</Button>
|
||||
|
||||
</div>
|
||||
|
||||
<div className="div_row_droite" style={{ "textAlign": 'right', 'marginRight': '15px' }} >
|
||||
<Button variant="contained" className="bton_annule" onClick={Annule_edit_specific_Fields}>Annuler
|
||||
</Button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div className="div_row" style={{ "border": "None" }}>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>}
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue