Nom du fichier : Sans nom
// Main variables for task and chat data
//let tasksData;
//let tasksFaire;
console.log('Tasks Data:', tasksData);
console.log('Tasks Faire:', tasksFaire);
console.log('Session User ID:', SESSION_USER_ID);
document.addEventListener('DOMContentLoaded', function() {
// Initialize task items click handlers
initTaskItems();
// Restore previously selected task if available
const savedTaskId = localStorage.getItem('selectedTaskId');
const savedCompanyId = localStorage.getItem('selectedEntrepriseId');
if (savedTaskId && savedCompanyId) {
showConversation(savedTaskId, savedCompanyId);
// Highlight the saved task item
const savedTaskItem = document.querySelector(`.task-item[data-task-id='${savedTaskId}'][data-company-id='${savedCompanyId}']`);
if (savedTaskItem) {
savedTaskItem.classList.add('selected');
}
}
// Initialize search functionality
initSearch();
// Handle modal if needed
initModal();
});
/**
* Initialize task items click handlers
*/
function initTaskItems() {
const taskItems = document.querySelectorAll('.task-item');
taskItems.forEach(item => {
item.addEventListener('click', function() {
// Remove 'selected' class from all items
taskItems.forEach(i => i.classList.remove('selected'));
// Add 'selected' class to the clicked item
this.classList.add('selected');
const taskId = this.getAttribute('data-task-id');
const companyId = this.getAttribute('data-company-id');
showConversation(taskId, companyId);
localStorage.setItem('selectedTaskId', taskId);
localStorage.setItem('selectedEntrepriseId', companyId);
});
});
}
/**
* Initialize search functionality for messages
*/
function initSearch() {
const searchInput = document.getElementById("messageSearch");
if (!searchInput) return;
const taskItems = document.getElementById("taskList").getElementsByClassName("task-item");
searchInput.addEventListener("input", function() {
const filter = searchInput.value.toLowerCase();
Array.from(taskItems).forEach(item => {
const text = item.textContent.toLowerCase();
if (text.includes(filter)) {
item.style.display = "";
} else {
item.style.display = "none";
}
});
});
}
/**
* Initialize modal behavior
*/
function initModal() {
const urlParams = new URLSearchParams(window.location.search);
if (urlParams.has('openModal')) {
const myModal = new bootstrap.Modal(document.getElementById('myModal'));
myModal.show();
}
const modalElement = document.getElementById('myModal');
if (modalElement) {
modalElement.addEventListener('hidden.bs.modal', function() {
// Redirect to desired URL after modal is closed
window.location.href = 'index.php?controller=Admin&task=tache_report';
});
}
}
/**
* Display file name when a file is selected
*/
function displayFileName() {
const fileInput = document.getElementById('attachments');
const fileNameElement = document.getElementById('file-name');
if (fileInput && fileNameElement && fileInput.files.length > 0) {
fileNameElement.textContent = fileInput.files[0].name;
}
}
/**
* Show conversation for a specific task and company
* @param {string} taskId - Task ID
* @param {string} companyId - Company ID
*/
function showConversation(taskId, companyId) {
document.getElementById('tache_id').value = taskId;
document.getElementById('tache_id_entreprise').value = companyId;
const messageHeaderHTML = generateMessageHeader(taskId, companyId);
document.getElementById('message-header').innerHTML = messageHeaderHTML;
const taskData = tasksData.filter(task => task.id_tache_a_faire == taskId);
const messageContainer = document.getElementById('message-container');
messageContainer.innerHTML = '';
taskData.forEach(task => {
const messageHTML = generateMessageHTML(task);
messageContainer.innerHTML += messageHTML;
});
}
/**
* Generate header for message conversation
* @param {string} taskId - Task ID
* @param {string} companyId - Company ID
* @returns {string} - HTML for message header
*/
function generateMessageHeader(taskId, companyId) {
// Initialize default variables
let entreprise_task = "Détails entreprise non disponibles";
let tache_task = "Détails Tache non disponibles";
let livrable_task = "Détails du livrable non disponibles";
tasksFaire.forEach(task => {
if (Number(task.id) === Number(taskId)) {
entreprise_task = task.entreprise || entreprise_task;
tache_task = task.title || tache_task;
livrable_task = task.livrable || livrable_task;
}
});
// Build and return HTML with retrieved data
return `
<div class="flex items-center w-3/100">
${entreprise_task}
</div>
<div class="header-title w-20/100 flex justify-center">
${livrable_task}
</div>
<div class="header-title w-77/100 flex justify-center">
${tache_task}
</div>
`;
}
/**
* Generate HTML for a message
* @param {Object} task - Task object containing message data
* @returns {string} - HTML for message
*/
function generateMessageHTML(task) {
const isCurrentUser = task.Id_users == SESSION_USER_ID; // SESSION_USER_ID will be defined in PHP
const messageClass = isCurrentUser ? 'sent' : 'received';
const messageText = task.Message.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>').replace(/\n/g, '<br>');
let attachmentHTML = '';
if (task.attachment !== 'N/A') {
attachmentHTML = `
<div class="mt-2">
<a href="${task.attachment}" class="text-blue-500 hover:underline">
<i class="fas fa-download"></i> ${task.attachment.split('/').pop()}
</a>
</div>
`;
}
return `
<div class="message ${messageClass} p-2 rounded-lg w-full relative">
<div class="text-sm pt-1">${messageText}</div>
<div class="flex justify-end items-end mt-2 absolute bottom-1 right-1 text-xs text-gray-500">
${task.user} • ${task.Sending_Date}
</div>
${attachmentHTML}
</div>
`;
}
// function afficherConversation(taskId, companyId) {
// document.getElementById('tache_id').value = taskId;
// document.getElementById('tache_id_entreprise').value = companyId;
// const messageHeaderHTML = generateMessageHeader(taskId, companyId);
// document.getElementById('message-header').innerHTML = messageHeaderHTML;
// const taskData = tasksData.filter(task => task.id_tache_a_faire == taskId);
// const messageContainer = document.getElementById('message-container');
// messageContainer.innerHTML = '';
// taskData.forEach(task => {
// const messageHTML = generateMessageHTML(task);
// messageContainer.innerHTML += messageHTML;
// });
// }
// function generateMessageHeader(taskId, companyId) {
// const task = tasksData.find(t => t.id_tache_a_faire == taskId);
// if (!task) return '';
// const company = tasksToDo.find(c => c.id_entreprise == companyId) || { entreprise: "Entreprise inconnue" };
// const companyName = company.entreprise;
// const taskDetails = company.title || "Détails de la tâche non disponibles";
// const livrable = company.livrable || "Détails de la tâche non disponibles";
// return `
// <div class="flex items-center w-3/100">
// ${companyName}
// </div>
// <div class="header-title w-20/100 flex justify-center">
// ${livrable}
// </div>
// <div class="header-title w-77/100 flex justify-center">
// ${taskDetails}
// </div>
// `;
// }
// function generateMessageHTML(task) {
// const isCurrentUser = task.Id_users == JSON.parse(document.getElementById('currentUserId').textContent);
// const messageClass = isCurrentUser ? 'sent' : 'received';
// const messageText = task.Message.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>').replace(/\n/g, '<br>');
// let attachmentHTML = '';
// if (task.attachment !== 'N/A') {
// attachmentHTML = `
// <div class="mt-2">
// <a href="${task.attachment}" class="text-blue-500 hover:underline">
// <i class="fas fa-download"></i> ${task.attachment.split('/').pop()}
// </a>
// </div>
// `;
// }
// return `
// <div class="message ${messageClass} p-2 rounded-lg w-full relative">
// <div class="text-sm pt-1">${messageText}</div>
// <div class="flex justify-end items-end mt-2 absolute bottom-1 right-1 text-xs text-gray-500">
// ${task.user} • ${task.Sending_Date}
// </div>
// ${attachmentHTML}
// </div>
// `;
// }