diff --git a/scripts/gen_graphs.py b/scripts/gen_graphs.py index 1e77182fcb..ec90634463 100644 --- a/scripts/gen_graphs.py +++ b/scripts/gen_graphs.py @@ -6,7 +6,6 @@ import re import pygal - def percent_formatter(x): """ Function to format percentage values. @@ -59,6 +58,7 @@ def generate_all_graphs_for_repos(all_repos): generate_language_summary_pie_chart(repo) generate_cost_estimates_bar_chart(repo) generate_time_estimates_bar_chart(repo) + generate_average_issue_resolution_graph(repo) try: generate_donut_graph_line_complexity_graph(repo) generate_time_xy_issue_graph( @@ -567,3 +567,31 @@ def generate_people_estimate_bar_chart(oss_entity): bar_chart.add(None, [0]) write_repo_chart_to_file(oss_entity, bar_chart, "estimated_people_contributing") + +def generate_average_issue_resolution_graph(oss_entity): + """ + This function generates a pygal gauge chart for average issue resolution time. + + Arguments: + oss_entity: An object containing the metric data. + """ + gauge_graph = pygal.Gauge(legend_at_bottom=True) + + metric_data = oss_entity.metric_data.get('average_issue_resolution_time') + if not metric_data or not metric_data[0]: + print("No data available for average issue resolution time") + return + + data = metric_data[0] + repo_name = data[0] + average_time_str = data[1] + + days_str = average_time_str.split(' days ') + days = int(days_str[0]) + + gauge_graph.range = [0, round((days + 20))] + + gauge_graph.title = f"Average Issue Resolution Time for {repo_name} \n Average Time: {round(days)} days" + gauge_graph.add("Days", round(days)) + + write_repo_chart_to_file(oss_entity, gauge_graph, "average_issue_resolution_time") diff --git a/scripts/metricsLib/metrics_definitions.py b/scripts/metricsLib/metrics_definitions.py index b6151ecc0f..67331f702d 100644 --- a/scripts/metricsLib/metrics_definitions.py +++ b/scripts/metricsLib/metrics_definitions.py @@ -184,7 +184,6 @@ AUGUR_HOST + "/pull_request_reports/PR_time_to_first_response/" + "?repo_id={repo_id}&start_date={begin_month}&end_date={end_date}")) - ORG_GITHUB_GRAPHQL_QUERY = """ query ($org_login: String!) { organization(login: $org_login) { @@ -252,3 +251,12 @@ } ) ) + +SIMPLE_METRICS.append(ListMetric("averageIssueResolutionTime", sixMonthsParams, AUGUR_HOST + "/repos/" + "{repo_id}" + "/average-issue-resolution-time", {"average_issue_resolution_time": ["repo_name", "avg_issue_resolution_time"]})) + +# Metric for Average Commit Counts per PR +# TODO: - Currently not working because of something wrong on Augur's end. Develop a solution here (hacky) or fix upstream. + +# RESOURCE_METRICS.append(ResourceMetric("averageCommitsPerPR", sixMonthsParams, +# AUGUR_HOST + "/pull_request_reports/average_commits_per_PR/" + +# "?repo_id={repo_id}&start_date={begin_month}&end_date={end_date}")) diff --git a/templates/repo_report_template.md b/templates/repo_report_template.md index ce506a9f6c..67ee1c7cd5 100644 --- a/templates/repo_report_template.md +++ b/templates/repo_report_template.md @@ -115,6 +115,8 @@ date_stampLastWeek: {date_stamp} {{% assign optionsArray = 'Summary, Predominant' | split: ',' %}} {{% assign graphsArray = "/{repo_owner}/{repo_name}/language_summary_{repo_name}_data.svg, /{repo_owner}/{repo_name}/predominant_langs_{repo_name}_data.svg" | split: ',' %}} {{% render "graph-toggle" baseurl: site.baseurl, name:"language-information" options: optionsArray, graphs: graphsArray, title: "Language Information" %}} + + {{% render "graph-section" baseurl: site.baseurl, path: "/{repo_owner}/{repo_name}/average_issue_resolution_time_{repo_name}_data.svg", title: "Average Issue Resolution Time" %}} {{% render "graph-section" baseurl: site.baseurl, path: "/{repo_owner}/{repo_name}/libyear_timeline_{repo_name}_data.svg", title: "Dependency Libyears" %}}