Group Activity - New Members - Design
Context
This issue builds on Group Level Recent Activity by providing drill-in via a report page which shows historical detail. The primary reason we are taking this on now is to serve as a test case for Generic Metric APIs and to build out our Generic Report Page. Further discussion on this issue should bare this in mind. Further refinement of the feature beyond the basics necessary for the above will be handled in follow-on issues.
This story is part of a series. See also Group Recent Activity Charts for MRs and issues.
Problem to solve
GitLab users responsible for DevOps transformation and adoption of GitLab tooling wish to see historical data to and trends to understand rate and pace of usage, make predictions about future usage, etc. See Group Level Recent Activity for more.
User experience
From the group details page the number MRs created in the last ninety days is shown. A hyperlink takes me to the the Generic Report Page and shows me a column chart with the number of members added and removed. Clicking on a column provides details in the table below.
The chart allows the user to group data by day, week or month. If day is chosen the chart displays columns for no more than a 31 days. If week, no more than 26 weeks. If month, no more than 24 months.
This chart will show columns for members added and removed and a line indicating total.
In the MVC of the report object page no date range is provided. The range is assumed to end at yesterday and to begin at a date dependent on the selection for day, month or year, the column maximums described above and the availability of data in the data set.
Visual
Options for Displaying Inventory
Note that we also will add an inventory line and will explore approaches to charts with left and right axis in a separate issue.
Example 1 | Example 2 |
---|---|
![]() |
![]() |
Yellow line depicts cumulative inventory. | Blue line depicts cumulative inventory. Red bar = new issues, green bar = closed issues. |
Inventory is the total of open plus closed. For example:
day 1 | open 3 issues, close 1; inventory = 2
day 2 | open 4 issues, close 2; inventory = 4
day 3 | open 0 issues, close 3; inventory = 1
Ordinarily inventory numbers are a different order of magnitude from the daily open/close. Daily numbers are often < 10 where inventory can be > 100. (edited)
Implementation
Note that this issue does not implement a unique page for this purpose. Instead a single Generic Report Page is passed parameters that renders the appropriate data set and provides the appropriate filter options. Metadata in Generic Metric APIs drives all behavior on the page, not custom coding.
A background job computes computes the metrics required storing the same in the Generic Metric APIs. The parameters passed to the front end identify Data Set
to display and the Data Set Definition
which provides general hints on the rendering.
See the Demo Scenario for more on expectations.
MVC Scope
We will enable first on the the GitLab Org group on GitLab.com. Concerns about roll-out to other groups or to self-managed instances should be noted here but addressed in subsequent issues.
The Generic Metric APIs from which the Generic Report Page derives its data will not be documented & supported public APIs until we gain confidence that we will not need to making breaking API changes to further develop the capability.