From e1f6cb410d63eee0c70a3b1e11f2945b1182fa2e Mon Sep 17 00:00:00 2001 From: Paul Spooren Date: Mon, 16 Mar 2026 17:50:36 +0100 Subject: [PATCH] feat: add Gantt chart view for boards Add a timeline/Gantt view as an alternative to the kanban board view, allowing users to visualize card schedules across time using frappe-gantt. - Add GanttView component with Day/Week/Month view modes - Add Kanban/Gantt view toggle in board controls - Store view mode preference in localStorage via Vuex - Stack-based color coding with legend and undated cards section - Drag-and-drop support for rescheduling cards - Auto-fit column width to fill container on wider views - Add frappe-gantt dependency and webpack resolve alias for its CSS Co-Authored-By: Claude Opus 4.6 Signed-off-by: Paul Spooren --- package-lock.json | 7 + package.json | 1 + src/components/Controls.vue | 26 +- src/components/board/Board.vue | 7 + src/components/board/GanttView.vue | 514 +++++++++++++++++++++++++++++ src/store/main.js | 8 + webpack.js | 3 + 7 files changed, 565 insertions(+), 1 deletion(-) create mode 100644 src/components/board/GanttView.vue diff --git a/package-lock.json b/package-lock.json index d4a9b8fab0..2eef224caf 100644 --- a/package-lock.json +++ b/package-lock.json @@ -27,6 +27,7 @@ "blueimp-md5": "^2.19.0", "chroma-js": "^3.2.0", "dompurify": "^3.3.2", + "frappe-gantt": "^1.2.2", "lodash": "^4.17.23", "markdown-it": "^14.1.1", "markdown-it-link-attributes": "^4.0.1", @@ -13490,6 +13491,12 @@ "node": ">= 0.6" } }, + "node_modules/frappe-gantt": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/frappe-gantt/-/frappe-gantt-1.2.2.tgz", + "integrity": "sha512-1+uPNRa92LBIeKiZCVhJMiGIifJk5ONaoerXI8eBREXWRZGGoTJR5ATpMpsnAQcyBA6Gnq5wIht4eL+e4eHMBA==", + "license": "MIT" + }, "node_modules/fresh": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", diff --git a/package.json b/package.json index 36b368314f..15eb0c9b7e 100644 --- a/package.json +++ b/package.json @@ -48,6 +48,7 @@ "blueimp-md5": "^2.19.0", "chroma-js": "^3.2.0", "dompurify": "^3.3.2", + "frappe-gantt": "^1.2.2", "lodash": "^4.17.23", "markdown-it": "^14.1.1", "markdown-it-link-attributes": "^4.0.1", diff --git a/src/components/Controls.vue b/src/components/Controls.vue index ef7ee270dd..1fda52523c 100644 --- a/src/components/Controls.vue +++ b/src/components/Controls.vue @@ -226,6 +226,21 @@ + + + {{ t('deck', 'Kanban view') }} + + + + {{ t('deck', 'Gantt view') }} + +