Ajuster rapports et heures des reunions

This commit is contained in:
Daniel Allaire 2026-06-01 15:33:19 -04:00
parent 4adf65a8f5
commit 086bdbd548
4 changed files with 44 additions and 7 deletions

View file

@ -1,3 +1,5 @@
import { heureIsoSansFuseau } from '../../utils/datesReunion';
export function textePvAuto(pvPrecedent, propositions, resolutionsJour, postesVacants) {
return [
"Ouverture de l'assemblée.",
@ -25,5 +27,5 @@ export function moisPrecedent(dateStr) {
}
export function heure(dateIso) {
return dateIso ? new Date(dateIso).toLocaleTimeString('fr-CA', { hour: '2-digit', minute: '2-digit' }) : '--:--';
return heureIsoSansFuseau(dateIso);
}

View file

@ -363,8 +363,10 @@ export default function AssembleeAffaires({ contexte = false }) {
</div>
</button>
<button onClick={() => telechargerRapport(r)} disabled={loading}
className="shrink-0 rounded-xl bg-gray-900 px-3 py-2 text-xs font-bold text-white disabled:opacity-40 print:hidden">
Rapport PDF
className="tap-target shrink-0 rounded-xl bg-indigo-50 p-3 text-indigo-700 ring-1 ring-indigo-100 active:scale-[0.96] disabled:opacity-40 print:hidden"
aria-label="Télécharger le rapport PDF"
title="Rapport PDF">
<ReportIcon />
</button>
</div>
@ -509,3 +511,15 @@ export default function AssembleeAffaires({ contexte = false }) {
</div>
);
}
function ReportIcon() {
return (
<svg aria-hidden="true" viewBox="0 0 24 24" className="h-5 w-5" fill="none" stroke="currentColor" strokeWidth="1.8" strokeLinecap="round" strokeLinejoin="round">
<path d="M7 3h7l4 4v14H7z" />
<path d="M14 3v5h4" />
<path d="M10 12h5" />
<path d="M10 16h5" />
<path d="M10 8h1" />
</svg>
);
}

View file

@ -2,7 +2,7 @@ import React, { useEffect, useState } from 'react';
import { api } from '../stores/api';
import { useStore } from '../stores/store';
import PageHeader from '../components/PageHeader';
import { dateHeureReunionIso, datesReunion, dateLocale, labelDateReunion } from '../utils/datesReunion';
import { dateHeureReunionIso, datesReunion, dateLocale, heureIsoSansFuseau, labelDateReunion } from '../utils/datesReunion';
const TYPES_JETONS = [['desir', 'Désir'], ['24h', '24 heures'], ['1mois', '1 mois'], ['2mois', '2 mois'], ['3mois', '3 mois'], ['6mois', '6 mois'], ['9mois', '9 mois'], ['1an', '1 an'], ['multiple', 'Multiple']];
const INPUT = 'w-full p-3 bg-gray-50 rounded-xl border-0 focus:ring-2 focus:ring-aa-blue';
@ -234,7 +234,7 @@ export default function ReunionHebdomadaire({ contexte = false }) {
}
};
const heure = (dateIso) => (dateIso ? new Date(dateIso).toLocaleTimeString('fr-CA', { hour: '2-digit', minute: '2-digit' }) : '—');
const heure = (dateIso) => heureIsoSansFuseau(dateIso);
return (
<div className="min-h-screen bg-gray-100">
@ -274,8 +274,10 @@ export default function ReunionHebdomadaire({ contexte = false }) {
</div>
</button>
<button onClick={() => telechargerRapport(r)} disabled={loading}
className="shrink-0 rounded-xl bg-gray-900 px-3 py-2 text-xs font-bold text-white disabled:opacity-40">
Rapport PDF
className="tap-target shrink-0 rounded-xl bg-blue-50 p-3 text-aa-blue ring-1 ring-blue-100 active:scale-[0.96] disabled:opacity-40"
aria-label="Télécharger le rapport PDF"
title="Rapport PDF">
<ReportIcon />
</button>
</div>
@ -356,6 +358,18 @@ export default function ReunionHebdomadaire({ contexte = false }) {
);
}
function ReportIcon() {
return (
<svg aria-hidden="true" viewBox="0 0 24 24" className="h-5 w-5" fill="none" stroke="currentColor" strokeWidth="1.8" strokeLinecap="round" strokeLinejoin="round">
<path d="M7 3h7l4 4v14H7z" />
<path d="M14 3v5h4" />
<path d="M10 12h5" />
<path d="M10 16h5" />
<path d="M10 8h1" />
</svg>
);
}
function Resume({ rencontre }) {
return (
<div className="text-sm text-gray-600 space-y-1">

View file

@ -40,6 +40,13 @@ export function dateHeureReunionIso(dateStr, groupe) {
return `${dateStr}T${heureReunion(groupe)}:00`;
}
export function heureIsoSansFuseau(dateIso) {
if (!dateIso) return '--:--';
const match = String(dateIso).match(/T(\d{2}:\d{2})/);
if (match) return match[1];
return '--:--';
}
export function indexJourReunion(groupe) {
if (!groupe?.jour_reunion) return null;
const jour = JOURS_SEMAINE[groupe.jour_reunion.toLowerCase()];