V7.10 — Tableau de bord, guide, semaine type et enveloppe de formation
Reprise dans le répertoire de production du travail mené dans le worktree ux-service-enfance : - tableau de bord Service Enfance (dashboard.php) et navigation regroupée ; - guide d'utilisation (faq.php) accessible depuis toute la navigation ; - éditeur de semaine type mis en avant sur l'écran de saisie ; - droit à l'enveloppe de formation par agent, en remplacement de la case « formation déjà prévue dans la répartition annuelle » ; - correctif de « [object Object] » sur les cartes de quota du PTA ; - motif de travail par défaut à la saisie, heures travaillées complètes dans les PDF. Le docker-compose.yml de production est conservé : celui du worktree décrit une pile de test (conteneurs et volume suffixés « test », ports 9080/9081), qui aurait fait redémarrer l'application sur un volume MariaDB vide. Les migrations database/migration_v7_9*.sql sont obligatoires ; le service db-migrate les applique au déploiement. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -195,7 +195,7 @@
|
||||
|
||||
templateSelect.disabled = false;
|
||||
templateSelect.innerHTML = '<option value="">Choisir une semaine type</option>' + templates.map((template) => (
|
||||
`<option value="${template.id}">${escapeHtml(template.name)}</option>`
|
||||
`<option value="${Number(template.id)}">${escapeHtml(template.name)}</option>`
|
||||
)).join('');
|
||||
renderSelectedTemplateDetails();
|
||||
}
|
||||
@@ -219,7 +219,11 @@
|
||||
`;
|
||||
}
|
||||
|
||||
async function openApplyModal() {
|
||||
/**
|
||||
* `preselectedId` permet à l'éditeur de semaine type d'ouvrir la modale
|
||||
* directement sur le modèle en cours d'édition, sans le rechercher.
|
||||
*/
|
||||
async function openApplyModal(preselectedId = null) {
|
||||
if (!contextReady()) {
|
||||
showMessage('Sélectionnez un agent et la semaine cible avant d’importer une semaine type.', 'warning');
|
||||
return;
|
||||
@@ -235,6 +239,10 @@
|
||||
try {
|
||||
await loadTemplates();
|
||||
renderTemplateSelect();
|
||||
if (preselectedId && templateSelect) {
|
||||
templateSelect.value = String(Number(preselectedId));
|
||||
renderSelectedTemplateDetails();
|
||||
}
|
||||
setInlineMessage(applyMessage);
|
||||
} catch (error) {
|
||||
setInlineMessage(applyMessage, error.message, 'error');
|
||||
@@ -364,7 +372,7 @@
|
||||
}
|
||||
periodTemplateSelect.disabled = false;
|
||||
periodTemplateSelect.innerHTML = '<option value="">Choisir une semaine type</option>' + templates.map((template) => (
|
||||
`<option value="${template.id}">${escapeHtml(template.name)}</option>`
|
||||
`<option value="${Number(template.id)}">${escapeHtml(template.name)}</option>`
|
||||
)).join('');
|
||||
}
|
||||
|
||||
@@ -379,7 +387,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
async function openPeriodModal() {
|
||||
async function openPeriodModal(preselectedId = null) {
|
||||
if (!contextReady()) {
|
||||
showMessage('Sélectionnez un agent et une semaine avant d’appliquer une semaine type sur une période.', 'warning');
|
||||
return;
|
||||
@@ -397,6 +405,10 @@
|
||||
try {
|
||||
await loadTemplates();
|
||||
renderPeriodTemplateSelect();
|
||||
if (preselectedId && periodTemplateSelect) {
|
||||
periodTemplateSelect.value = String(Number(preselectedId));
|
||||
invalidatePeriodPreview();
|
||||
}
|
||||
setInlineMessage(periodMessage);
|
||||
} catch (error) {
|
||||
setInlineMessage(periodMessage, error.message, 'error');
|
||||
@@ -687,5 +699,8 @@
|
||||
init,
|
||||
refreshButtons,
|
||||
loadTemplates,
|
||||
// Ouverts aussi depuis l'éditeur de semaine type.
|
||||
openApplyModal,
|
||||
openPeriodModal,
|
||||
};
|
||||
})();
|
||||
|
||||
Reference in New Issue
Block a user