Milestone dates integrated into epics
Mockup
Background
- Currently, you can set epic start and end dates manually. This is good for top-down planning, when you want to set an estimate of when an epic begins and ends, or you want to set target dates.
- For bottoms-up planning or for tracking, you already have a set of issues with milestones associated with them. So when you group multiple issues into an epic, you want the epic to reflect the milestone dates of those issues. In particular, this will help you understand when the epic will actually start and and actually end, based on the assigned issues.
Description
Implementation of the epic date changes in https://gitlab.com/gitlab-org/gitlab-ee/issues/6157
- An epic has two date fields, a planned start date field and a planned end date field.
- For each date field, the user can choose one of two modes for it to be in:
Fixed
andFrom milestones
. - When in
Fixed
mode, the user manually sets the date value. - When in
From milestones
mode, the value is determined automatically (and dynamically):- This is based on the issues that are assigned to the epic currently.
- For the planned start date field, look at all the issues assigned to the epic currently. For all those issues, look at all the milestones that are assigned to those issues. For all those milestones, find the earliest start date of those milestones (closest to negative infinity time). That earliest start date value becomes the planned start date field here.
- If no earliest start date exists, the planned start date is null.
- Similar algorithm for planned end date.
- When in
From milestones
mode, we also want to show to the user (in the epic sidebar view), which milestone is the one that contributes to the earliest start date, per the algorithm above. - Per the design of https://gitlab.com/gitlab-org/gitlab-ee/merge_requests/6448#scenarios-when-this-composite-column-needs-to-be-updates, the planned start date (and planned end date) are updated in the system every time there is a change in the system that would trigger it, per the logic above.
So in the sidebar view of an epic, we want to show for the planned start date and planned end date:
- Which selection the user has chosen:
Fixed
vsFrom milestones
. - It should show the
Fixed
manual date. - It should show the
From milestones
dynamic/automatic date. - When you hover over the
From milestones
dynamic/automatic date, it should show which milestone contributed to that date.
Empty: Editable | Empty: Read-only | Filled: Editable | Filled: Read-only | Edit | Hover: From milestones | Hover: feature explanation | Hover: warning |
---|---|---|---|---|---|---|---|
Only show a warning icon (and tooltip) for selected dates (even if the user doesn't have permission to edit). Unselected dates don't have icon nor tooltip. Use these messages.
- If planned start date > planned finish date:
This date is after the planned finish date. So this epic won't appear in the roadmap.
- If planned finish date < planned start date:
This date is before the planned start date. So this epic won't appear in the roadmap.
API:
field name | read, write |
---|---|
start_date_fixed |
read/write |
start_date_from_milestones |
read-only |
start_date_is_fixed |
read/write |
due_date_fixed |
read/write |
due_date_from_milestones |
read-only |
due_date_is_fixed |
read/write |
Scope
For this issue, only the BE changes, along the with API are required. The FE changes are in https://gitlab.com/gitlab-org/gitlab-ee/issues/6927 and https://gitlab.com/gitlab-org/gitlab-ee/issues/6928.
This page may contain information related to upcoming products, features and functionality. It is important to note that the information presented is for informational purposes only, so please do not rely on the information for purchasing or planning purposes. Just like with all projects, the items mentioned on the page are subject to change or delay, and the development, release, and timing of any products, features, or functionality remain at the sole discretion of GitLab Inc.