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.
Files changed (50) hide show
  1. checksums.yaml +4 -4
  2. data/lib/jirametrics/aggregate_config.rb +10 -2
  3. data/lib/jirametrics/aging_work_bar_chart.rb +11 -0
  4. data/lib/jirametrics/aging_work_table.rb +1 -1
  5. data/lib/jirametrics/anonymizer.rb +74 -1
  6. data/lib/jirametrics/atlassian_document_format.rb +104 -93
  7. data/lib/jirametrics/blocked_stalled_change.rb +5 -3
  8. data/lib/jirametrics/board.rb +17 -3
  9. data/lib/jirametrics/change_item.rb +4 -3
  10. data/lib/jirametrics/chart_base.rb +80 -1
  11. data/lib/jirametrics/{cycletime_config.rb → cycle_time_config.rb} +1 -2
  12. data/lib/jirametrics/cycletime_histogram.rb +15 -103
  13. data/lib/jirametrics/cycletime_scatterplot.rb +8 -97
  14. data/lib/jirametrics/daily_wip_chart.rb +27 -7
  15. data/lib/jirametrics/download_config.rb +15 -0
  16. data/lib/jirametrics/downloader.rb +76 -5
  17. data/lib/jirametrics/downloader_for_cloud.rb +39 -0
  18. data/lib/jirametrics/downloader_for_data_center.rb +2 -1
  19. data/lib/jirametrics/estimate_accuracy_chart.rb +42 -4
  20. data/lib/jirametrics/examples/standard_project.rb +15 -5
  21. data/lib/jirametrics/expedited_chart.rb +2 -0
  22. data/lib/jirametrics/exporter.rb +3 -1
  23. data/lib/jirametrics/file_system.rb +4 -0
  24. data/lib/jirametrics/flow_efficiency_scatterplot.rb +2 -0
  25. data/lib/jirametrics/github_gateway.rb +99 -0
  26. data/lib/jirametrics/groupable_issue_chart.rb +2 -0
  27. data/lib/jirametrics/grouping_rules.rb +1 -1
  28. data/lib/jirametrics/html/aging_work_bar_chart.erb +3 -4
  29. data/lib/jirametrics/html/daily_wip_chart.erb +5 -4
  30. data/lib/jirametrics/html/estimate_accuracy_chart.erb +2 -12
  31. data/lib/jirametrics/html/expedited_chart.erb +3 -13
  32. data/lib/jirametrics/html/flow_efficiency_scatterplot.erb +2 -8
  33. data/lib/jirametrics/html/sprint_burndown.erb +7 -13
  34. data/lib/jirametrics/html/throughput_chart.erb +5 -8
  35. data/lib/jirametrics/html/{cycletime_histogram.erb → time_based_histogram.erb} +57 -59
  36. data/lib/jirametrics/html/{cycletime_scatterplot.erb → time_based_scatterplot.erb} +3 -4
  37. data/lib/jirametrics/html_report_config.rb +1 -0
  38. data/lib/jirametrics/issue.rb +37 -74
  39. data/lib/jirametrics/issue_printer.rb +97 -0
  40. data/lib/jirametrics/project_config.rb +32 -5
  41. data/lib/jirametrics/pull_request.rb +30 -0
  42. data/lib/jirametrics/pull_request_review.rb +13 -0
  43. data/lib/jirametrics/raw_javascript.rb +4 -0
  44. data/lib/jirametrics/settings.json +3 -1
  45. data/lib/jirametrics/sprint_burndown.rb +2 -0
  46. data/lib/jirametrics/stitcher.rb +2 -1
  47. data/lib/jirametrics/throughput_chart.rb +7 -1
  48. data/lib/jirametrics/time_based_histogram.rb +139 -0
  49. data/lib/jirametrics/time_based_scatterplot.rb +100 -0
  50. 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.22'
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/cycletime_config.rb
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: 3.6.9
172
+ rubygems_version: 4.0.7
167
173
  specification_version: 4
168
174
  summary: Extract Jira metrics
169
175
  test_files: []