•  
     
    story #12537 configure my burndown/up & sprint with a start date & end date
Summary
Empty
configure my burndown/up & sprint with a start date & end date

I don't have to manually compute the duration when my timeslots are fixed

There are several elements that needs a milestone duration to works properly

  • Burn-up chart
  • Burn-down chart
  • Milestone dates display
  • Computation of "is it hot or not"

At the moment, the values are computed with "Start date" + "duration" with some magical to exclude saturday and sunday. It should be possible to define the timeperiod with a combination of "Start date" + "End date" as an alternative (keeping the Sat/Sun magical exclusion).

Timeframe semantic

Introduce a "Timeframe" semantic in tracker configuration (target: milestones trackers). A Timeframe can be defined with either

  • A start date and duration
  • A start date and a end date

In semantic configuration, tracker admins can select which computation mode they prefer and the target fields (like other semantics).

Impacts of this new semantic

  • Fields that are being used by the semantic can no longer be deleted until the semantic is deleted
  • Burndown and Burnup charts depends on this semantic
    • Configuration error messages should be change to refer to Timeframe semantic instead of individual fields
  • Timeframe Semantic cannot be deleted as long as there is
    • A burndown
    • Or a burnup
    • Those dependencies should be clearly stated in Timeframe semantic and in each element.
  • On Velocity semantic
    • There is no dependencies between semantics (technically they can live independently)
    • However, the display of the graph should check correct usage of Timeframe semantic:
      • When no sub-milestones have a Timeframe semantic defined, no graph is displayed but an error message to inform that a Timeframe is mandatory to get the graph.
      • When at least one sub-milsetone doesn't have a Timeframe, the graph is displayed in best-effort and an error message is displayed to inform about missing configuration of Timeframe semantic.
  • There is a "ForgeUpgrade" bucket to import hardcoded configuration to semantic for existing trackers
    • All trackers were there are duration & start_date used fields will get the new semantic

When the configuration of the Timeframe semantic is changed (either computation mode or fields)

  • there is no re-computation of existing graphs.
  • a new entry is added in project history to record the changes (will ease support)

Tracker common work with new semantic:

  • should be inherited a tracker creation.
  • imported/exported by XML
  • added to REST tracker resources

The documentation is updated with new semantic and more details about semantic dependencies (should be done with "Done" semantic as well).

Usage of Timeframe

The new timeframe semantic is used in

  • Burndown boundaries definition
  • Burnup boundaries definition
  • Velocity chart tooltip
  • Display of milestone dates in Planning
  • Display of milestone dates in Cardwall + time progress bar
  • AgileDashboard service page to identify what's hot and what's next

If there is no timeframe semantic defined

  • It's not possible to have burndow or burnup field
  • It's not possible to define the Velocity semantic
  • Dates and time progress bar are not displayed in Planning and Cardwall views
  • There is no longer "What's next" on AgileDashboard, there is only "What's done" and "What's hot".

Usage in artifact view

An helper is added on "duration" or "end_date" field (depending of the config) to display the reverse information automatically computed.

  • When 'duration' is used, the corresponding end date is displayed as an hint (like for computed value)
  • When 'end_date' is used, the corresponding duration is displayed (the same way).

This info is displayed

  • In Artifact view
  • In Artifact "angular" modale (Planning view & co)

To be checked technically

  • There are SQL queries with direct usage of duration that are likely to be false ATM (as duration can be computed). This needs to be checked
  • All direct usage of start_date / duration must be replaced by an abstracted "timeperiod" representation.
Empty
Status
Empty
Done
Development
  • [ ] Does it involves User Interface? 
  • [ ] Are there any mockups?
  • [ ] Are permissions checked?
  • [ ] Does it need Javascript development?
  • [ ] Does it need a forge upgrade bucket?
  • [ ] Does it need to execute things in system events?
  • [ ] Does it impact project creation (templates)?
  • [ ] Is it exploratory?
Empty
Details
#12537
Manuel Vacelet (vaceletm)
2019-08-27 14:34
2018-11-20 15:52
4140

References
Referencing story #12537

Git commit

tuleap/tuleap/stable

Milestone objects use TimePeriod 5348c17bd4
Velocity chart is displayed thanks to milestone TimePeriod object 4f50b6fcbe
Fix newly introduced Psalm errors 9f87afe4e3
Check of TimePeriod build is done in a dedicated object 615521e404
Build timeperiod objects with builder object for milestone f10f01cc44
Use TimePeriod object instead of start_date & duration in Burndown 5cca076bb4
Use TimePeriod object instead of start_date & duration in Burnup 784b598bf3
Exception is not well handled in ChartConfigurationValueChecker ae59526313
ChartConfigurationValueRetriever only works with TimePeriod 62f8063718
Duration is only a numeric field dd54f9b5fb
Rework unit tests for BurndownRemainingEffortAdderForREST c476cbe3cb
TimePeriod objects must deal with float duration 35fd7de098
Use TimeframeBuilder object for graphs and REST f48691cbed
Use dgettext in TimeframeBuilder 9e1be26788
Use Timeframe Semantic for Burndown system events b30f4dcc5d
Prevent field deletion if used in Timeframe 92625326c9
Integrate semantic in TimePeriodBuilder dd89a2c39d
Refactoring: better SRP e0db243044
Adapt velocity graph to the new semantic 7bddc4f5e9
Timeframe inheritance during project/tracker creation f53528ac5d
Refactoring: continue usage of IDuplicateSemantic a8558f0da4
Have a UI to display timeframe semantic 42b74e5280
Import/Export Timeframe Semantic a1bd0fc828
Refactoring: improve type hinting aa25a86bbf
Add timeframe semantic in xml templates 1521fa3655
Expose timeframe semantic in REST f0e2e5c56a
Define timeframe semantic through UI a6107d7a85
Reset semantic ff5f1bd73b
ForgeUpgrade to populate tracker_semantic_timeframe 2e33785c2f
Remove 'start_date' and 'duration' fallbacks c9b0a4af07
Brings back tests of weird behavior 66cd9f2d73
Display end date of timeframe on the duration field 6cc8c374e0
Build TimePeriodWithoutWeekEnd from end date e57d5db6c9
Have a test for semantic timeframe XML import 7e35ae9011
Add end date to Timeframe Semantic 4d5bac7caf
update UI to define semantic timeframe 3015f85339
Remove TimePeriod abstract class 02c052b84b
Show timeframe semantic with end date in REST API 7353c4ba02
Harmonize french translation of Timeframe semantic 0c8062747a
Refactoring: Add type hinting d4353a7599
Remove unnecessary null checks in Timeframe Semantic 287e9a470a
Add $end_date property in TimePeriodWithoutWeekEnd 677c91b8d9
XML Import/Export and Inheritance of EndDate in Timeframe Semantic 73d7a2ed58
Display burnup chart based on end date f8a90caad6
Display burndown chart based on end date 2bd17fb3dc
Prevent user to select start date field === end date field dfca5c68da
Display duration on End Date field 6b55915a3a
Build timeperiod objects with builder object for milestone 9f479db352
TimeframeBuilder needs a SemanticTimeframeBuilder c4486a0bb9

Follow-ups

User avatar
  • Acceptance criteria
    Something went wrong, the follow up content couldn't be loaded
    Only formatting have been changed, you should switch to markup to see the changes
User avatar
Following our (@jmasson & myself) technical breakdown of this story, here is a schema that will help us to decide how to start development.

```mermaid
graph LR
start(Start date & End date)
start --> choose(I can choose between 2 timeframes def)
choose --> ui_choose(UI to define)
choose --> fd_choose(Prevent fields deletion)
choose --> sd_choose(Prevent semantic deletion)
choose --> xml_choose(XML import export)
choose --> project_choose(Project inheritance)
choose --> rest2_choose(REST tracker resources)
choose --> semantic(Introduction of timeframe semantic)
start --> helper(Artifact helper)
helper --> choose
helper --> modale(Modale)
modale --> rest(REST)
helper --> view(View)
helper --> timeframe(Optional timeframe representation)
start --> direct_usage(no moar direct usage of duration)
direct_usage --> burn(Burnup/down boundaries)
direct_usage --> velocity(Velocity tooltip)
direct_usage --> milestone(Milestone dates)
direct_usage --> next(What's next)
milestone --> planning(Planning)
milestone --> cardwall(Cardwall + time progress bar)
burn --> timeframe
velocity --> timeframe
next --> timeframe
planning --> timeframe
cardwall --> timeframe
choose --> timeframe
semantic --> ui(UI to define)
semantic --> fu(ForgeUpgrade)
semantic --> fd(Prevent fields deletion)
semantic --> sd(Prevent semantic deletion)
semantic --> xml(XML import export)
semantic --> project(Project inheritance)
semantic --> rest2(REST tracker resources)
```

User avatar

Couldn't this new Timeframe semantic be also used for *Gantt charts* in milestones or any tracker (e.g. standalone actions) having start & forecast end fields ?

That's a good point, it would probably ease the confiuration of gantt chart graph.

By the way, the AgileDashboard doc still states that Saturday/Sunday exclusion can be configured ;)

Good catch, I just fixed that. thanks for the report.

User avatar
Couldn't this new Timeframe semantic be also used for *Gantt charts* in milestones or any tracker (e.g. standalone actions) having start & forecast end fields ?
By the way, the AgileDashboard doc still states that Saturday/Sunday exclusion can be configured ;)
User avatar
  • Acceptance criteria
    Something went wrong, the follow up content couldn't be loaded
    Only formatting have been changed, you should switch to markup to see the changes
User avatar
  • So that
    Something went wrong, the follow up content couldn't be loaded
    Only formatting have been changed, you should switch to markup to see the changes
  • Acceptance criteria
    Something went wrong, the follow up content couldn't be loaded
    Only formatting have been changed, you should switch to markup to see the changes