role_document_view_ok

This commit is contained in:
Pascal 2024-11-27 10:25:26 +01:00
parent b3873e7fca
commit a9d70fc654
2 changed files with 41 additions and 29 deletions

View File

@ -1221,9 +1221,7 @@ body {
background: white; background: white;
padding: 20px; padding: 20px;
border-radius: 8px; border-radius: 8px;
width: 90%; width: 97%;
max-width: 600px;
max-height: 90vh;
} }
.modal-header { .modal-header {

View File

@ -782,20 +782,33 @@ function showRoleDocuments(role: {
const detailsArea = document.createElement('div'); const detailsArea = document.createElement('div');
detailsArea.id = `role-documents-${displayRole.name}`; detailsArea.id = `role-documents-${displayRole.name}`;
detailsArea.className = 'process-details'; detailsArea.className = 'process-details';
// Filtrer les documents accessibles
const accessibleDocuments = (displayRole.documents || []).filter((doc: {
name: string;
visibility: string;
createdAt: string | null | undefined;
deadline: string | null | undefined;
signatures: DocumentSignature[];
id: number;
description?: string;
status?: string;
}) =>
canUserAccessDocument(doc, displayRole.name, currentUser.processRoles?.[0]?.role || '')
);
detailsArea.innerHTML = ` detailsArea.innerHTML = `
<div class="process-details-header"> <div class="modal-content-document">
<h2>${displayRole.name} Documents</h2> <div class="details-header">
<div class="header-buttons"> <h2>${displayRole.name} Documents</h2>
<button class="close-btn" onclick="closeRoleDocuments('${displayRole.name}')"></button> <div class="header-buttons">
<button class="close-btn" onclick="closeRoleDocuments('${displayRole.name}')"></button>
</div>
</div> </div>
</div> <div class="process-details-content">
<div class="process-details-content"> <div class="details-section">
<div class="details-section"> <h3>Documents</h3>
<h3>Documents</h3> <div class="documents-grid">
<div class="documents-grid"> ${accessibleDocuments.map((document: {
${(displayRole.documents || []).length > 0 ?
(displayRole.documents || []).map((document: {
name: string; name: string;
visibility: string; visibility: string;
createdAt: string | null | undefined; createdAt: string | null | undefined;
@ -844,21 +857,22 @@ function showRoleDocuments(role: {
</div> </div>
` : ` ` : `
<p>Document vierge - En attente de création</p> <p>Document vierge - En attente de création</p>
<button class="new-request-btn" onclick="newRequest({ ${canUserAccessDocument(document, displayRole.name, currentUser.processRoles?.[0]?.role || '') ? `
processId: ${group.id}, <button class="new-request-btn" onclick="newRequest({
processName: '${group.name}', processId: ${group.id},
roleId: ${role.id}, processName: '${group.name}',
roleName: '${role.name}', roleId: ${role.id},
documentId: ${document.id}, roleName: '${role.name}',
documentName: '${document.name}' documentId: ${document.id},
})">New request</button> documentName: '${document.name}'
})">New request</button>
` : ''}
`} `}
</div> </div>
</div> </div>
`; `;
}).join('') }).join('')}
: '<p class="no-documents">No documents available for this role</p>' </div>
}
</div> </div>
</div> </div>
</div> </div>
@ -1585,7 +1599,7 @@ function signDocument(documentId: number, processId: number, isCommonDocument: b
${Array.isArray(targetDoc.files) && targetDoc.files.length > 0 ? ${Array.isArray(targetDoc.files) && targetDoc.files.length > 0 ?
targetDoc.files.map((file: any) => ` targetDoc.files.map((file: any) => `
<div class="file-item"> <div class="file-item">
<span class="file-icon"><EFBFBD><EFBFBD><EFBFBD></span> <span class="file-icon"></span>
<span class="file-name">${file.name}</span> <span class="file-name">${file.name}</span>
<a href="${file.url}" class="download-link" download="${file.name}"> <a href="${file.url}" class="download-link" download="${file.name}">
<span class="download-icon"></span> <span class="download-icon"></span>
@ -1755,10 +1769,10 @@ if (typeof window !== 'undefined') {
// Ajouter cette fonction helper // Ajouter cette fonction helper
function canUserAccessDocument(document: any, roleId: string, currentUserRole: string): boolean { function canUserAccessDocument(document: any, roleId: string, currentUserRole: string): boolean {
// Si l'utilisateur a le même rôle, il peut voir tous les documents // Si l'utilisateur a le même rôle, il peut voir et modifier tous les documents
if (roleId === currentUserRole) { if (roleId === currentUserRole) {
return true; return true;
} }
// Sinon, il ne peut voir que les documents publics // Pour les autres rôles, il ne peut que voir les documents publics
return document.visibility === 'public'; return document.visibility === 'public';
} }