diff --git a/public/app.js b/public/app.js index 9975f70..497c0c9 100644 --- a/public/app.js +++ b/public/app.js @@ -557,8 +557,8 @@ async function openBaselineWorkbench() { // reset form document.getElementById('seg-description').value = ''; - document.getElementById('seg-offset-years').value = '0'; - document.getElementById('seg-offset-months').value = '0'; + document.getElementById('seg-offset-type').value = ''; + document.getElementById('seg-offset-value').value = '0'; document.getElementById('seg-filter-rows').innerHTML = ''; document.getElementById('seg-timeline').classList.add('hidden'); addFilterRow(); // start with one empty filter row @@ -727,11 +727,23 @@ function updateTimelinePreview() { const months = (to.getFullYear() - from.getFullYear()) * 12 + (to.getMonth() - from.getMonth()) + 1; const fmt = new Intl.DateTimeFormat('en-US', { month: 'short', year: 'numeric' }); - const offsetYears = parseInt(document.getElementById('seg-offset-years').value) || 0; - const offsetMonths = parseInt(document.getElementById('seg-offset-months').value) || 0; + const offsetType = document.getElementById('seg-offset-type').value; + const offsetValue = parseInt(document.getElementById('seg-offset-value').value) || 0; - const projFrom = new Date(from); projFrom.setFullYear(projFrom.getFullYear() + offsetYears); projFrom.setMonth(projFrom.getMonth() + offsetMonths); - const projTo = new Date(to); projTo.setFullYear(projTo.getFullYear() + offsetYears); projTo.setMonth(projTo.getMonth() + offsetMonths); + function applyOffset(d) { + const r = new Date(d); + if (!offsetType || !offsetValue) return r; + switch (offsetType) { + case 'year': r.setFullYear(r.getFullYear() + offsetValue); break; + case 'month': r.setMonth(r.getMonth() + offsetValue); break; + case 'week': r.setDate(r.getDate() + offsetValue * 7); break; + case 'day': r.setDate(r.getDate() + offsetValue); break; + } + return r; + } + + const projFrom = applyOffset(from); + const projTo = applyOffset(to); let html = `