-
-
Notifications
You must be signed in to change notification settings - Fork 14
Kanban board types #583
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Kanban board types #583
Conversation
Co-authored-by: byq77 <28567623+byq77@users.noreply.github.com>
Co-authored-by: byq77 <28567623+byq77@users.noreply.github.com>
Refactor Board to Boardv2 structure with ColumnGroupData
…ys, fixed some translations
PR Compliance Guide 🔍Below is a summary of compliance checks for this PR:
Compliance status legend🟢 - Fully Compliant🟡 - Partial Compliant 🔴 - Not Compliant ⚪ - Requires Further Human Verification 🏷️ - Compliance label |
||||||||||||||||||||||||
PR Code Suggestions ✨Explore these optional code suggestions:
|
|||||||||||||||||||||||
|
Hi @byq77 ! I have been going through this PR and its functionalities from past few days. But didnt got the time to comment here, as was busy with some major bugs which got spawned in the latest enhancements I made for user feature. The latest version has been released just now. Coming to this PR, you have done exceptional work here. Its really nice to see how you have transformed the plugin for project management. And how cool it looks now. I really liked these new features. I can see the amount of work you have put in here. Although, these are not very big changes, which are directly affecting the plugins fundamental working. So, I can actually release them in the upcoming version, So, will need to think if, I should release this feature in the upcoming release first. Mostly, I might... |
|
Here are few things, I can able to think of related to this feature :
Now, I understand that, these configuration will provide an pre-configured workflow, for users to start right away. And which is very much important. And also, users are free to modify any of these configs as and when they want. But, there are also various workflows, where users can have a board, where there can be mixture of "Tagged", "Dated" and "Untagged" type of columns. So, a custom type might help them to have these workflow. Also, the main reason for this is, user dont loose their older configs when they will update it to this latest version. I have seen that you have applied the migrations, let me test how its working and get back here.
TBH, the "Status based board", was released recently. I simply got an idea that, since there is a feature of "Cyclic statuses in Tasks plugin", so I came up with this workflow where, we can set the chain such that :
Now, since we have this feature, where we can visualize the current "Board" in different type of views. How the pre-configured boards will look like. My approachThere will be three boards as they are now. But will change their names, so now when user will install this plugin, they will know exactly that Boards = Projects :
And, each of this boards will be set to the respective board type initially, which users can then change as and how they want. Only, thing which is confusing me is, should we keep a 4th board type "Custom board type". So, users can use it later. Else whats the other approach, so that users dont face any inconvinience, when they will update the plugin to this version of the plugin. Their original configs shouldnt be mixed with these 3 board types. So, they are not confused. |
a7516ee to
dd8e431
Compare
|
The advantage of my approach is that the Map View associated with the board is not affected by cycling between the Kanban board views. It is pretty obvious to me that users would like to see their tasks in different views on the same board (for example, to see which tasks associated with the board/project are overdue/in progress). The best solution would be to completely disassociate the column organizations from the particular boards and allow users to define multiple column organizations or choose an existing one from a template. I am speaking from the perspective of a user. |
|
Hi @byq77 I have just released a new version, Not sure, but everything was working fine in development environment, but its failing when I build the release. Hopefully, it should fix now, as I reverted the method of rendering. |
After merging the current main it works fine. |
|
If I had more time, I would have implemented it this way (a proper way):
The current solution is good enough for me. |
|
Hi @byq77 ! Just wanted to give one heads-up. When, I just spin up my development environment, the issue of content vanishing inside the TaskItem card is only showing up in the development environment. But, if I build a production bundle, there is no such issue. Right now, the latest version is using Not, sure what is causing this. Actually, based on AI suggestion, I tried I feel, the issue started happening, after I converted the WorkaroundOne possible reason why this is happening only during development time is, the components are refreshed multiple times, just to have extra safe-checking. And during this multiple rendering, the return statement as mentioned below is cleaning things up. The workaround includes. Simply comment out the following return statement. Which will avoid cleaning up the content, when the component refreshes again. Task-Board/src/components/KanbanView/TaskItem.tsx Lines 150 to 152 in aa04a80
I am not sure, if I should remove it in production build also, whether it will work or not is a mystery, but will see in future. More literature
|
Interesting. I did not encounter this (it was showing both when using |

User description
new_feature_demo.mp4
Recently, I've been inspired by the Task Genius extension, which organizes tasks into projects. For the Task Board plugin, I think the obvious equivalent of a project is simply a board with a defined board-level filter.
Following this philosophy, users should be able to switch between different organizations of Kanban columns within the same board. Currently, this requires creating a separate board with a different column organization.
This PR enhances the Task Board plugin by allowing boards to switch between three column organizations: status-based, tag-based, and time-based within the same board. The result should be a more flexible, streamlined experience for organizing and viewing tasks across different contexts.
PR Type
Enhancement
Description
Introduces support for multiple Kanban board type organizations (status-based, time-based, tag-based) within the same board
Refactored board configuration structure to use nested column groups organized by board type instead of flat arrays
Added
KanbanBoardTypeenum with three board type options for type-safe selectionImplemented settings migration logic to convert legacy board formats to new nested structure seamlessly
Enhanced board configuration modal with type selector dropdown and board duplication functionality
Updated all column and task components to use
getActiveColumns()andgetActiveColumnKey()helpers for correct column group accessAdded board type state tracking and switching logic in task board view with user notifications
Expanded language translations (English and Polish) with new keys for board type functionality
Added CSS styling for board configuration UI improvements including button containers and select element sizing
Diagram Walkthrough
File Walkthrough
14 files
en.ts
Language translations reorganized and Kanban board type keys addedsrc/utils/lang/locale/en.ts
for consistency
board-type,board-type-info,status-board,time-board,tag-board,changed-kanban-board-type,no-board-selected-to-duplicate,duplicate-this-board,copy-suffixGlobalSettings.ts
Board configuration structure refactored for multiple Kanban typessrc/interfaces/GlobalSettings.ts
board types (status, time, tag)
columnsfrom a flat array to a nested object withstatus,time, andtagpropertiesboardTypefield to board configuration with default valueKanbanBoardType.statusBoardcolumn organization types
SettingSynchronizer.ts
Settings migration logic for board structure transformationsrc/settings/SettingSynchronizer.ts
array) to new format (nested column groups)
isLegacyBoard()helper to detect old board structureresolveDefaultColumns()to extract default column configurationsseamlessly
ColumnSegregator.ts
Column segregator updated to support multiple board typessrc/utils/algorithms/ColumnSegregator.ts
getActiveColumns()helper function instead of directlyaccessing board columns array
current board type
BoardConfigs.ts
Board configuration interfaces refactored with type groupingsrc/interfaces/BoardConfigs.ts
ColumnGroupDatatype to organize columns by type (status, time,tag)
BoardLegacytype for backward compatibility with old boardformat
Boardtype to includeboardTypefield and nestedColumnGroupDatastructuregetActiveColumns()andgetActiveColumnKey()toretrieve columns based on board type
OpenModals.ts
Modal service updated for active column retrievalsrc/services/OpenModals.ts
openTaskBoardActionsModal()to usegetActiveColumns()helperinstead of direct column access
Enums.ts
Kanban board type enumeration addedsrc/interfaces/Enums.ts
KanbanBoardTypeenum with three values:statusBoard,timeBoard,tagBoardstyles.css
CSS styling for board configuration UI enhancementsstyles.css
boardConfigModalDoubleBtnContainerfor side-by-side button layout
BoardConfigModal.tsx
Board configuration modal enhanced with type switching and duplicationsrc/modals/BoardConfigModal.tsx
time, and tag-based boards
handleDuplicateCurrentBoard()function to duplicateexisting board configurations
getActiveColumnKey()foraccessing correct column group
nested column structure
layout
Column.tsx
Column component updated for multiple board type supportsrc/components/KanbanView/Column.tsx
getActiveColumnKey()foraccessing correct column group
with nested column structure
LazyColumn.tsx
Lazy column component updated for board type supportsrc/components/KanbanView/LazyColumn.tsx
getActiveColumnKey()forcorrect column group access
column structure
TaskBoardViewContent.tsx
Task board view enhanced with board type switching capabilitysrc/components/TaskBoardViewContent.tsx
activeBoardTypestate to track current Kanban board typegetActiveColumns()helperactiveBoardTypeto useMemo hook for properre-rendering
TaskItem.tsx
Task item component updated for active column retrievalsrc/components/KanbanView/TaskItem.tsx
getActiveColumns()helperKanbanBoardView.tsx
Kanban board view updated for active column supportsrc/components/KanbanView/KanbanBoardView.tsx
getActiveColumns()helper for retrieving columnstype
2 files
en.json
Alphabetical reorganization and board type localization keyssrc/utils/lang/locale/en.json
board-type,board-type-info,status-board,tag-board,time-boardchanged-kanban-board-typeto track board type changespl.json
Comprehensive Polish localization expansion for kanban board typessrc/utils/lang/locale/pl.json
comprehensive support for new features
(
board-type,status-board,tag-board,time-board)features
column management, and task dependencies
2 files