23/10/2023 - 16h

recette2
cherif 2023-10-23 15:32:44 +02:00
parent 2db635c451
commit 05dc0b6569
1 changed files with 386 additions and 44 deletions

View File

@ -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}&nbsp;&nbsp;
</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 &nbsp;&nbsp;</MenuItem>
<MenuItem value="string" style={{ "paddingLeft": "5px", "textAlign": "left", "width": "100%" }} >Alphanumérique &nbsp;</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 &nbsp;&nbsp;</MenuItem>
<MenuItem value="0" style={{ "paddingLeft": "5px", "textAlign": "left", "width": "100%" }} >Non &nbsp;</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 &nbsp;&nbsp;</MenuItem>
<MenuItem value="0" style={{ "paddingLeft": "5px", "textAlign": "left", "width": "100%" }} >Non &nbsp;</MenuItem>
</TextField>
</div>
<div className="div_row" style={{ "border": "None" }}>
&nbsp;
</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" }}>
&nbsp;
</div>
</div>
</div>}
</div>