jirametrics 2.22 → 2.23
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/jirametrics/aggregate_config.rb +10 -2
- data/lib/jirametrics/aging_work_bar_chart.rb +11 -0
- data/lib/jirametrics/aging_work_table.rb +1 -1
- data/lib/jirametrics/anonymizer.rb +74 -1
- data/lib/jirametrics/atlassian_document_format.rb +104 -93
- data/lib/jirametrics/blocked_stalled_change.rb +5 -3
- data/lib/jirametrics/board.rb +17 -3
- data/lib/jirametrics/change_item.rb +4 -3
- data/lib/jirametrics/chart_base.rb +80 -1
- data/lib/jirametrics/{cycletime_config.rb → cycle_time_config.rb} +1 -2
- data/lib/jirametrics/cycletime_histogram.rb +15 -103
- data/lib/jirametrics/cycletime_scatterplot.rb +8 -97
- data/lib/jirametrics/daily_wip_chart.rb +27 -7
- data/lib/jirametrics/download_config.rb +15 -0
- data/lib/jirametrics/downloader.rb +76 -5
- data/lib/jirametrics/downloader_for_cloud.rb +39 -0
- data/lib/jirametrics/downloader_for_data_center.rb +2 -1
- data/lib/jirametrics/estimate_accuracy_chart.rb +42 -4
- data/lib/jirametrics/examples/standard_project.rb +15 -5
- data/lib/jirametrics/expedited_chart.rb +2 -0
- data/lib/jirametrics/exporter.rb +3 -1
- data/lib/jirametrics/file_system.rb +4 -0
- data/lib/jirametrics/flow_efficiency_scatterplot.rb +2 -0
- data/lib/jirametrics/github_gateway.rb +99 -0
- data/lib/jirametrics/groupable_issue_chart.rb +2 -0
- data/lib/jirametrics/grouping_rules.rb +1 -1
- data/lib/jirametrics/html/aging_work_bar_chart.erb +3 -4
- data/lib/jirametrics/html/daily_wip_chart.erb +5 -4
- data/lib/jirametrics/html/estimate_accuracy_chart.erb +2 -12
- data/lib/jirametrics/html/expedited_chart.erb +3 -13
- data/lib/jirametrics/html/flow_efficiency_scatterplot.erb +2 -8
- data/lib/jirametrics/html/sprint_burndown.erb +7 -13
- data/lib/jirametrics/html/throughput_chart.erb +5 -8
- data/lib/jirametrics/html/{cycletime_histogram.erb → time_based_histogram.erb} +57 -59
- data/lib/jirametrics/html/{cycletime_scatterplot.erb → time_based_scatterplot.erb} +3 -4
- data/lib/jirametrics/html_report_config.rb +1 -0
- data/lib/jirametrics/issue.rb +37 -74
- data/lib/jirametrics/issue_printer.rb +97 -0
- data/lib/jirametrics/project_config.rb +32 -5
- data/lib/jirametrics/pull_request.rb +30 -0
- data/lib/jirametrics/pull_request_review.rb +13 -0
- data/lib/jirametrics/raw_javascript.rb +4 -0
- data/lib/jirametrics/settings.json +3 -1
- data/lib/jirametrics/sprint_burndown.rb +2 -0
- data/lib/jirametrics/stitcher.rb +2 -1
- data/lib/jirametrics/throughput_chart.rb +7 -1
- data/lib/jirametrics/time_based_histogram.rb +139 -0
- data/lib/jirametrics/time_based_scatterplot.rb +100 -0
- metadata +11 -5
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'jirametrics/groupable_issue_chart'
|
|
4
|
+
|
|
5
|
+
class TimeBasedScatterplot < ChartBase
|
|
6
|
+
include GroupableIssueChart
|
|
7
|
+
|
|
8
|
+
def initialize
|
|
9
|
+
super
|
|
10
|
+
|
|
11
|
+
@percentage_lines = []
|
|
12
|
+
@highest_y_value = 0
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def run
|
|
16
|
+
items = all_items
|
|
17
|
+
data_sets = create_datasets items
|
|
18
|
+
overall_percent_line = calculate_percent_line(items)
|
|
19
|
+
@percentage_lines << [overall_percent_line, CssVariable['--cycletime-scatterplot-overall-trendline-color']]
|
|
20
|
+
|
|
21
|
+
return "<h1>#{@header_text}</h1>No data matched the selected criteria. Nothing to show." if data_sets.empty?
|
|
22
|
+
|
|
23
|
+
wrap_and_render(binding, __FILE__)
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def create_datasets items
|
|
27
|
+
data_sets = []
|
|
28
|
+
|
|
29
|
+
group_issues(items).each do |rules, items_by_type|
|
|
30
|
+
label = rules.label
|
|
31
|
+
color = rules.color
|
|
32
|
+
percent_line = calculate_percent_line items_by_type
|
|
33
|
+
data = items_by_type.filter_map { |item| data_for_item(item) }
|
|
34
|
+
data_sets << {
|
|
35
|
+
label: "#{label} (85% at #{label_days(percent_line)})",
|
|
36
|
+
data: data,
|
|
37
|
+
fill: false,
|
|
38
|
+
showLine: false,
|
|
39
|
+
backgroundColor: color
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
data_sets << trend_line_data_set(label: label, data: data, color: color)
|
|
43
|
+
|
|
44
|
+
@percentage_lines << [percent_line, color]
|
|
45
|
+
end
|
|
46
|
+
data_sets
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
def show_trend_lines
|
|
50
|
+
@show_trend_lines = true
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
def trend_line_data_set label:, data:, color:
|
|
54
|
+
points = data.collect do |hash|
|
|
55
|
+
[Time.parse(hash[:x]).to_i, hash[:y]]
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
# The trend calculation works with numbers only so convert Time to an int and back
|
|
59
|
+
calculator = TrendLineCalculator.new(points)
|
|
60
|
+
data_points = calculator.chart_datapoints(
|
|
61
|
+
range: time_range.begin.to_i..time_range.end.to_i,
|
|
62
|
+
max_y: @highest_y_value
|
|
63
|
+
)
|
|
64
|
+
data_points.each do |point_hash|
|
|
65
|
+
point_hash[:x] = chart_format Time.at(point_hash[:x])
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
{
|
|
69
|
+
type: 'line',
|
|
70
|
+
label: "#{label} Trendline",
|
|
71
|
+
data: data_points,
|
|
72
|
+
fill: false,
|
|
73
|
+
borderWidth: 1,
|
|
74
|
+
markerType: 'none',
|
|
75
|
+
borderColor: color,
|
|
76
|
+
borderDash: [6, 3],
|
|
77
|
+
pointStyle: 'dash',
|
|
78
|
+
hidden: !@show_trend_lines
|
|
79
|
+
}
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
def data_for_item item
|
|
83
|
+
y = y_value(item)
|
|
84
|
+
return nil if y < 1 # These will get called out on the quality report
|
|
85
|
+
|
|
86
|
+
@highest_y_value = y if @highest_y_value < y
|
|
87
|
+
|
|
88
|
+
{
|
|
89
|
+
y: y,
|
|
90
|
+
x: chart_format(x_value(item)),
|
|
91
|
+
title: [title_value(item)]
|
|
92
|
+
}
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
def calculate_percent_line items
|
|
96
|
+
times = items.collect { |item| y_value(item) }
|
|
97
|
+
index = times.size * 85 / 100
|
|
98
|
+
times.sort[index]
|
|
99
|
+
end
|
|
100
|
+
end
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: jirametrics
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: '2.
|
|
4
|
+
version: '2.23'
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Mike Bowler
|
|
@@ -76,7 +76,7 @@ files:
|
|
|
76
76
|
- lib/jirametrics/chart_base.rb
|
|
77
77
|
- lib/jirametrics/columns_config.rb
|
|
78
78
|
- lib/jirametrics/css_variable.rb
|
|
79
|
-
- lib/jirametrics/
|
|
79
|
+
- lib/jirametrics/cycle_time_config.rb
|
|
80
80
|
- lib/jirametrics/cycletime_histogram.rb
|
|
81
81
|
- lib/jirametrics/cycletime_scatterplot.rb
|
|
82
82
|
- lib/jirametrics/daily_view.rb
|
|
@@ -100,6 +100,7 @@ files:
|
|
|
100
100
|
- lib/jirametrics/file_system.rb
|
|
101
101
|
- lib/jirametrics/fix_version.rb
|
|
102
102
|
- lib/jirametrics/flow_efficiency_scatterplot.rb
|
|
103
|
+
- lib/jirametrics/github_gateway.rb
|
|
103
104
|
- lib/jirametrics/groupable_issue_chart.rb
|
|
104
105
|
- lib/jirametrics/grouping_rules.rb
|
|
105
106
|
- lib/jirametrics/hierarchy_table.rb
|
|
@@ -107,8 +108,6 @@ files:
|
|
|
107
108
|
- lib/jirametrics/html/aging_work_in_progress_chart.erb
|
|
108
109
|
- lib/jirametrics/html/aging_work_table.erb
|
|
109
110
|
- lib/jirametrics/html/collapsible_issues_panel.erb
|
|
110
|
-
- lib/jirametrics/html/cycletime_histogram.erb
|
|
111
|
-
- lib/jirametrics/html/cycletime_scatterplot.erb
|
|
112
111
|
- lib/jirametrics/html/daily_wip_chart.erb
|
|
113
112
|
- lib/jirametrics/html/estimate_accuracy_chart.erb
|
|
114
113
|
- lib/jirametrics/html/expedited_chart.erb
|
|
@@ -119,13 +118,18 @@ files:
|
|
|
119
118
|
- lib/jirametrics/html/index.js
|
|
120
119
|
- lib/jirametrics/html/sprint_burndown.erb
|
|
121
120
|
- lib/jirametrics/html/throughput_chart.erb
|
|
121
|
+
- lib/jirametrics/html/time_based_histogram.erb
|
|
122
|
+
- lib/jirametrics/html/time_based_scatterplot.erb
|
|
122
123
|
- lib/jirametrics/html_generator.rb
|
|
123
124
|
- lib/jirametrics/html_report_config.rb
|
|
124
125
|
- lib/jirametrics/issue.rb
|
|
125
126
|
- lib/jirametrics/issue_collection.rb
|
|
126
127
|
- lib/jirametrics/issue_link.rb
|
|
128
|
+
- lib/jirametrics/issue_printer.rb
|
|
127
129
|
- lib/jirametrics/jira_gateway.rb
|
|
128
130
|
- lib/jirametrics/project_config.rb
|
|
131
|
+
- lib/jirametrics/pull_request.rb
|
|
132
|
+
- lib/jirametrics/pull_request_review.rb
|
|
129
133
|
- lib/jirametrics/raw_javascript.rb
|
|
130
134
|
- lib/jirametrics/rules.rb
|
|
131
135
|
- lib/jirametrics/self_or_issue_dispatcher.rb
|
|
@@ -137,6 +141,8 @@ files:
|
|
|
137
141
|
- lib/jirametrics/status_collection.rb
|
|
138
142
|
- lib/jirametrics/stitcher.rb
|
|
139
143
|
- lib/jirametrics/throughput_chart.rb
|
|
144
|
+
- lib/jirametrics/time_based_histogram.rb
|
|
145
|
+
- lib/jirametrics/time_based_scatterplot.rb
|
|
140
146
|
- lib/jirametrics/tree_organizer.rb
|
|
141
147
|
- lib/jirametrics/trend_line_calculator.rb
|
|
142
148
|
- lib/jirametrics/user.rb
|
|
@@ -163,7 +169,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
163
169
|
- !ruby/object:Gem::Version
|
|
164
170
|
version: '0'
|
|
165
171
|
requirements: []
|
|
166
|
-
rubygems_version:
|
|
172
|
+
rubygems_version: 4.0.7
|
|
167
173
|
specification_version: 4
|
|
168
174
|
summary: Extract Jira metrics
|
|
169
175
|
test_files: []
|