From bfa0eefa32a46628d97a4f5bc3f86e9d07764a53 Mon Sep 17 00:00:00 2001 From: darshanr0107 Date: Fri, 27 Jun 2025 15:01:45 +0530 Subject: [PATCH] fix gantt chart date format issue --- cypress/integration/rendering/gantt.spec.js | 12 ++++++++++++ .../mermaid/src/diagrams/gantt/ganttRenderer.js | 15 +++++++++++++-- 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/cypress/integration/rendering/gantt.spec.js b/cypress/integration/rendering/gantt.spec.js index 2cc67918c..fed4151ec 100644 --- a/cypress/integration/rendering/gantt.spec.js +++ b/cypress/integration/rendering/gantt.spec.js @@ -565,6 +565,18 @@ describe('Gantt diagram', () => { ); }); + it('should render only the day when using dateFormat D', () => { + imgSnapshotTest( + ` + gantt + title Test + dateFormat D + A :a, 1, 1d + `, + {} + ); + }); + // TODO: fix it // // This test is skipped deliberately diff --git a/packages/mermaid/src/diagrams/gantt/ganttRenderer.js b/packages/mermaid/src/diagrams/gantt/ganttRenderer.js index f5c8c2e38..66ada61c8 100644 --- a/packages/mermaid/src/diagrams/gantt/ganttRenderer.js +++ b/packages/mermaid/src/diagrams/gantt/ganttRenderer.js @@ -615,9 +615,20 @@ export const draw = function (text, id, version, diagObj) { * @param h */ function makeGrid(theSidePad, theTopPad, w, h) { + const dateFormat = diagObj.db.getDateFormat(); + const userAxisFormat = diagObj.db.getAxisFormat(); + let axisFormat; + if (userAxisFormat) { + axisFormat = userAxisFormat; + } else if (dateFormat === 'D') { + axisFormat = '%d'; + } else { + axisFormat = conf.axisFormat ?? '%Y-%m-%d'; + } + let bottomXAxis = axisBottom(timeScale) .tickSize(-h + theTopPad + conf.gridLineStartPadding) - .tickFormat(timeFormat(diagObj.db.getAxisFormat() || conf.axisFormat || '%Y-%m-%d')); + .tickFormat(timeFormat(axisFormat)); const reTickInterval = /^([1-9]\d*)(millisecond|second|minute|hour|day|week|month)$/; const resultTickInterval = reTickInterval.exec( @@ -669,7 +680,7 @@ export const draw = function (text, id, version, diagObj) { if (diagObj.db.topAxisEnabled() || conf.topAxis) { let topXAxis = axisTop(timeScale) .tickSize(-h + theTopPad + conf.gridLineStartPadding) - .tickFormat(timeFormat(diagObj.db.getAxisFormat() || conf.axisFormat || '%Y-%m-%d')); + .tickFormat(timeFormat(axisFormat)); if (resultTickInterval !== null) { const every = resultTickInterval[1];