Functional overview
Limits (in the first implementation, if the need arise it will be done afterward):
- There is no multiselect of elements (cannot drag'n drop multiple tasks at once).
- We do not support drop in collapsed swimlanes (closed stories for instance).
- Change of swimlane (move a task between 2 stories) can only be done between 2 swimlanes of same type (cannot move a task between a story and a bug).
- Solo items cannot become a child (a solo task cannot be moved as a child of a story).
Technical overview
Realtime update is NOT included.
This story will need to adjust the existing PATCH /taskboard_cells/{swimlane_id}/column/{column_id} REST route.
In addition to reordering cards in a cell and changing the card status (or mapped field value), it needs to detect and handle a change of swimlane.
In order to remove the artifact link from its old swimlane, a new parameter must be passed in the payload
PATCH /taskboard_cells/{swimlane_id}/column/{column_id} REST route.
{
add: <card_id>, // The artifact id of the card we are dropping
remove_from: <source_swimlane_id>, // The previous parent's artifact id. The swimlane we dragged the card from
order: {
direction: "before", // "before" | "after"
compared_to: <card_id>
}
}
In order to know whether the current user has permission to update the Artifact link field of the swimlanes (both old and new), a new information must be added to the Trackers mappings information passed in DOM to the app:
/* The name may change */
can_update_children: true | false // Does current user have "update" permission on the "artifact links" field for this tracker
When can_update_children is false for a swimlane (parent card), current user will not be able to drop new child cards in that swimlane OR to remove any child card from that swimlane.
The frontend part of the app must prevent dropping a card to a swimlane for the following reasons:
- User does not have permission to write the artifact link field of the new swimlane or the old swimlane. For example if I drag a task from user story A to user story B, and I do not have permission to write the artifact link, then I won't be able to drop the task anywhere in story B's swimlane.
- I am trying to drop the card into a parent of a different type, for example I am trying to drop a Task from a User story into a Bug.