Logo ShareMyCode.io ShareMyCode.io
Partagez un extrait de code en quelques secondes.
Voici votre URL de partage
Cliquer pour copier dans le presse-papiers. Copié
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, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').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, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').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>
//     `;
// }
Informations
Cet extrait a été créé le
10 Feb 2026 à 15:41:50
Cet extrait expire le
12 Mar 2026 à 15:41:50
Langage :
php
Lien
Demander la suppression