22/10/2023 - 18h00
parent
9a58edae93
commit
de91f4b79b
|
@ -555,6 +555,7 @@ const Employes = (props) => {
|
||||||
Get_List_RH_Profils();
|
Get_List_RH_Profils();
|
||||||
Get_Employee_Related_Target_Collection_Data();
|
Get_Employee_Related_Target_Collection_Data();
|
||||||
|
|
||||||
|
Get_Partner_Object_Specific_Fields("ressource_humaine");
|
||||||
|
|
||||||
window.scrollTo({
|
window.scrollTo({
|
||||||
top: 0,
|
top: 0,
|
||||||
|
@ -716,6 +717,7 @@ const Employes = (props) => {
|
||||||
const [employee_data_changed, setemployee_data_changed] = useState("");
|
const [employee_data_changed, setemployee_data_changed] = useState("");
|
||||||
const [employee_data_edit_mode, setemployee_data_edit_mode] = useState("");
|
const [employee_data_edit_mode, setemployee_data_edit_mode] = useState("");
|
||||||
|
|
||||||
|
|
||||||
const [GetAttendee_api, setGetAttendee_api] = useState();
|
const [GetAttendee_api, setGetAttendee_api] = useState();
|
||||||
const [GetAttendee_message, setGetAttendee_message] = useState();
|
const [GetAttendee_message, setGetAttendee_message] = useState();
|
||||||
const [GetAttendee_result, setGetAttendee_result] = useState();
|
const [GetAttendee_result, setGetAttendee_result] = useState();
|
||||||
|
@ -852,6 +854,41 @@ const Employes = (props) => {
|
||||||
setp_detail_resp_hierarchie_prenom("");
|
setp_detail_resp_hierarchie_prenom("");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Update 22/10/2023 :
|
||||||
|
Gestion des champs spécifiques. ils commencent tous par 'my_'
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
for (let i = 0; i < rows_champs_specifics.length; i++) {
|
||||||
|
|
||||||
|
var field_name = JSON.parse(rows_champs_specifics[i]).field_name;
|
||||||
|
|
||||||
|
if (mylocal_employe.hasOwnProperty(field_name)) {
|
||||||
|
var local_valeur = mylocal_employe[String(field_name)]
|
||||||
|
|
||||||
|
if (document.getElementById(String(field_name)))
|
||||||
|
document.getElementById(String(field_name)).value = local_valeur;
|
||||||
|
|
||||||
|
var new_val = { 'field_name': field_name, 'field_value': local_valeur }
|
||||||
|
var johnIndex = findIndexByProperty(spec_field_updated_values, 'field_name', field_name);
|
||||||
|
|
||||||
|
if (johnIndex > -1) {
|
||||||
|
spec_field_updated_values[johnIndex] = new_val;
|
||||||
|
|
||||||
|
} else {
|
||||||
|
spec_field_updated_values.push(new_val);
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
setspec_field_updated_values_hooks(spec_field_updated_values);
|
||||||
|
/*
|
||||||
|
* end Update 22/10/2023 :
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -1328,6 +1365,16 @@ const Employes = (props) => {
|
||||||
document.getElementsByName("detail_resp_hierarchie_id")[0].style.backgroundColor = "#ECEFF1";
|
document.getElementsByName("detail_resp_hierarchie_id")[0].style.backgroundColor = "#ECEFF1";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Pour les champs spécifiques
|
||||||
|
for (let i = 0; i < rows_champs_specifics.length; i++) {
|
||||||
|
|
||||||
|
var field_name = JSON.parse(rows_champs_specifics[i]).field_name;
|
||||||
|
if (document.getElementsByName(String(field_name))[0]) {
|
||||||
|
document.getElementsByName(String(field_name))[0].disabled = true;
|
||||||
|
document.getElementsByName(String(field_name))[0].style.backgroundColor = "#ECEFF1";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function Enable_Employee_DetailFields() {
|
function Enable_Employee_DetailFields() {
|
||||||
|
@ -1392,7 +1439,15 @@ const Employes = (props) => {
|
||||||
document.getElementsByName("detail_resp_hierarchie_id")[0].disabled = false;
|
document.getElementsByName("detail_resp_hierarchie_id")[0].disabled = false;
|
||||||
document.getElementsByName("detail_resp_hierarchie_id")[0].style.backgroundColor = "#FFFFFF";
|
document.getElementsByName("detail_resp_hierarchie_id")[0].style.backgroundColor = "#FFFFFF";
|
||||||
|
|
||||||
|
// Pour les champs spécifiques
|
||||||
|
for (let i = 0; i < rows_champs_specifics.length; i++) {
|
||||||
|
|
||||||
|
var field_name = JSON.parse(rows_champs_specifics[i]).field_name;
|
||||||
|
if (document.getElementsByName(String(field_name))[0]) {
|
||||||
|
document.getElementsByName(String(field_name))[0].disabled = false;
|
||||||
|
document.getElementsByName(String(field_name))[0].style.backgroundColor = "#FFFFFF";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1512,7 +1567,15 @@ const Employes = (props) => {
|
||||||
|
|
||||||
form.append("_id", selected_id);
|
form.append("_id", selected_id);
|
||||||
|
|
||||||
//console.log(" form == ", form);
|
|
||||||
|
/*
|
||||||
|
Update du 22/10/2023 - Gestion des champs spécifiques ajoutés par le partenaire
|
||||||
|
*/
|
||||||
|
for (let i = 0; i < spec_field_updated_values_hooks.length; i++) {
|
||||||
|
form.append(String(spec_field_updated_values_hooks[i].field_name), String(spec_field_updated_values_hooks[i].field_value));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
var myurl = process.env.REACT_APP_API_URL + "myclass/api/Update_Ressource_Humaine/";
|
var myurl = process.env.REACT_APP_API_URL + "myclass/api/Update_Ressource_Humaine/";
|
||||||
|
|
||||||
|
@ -2888,9 +2951,6 @@ const Employes = (props) => {
|
||||||
local_read = true;
|
local_read = true;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if (JSON.parse(x).module_name === module_nom && module_acces === "read") {
|
if (JSON.parse(x).module_name === module_nom && module_acces === "read") {
|
||||||
return '{"_id": "' + local_id + '", "module_name": "' + module_nom + '", "valide": "1", "locked": "0", "id": "' + localid + '", "read": ' + new_value + ', "write": ' + local_write + '}';
|
return '{"_id": "' + local_id + '", "module_name": "' + module_nom + '", "valide": "1", "locked": "0", "id": "' + localid + '", "read": ' + new_value + ', "write": ' + local_write + '}';
|
||||||
}
|
}
|
||||||
|
@ -3327,7 +3387,7 @@ const Employes = (props) => {
|
||||||
|
|
||||||
//console.log(" ## result['status'] = ", result['status'])
|
//console.log(" ## result['status'] = ", result['status'])
|
||||||
if (String(result['status']) === String("true")) {
|
if (String(result['status']) === String("true")) {
|
||||||
console.log('Message :', result['message']);
|
//console.log('Message :', result['message']);
|
||||||
setGet_List_Of_All_PJ_result(result['message']);
|
setGet_List_Of_All_PJ_result(result['message']);
|
||||||
setGet_List_Of_All_PJ_api("true");
|
setGet_List_Of_All_PJ_api("true");
|
||||||
|
|
||||||
|
@ -3359,6 +3419,142 @@ const Employes = (props) => {
|
||||||
|
|
||||||
// -- end gestion pièces jointes
|
// -- end gestion pièces jointes
|
||||||
|
|
||||||
|
|
||||||
|
// Gestion champs specifiques
|
||||||
|
|
||||||
|
/*
|
||||||
|
*** ALGORITHME
|
||||||
|
1 - Récuperer la liste des champs specifiques de la collection concernée - Array : list_nom_champs_spec
|
||||||
|
2 - Récupérer les caracteristiques de champs champs spécifique : "id, nom, label, type valeur, etc"
|
||||||
|
- avec un champ 'value' à vide. Mettre dans le tableau JSON, 'spec_champs_valeur'
|
||||||
|
|
||||||
|
3 - Créer une nouvelle table qui permettra de gerer les hook : const [rows_champs_specifics, setrows_champs_specifics] = useState([]);
|
||||||
|
4 - Afficher en html les elements 'rows_champs_specifics'
|
||||||
|
5 - Gerer la modification avec la fonction 'change_champs_spec_handle'
|
||||||
|
6 - On recuperer les valeur lors du click d'enregistrement.
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
const list_nom_champs_spec = []
|
||||||
|
const [spec_champs_valeur, setspec_champs_valeur] = useState([]);
|
||||||
|
|
||||||
|
//const spec_champs_valeur = ""
|
||||||
|
|
||||||
|
const [Get_Partner_Object_Specific_Fields_api, setGet_Partner_Object_Specific_Fields_api] = useState();
|
||||||
|
const [Get_Partner_Object_Specific_Fields_message, setGet_Partner_Object_Specific_Fields_message] = useState();
|
||||||
|
const [Get_Partner_Object_Specific_Fields_result, setGet_Partner_Object_Specific_Fields_result] = useState();
|
||||||
|
function Get_Partner_Object_Specific_Fields(local_collection_obj_metier) {
|
||||||
|
|
||||||
|
var form = new FormData();
|
||||||
|
const stored_cookie = getCookie('tokenmysypart');
|
||||||
|
form.append("token", stored_cookie);
|
||||||
|
form.append("object_name", local_collection_obj_metier);
|
||||||
|
|
||||||
|
var myurl = process.env.REACT_APP_API_URL + "myclass/api/get_list_specific_field_partner_by_object/";
|
||||||
|
|
||||||
|
axios.post(myurl, form).then(res => {
|
||||||
|
|
||||||
|
if (String(res.data.status) === String("true")) {
|
||||||
|
//console.log(" In Get_Partner_Object_Specific_Fields res.data.status = " + res.data.status);
|
||||||
|
//console.log(" In Get_Partner_Object_Specific_Fields res.data.message r_class = " + res.data.message);
|
||||||
|
|
||||||
|
setGet_Partner_Object_Specific_Fields_api("true");
|
||||||
|
setGet_Partner_Object_Specific_Fields_result(res.data.message);
|
||||||
|
|
||||||
|
|
||||||
|
setrows_champs_specifics(res.data.message);
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
setGet_Partner_Object_Specific_Fields_api("false");
|
||||||
|
setGet_Partner_Object_Specific_Fields_message(res.data.message);
|
||||||
|
alert(res.data.message)
|
||||||
|
}
|
||||||
|
|
||||||
|
}).catch((error) => {
|
||||||
|
console.warn('Not good man :( Get_Partner_Object_Specific_Fields = ', error);
|
||||||
|
setGet_Partner_Object_Specific_Fields_api("false");
|
||||||
|
alert(" Impossible de recuperer la liste des collection et champs personnalisables");
|
||||||
|
//setmyApimyApiMessage("")
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
const [rows_champs_specifics, setrows_champs_specifics] = useState([]);
|
||||||
|
const [display_champs_specifics, setdisplay_champs_specifics] = useState("0");
|
||||||
|
|
||||||
|
function afficher_champs_spec() {
|
||||||
|
|
||||||
|
setdisplay_champs_specifics("1");
|
||||||
|
//setrows_champs_specifics(spec_champs_valeur);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
function findIndexByProperty(data, key, value) {
|
||||||
|
for (var i = 0; i < data.length; i++) {
|
||||||
|
|
||||||
|
if (data[i][key] == value) {
|
||||||
|
return i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function findValueByProperty(data, key, value) {
|
||||||
|
for (var i = 0; i < data.length; i++) {
|
||||||
|
if (data[i][key] == value) {
|
||||||
|
|
||||||
|
var tmp_val = JSON.parse(data[i]);
|
||||||
|
|
||||||
|
return tmp_val.field_value
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
const spec_field_updated_values = []
|
||||||
|
const [spec_field_updated_values_hooks, setspec_field_updated_values_hooks] = useState([]);
|
||||||
|
|
||||||
|
|
||||||
|
function change_champs_spec_handle() {
|
||||||
|
|
||||||
|
for (let i = 0; i < rows_champs_specifics.length; i++) {
|
||||||
|
|
||||||
|
var field_name = JSON.parse(rows_champs_specifics[i]).field_name;
|
||||||
|
|
||||||
|
if (document.getElementsByName(String(field_name))[0]) {
|
||||||
|
|
||||||
|
var field_value = document.getElementsByName(String(field_name))[0].value;
|
||||||
|
var new_val = { 'field_name': field_name, 'field_value': field_value }
|
||||||
|
|
||||||
|
var johnIndex = findIndexByProperty(spec_field_updated_values, 'field_name', field_name);
|
||||||
|
if (johnIndex > -1) {
|
||||||
|
spec_field_updated_values[johnIndex] = new_val;
|
||||||
|
|
||||||
|
} else {
|
||||||
|
spec_field_updated_values.push(new_val);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
//setrows_champs_specifics(spec_champs_valeur);
|
||||||
|
|
||||||
|
console.log(" OUTT spec_field_updated_values = ", spec_field_updated_values);
|
||||||
|
setspec_field_updated_values_hooks(spec_field_updated_values)
|
||||||
|
}
|
||||||
|
// -- end champs specifiques
|
||||||
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="employes">
|
<div className="employes">
|
||||||
<Dialog
|
<Dialog
|
||||||
|
@ -4555,6 +4751,43 @@ const Employes = (props) => {
|
||||||
</TextField>
|
</TextField>
|
||||||
</div>}
|
</div>}
|
||||||
|
|
||||||
|
<div className="div_row">
|
||||||
|
<hr />
|
||||||
|
</div>
|
||||||
|
<div className="div_row" style={{ "padding": "5px" }}> Vos champs spécifiques<br />
|
||||||
|
|
||||||
|
{rows_champs_specifics &&
|
||||||
|
rows_champs_specifics.map((champ_spec) => (
|
||||||
|
|
||||||
|
<div className="session_caract"> {JSON.parse(champ_spec).field_label} <br />
|
||||||
|
<br />
|
||||||
|
<TextField
|
||||||
|
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
|
||||||
|
required
|
||||||
|
name={JSON.parse(champ_spec).field_name}
|
||||||
|
id={JSON.parse(champ_spec).field_name}
|
||||||
|
|
||||||
|
InputLabelProps={{
|
||||||
|
shrink: true,
|
||||||
|
}}
|
||||||
|
|
||||||
|
|
||||||
|
className="disabled_style"
|
||||||
|
onChange={(e) => {
|
||||||
|
change_champs_spec_handle(e.target.value);
|
||||||
|
setEmployee_data_changed("1");
|
||||||
|
}}
|
||||||
|
//onChange={change_champs_spec_handle}
|
||||||
|
|
||||||
|
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
))}
|
||||||
|
|
||||||
|
<br />
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<div className="div_row">
|
<div className="div_row">
|
||||||
<hr />
|
<hr />
|
||||||
|
|
|
@ -39,6 +39,7 @@ import DialogContentText from '@mui/material/DialogContentText';
|
||||||
import DialogTitle from '@mui/material/DialogTitle';
|
import DialogTitle from '@mui/material/DialogTitle';
|
||||||
import { TransitionProps } from '@mui/material/transitions';
|
import { TransitionProps } from '@mui/material/transitions';
|
||||||
import img_loading_spin from "./../mysy_img/mysy_spin_loading.gif";
|
import img_loading_spin from "./../mysy_img/mysy_spin_loading.gif";
|
||||||
|
import { Global } from "recharts";
|
||||||
|
|
||||||
|
|
||||||
const Partner_Commande = (props) => {
|
const Partner_Commande = (props) => {
|
||||||
|
@ -525,6 +526,7 @@ const Partner_Commande = (props) => {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
|
|
||||||
Get_List_Partner_Clients();
|
Get_List_Partner_Clients();
|
||||||
|
@ -1190,7 +1192,7 @@ const Partner_Commande = (props) => {
|
||||||
|
|
||||||
|
|
||||||
if (mylocalclient) {
|
if (mylocalclient) {
|
||||||
if (mylocalclient.email){
|
if (mylocalclient.email) {
|
||||||
setp_detail_header_email_client(mylocalclient.email);
|
setp_detail_header_email_client(mylocalclient.email);
|
||||||
//console.log(" ### mylocalclient.email = ", mylocalclient.email);
|
//console.log(" ### mylocalclient.email = ", mylocalclient.email);
|
||||||
}
|
}
|
||||||
|
@ -2024,31 +2026,31 @@ const Partner_Commande = (props) => {
|
||||||
|
|
||||||
|
|
||||||
// Controle des champs obligatoires
|
// Controle des champs obligatoires
|
||||||
if( !p_add_line_item || String(p_add_line_item).length < 2){
|
if (!p_add_line_item || String(p_add_line_item).length < 2) {
|
||||||
alert(" Vous devez choisir un article ");
|
alert(" Vous devez choisir un article ");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
console.log(" ### p_add_line_item = ", p_add_line_item);
|
console.log(" ### p_add_line_item = ", p_add_line_item);
|
||||||
|
|
||||||
if (!p_add_line_item_qty || parseFloat(String(p_add_line_item_qty)) <= 0){
|
if (!p_add_line_item_qty || parseFloat(String(p_add_line_item_qty)) <= 0) {
|
||||||
alert(" La quantité choisie est incorrecte ");
|
alert(" La quantité choisie est incorrecte ");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!p_add_line_item_price || parseFloat(String(p_add_line_item_price)) < 0){
|
if (!p_add_line_item_price || parseFloat(String(p_add_line_item_price)) < 0) {
|
||||||
alert(" Le prix unitaire est incorrecte ");
|
alert(" Le prix unitaire est incorrecte ");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if( String(p_add_line_item_type_reduction) === "percent" &&
|
if (String(p_add_line_item_type_reduction) === "percent" &&
|
||||||
( parseFloat(String(p_add_line_item_reduction_value)) < 0 || parseFloat(String(p_add_line_item_reduction_value)) > 100 ) ){
|
(parseFloat(String(p_add_line_item_reduction_value)) < 0 || parseFloat(String(p_add_line_item_reduction_value)) > 100)) {
|
||||||
alert(" Pour une reduction de type 'pourcentage', la valeur doit être comprise entre 0 et 100 ");
|
alert(" Pour une reduction de type 'pourcentage', la valeur doit être comprise entre 0 et 100 ");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if( String(p_add_line_item_type_reduction) === "fixe" &&
|
if (String(p_add_line_item_type_reduction) === "fixe" &&
|
||||||
( parseFloat(String(p_add_line_item_reduction_value)) < 0 || parseFloat(String(p_add_line_item_reduction_value)) > parseFloat(String(p_add_line_item_price)) ) ){
|
(parseFloat(String(p_add_line_item_reduction_value)) < 0 || parseFloat(String(p_add_line_item_reduction_value)) > parseFloat(String(p_add_line_item_price)))) {
|
||||||
alert(" Pour une reduction de type 'fixe', la valeur ne doit pas excéder le prix unitaire de l'article ");
|
alert(" Pour une reduction de type 'fixe', la valeur ne doit pas excéder le prix unitaire de l'article ");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -2184,7 +2186,7 @@ const Partner_Commande = (props) => {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if( !p_add_cmd_header_client_id || String(p_add_cmd_header_client_id).length < 2 ){
|
if (!p_add_cmd_header_client_id || String(p_add_cmd_header_client_id).length < 2) {
|
||||||
alert(" Vous devez choisir un client");
|
alert(" Vous devez choisir un client");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -2813,6 +2815,8 @@ const Partner_Commande = (props) => {
|
||||||
|
|
||||||
const [isLoading, setLoading] = useState();
|
const [isLoading, setLoading] = useState();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
|
||||||
<div className="partner_commande">
|
<div className="partner_commande">
|
||||||
|
@ -2820,6 +2824,7 @@ const Partner_Commande = (props) => {
|
||||||
<div className="mysy_spinner"> <img src={img_loading_spin} /> </div>
|
<div className="mysy_spinner"> <img src={img_loading_spin} /> </div>
|
||||||
</div>}
|
</div>}
|
||||||
|
|
||||||
|
|
||||||
<Dialog
|
<Dialog
|
||||||
open={Dialog_1_open}
|
open={Dialog_1_open}
|
||||||
onClose={Dialog_1_handleClose}
|
onClose={Dialog_1_handleClose}
|
||||||
|
@ -2858,7 +2863,7 @@ const Partner_Commande = (props) => {
|
||||||
{String(p_detail_header_statut_label).toLowerCase() !== "facturé" && <div className="session_caract_Dialog" > Article
|
{String(p_detail_header_statut_label).toLowerCase() !== "facturé" && <div className="session_caract_Dialog" > Article
|
||||||
|
|
||||||
<TextField
|
<TextField
|
||||||
required
|
required
|
||||||
autoFocus
|
autoFocus
|
||||||
margin="dense"
|
margin="dense"
|
||||||
id="ref_article"
|
id="ref_article"
|
||||||
|
@ -3231,7 +3236,7 @@ const Partner_Commande = (props) => {
|
||||||
|
|
||||||
<div className="session_caract_Dialog" > Client
|
<div className="session_caract_Dialog" > Client
|
||||||
<TextField
|
<TextField
|
||||||
required
|
required
|
||||||
autoFocus
|
autoFocus
|
||||||
margin="dense"
|
margin="dense"
|
||||||
id="ref_client"
|
id="ref_client"
|
||||||
|
|
|
@ -25,6 +25,7 @@ import FullCalendar from "@fullcalendar/react";
|
||||||
import daygridPlugin from "@fullcalendar/daygrid";
|
import daygridPlugin from "@fullcalendar/daygrid";
|
||||||
import interactionPlugin from "@fullcalendar/interaction";
|
import interactionPlugin from "@fullcalendar/interaction";
|
||||||
import { v4 as uuid } from "uuid";
|
import { v4 as uuid } from "uuid";
|
||||||
|
import { isCompositeComponent } from "react-dom/test-utils";
|
||||||
|
|
||||||
const locales = {
|
const locales = {
|
||||||
'en-US': enUS,
|
'en-US': enUS,
|
||||||
|
@ -178,6 +179,7 @@ const TestUrl_New = (props) => {
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
Get_Personnalisable_Collections();
|
Get_Personnalisable_Collections();
|
||||||
Get_Personnalisable_Collection_and_Fields();
|
Get_Personnalisable_Collection_and_Fields();
|
||||||
|
Get_Partner_Object_Specific_Fields("ressource_humaine");
|
||||||
|
|
||||||
}, [])
|
}, [])
|
||||||
|
|
||||||
|
@ -290,6 +292,137 @@ const TestUrl_New = (props) => {
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// Gestion champs specifiques
|
||||||
|
|
||||||
|
/*
|
||||||
|
*** ALGORITHME
|
||||||
|
1 - Récuperer la liste des champs specifiques de la collection concernée - Array : list_nom_champs_spec
|
||||||
|
2 - Récupérer les caracteristiques de champs champs spécifique : "id, nom, label, type valeur, etc"
|
||||||
|
- avec un champ 'value' à vide. Mettre dans le tableau JSON, 'spec_champs_valeur'
|
||||||
|
|
||||||
|
3 - Créer une nouvelle table qui permettra de gerer les hook : const [rows_champs_specifics, setrows_champs_specifics] = useState([]);
|
||||||
|
4 - Afficher en html les elements 'rows_champs_specifics'
|
||||||
|
5 - Gerer la modification avec la fonction 'change_champs_spec_handle'
|
||||||
|
6 - On recuperer les valeur lors du click d'enregistrement.
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
const list_nom_champs_spec = []
|
||||||
|
const [spec_champs_valeur, setspec_champs_valeur] = useState([]);
|
||||||
|
|
||||||
|
//const spec_champs_valeur = ""
|
||||||
|
|
||||||
|
const [Get_Partner_Object_Specific_Fields_api, setGet_Partner_Object_Specific_Fields_api] = useState();
|
||||||
|
const [Get_Partner_Object_Specific_Fields_message, setGet_Partner_Object_Specific_Fields_message] = useState();
|
||||||
|
const [Get_Partner_Object_Specific_Fields_result, setGet_Partner_Object_Specific_Fields_result] = useState();
|
||||||
|
function Get_Partner_Object_Specific_Fields(local_collection_obj_metier) {
|
||||||
|
|
||||||
|
var form = new FormData();
|
||||||
|
const stored_cookie = getCookie('tokenmysypart');
|
||||||
|
form.append("token", stored_cookie);
|
||||||
|
form.append("object_name", local_collection_obj_metier);
|
||||||
|
|
||||||
|
var myurl = process.env.REACT_APP_API_URL + "myclass/api/get_list_specific_field_partner_by_object/";
|
||||||
|
|
||||||
|
axios.post(myurl, form).then(res => {
|
||||||
|
|
||||||
|
if (String(res.data.status) === String("true")) {
|
||||||
|
console.log(" In Get_Partner_Object_Specific_Fields res.data.status = " + res.data.status);
|
||||||
|
console.log(" In Get_Partner_Object_Specific_Fields res.data.message r_class = " + res.data.message);
|
||||||
|
|
||||||
|
setGet_Partner_Object_Specific_Fields_api("true");
|
||||||
|
setGet_Partner_Object_Specific_Fields_result(res.data.message);
|
||||||
|
|
||||||
|
|
||||||
|
setrows_champs_specifics(res.data.message);
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
setGet_Partner_Object_Specific_Fields_api("false");
|
||||||
|
setGet_Partner_Object_Specific_Fields_message(res.data.message);
|
||||||
|
alert(res.data.message)
|
||||||
|
}
|
||||||
|
|
||||||
|
}).catch((error) => {
|
||||||
|
console.warn('Not good man :( Get_Partner_Object_Specific_Fields = ', error);
|
||||||
|
setGet_Partner_Object_Specific_Fields_api("false");
|
||||||
|
alert(" Impossible de recuperer la liste des collection et champs personnalisables");
|
||||||
|
//setmyApimyApiMessage("")
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
const [rows_champs_specifics, setrows_champs_specifics] = useState([]);
|
||||||
|
const [display_champs_specifics, setdisplay_champs_specifics] = useState("0");
|
||||||
|
|
||||||
|
function afficher_champs_spec() {
|
||||||
|
|
||||||
|
setdisplay_champs_specifics("1");
|
||||||
|
//setrows_champs_specifics(spec_champs_valeur);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
function findIndexByProperty(data, key, value) {
|
||||||
|
for (var i = 0; i < data.length; i++) {
|
||||||
|
if (data[i][key] == value) {
|
||||||
|
return i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function findValueByProperty(data, key, value) {
|
||||||
|
for (var i = 0; i < data.length; i++) {
|
||||||
|
if (data[i][key] == value) {
|
||||||
|
|
||||||
|
var tmp_val = JSON.parse(data[i]);
|
||||||
|
|
||||||
|
return tmp_val.field_value
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
const spec_field_updated_values = []
|
||||||
|
|
||||||
|
function change_champs_spec_handle() {
|
||||||
|
|
||||||
|
for (let i = 0; i < rows_champs_specifics.length; i++) {
|
||||||
|
|
||||||
|
var field_name = JSON.parse(rows_champs_specifics[i]).field_name;
|
||||||
|
|
||||||
|
if (document.getElementsByName(String(field_name))[0]) {
|
||||||
|
|
||||||
|
var field_value = document.getElementsByName(String(field_name))[0].value;
|
||||||
|
var new_val = { 'field_name': field_name, 'field_value': field_value }
|
||||||
|
|
||||||
|
var johnIndex = findIndexByProperty(spec_field_updated_values, 'field_name', field_name);
|
||||||
|
if (johnIndex > -1) {
|
||||||
|
spec_field_updated_values[johnIndex] = new_val;
|
||||||
|
|
||||||
|
} else {
|
||||||
|
spec_field_updated_values.push(new_val);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
//setrows_champs_specifics(spec_champs_valeur);
|
||||||
|
|
||||||
|
console.log(" OUTT spec_field_updated_values = ", spec_field_updated_values);
|
||||||
|
}
|
||||||
|
// -- end champs specifiques
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="testurl_new">
|
<div className="testurl_new">
|
||||||
<Helmet>
|
<Helmet>
|
||||||
|
@ -304,16 +437,53 @@ const TestUrl_New = (props) => {
|
||||||
<h3> Page de test * testurl_new </h3>
|
<h3> Page de test * testurl_new </h3>
|
||||||
parametres courseid = {courseid}, tabid = {tabid}
|
parametres courseid = {courseid}, tabid = {tabid}
|
||||||
<br />
|
<br />
|
||||||
{/* <div>
|
|
||||||
<Calendar
|
<Button variant="contained" className="bton_enreg"
|
||||||
localizer={localizer}
|
onClick={afficher_champs_spec}>
|
||||||
events={myEventsList}
|
Display Spec fields
|
||||||
startAccessor="start"
|
</Button>
|
||||||
endAccessor="end"
|
|
||||||
style={{ height: 500 }}
|
<br />
|
||||||
/>
|
|
||||||
</div>*/}
|
{rows_champs_specifics &&
|
||||||
<div style={{"width":"90%", "marginLeft":"1%"}}>
|
rows_champs_specifics.map((champ_spec) => (
|
||||||
|
<div className="session_caract"> {JSON.parse(champ_spec).field_label} <br />
|
||||||
|
<br />
|
||||||
|
<TextField
|
||||||
|
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
|
||||||
|
required
|
||||||
|
name={JSON.parse(champ_spec).field_name}
|
||||||
|
id={JSON.parse(champ_spec).field_name}
|
||||||
|
|
||||||
|
InputLabelProps={{
|
||||||
|
shrink: true,
|
||||||
|
}}
|
||||||
|
|
||||||
|
|
||||||
|
className="disabled_style"
|
||||||
|
onChange={change_champs_spec_handle}
|
||||||
|
|
||||||
|
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
))}
|
||||||
|
|
||||||
|
<br />
|
||||||
|
|
||||||
|
<Button variant="contained" className="bton_enreg"
|
||||||
|
onClick={"get_champs_spec"}>
|
||||||
|
Display valeurs des champs spec
|
||||||
|
</Button>
|
||||||
|
|
||||||
|
<nav> Liste des valeurs des champs spec </nav>
|
||||||
|
{rows_champs_specifics &&
|
||||||
|
rows_champs_specifics.map((champ_spec) => (
|
||||||
|
<div className="session_caract"> '{champ_spec.field_value}' </div>
|
||||||
|
))}
|
||||||
|
|
||||||
|
<br />
|
||||||
|
|
||||||
|
<div style={{ "width": "90%", "marginLeft": "1%" }}>
|
||||||
<FullCalendar
|
<FullCalendar
|
||||||
editable
|
editable
|
||||||
selectable
|
selectable
|
||||||
|
@ -338,7 +508,6 @@ const TestUrl_New = (props) => {
|
||||||
value={p_document_name}
|
value={p_document_name}
|
||||||
onChange={(e) => {
|
onChange={(e) => {
|
||||||
setp_document_name(e.target.value);
|
setp_document_name(e.target.value);
|
||||||
|
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
<MenuItem value="convocation" style={{ "paddingLeft": "5px", "textAlign": "left", "width": "100%" }} >Convocation </MenuItem>
|
<MenuItem value="convocation" style={{ "paddingLeft": "5px", "textAlign": "left", "width": "100%" }} >Convocation </MenuItem>
|
||||||
|
|
Loading…
Reference in New Issue