diff --git a/src/App.tsx b/src/App.tsx index 65e4b37..f5d1550 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -423,6 +423,7 @@ export default function App() { groups={groups} sprintFieldId={sprintFieldResolved} ganttSprintRowMetric={dashboardCfg.ganttSprintRowMetric} + ganttNonWorkingDates={dashboardCfg.ganttNonWorkingDates} onGanttSprintRowMetricChange={setGanttSprintRowMetric} onOpenSettings={() => setSettingsOpen(true)} /> diff --git a/src/components/DashboardSettingsModal.tsx b/src/components/DashboardSettingsModal.tsx index 8162325..551daa1 100644 --- a/src/components/DashboardSettingsModal.tsx +++ b/src/components/DashboardSettingsModal.tsx @@ -5,6 +5,7 @@ import { GANTT_SPRINT_METRIC_OPTIONS, mergeImportedConfig, normalizeFunctionalGapsForSave, + parseGanttNonWorkingDatesFromText, sanitizeExcludedSprintIds, type DashboardConfig, type FunctionalGapBadge, @@ -108,11 +109,18 @@ export function DashboardSettingsModal({ open, config, onClose, onSave, boardSpr const fileRef = useRef(null) const titleId = useId() const [draft, setDraft] = useState(config) + const [ganttNonWorkInput, setGanttNonWorkInput] = useState('') useEffect(() => { if (open) setDraft(config) }, [open, config]) + const configNonWorkKey = config.ganttNonWorkingDates.join('|') + useEffect(() => { + if (!open) return + setGanttNonWorkInput(config.ganttNonWorkingDates.join('\n')) + }, [open, configNonWorkKey]) + useEffect(() => { const el = dialogRef.current if (!el) return @@ -146,8 +154,10 @@ export function DashboardSettingsModal({ open, config, onClose, onSave, boardSpr try { const parsed = JSON.parse(String(reader.result)) as unknown const merged = mergeImportedConfig(draft, parsed) - if (merged) setDraft(merged) - else alert('Fichier JSON invalide (configuration v1 ou bundle Synology v1).') + if (merged) { + setDraft(merged) + setGanttNonWorkInput(merged.ganttNonWorkingDates.join('\n')) + } else alert('Fichier JSON invalide (configuration v1 ou bundle Synology v1).') } catch { alert('Impossible de lire ce fichier JSON.') } @@ -373,6 +383,21 @@ export function DashboardSettingsModal({ open, config, onClose, onSave, boardSpr ))} + +

+ Une date par ligne au format AAAA-MM-JJ (fuseau + local du navigateur). Même style que sam. / dim. : fériés, ponts, fermeture. +

+