button_common_worked

This commit is contained in:
Pascal 2024-11-25 21:04:37 +01:00
parent efd4e79a4a
commit dc36c75ebe

View File

@ -44,6 +44,10 @@ interface Group {
name: string; name: string;
visibility: string; visibility: string;
description: string; description: string;
createdAt?: string | null;
deadline?: string | null;
signatures?: DocumentSignature[];
status?: string;
}>; }>;
} }
@ -533,30 +537,62 @@ function showProcessDetails(group: Group, groupId: number) {
<p>${group.description || 'No description available'}</p> <p>${group.description || 'No description available'}</p>
</div> </div>
<div class="details-section"> <div class="details-section">
<div class="details-section">
<h3>Documents Communs</h3> <h3>Documents Communs</h3>
<div class="documents-grid"> <div class="documents-grid">
${group.commonDocuments.map(document => ` ${group.commonDocuments.map(document => {
<div class="document-card ${document.visibility} vierge"> const totalSignatures = document.signatures?.length || 0;
<div class="document-header"> const signedCount = document.signatures?.filter((sig: DocumentSignature) => sig.signed).length || 0;
<h4> ${document.name}</h4> const percentage = totalSignatures > 0 ? (signedCount / totalSignatures) * 100 : 0;
<span class="document-visibility">${document.visibility}</span> const isVierge = !document.createdAt || !document.deadline || !document.signatures?.length;
return `
<div class="document-card ${document.visibility} ${isVierge ? 'vierge' : ''}">
<div class="document-header">
<h4>${isVierge ? `⚠️ ${document.name}` : document.name}</h4>
<span class="document-visibility">${document.visibility}</span>
</div>
<div class="document-info">
${!isVierge ? `
<p class="document-date">Created on: ${document.createdAt ? new Date(document.createdAt).toLocaleDateString() : 'N/A'}</p>
<p class="document-deadline">Deadline: ${document.deadline ? new Date(document.deadline).toLocaleDateString() : 'N/A'}</p>
<p class="document-duration">Duration: ${calculateDuration(document.createdAt || '', document.deadline || '')} days</p>
<div class="document-signatures">
<h5>Signatures:</h5>
<div class="signatures-list">
${document.signatures?.map((sig: DocumentSignature) => `
<div class="signature-item ${sig.signed ? 'signed' : 'pending'}">
<span class="signer-name">${sig.member.name}</span>
<span class="signature-status">
${sig.signed ?
`✓ Signed on ${sig.signedAt ? new Date(sig.signedAt).toLocaleDateString() : 'Unknown date'}` :
'⌛ Pending'}
</span>
</div>
`).join('')}
</div>
<div class="progress-bar">
<div class="progress" style="width: ${percentage}%;"></div>
</div>
<p>${signedCount} out of ${totalSignatures} signed (${percentage.toFixed(0)}%)</p>
</div>
` : `
<p>Document vierge - En attente de création</p>
<button class="new-request-btn" onclick="newRequest({
processId: ${group.id},
processName: '${group.name}',
roleId: 0,
roleName: 'common',
documentId: ${document.id},
documentName: '${document.name}'
})">New request</button>
`}
</div>
</div> </div>
<div class="document-info"> `;
<p>${document.description}</p> }).join('')}
<button class="new-request-btn" onclick="newRequest({
processId: ${group.id},
processName: '${group.name}',
roleId: 0,
roleName: 'common',
documentId: ${document.id},
documentName: '${document.name}'
})">New request</button>
</div>
</div>
`).join('')}
</div> </div>
</div> </div>
<div class="details-section">
<h3>Roles and Documents</h3> <h3>Roles and Documents</h3>
${group.roles.map(role => ` ${group.roles.map(role => `
<div class="role-section"> <div class="role-section">
@ -1058,7 +1094,6 @@ function submitNewDocument(event: Event) {
deadline: deadline, deadline: deadline,
visibility: visibility, visibility: visibility,
status: "pending", status: "pending",
// Ajouter les signatures pour tous les membres du rôle
signatures: role.members.map((member: { id: string | number; name: string }) => ({ signatures: role.members.map((member: { id: string | number; name: string }) => ({
member: member, member: member,
signed: false, signed: false,
@ -1137,6 +1172,11 @@ function submitCommonDocument(event: Event) {
return; return;
} }
// Récupérer tous les membres de tous les rôles du groupe
const allMembers = group.roles.reduce((acc: any[], role: any) => {
return acc.concat(role.members);
}, []);
const updatedDocument = { const updatedDocument = {
id: documentId, id: documentId,
name: documentName, name: documentName,
@ -1144,7 +1184,12 @@ function submitCommonDocument(event: Event) {
createdAt: new Date().toISOString(), createdAt: new Date().toISOString(),
deadline: deadline, deadline: deadline,
visibility: visibility, visibility: visibility,
status: "pending" status: "pending",
signatures: allMembers.map((member: { id: string | number; name: string }) => ({
member: member,
signed: false,
signedAt: null
}))
}; };
// Mettre à jour le document commun // Mettre à jour le document commun