radiantrh/Js/fonctions.js
2025-12-25 18:23:48 +00:00

514 lines
14 KiB
JavaScript
Executable File

$(function(){
appliquerDataTable();
});
// Gestion du menu burger - Version simplifiée
document.addEventListener('DOMContentLoaded', function() {
const burgerToggle = document.getElementById('burgerMenuToggle');
const burgerDropdown = document.getElementById('burgerDropdown');
if (burgerToggle && burgerDropdown) {
// Ouvrir/fermer le menu burger
burgerToggle.addEventListener('click', function(e) {
e.preventDefault();
e.stopPropagation();
burgerDropdown.classList.toggle('show');
});
// Fermer le menu quand on clique ailleurs sur la page
document.addEventListener('click', function(e) {
if (!e.target.closest('.burger-menu-container')) {
burgerDropdown.classList.remove('show');
}
});
// Empêcher la fermeture quand on clique dans le menu dropdown
burgerDropdown.addEventListener('click', function(e) {
e.stopPropagation();
});
}
});
// Fonction pour formater les messages avec retours à la ligne automatiques
function formatMessageForSwal(message) {
if (!message) return '';
// Définir la longueur maximale par ligne selon la largeur de l'écran
const screenWidth = window.innerWidth;
let maxLineLength;
if (screenWidth < 576) { // Mobile
maxLineLength = 40;
} else if (screenWidth < 768) { // Tablet
maxLineLength = 60;
} else { // Desktop
maxLineLength = 80;
}
// Si le message est déjà court, ne pas le modifier
if (message.length <= maxLineLength && !message.includes('\n')) {
return message;
}
// Diviser le message en mots
const words = message.split(' ');
let lines = [];
let currentLine = '';
words.forEach(word => {
// Si ajouter ce mot dépasse la limite, créer une nouvelle ligne
if ((currentLine + ' ' + word).length > maxLineLength && currentLine !== '') {
lines.push(currentLine);
currentLine = word;
} else {
// Ajouter le mot à la ligne courante
currentLine = currentLine ? currentLine + ' ' + word : word;
}
});
// Ajouter la dernière ligne
if (currentLine) {
lines.push(currentLine);
}
return lines.join('<br>');
}
// Fonction pour ajuster dynamiquement le contenu SweetAlert
function adjustSwalContent() {
const popup = Swal.getPopup();
const title = Swal.getTitle();
const htmlContainer = Swal.getHtmlContainer();
if (popup && title) {
// Ajuster la largeur maximale selon l'écran
const screenWidth = window.innerWidth;
if (screenWidth < 576) {
popup.style.maxWidth = '95vw';
popup.style.width = '95vw';
popup.style.margin = '10px';
} else if (screenWidth < 768) {
popup.style.maxWidth = '85vw';
popup.style.width = '85vw';
} else {
popup.style.maxWidth = '500px';
popup.style.width = '500px';
}
// Gérer le défilement si nécessaire
const titleHeight = title.scrollHeight;
const maxTitleHeight = Math.min(window.innerHeight * 0.6, 400);
if (titleHeight > maxTitleHeight) {
title.style.overflowY = 'auto';
title.style.maxHeight = maxTitleHeight + 'px';
title.style.paddingRight = '10px';
}
// Ajuster également le conteneur HTML si présent
if (htmlContainer) {
const containerHeight = htmlContainer.scrollHeight;
const maxContainerHeight = Math.min(window.innerHeight * 0.4, 300);
if (containerHeight > maxContainerHeight) {
htmlContainer.style.overflowY = 'auto';
htmlContainer.style.maxHeight = maxContainerHeight + 'px';
htmlContainer.style.paddingRight = '10px';
}
}
}
}
// Fonction d'alerte principale
function alert_ebene(p_msg, p_msg_eng) {
let codeLangue = $("#codeLangue").val();
let message = (codeLangue === "en_US") ? p_msg_eng : p_msg;
// Formater le message pour les retours à la ligne
let formattedMessage = formatMessageForSwal(message);
Swal.fire({
title: formattedMessage,
icon: 'info',
confirmButtonText: codeLangue === "en_US" ? 'OK' : 'D\'accord',
customClass: {
popup: 'responsive-swal-popup',
title: 'responsive-swal-title',
htmlContainer: 'responsive-swal-html'
},
didOpen: () => {
adjustSwalContent();
},
willOpen: () => {
// Ajustement avant l'ouverture
document.body.style.overflow = 'hidden';
},
willClose: () => {
document.body.style.overflow = 'auto';
}
});
}
// Fonction de confirmation
function confirm_ebene(p_msg, p_msg_eng) {
let codeLangue = $("#codeLangue").val();
let message = (codeLangue === "en_US") ? p_msg_eng : p_msg;
// Formater le message pour les retours à la ligne
let formattedMessage = formatMessageForSwal(message);
return Swal.fire({
title: formattedMessage,
icon: 'warning',
showCancelButton: true,
confirmButtonText: codeLangue === "en_US" ? 'Yes' : 'Oui',
cancelButtonText: codeLangue === "en_US" ? 'No' : 'Non',
customClass: {
popup: 'responsive-swal-popup',
title: 'responsive-swal-title',
htmlContainer: 'responsive-swal-html'
},
didOpen: () => {
adjustSwalContent();
},
willOpen: () => {
document.body.style.overflow = 'hidden';
},
willClose: () => {
document.body.style.overflow = 'auto';
}
}).then((result) => {
return result.isConfirmed;
});
}
// Fonction de prompt
function prompt_ebene(p_msg, p_msg_eng, p_retour, callback) {
let codeLangue = $("#codeLangue").val();
let message = (codeLangue === "en_US") ? p_msg_eng : p_msg;
// Formater le message pour les retours à la ligne
let formattedMessage = formatMessageForSwal(message);
Swal.fire({
title: formattedMessage,
input: 'text',
inputValue: p_retour,
showCancelButton: true,
confirmButtonText: 'OK',
cancelButtonText: 'Annuler',
customClass: {
popup: 'responsive-swal-popup',
title: 'responsive-swal-title',
htmlContainer: 'responsive-swal-html'
},
didOpen: () => {
adjustSwalContent();
},
willOpen: () => {
document.body.style.overflow = 'hidden';
},
willClose: () => {
document.body.style.overflow = 'auto';
}
}).then((result) => {
if (result.isConfirmed) {
callback(result.value);
} else {
callback(null);
}
});
}
// Écouter les changements de taille de fenêtre
window.addEventListener('resize', () => {
// Réajuster si une alerte est ouverte
if (Swal.isVisible()) {
setTimeout(adjustSwalContent, 100);
}
});
function change_password()
{
v_msg="Attention, vous serez déconnecté par la suite! Voulez-vous changer votre mot de passe?";
v_msgEng="Attention, you will be logged out afterwards! Do you want to change your password?";
confirm_ebene(v_msg, v_msgEng)
.then((isConfirmed) => {
if (isConfirmed) {
// L'utilisateur a confirmé
window.location.assign($("#racineWeb" ).val()+"Changermotpass/");
} else {
// L'utilisateur a annulé
console.log("Confirmation refusée");
}
});
}
function afficher_beneficiaire_id()
{
idBeneficiaire=$("#idBeneficiaire_C").val();
okId=$("#okId").val();
// alert("okId = "+okId);
// alert("idBeneficiaire:"+idBeneficiaire+"fin");
//return
$("#contenu").html('<div class="spinner-responsive">' + '<span><i class="fa fa-spinner"></i></span>' + '</div>');
if (idBeneficiaire>"")
{
ajax_context_beneficiaire_afficher(idBeneficiaire, okId);
}
}
function afficher_beneficiaire_id_okId()
{
idBeneficiaire=$("#idBeneficiaire_C").val();
okId=$("#okId").val();
if (idBeneficiaire>"")
{
ajax_context_beneficiaire_afficher(idBeneficiaire, okId);
}
}
function ajax_context_beneficiaire_afficher(idBeneficiaire, okId)
{
donnees = 'idBeneficiaire='+idBeneficiaire+'&okId='+okId;
$.ajax({
url: $("#racineWeb").val()+"Ajaxcontextbeneficiaire/",
type : 'post',
data: donnees,
error: function(errorData) {
// alert("Erreur : "+errorData);
},
complete: function() {
window.location.assign($("#racineWeb" ).val()+"Fichebeneficiaire/"+idBeneficiaire);
}
});
}
function change_password()
{
v_msg="Attention, vous serez déconnecté par la suite! Voulez-vous changer votre mot de passe?";
v_msgEng="Attention, you will be logged out afterwards! Do you want to change your password?";
confirm_ebene(v_msg, v_msgEng)
.then((isConfirmed) => {
if (isConfirmed) {
// L'utilisateur a confirmé
window.location.assign($("#racineWeb" ).val()+"Changermotpass/");
} else {
// L'utilisateur a annulé
console.log("Confirmation refusée");
}
});
}
function changer_langue_connexion()
{
codeLangue = $("#langue").val();
donnees = 'codeLangue='+codeLangue;
$.ajax({
url: $("#racineWeb").val()+"Ajaxconnexioncookie/changerlangue/",
type : 'post',
data: donnees,
error: function(errorData)
{
},
success: function(data)
{
$("#div_detail_connexion").html(data);
},
complete: function()
{
$(".selectpicker").selectpicker();
}
});
}
function connexion_cookie()
{
msgErreur=$("#msgErreur").val();
donnees = 'msgErreur='+msgErreur;
$.ajax({
url: $("#racineWeb").val()+"Ajaxconnexioncookie/",
type: 'POST',
data: donnees,
success: function(data)
{
$("#div_ajaxconnexion").html(data);
},
error: function(errorData)
{
},
complete: function()
{
var login = document.getElementById("login").value;
if (login>" ")
{
$("#mdp").focus();
}
else
{
$("#login").focus();
}
}
});
}
// Applique la librairie DataBase sur les tableaux
function appliquerDataTable() {
const codeLangue = $("#codeLangue").val();
const translations = {
fr_FR: {
lengthMenu: "Affiche _MENU_ par page",
zeroRecords: "Désolé - Aucune donnée trouvée",
info: "_PAGE_ sur _PAGES_ pages",
infoEmpty: "Pas d'enregistrement",
search: "Recherche:",
paginate: { next: "►", previous: "◄", first: "|◄", last: "►|" },
infoFiltered: "(filtré de _MAX_ total enregistrements)"
},
en_US: {
lengthMenu: "Display _MENU_ records per page",
zeroRecords: "Nothing found - sorry",
info: "Showing page _PAGE_ of _PAGES_",
infoEmpty: "No records available",
search: "Search:",
paginate: { next: "►", previous: "◄", first: "|◄", last: "►|" },
infoFiltered: "(filtered from _MAX_ total records)"
}
};
$('.tabliste').each(function() {
const $table = $(this);
// Détecter les colonnes cachées
const hiddenTargets = [];
$table.find('thead th').each(function(index) {
if ($(this).data('hidden')) {
hiddenTargets.push(index);
}
});
const options = {
destroy: true,
responsive: true,
order: [[0, "desc"]],
lengthMenu: [10, 50, 100],
pagingType: "full_numbers",
autoWidth: false,
language: translations[codeLangue] || translations.fr_FR,
columnDefs: [
{ targets: hiddenTargets, visible: false, searchable: true }
],
dom: 'Bfrtip', // B = Buttons, f = filter, r = processing, t = table, i = info, p = pagination
buttons: [
{ extend: 'copy', text: 'Copier' },
{ extend: 'csv', text: 'CSV' },
{ extend: 'excel', text: 'Excel' },
{ extend: 'pdf', text: 'PDF' },
{ extend: 'print', text: 'Imprimer' }
]
};
const instance = $table.DataTable(options);
setTimeout(() => {
if (instance) {
instance.columns.adjust(); // recalcul des colonnes
if (instance.responsive) {
instance.responsive.recalc(); // recalcul responsive si dispo
}
}
}, 100);
});
}
function raffraichier_gabarit()
{
$.ajax({
url: $("#racineWeb").val()+"Ajaxgabarit/",
success: function(data)
{
$("#div_ajaxgabarit").html(data);
//codeSociete = $("#codeSociete").val();
//codeLangue = $("#codeLangue").val();
fusionConsOrd = $("#fusionConsOrd").val();
vue = $("#vue").val();
if(fusionConsOrd != "1" && vue !="Connexion"){
window.location.assign($("#racineWeb" ).val()+"Connexion/");
}
},
error: function(errorData)
{
},
complete: function()
{
$(".datepicker" ).datepicker();
raffraichier_messagerie();
}
});
}
function raffraichier_messagerie()
{
deconnexion='0';
if(navigator.onLine)
{
c_html = "";
$.ajax({
url: $("#racineWeb").val()+"Ajaxmessagerie/",
success: function(data) {
c_html = data;
},
error: function(errorData) {
},
complete: function() {
$("#nbMessagesNonLus").html(c_html);
msgNonLus=$("#msgNonLus").val();
$("#span_notification").text(msgNonLus);
// Ajout du 27/10/2024 => déconnecter si session expirée
deconnexion=$("#deconnexion").val();
// alert("deconnexion => "+deconnexion);
if(deconnexion=='1')
{
window.location.assign($("#racineWeb" ).val()+"Connexion/deconnecter/");
}
}
});
}
else
{
$("#test_connexion").css('background-color', 'red');
return;
}
}