diff --git a/src/components/Config_Champs_Personnalise.js b/src/components/Config_Champs_Personnalise.js new file mode 100644 index 0000000..084649f --- /dev/null +++ b/src/components/Config_Champs_Personnalise.js @@ -0,0 +1,1474 @@ +import React, { useRef, useState, useEffect } from "react"; +import TextField from '@mui/material/TextField'; +import MenuItem from '@mui/material/MenuItem'; +import 'react-confirm-alert/src/react-confirm-alert.css'; // Import css +import Button from '@mui/material/Button'; +import axios from "axios"; +import { getCookie, setCookie } from 'react-use-cookie'; +import { useHistory } from "react-router-dom"; +import CheckOut from "./CheckOut"; +import { DataGrid, GridToolbar, frFR } from '@mui/x-data-grid'; +import "react-draft-wysiwyg/dist/react-draft-wysiwyg.css"; +import { Editor } from '@tinymce/tinymce-react'; +import parse from 'html-react-parser'; +import { FcViewDetails, FcDisapprove } from "react-icons/fc"; +import 'react-tooltip/dist/react-tooltip.css' +import { Tooltip } from 'react-tooltip' +import add_plus from "../mysy_img/plus.png"; +import excel_icone from "../mysy_img/excel_icone.png"; +import participants from "../mysy_img/participants.png"; +import fileDownload from 'js-file-download' +import Popup from 'reactjs-popup'; +import 'reactjs-popup/dist/index.css'; +import { FcCancel, FcApproval, FcAcceptDatabase, FcPrint } from "react-icons/fc"; +import DatePicker from "react-datepicker"; +import "react-datepicker/dist/react-datepicker.css"; +import { format } from 'date-fns' +import moment from "moment"; +import InputAdornment from '@mui/material/InputAdornment'; +import { AiFillCloseCircle } from "react-icons/ai"; +import Box from '@mui/material/Box'; +import { Typography, LinearProgress } from '@mui/material'; +import styled from 'styled-components'; +import { CiTrash } from "react-icons/ci"; +import { MdAddCircleOutline, MdRemoveCircleOutline } from "react-icons/md"; +import Dialog from '@mui/material/Dialog'; +import DialogActions from '@mui/material/DialogActions'; +import DialogContent from '@mui/material/DialogContent'; +import DialogContentText from '@mui/material/DialogContentText'; +import DialogTitle from '@mui/material/DialogTitle'; +import { TransitionProps } from '@mui/material/transitions'; + +const Config_Champs_Personnalise = (props) => { + const history = useHistory(); + const [submenu, setsubmenu] = useState(""); + const [rowss, setRows] = useState([]); + const [selectionModel, setSelectionModel] = React.useState([]); + + const columns = [ + { field: '_id', headerName: '_id', hide: true }, + { field: 'id', headerName: 'id', hide: true }, + { 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"; + + 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: "Detail", headerName: 'Voir detail', + renderCell: (cellValues) => { + return ( + + + + ); + } + },*/ + { + field: "delete", headerName: 'Supprimer', + renderCell: (cellValues) => { + return ( + + { + // handleClick_delete(event, cellValues); + }} + > + + + } + modal + nested + position="center center" + > + {close => ( +
+ +
MySy Information
+
+ {' '} + + En confirmant cette opération, le document sera définitivement supprimé.
+ +
+
+
+ + +
+
+ +
+
+
+ )} +
+ + + ); + } + } + + ] + const [p_filtre1, setp_filtre1] = useState(); + const [p_filtre1_value, setp_filtre1_value] = useState(); + + const [p_filtre2, setp_filtre2] = useState(); + const [p_filtre2_value, setp_filtre2_value] = useState(); + + const [p_filtre3, setp_filtre3] = useState(); + const [p_filtre3_value, setp_filtre3_value] = useState(); + + const [p_filtre4, setp_filtre4] = useState(); + const [p_filtre4_value, setp_filtre4_value] = useState(); + + const myRef = useRef(null) + const myRef_head = useRef(null); + + const [selected_id, setselected_id] = useState(); + + const [selected_field_name, setselected_field_name] = useState(); + + function handleClick_display_personal_field(selected_row_id) { + + setdisplay_personalised_field("1"); + //submenu_detail_employe(); + + var line = JSON.parse(rowss[selected_row_id]); + + //console.log("### line = ", line); + var document_id = line._id; + setselected_id(document_id); + + setselected_field_name(line.field_name); + + //console.log(" ### line.ref_interne = ", line.ref_interne); + Get_Given_Specific_Fields(document_id); + + if (document.getElementById('myRef')) { + // myRef.current.scrollIntoView({ behavior: "smooth" }); + var divh = document.getElementById('myRef').offsetTop; + window.scrollTo({ + top: divh, + behavior: "smooth", + }); + + } + + } + + + const [Get_Given_Specific_Fields_api, setGet_Given_Specific_Fields_api] = useState(); + const [Get_Given_Specific_Fields_message, setGet_Given_Specific_Fields_message] = useState(); + const [Get_Given_Specific_Fields_result, setGet_Given_Specific_Fields_result] = useState(); + function Get_Given_Specific_Fields(local_id) { + + var form = new FormData(); + + + const stored_cookie = getCookie('tokenmysypart'); + form.append("token", stored_cookie); + form.append("_id", local_id); + + + var myurl = process.env.REACT_APP_API_URL + "myclass/api/get_given_specific_field/"; + + + axios.post(myurl, form).then(res => { + + if (String(res.data.status) === String("true")) { + //console.log(" In Get_Given_Specific_Fields res.data.status = " + res.data.status); + //console.log(" In Get_Given_Specific_Fields res.data.message r_class = " + res.data.message); + + setGet_Given_Specific_Fields_api("true"); + setGet_Given_Specific_Fields_result(res.data.message); + + if (res.data.message.length > 0) { + var mylocal_spec_field = JSON.parse(res.data.message); + + if (mylocal_spec_field.field_name) + setp_detail_field_name(mylocal_spec_field.field_name); + + if (mylocal_spec_field.field_label) + setp_detail_field_label(mylocal_spec_field.field_label); + + if (mylocal_spec_field.related_collection) { + setp_detail_related_collection(mylocal_spec_field.related_collection); + setp_detail_related_collection_name(mylocal_spec_field.related_collection_name); + + } + + if (mylocal_spec_field.is_displayed) { + setp_detail_is_displayed(mylocal_spec_field.is_displayed); + if (String(mylocal_spec_field.is_displayed) === "1") + setp_detail_is_displayed_label("Oui"); + else + setp_detail_is_displayed_label("Non"); + } + + if (mylocal_spec_field.field_type) + setp_detail_field_type(mylocal_spec_field.field_type); + + if (mylocal_spec_field.is_mandatory) { + setp_detail_is_mandatory(mylocal_spec_field.is_mandatory); + if (String(mylocal_spec_field.is_mandatory) === "1") + setp_detail_is_mandatory_label("Oui"); + else + setp_detail_is_mandatory_label("Non"); + + } + + + disable_Partner_personalFields(); + } + else { + alert("Aucune information récuperée"); + } + + } + else { + setGet_Given_Specific_Fields_api("false"); + setGet_Given_Specific_Fields_message(res.data.message); + alert(res.data.message) + } + + }).catch((error) => { + console.warn('Not good man :( Get_Given_Specific_Fields = ', error); + setGet_Given_Specific_Fields_api("false"); + alert(" Impossible de recuperer la liste des collection et champs personnalisables de l'objet"); + //setmyApimyApiMessage("") + }) + } + + + + const [Dialog_1_message, setDialog_1_message] = React.useState(false); + const [Dialog_1_open, setDialog_1_open] = React.useState(false); + function Dialog_1_handle_change_participant_session(message) { + setDialog_1_message(message); + setDialog_1_open(true); + } + + const Dialog_1_handleClose = () => { + //alert(" Utiliser le bouton 'fermer' "); + //setOpen(false); + }; + + const Dialog_1_handleClose_buton = () => { + setDialog_1_open(false); + }; + + + + + function handleClick_delete(event, cellValues) { + // Recuperation du motif du refus : + var local_ref_interne = cellValues.row.ref_interne; + var local_id = cellValues.row._id; + + + Delete_Personalise_Field_Data(local_id, local_ref_interne); + } + + + const [display_personalised_field, setdisplay_personalised_field] = React.useState(); + + + const [Delete_Personalise_Field_Data_api, setDelete_Personalise_Field_Data_api] = useState(); + const [Delete_Personalise_Field_Data_message, setDelete_Personalise_Field_Data_message] = useState(); + const [Delete_Personalise_Field_Data_result, setDelete_Personalise_Field_Data_result] = useState(); + function Delete_Personalise_Field_Data(local_id, local_ref_interne) { + + var form = new FormData(); + //form.append("token","K3cw63eKokKSbV4spjQ48SUNnfy80yrXfA"); + + + const stored_cookie = getCookie('tokenmysypart'); + form.append("token", stored_cookie); + form.append("_id", local_id); + + + var myurl = process.env.REACT_APP_API_URL + "myclass/api/delete_given_specific_field/"; + + axios.post(myurl, form).then(res => { + //console.log(" In Delete_Personalise_Field_Data res.data.status = " + res.data.status); + //console.log(" In Delete_Personalise_Field_Data res.data.message r_class = " + res.data.message); + + if (String(res.data.status) === String("true")) { + setDelete_Personalise_Field_Data_api("true"); + setDelete_Personalise_Field_Data_result(res.data.message); + + Getall_Partner_Personalised_Fields_No_filter(); + + setpersonal_field_data_edit_mode(); + setpersonal_field_data_changed(); + clear_detail_fields(); + + setdisplay_personalised_field(); + + setSelectionModel([]); + + alert(" Le document a été correctement supprimé."); + //myRef_head.current.scrollIntoView({ behavior: "smooth" }); + if (document.getElementById('myRef_head')) { + var divh = document.getElementById('myRef_head').offsetTop; + window.scrollTo({ + top: divh, + behavior: "smooth", + }); + } + + } + else { + setDelete_Personalise_Field_Data_api("false"); + setDelete_Personalise_Field_Data_message(res.data.message); + alert(res.data.message); + + } + + }).catch((error) => { + + console.warn('Delete_Personalise_Field_Data : Not good man :( mysearchtext = ' + error); + setDelete_Personalise_Field_Data_api("false"); + alert(" Impossible de supprimer le document"); + }) + } + + + const [Getall_Partner_Personalised_Fields_No_filter_api, setGetall_Partner_Personalised_Fields_No_filter_api] = useState(); + const [Getall_Partner_Personalised_Fields_No_filter_message, setGetall_Partner_Personalised_Fields_No_filter_message] = useState(); + const [Getall_Partner_Personalised_Fields_No_filter_result, setGetall_Partner_Personalised_Fields_No_filter_result] = useState(); + function Getall_Partner_Personalised_Fields_No_filter(event) { + + var form = new FormData(); + + + const stored_cookie = getCookie('tokenmysypart'); + form.append("token", stored_cookie); + + + var myurl = process.env.REACT_APP_API_URL + "myclass/api/get_list_specific_field_partner_no_filter/"; + + axios.post(myurl, form).then(res => { + + if (String(res.data.status) === String("true")) { + //console.log(" In Getall_Partner_Personalised_Fields_No_filter res.data.status = " + res.data.status); + //console.log(" In Getall_Partner_Personalised_Fields_No_filter res.data.message r_class = " + res.data.message); + setGetall_Partner_Personalised_Fields_No_filter_api("true"); + setGetall_Partner_Personalised_Fields_No_filter_result(res.data.message); + setRows(res.data.message); + } + else { + setGetall_Partner_Personalised_Fields_No_filter_api("false"); + setGetall_Partner_Personalised_Fields_No_filter_message(res.data.message); + alert(res.data.message); + } + + }).catch((error) => { + console.warn('Not good man :( Getall_Partner_Personalised_Fields_No_filter = ', error); + setGetall_Partner_Personalised_Fields_No_filter_api("false"); + alert(" Impossible de recuperer la liste des champs"); + //setmyApimyApiMessage("") + }) + } + + const [Getall_Partner_Personalised_Fields_with_filter_api, setGetall_Partner_Personalised_Fields_with_filter_api] = useState(); + const [Getall_Partner_Personalised_Fields_with_filter_message, setGetall_Partner_Personalised_Fields_with_filter_message] = useState(); + const [Getall_Partner_Personalised_Fields_with_filter_result, setGetall_Partner_Personalised_Fields_with_filter_result] = useState(); + function Getall_Partner_Personalised_Fields_with_filter(event) { + + var form = new FormData(); + + + const stored_cookie = getCookie('tokenmysypart'); + form.append("token", stored_cookie); + // Recuperation des parametres + var filtre1 = p_filtre1; + var filtre2 = p_filtre2; + var filtre3 = p_filtre3; + var filtre4 = p_filtre4; + + var filtre1_value = ""; + var filtre2_value = ""; + var filtre3_value = ""; + var filtre4_value = ""; + // Recuperation des valeurs de filtres + + if (p_filtre1_value) { + filtre1_value = p_filtre1_value; + form.append(filtre1, filtre1_value); + } + + if (p_filtre2_value) { + filtre2_value = p_filtre2_value; + form.append(filtre2, filtre2_value); + } + + if (p_filtre3_value) { + filtre3_value = p_filtre3_value; + form.append(filtre3, p_filtre3_value); + } + + if (p_filtre4_value) { + filtre4_value = p_filtre4_value; + form.append(filtre4, p_filtre4_value); + } + + var myurl = process.env.REACT_APP_API_URL + "myclass/api/get_list_specific_field_partner_with_filter/"; + + axios.post(myurl, form).then(res => { + + if (String(res.data.status) === String("true")) { + //console.log(" In Getall_Partner_Personalised_Fields_with_filter res.data.status = " + res.data.status); + //console.log(" In Getall_Partner_Personalised_Fields_with_filter res.data.message r_class = " + res.data.message); + setGetall_Partner_Personalised_Fields_with_filter_api("true"); + setGetall_Partner_Personalised_Fields_with_filter_result(res.data.message); + setRows(res.data.message); + } + else { + setGetall_Partner_Personalised_Fields_with_filter_api("false"); + setGetall_Partner_Personalised_Fields_with_filter_message(res.data.message); + alert(res.data.message); + } + + }).catch((error) => { + console.warn('Not good man :( Getall_Partner_Personalised_Fields_with_filter = ', error); + setGetall_Partner_Personalised_Fields_with_filter_api("false"); + alert(" Impossible de recuperer la liste des champs"); + //setmyApimyApiMessage("") + }) + } + + const [Get_Obj_Metier_Eligible_Cham_Spe_api, setGet_Obj_Metier_Eligible_Cham_Spe_api] = useState(); + const [Get_Obj_Metier_Eligible_Cham_Spe_message, setGet_Obj_Metier_Eligible_Cham_Spe_message] = useState(); + const [Get_Obj_Metier_Eligible_Cham_Spe_result, setGet_Obj_Metier_Eligible_Cham_Spe_result] = useState(); + function Get_Obj_Metier_Eligible_Cham_Spe() { + + var form = new FormData(); + const stored_cookie = getCookie('tokenmysypart'); + form.append("token", stored_cookie); + + var myurl = process.env.REACT_APP_API_URL + "myclass/api/Get_Collection_Eligible_Champ_Specific/"; + + axios.post(myurl, form).then(res => { + + if (String(res.data.status) === String("true")) { + //console.log(" In Get_Obj_Metier_Eligible_Cham_Spe res.data.status = " + res.data.status); + //console.log(" In Get_Obj_Metier_Eligible_Cham_Spe res.data.message r_class = " + res.data.message); + + setGet_Obj_Metier_Eligible_Cham_Spe_api("true"); + setGet_Obj_Metier_Eligible_Cham_Spe_result(res.data.message); + + } + else { + setGet_Obj_Metier_Eligible_Cham_Spe_api("false"); + setGet_Obj_Metier_Eligible_Cham_Spe_message(res.data.message); + alert(res.data.message) + } + + }).catch((error) => { + console.warn('Not good man :( Get_Obj_Metier_Eligible_Cham_Spe = ', error); + setGet_Obj_Metier_Eligible_Cham_Spe_api("false"); + alert(" Impossible de recuperer la liste des objets métiers éligibles pour les champs spécifiques"); + //setmyApimyApiMessage("") + }) + } + + + + useEffect(() => { + Get_Obj_Metier_Eligible_Cham_Spe(); + + Getall_Partner_Personalised_Fields_No_filter(); + // myRef_head.current.scrollIntoView({ behavior: "smooth" }); + + if (document.getElementById('myRef_head')) { + var divh = document.getElementById('myRef_head').offsetTop; + window.scrollTo({ + top: divh, + behavior: "smooth", + }); + } + + }, []) + + + function clean_all_filters() { + setp_filtre1(); + setp_filtre1_value(); + + setp_filtre2(); + setp_filtre2_value(); + + setp_filtre3(); + setp_filtre3_value(); + + setp_filtre4(); + setp_filtre4_value(); + + /*etdisplay_affectation(""); + setAdd_new_affectation(""); + clean_affectation_fields(); + clean_nouvelle_affectation_fields(); + setSelectionModel_affectations([]); + setSelectionModel([]); + setsubmenu(""); +*/ + Getall_Partner_Personalised_Fields_No_filter(); + } + + function disable_Partner_personalFields() { + setpersonal_field_data_edit_mode("0"); + + if (document.getElementsByName("field_name")[0]) { + document.getElementsByName("field_name")[0].disabled = true; + document.getElementsByName("field_name")[0].style.backgroundColor = "#ECEFF1"; + } + + if (document.getElementsByName("field_label")[0]) { + document.getElementsByName("field_label")[0].disabled = true; + document.getElementsByName("field_label")[0].style.backgroundColor = "#ECEFF1"; + } + + + + if (document.getElementsByName("related_collection")[0]) { + document.getElementsByName("related_collection")[0].disabled = true; + document.getElementsByName("related_collection")[0].style.backgroundColor = "#ECEFF1"; + } + + if (document.getElementsByName("field_type")[0]) { + document.getElementsByName("field_type")[0].disabled = true; + document.getElementsByName("field_type")[0].style.backgroundColor = "#ECEFF1"; + } + + if (document.getElementsByName("is_mandatory")[0]) { + document.getElementsByName("is_mandatory")[0].disabled = true; + document.getElementsByName("is_mandatory")[0].style.backgroundColor = "#ECEFF1"; + } + + if (document.getElementsByName("is_displayed")[0]) { + document.getElementsByName("is_displayed")[0].disabled = true; + document.getElementsByName("is_displayed")[0].style.backgroundColor = "#ECEFF1"; + } + + + } + + + function Edit_personal_Data_Fields() { + Enable_Partner_PersonalFields(); + //Get_Given_Personnalisable_Collection_and_Fields(selected_template_ref_interne); + } + + function Enable_Partner_PersonalFields() { + setpersonal_field_data_edit_mode("1"); + + if (document.getElementsByName("field_name")[0]) { + document.getElementsByName("field_name")[0].disabled = false; + document.getElementsByName("field_name")[0].style.backgroundColor = "#FFFFFF"; + } + + if (document.getElementsByName("field_label")[0]) { + document.getElementsByName("field_label")[0].disabled = false; + document.getElementsByName("field_label")[0].style.backgroundColor = "#FFFFFF"; + } + + if (document.getElementsByName("related_collection")[0]) { + document.getElementsByName("related_collection")[0].disabled = false; + document.getElementsByName("related_collection")[0].style.backgroundColor = "#FFFFFF"; + } + + if (document.getElementsByName("field_type")[0]) { + document.getElementsByName("field_type")[0].disabled = false; + document.getElementsByName("field_type")[0].style.backgroundColor = "#FFFFFF"; + } + + if (document.getElementsByName("is_mandatory")[0]) { + document.getElementsByName("is_mandatory")[0].disabled = false; + document.getElementsByName("is_mandatory")[0].style.backgroundColor = "#FFFFFF"; + } + + if (document.getElementsByName("is_displayed")[0]) { + document.getElementsByName("is_displayed")[0].disabled = false; + document.getElementsByName("is_displayed")[0].style.backgroundColor = "#FFFFFF"; + } + + + } + + + + function Annule_edit_specific_Fields() { + clear_detail_fields(); + setpersonal_field_data_changed(); + setpersonal_field_data_edit_mode(); + Get_Given_Specific_Fields(selected_id); + } + + const [personal_field_data_changed, setpersonal_field_data_changed] = useState(""); + const [personal_field_data_edit_mode, setpersonal_field_data_edit_mode] = useState(""); + + + + const [add_one_personal_field, setadd_one_personal_field] = React.useState(); + function submenu_add_one_personal_field() { + setSelectionModel([]); + clear_one_detail_fields(); + setpersonal_field_data_edit_mode(); + setpersonal_field_data_changed(); + clear_detail_fields(); + setdisplay_personalised_field(); + + + //Get_List_Personnalisable_Default_Document(); + setadd_one_personal_field("1"); + + } + + const [p_detail_field_name, setp_detail_field_name] = useState(""); + const [p_detail_field_label, setp_detail_field_label] = useState(""); + const [p_detail_related_collection, setp_detail_related_collection] = useState(""); + const [p_detail_related_collection_name, setp_detail_related_collection_name] = useState(""); + 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_is_mandatory, setp_detail_is_mandatory] = useState(""); + const [p_detail_is_mandatory_label, setp_detail_is_mandatory_label] = useState(""); + + + const [p_one_detail_field_name, setp_one_detail_field_name] = useState(""); + const [p_one_detail_field_label, setp_one_detail_field_label] = useState(""); + const [p_one_detail_related_collection, setp_one_detail_related_collection] = useState(""); + const [p_one_detail_is_displayed, setp_one_detail_is_displayed] = useState(""); + const [p_one_detail_field_type, setp_one_detail_field_type] = useState(""); + const [p_one_detail_is_mandatory, setp_one_detail_is_mandatory] = useState(""); + + function clear_detail_fields() { + setp_detail_field_name(""); + setp_detail_field_label(); + setp_detail_related_collection(""); + setp_detail_related_collection_name(""); + setp_detail_is_displayed(""); + setp_detail_field_type(""); + setp_detail_is_mandatory(""); + setp_detail_is_mandatory_label(""); + setp_detail_is_displayed_label(""); + + + } + + + function clear_one_detail_fields() { + setp_one_detail_field_name(""); + setp_one_detail_field_label(); + setp_one_detail_related_collection(""); + setp_one_detail_is_displayed(""); + setp_one_detail_field_type(""); + setp_one_detail_is_mandatory(""); + } + + function Fermer_specific_Fields() { + setdisplay_personalised_field(); + clear_detail_fields(); + clear_one_detail_fields(); + setSelectionModel([]); + + } + + + + const [Update_One_Specific_field_Data_api, setUpdate_One_Specific_field_Data_api] = useState(); + const [Update_One_Specific_field_Data_message, setUpdate_One_Specific_field_Data_message] = useState(); + const [Update_One_Specific_field_Data_result, setUpdate_One_Specific_field_Data_result] = useState(); + function Update_One_Specific_field_Data() { + var form = new FormData(); + //form.append("token","K3cw63eKokKSbV4spjQ48SUNnfy80yrXfA"); + + + const stored_cookie = getCookie('tokenmysypart'); + form.append("token", stored_cookie); + form.append("_id", selected_id); + + if (p_detail_field_name) { + form.append("field_name", p_detail_field_name); + } + else { + alert(" Vous devez definir le technique du champ. Il doit commencer impérativement par 'my_'"); + return; + } + if (!p_detail_field_name.startsWith('my_')) { + alert(" Le nom technique du champ doit commencer impérativement par 'my_'"); + return; + } + if (String(p_detail_field_name).length < 6) { + alert(" Le nom technique du champ doit au moins 6 caractères"); + return; + } + + + + + if (p_detail_field_label) + form.append("field_label", p_detail_field_label); + else { + alert(" Vous devez definir le label du champ "); + return; + } + if (String(p_detail_field_label).length < 3) { + alert(" Le label du champ doit faire au moins 3 caractères"); + return; + } + + + if (p_detail_related_collection) + form.append("related_collection", p_detail_related_collection); + else { + alert(" Vous devez definir l'entité"); + return; + } + + + if (p_detail_is_displayed) + form.append("is_displayed", p_detail_is_displayed); + else { + alert(" Vous devez definir si le champ est affichable"); + return; + } + + + if (p_detail_field_type) + form.append("field_type", p_detail_field_type); + else { + alert(" Vous devez definir le type du champ"); + return; + } + + + if (p_detail_is_mandatory) + form.append("is_mandatory", p_detail_is_mandatory); + else { + alert(" Vous devez definir si le champ est obligatoire"); + return; + } + + + //console.log(" Update_One_Specific_field_Data affectation form == ", form); + + + var myurl = process.env.REACT_APP_API_URL + "myclass/api/Update_specific_field/"; + + axios.post(myurl, form).then(res => { + //console.log(" In Update_One_Specific_field_Data res.data.status = " + res.data.status); + //console.log(" In Update_One_Specific_field_Data res.data.message r_class = " + res.data.message); + + if (String(res.data.status) === String("true")) { + setUpdate_One_Specific_field_Data_api("true"); + setUpdate_One_Specific_field_Data_result(res.data.message); + if (myRef.current) { + myRef.current.scrollIntoView({ behavior: "smooth" }); + } + + disable_Partner_personalFields(); + setpersonal_field_data_edit_mode("0"); + setpersonal_field_data_changed("0"); + Getall_Partner_Personalised_Fields_No_filter(); + Get_Given_Specific_Fields(selected_id); + alert(res.data.message); + + } + else { + setUpdate_One_Specific_field_Data_api("false"); + setUpdate_One_Specific_field_Data_message(res.data.message); + alert(res.data.message); + } + + }).catch((error) => { + + console.log('UpdateStagiaireData : Not good man :( Update_One_Specific_field_Data = ' + error); + setUpdate_One_Specific_field_Data_api("false"); + alert(" Impossible de mettre à jour le document"); + + }) + } + + + return ( +
+ + + MySy Information + + + {Dialog_1_message} + + + + + + + + + + +

Configuration documents

+
+
Utilisez les filtres !
+
+
+ { + setp_filtre1(e.target.value); + + }} + > + Entité métier   + Nom du champ   + + + +
+ + + +
+ {p_filtre1 && + { setp_filtre1_value(e.target.value); }} + InputProps={{ + endAdornment: ( + + { + setp_filtre1_value(""); + }} /> + + ), + }} + + /> + + } +
+ {p_filtre1 &&
+ + +   { + setp_filtre2("1"); + setp_filtre2_value(""); + }} /> + +
} + {p_filtre1 &&
+ + +   { + setp_filtre1(); + setp_filtre1_value(); + }} + /> + +
} + + +
+ + {p_filtre2 && +
+
+ { + setp_filtre2(e.target.value); + + }} + > + Entité métier   + Nom du champ   + + + +
+
+ {String(p_filtre2).length > 2 && + setp_filtre2_value(e.target.value)} + InputProps={{ + endAdornment: ( + + { + setp_filtre2_value(""); + }} /> + + ), + }} + + />} +
+ + {String(p_filtre2).length > 2 &&
+ + +   { + setp_filtre3("1"); + setp_filtre3_value(""); + }} + /> + +
} + + {String(p_filtre2).length > 2 &&
+ + +   { + setp_filtre2(); + setp_filtre2_value(); + }} + /> + +
} + +
+ } + + + + + +
+ +
+ +
+ +
+ + +
+ +
+ +
+
+ +
+
+
+ +
+   + + { + setSelectionModel(newSelectionModel); + if (newSelectionModel.length === 1) + handleClick_display_personal_field(newSelectionModel); + if (newSelectionModel.length !== 1) { + setpersonal_field_data_edit_mode(); + setpersonal_field_data_changed(); + clear_detail_fields(); + setsubmenu(); + setdisplay_personalised_field(); + + } + }} + selectionModel={selectionModel} + + localeText={frFR.components.MuiDataGrid.defaultProps.localeText} + rows={rowss.map((item, index) => ( + { + id: index, + _id: JSON.parse(item)._id, + field_name: JSON.parse(item).field_name, + field_label: JSON.parse(item).field_label, + related_collection: JSON.parse(item).related_collection, + is_displayed: JSON.parse(item).is_displayed, + field_type: JSON.parse(item).field_type, + is_mandatory: JSON.parse(item).is_mandatory, + + } + ))} + + columns={columns} + pageSize={10} + className="datagridclass" + + rowsPerPageOptions={[10]} + //disableSelectionOnClick + components={{ + Toolbar: GridToolbar, + }} + //sx={datagridSx} + getCellClassName={(params) => { + //field === 'distantiel' + if (params.field === 'distantiel' && String(params.value) === "1") { + return 'cell--distantiel'; + } + if (params.field === "presentiel" && String(params.value) == "1") { + return 'cell--presentiel'; + } + + + //field === "statut" + if (params.field === "status" && String(params.value) == "0") { + return 'cell--statut--preinscrit'; + } + + if (params.field === "status" && String(params.value) == "1") { + return 'cell--statut--inscrit'; + } + + if (params.field === "status" && String(params.value) == "-1") { + return 'cell--statut--annule'; + } + + }} + getRowClassName={(params) => { + + if (String(params.row.status) === "-1") { + return 'line--statut--annule'; + } + if (String(params.row.status) === "0") { + return 'line--statut--preinscrit'; + } + if (String(params.row.status) === "1") { + return 'line--statut--inscrit'; + } + }} + + + /> + +
+ +
+ +
+
+ +
+ +
+
+ + {String(display_personalised_field) === "1" && String(add_one_personal_field) !== "1" &&
+

Détail champ personnalisé {selected_field_name}

+ +
+ + + {String(personal_field_data_edit_mode) !== "1" &&
Entité métier
+ +
} + + {String(personal_field_data_edit_mode) === "1" &&
Entité métier
+ { + setp_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) => ( + + {JSON.parse(mycollection).nom}   + + + ))} + + +
} + + +
Nom Technique
+ { + setp_detail_field_name(e.target.value); + setpersonal_field_data_changed("1"); + }} + /> +
+ + +
Label
+ { + setp_detail_field_label(e.target.value); + setpersonal_field_data_changed("1"); + }} + /> +
+ + {String(personal_field_data_edit_mode) !== "1" &&
Type (numérique / Alphanumérique)
+ +
} + + {String(personal_field_data_edit_mode) === "1" &&
Type (numérique / Alphanumérique)
+ { + setp_detail_field_type(e.target.value); + setpersonal_field_data_changed("1"); + }} + > + numérique    + Alphanumérique   + + +
} + + + {String(personal_field_data_edit_mode) !== "1" &&
Obligatoire
+ +
} + + {String(personal_field_data_edit_mode) === "1" &&
Obligatoire
+ { + setp_detail_is_mandatory(e.target.value); + setpersonal_field_data_changed("1"); + }} + > + Oui    + Non   + + +
} + + {String(personal_field_data_edit_mode) !== "1" &&
Affichable
+ +
} + + {String(personal_field_data_edit_mode) === "1" &&
Affichable
+ { + setp_detail_is_displayed(e.target.value); + setpersonal_field_data_changed("1"); + }} + > + Oui    + Non   + +
} + + + + +
+   +
+ + {String(personal_field_data_changed) === "1" &&
+ /!\ Pensez à enregistrer les modifications +
} + +
+ + {String(personal_field_data_changed) === "1" &&
+ + + +
} + + {String(personal_field_data_edit_mode) === "1" &&
+ +
} +
+
+ + {String(personal_field_data_edit_mode) !== "1" &&
+ + + +
} + + + {String(personal_field_data_edit_mode) !== "1" &&
+ + + +
} +
+
+   +
+
+ +
} + +
+ + + ); +} + +export default Config_Champs_Personnalise; diff --git a/src/components/Config_Document.js b/src/components/Config_Document.js index 695c7e5..3ba84e0 100644 --- a/src/components/Config_Document.js +++ b/src/components/Config_Document.js @@ -38,7 +38,7 @@ import DialogContent from '@mui/material/DialogContent'; import DialogContentText from '@mui/material/DialogContentText'; import DialogTitle from '@mui/material/DialogTitle'; import { TransitionProps } from '@mui/material/transitions'; - + const Config_Documents = (props) => { const history = useHistory(); const [submenu, setsubmenu] = useState(""); @@ -947,8 +947,8 @@ const Config_Documents = (props) => { axios.post(myurl, form).then(res => { if (String(res.data.status) === String("true")) { - console.log(" In Get_Given_Personnalisable_Collection_and_Fields res.data.status = " + res.data.status); - console.log(" In Get_Given_Personnalisable_Collection_and_Fields res.data.message r_class = " + res.data.message); + //console.log(" In Get_Given_Personnalisable_Collection_and_Fields res.data.status = " + res.data.status); + //console.log(" In Get_Given_Personnalisable_Collection_and_Fields res.data.message r_class = " + res.data.message); setGet_Given_Personnalisable_Collection_and_Fields_api("true"); setGet_Given_Personnalisable_Collection_and_Fields_result(res.data.message); @@ -1047,8 +1047,8 @@ const Config_Documents = (props) => { var myurl = process.env.REACT_APP_API_URL + "myclass/api/Update_Partner_Document/"; axios.post(myurl, form).then(res => { - console.log(" In Update_one_Partner_Document res.data.status = " + res.data.status); - console.log(" In Update_one_Partner_Document res.data.message r_class = " + res.data.message); + //console.log(" In Update_one_Partner_Document res.data.status = " + res.data.status); + //console.log(" In Update_one_Partner_Document res.data.message r_class = " + res.data.message); if (String(res.data.status) === String("true")) { setUpdate_one_Partner_Document_api("true"); diff --git a/src/components/Employes.js b/src/components/Employes.js index 2cce498..6a30e63 100644 --- a/src/components/Employes.js +++ b/src/components/Employes.js @@ -2126,6 +2126,14 @@ const Employes = (props) => { form.append("ismanager", "0"); + /* + 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)); + } + + console.log(" form == ", form); var myurl = process.env.REACT_APP_API_URL + "myclass/api/Add_Ressource_Humaine/"; @@ -3451,7 +3459,7 @@ const Employes = (props) => { 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/"; + var myurl = process.env.REACT_APP_API_URL + "myclass/api/Get_Partner_Object_Specific_Valide_Displayed_Fields/"; axios.post(myurl, form).then(res => { @@ -5386,11 +5394,49 @@ const Employes = (props) => { + + +
+
+
+
Vos champs spécifiques
+ + {rows_champs_specifics && + rows_champs_specifics.map((champ_spec) => ( + +
{JSON.parse(champ_spec).field_label}
+
+ { + change_champs_spec_handle(e.target.value); + setEmployee_data_changed("1"); + }} + //onChange={change_champs_spec_handle} + + + /> +
+ ))} + +
+ +
+
 
-
{
@@ -5761,7 +5807,7 @@ const Employes = (props) => {  
{String(Affectation_data_changed) === "1" && String(edite_affectation_form) === "1" &&
- /!\ Pensez à enregistrer les modifications bb + /!\ Pensez à enregistrer les modifications
} diff --git a/src/components/Partner.js b/src/components/Partner.js index 1b384e3..648a711 100644 --- a/src/components/Partner.js +++ b/src/components/Partner.js @@ -51,6 +51,9 @@ import Partner_Commande from "./Partner_Commande"; import Config_Documents from "./Config_Document"; import Factures_Client from "./Partner_Facture"; import Configuration_Technique from "./Partner_Config_Technique"; +import Config_Champs_Personnalise from "./Config_Champs_Personnalise"; + + import Dialog from '@mui/material/Dialog'; import DialogActions from '@mui/material/DialogActions'; import DialogContent from '@mui/material/DialogContent'; @@ -302,7 +305,8 @@ const Partner = (props) => { var list_menu = ['creation', 'infopartner', 'statistique', 'abonnement', 'affichage', 'ordervalide', 'mes_sessions', 'setuplms', 'facture', 'pricing', 'mes_clients', 'mes_devis', 'mes_cmd', - 'mes_stagiaires', 'mes_employes', 'mon_materiel', 'config_document', 'factures_client', "config_technique"] + 'mes_stagiaires', 'mes_employes', 'mon_materiel', 'config_document', 'factures_client', "config_technique", + "config_champ_specific"] if (action && list_menu.includes(action)) { @@ -364,6 +368,21 @@ const Partner = (props) => { } } + + function config_specfic_fields_func(event) { + var security_retval = check_user_acces_right("config_document", "read"); + if (security_retval === 1) { + setmenu("config_champ_specific"); + setapiexcelimportmessage(); + setformation_file_name(); + history.push("/Partner/config_champ_specific"); + } else { + Dialog_1_handle_acces_insuffisant("Vos droits ne sont pas suffisants pour acceder à la gestion des documents"); + } + } + + + function config_technique_func(event) { var security_retval = check_user_acces_right("config_document", "read"); if (security_retval === 1) { @@ -1074,6 +1093,14 @@ const Partner = (props) => { {String(menu) !== "config_document" &&
   MES DOCUMENTS
} {String(menu) === "config_document" &&
    MES DOCUMENTS
}
+ +
+
+ {String(menu) !== "config_champ_specific" &&
   CHAMP SPECIFIQUE
} + {String(menu) === "config_champ_specific" &&
    CHAMP SPECIFIQUE
} +
+ +

{String(menu) !== "config_technique" &&
   TECHNIQUE
} @@ -1330,7 +1357,7 @@ const Partner = (props) => { {String(menu) === "mes_clients" &&
- +
} @@ -1346,6 +1373,13 @@ const Partner = (props) => {
} + {String(menu) === "config_champ_specific" &&
+ + +
+ } + +