This component library contains charts for the standard DORA metrics.
You can install these components using the following command:
npm install https://github.com/liatrio/liatrio-react-dora/releases/download/v1.0.0/liatrio-react-dora-1.0.0.tgz
Or
yarn add liatrio-react-dora@https://github.com/liatrio/liatrio-react-dora/releases/download/v1.0.0/liatrio-react-dora-1.0.0.tgz
To use these charts, you can do as follows:
import { DeploymentFrequency, fetchData } from `liatrio-react-dora`
...
const fetchedData = fetchData(fetchProps, onSuccess, onFailure)
...
<div style={{width: "600px", height: "400px"}}>
<DeploymentFrequencyGraph data={fetchedData} />
</div>
It is important that the chart component be wrapped in an element of some size somewhere up the tree, otherwise the chart may have unexpected behavior.
-
Board
This is a component to display an At a Glance board for the 4 DORA Metrics and can be setup to either display trends or color coded scores
-
DeploymentFrequencyGraph
This is a component to display a graph of your deployments over the specified time period
-
ChangeLeadTimeGraph
This is a component to display a graph of your change lead time over the specified time period
-
ChangeFailureRateGraph
This is a component to display a graph of your change failure rate over the specified time period
-
RecoverTimeGraph
This is a component to display a graph of your recover time over the specified time period
-
TrendGraph
This is a component to display an the overall trend of the data supplied
-
TrendIndicator
This component is a trend indicator you can use to display in parent components
-
fetchData
This is the function your parent component should use to pull data to supply in the
data
property of the componentsThe parameters of this function are as follows:
An object (
FetchProps
) containing the following properties-
api
:- This is the url to the API for gathering data.
-
getAuthHeaderValue
(optional):- This is a function that should provide the value of the
Authorization
HTTP Header for theapi
. - If not specified, no auth will be used
- This is a function that should provide the value of the
-
team
(optional):- The name of the team to show pull data for.
-
repositories
(optional):- A list of repository names to pull data for.
-
daysToPull
(optional):- The number of days in the past from the current date to pull data for
- If not specified, 365 is the default
-
includeWeekendsInCalculations
(optional):- When calculating the averages for each metric in the
Board
component, this setting allows you to include/exclude weekends in those calculations. This is useful when you don't have teams that work weekends.
- When calculating the averages for each metric in the
-
holidays
(optional):- This field allows you to specify holidays for that your organization follows to exclude from the calculations for the
Board
component.
- This field allows you to specify holidays for that your organization follows to exclude from the calculations for the
-
-
buildDoraStateForPeriod
This function returns a
DoraState
object with information about each DORA Metric.It takes the following values as parameters:
props
- An object contianing the Component Propertiesdata
- The data supplied by thefetchData
functionstart
- The start date of the period you want to know the trend forend
- The end date of the period you want to know the trend for
To get the trend value, the evaluation will use the previous period of the same length agains your request period.
The
DoraState
object that is returned contains the following for each metric:average
- Is the average of the metric of the supplied time framedisplay
- Is a formated display string foraverage
field including a postfix of hrs, days, mins, or % depending on the metric and time scalecolor
- Is the color for the displays string based on thecolors
supplied in the component propertiestrend
- Is whether this period measured is improving, falling behind, or staying even with the requested periodrank
- Is a enum ofRank
that provides whether you are elite, high, medium, low or unknown for this metric
-
getDateDaysInPast
andgetDateDaysInPastUtc
These functions are just shortcuts to get a Date a certain number of days in the past
-
data
:- An array of
DoraRecord
objects used to display the graphs.
- An array of
-
graphStart
(optional):- If not supplied this will default to 30 days in the past.
- This value is used to determine the starting date for the charts.
-
graphEnd
(optional):- If not supplied, this will default to 1 day in the past.
- This value is used to determine the ending date for the charts.
-
loading
(optional):- Boolean to allow a container component to control the loading status if it wants to supply
data
- Boolean to allow a container component to control the loading status if it wants to supply
-
includeWeekendsInCalculations
(optional):- When calculating the averages for each metric, this setting allows you to include/exclude weekends in those calculations. This is useful when you don't have teams that work weekends.
-
metricThresholdSet
(optional):- This allows you to customize the metric thresholds used for determining the rank of each metric. You only have to override the ones you need. There are defaults based on the official DORA Report that are used when these are not supplied. This takes in a
MetricThresholdSet
object which contains aMetricThresholds
object for each metric.
The threshold values for
elite
,high
andmedium
are measured in hours.low
is considered anything longer than medium, so it is not able to be supplied as a value in this object. - This allows you to customize the metric thresholds used for determining the rank of each metric. You only have to override the ones you need. There are defaults based on the official DORA Report that are used when these are not supplied. This takes in a
-
message
(optional):- This allows a parent component to display a custom message while it does something. This setting overrides
loading
and the nodata state that happens ifdata
is empty or theapi
returns no data
- This allows a parent component to display a custom message while it does something. This setting overrides
-
holidays
(optional):- This field allows you to specify holidays for that your organization follows to exclude from the calculations for the components
-
All the
Common Properties
-
alwaysShowDetails
(optional):- This field controls whether the
Board
component shows the details on hover or statically below the icon
- This field controls whether the
-
showTrends
(optional):- This field controls whether trends or rank base coloring is shown in the
Board
component
- This field controls whether trends or rank base coloring is shown in the
-
hideColors
(optional):- This allows you to change the
Board
component to hide the rank based coloring on the icons and instead just use a shade of purple
- This allows you to change the
showIndividualTrends
(optional):- Enabling this property will show a line for each individual metric trend in addition to the overall DORA trend
trend
:- This is a
Trend
enum value that controls what is displayed inside
- This is a
These components rely on data
being supplied to them. We supply the liatrio-dora-api to gather this data out of a Loki DB that is fed by our liatrio-otel-collector. If you want to create your own API, it just needs to return the Data Schema.
We also expose the fetchData
function to fetch this data for you and do some preprocessing of the data before sending it into the components. If you would like to use your own function you will need to examine the preprocessing done by this function and replicate it for yours.
The data schema for each chart is as follows:
{
records: [{
repository: string
team: string
title?: string
user?: string
sha: string
status: boolean
failed_at?: Date
merged_at?: Date
created_at: Date
fixed_at?: Date
deploy_url: string
fixed_url?: string
change_url: string
issue_url?: string
}, ...]
}