diff --git a/app/assets/javascripts/bugs_by_severity.coffee b/app/assets/javascripts/bugs_by_severity.coffee index e265b5f8ece32f826f67bf5396d25613707aea8c..b42c7b7a828eb869be459a139f2594996b7ecd1b 100644 --- a/app/assets/javascripts/bugs_by_severity.coffee +++ b/app/assets/javascripts/bugs_by_severity.coffee @@ -1,3 +1,60 @@ +CumulativeAllBugsCreatedBySeverityPerMonthChart = (element) -> + build_request_data = (query_string) -> + { + query: query_string + } + + build_labels = (data) -> + data['data']['project']['cumulative_issues_created_per_month']['titles'] + + build_datasets = (data) -> + data['data']['project']['cumulative_issues_created_per_month']['series'] + + query_string = ' + { + project(group_path:"' + $('#group-path').val() + '", project_path:"' + $('#project-path').val() + '") { + cumulative_issues_created_per_month(filter_labels:["bug"], collection_labels: ["S1", "S2", "S3", "S4"]) { + titles + series { + label + data + backgroundColor + } + } + } + } + ' + + config = { + type: 'bar', + options: { + scales: { + xAxes: [{ + stacked: true + }] + yAxes: [{ + stacked: true + }] + } + } + } + + $.ajax({ + url: '/graphql', + method: 'POST', + dataType: 'json', + data: build_request_data(query_string), + success: (data) -> + config['data'] = { + labels: build_labels(data), + datasets: build_datasets(data) + } + async: false + }) + + context = element.getContext('2d') + chart = new Chart(context, config) + CumulativeBugsCreatedBySeverityPerMonthChart = (element) -> build_request_data = (query_string) -> { @@ -112,6 +169,63 @@ BugsCreatedBySeverityPerMonthChart = (element) -> context = element.getContext('2d') chart = new Chart(context, config) +AllBugsCreatedBySeverityPerMonthChart = (element) -> + build_request_data = (query_string) -> + { + query: query_string + } + + build_labels = (data) -> + data['data']['project']['issues_created_per_month']['titles'] + + build_datasets = (data) -> + data['data']['project']['issues_created_per_month']['series'] + + query_string = ' + { + project(group_path:"' + $('#group-path').val() + '", project_path:"' + $('#project-path').val() + '") { + issues_created_per_month(filter_labels:["bug"], collection_labels: ["S1", "S2", "S3", "S4"]) { + titles + series { + label + data + backgroundColor + } + } + } + } + ' + + config = { + type: 'bar', + options: { + scales: { + xAxes: [{ + stacked: true + }] + yAxes: [{ + stacked: true + }] + } + } + } + + $.ajax({ + url: '/graphql', + method: 'POST', + dataType: 'json', + data: build_request_data(query_string), + success: (data) -> + config['data'] = { + labels: build_labels(data), + datasets: build_datasets(data) + } + async: false + }) + + context = element.getContext('2d') + chart = new Chart(context, config) + BugsClosedBySeverityPerMonthChart = (element) -> build_request_data = (query_string) -> { @@ -170,8 +284,12 @@ BugsClosedBySeverityPerMonthChart = (element) -> chart = new Chart(context, config) $(document).ready () -> - if document.getElementById('cumulative-bugs-created-severity-month') - CumulativeBugsCreatedBySeverityPerMonthChart(document.getElementById('cumulative-bugs-created-severity-month')) + if document.getElementById('cumulative-all-bugs-severity-month') + CumulativeAllBugsCreatedBySeverityPerMonthChart(document.getElementById('cumulative-all-bugs-severity-month')) + if document.getElementById('cumulative-open-bugs-created-severity-month') + CumulativeBugsCreatedBySeverityPerMonthChart(document.getElementById('cumulative-open-bugs-created-severity-month')) + if document.getElementById('all-bugs-created-severity-month') + AllBugsCreatedBySeverityPerMonthChart(document.getElementById('all-bugs-created-severity-month')) if document.getElementById('bugs-created-severity-month') BugsCreatedBySeverityPerMonthChart(document.getElementById('bugs-created-severity-month')) if document.getElementById('bugs-closed-severity-month') diff --git a/app/assets/javascripts/bugs_by_team.coffee b/app/assets/javascripts/bugs_by_team.coffee index d9121086b50ce78268fec33c1abed14fb6a50555..955b6fa6513df21c91c4b0eac236b56cc74d4577 100644 --- a/app/assets/javascripts/bugs_by_team.coffee +++ b/app/assets/javascripts/bugs_by_team.coffee @@ -1,4 +1,61 @@ -CumulativeBugsCreatedPerMonthChart = (element) -> +CumulativeAllBugsCreatedPerMonthChart = (element) -> + build_request_data = (query_string) -> + { + query: query_string + } + + build_labels = (data) -> + data['data']['project']['cumulative_issues_created_per_month']['titles'] + + build_datasets = (data) -> + data['data']['project']['cumulative_issues_created_per_month']['series'] + + query_string = ' + { + project(group_path:"' + $('#group-path').val() + '", project_path:"' + $('#project-path').val() + '") { + cumulative_issues_created_per_month(filter_labels:["bug"], collection_labels: ["Discussion", "Platform", "CI/CD", "Gitaly", "Distribution", "Monitoring", "Geo", "frontend"]) { + titles + series { + label + data + backgroundColor + } + } + } + } + ' + + config = { + type: 'bar', + options: { + scales: { + xAxes: [{ + stacked: true + }] + yAxes: [{ + stacked: true + }] + } + } + } + + $.ajax({ + url: '/graphql', + method: 'POST', + dataType: 'json', + data: build_request_data(query_string), + success: (data) -> + config['data'] = { + labels: build_labels(data), + datasets: build_datasets(data) + } + async: false + }) + + context = element.getContext('2d') + chart = new Chart(context, config) + +CumulativeOpenBugsCreatedPerMonthChart = (element) -> build_request_data = (query_string) -> { query: query_string @@ -112,6 +169,63 @@ BugsCreatedPerMonthChart = (element) -> context = element.getContext('2d') chart = new Chart(context, config) +AllBugsCreatedPerMonthChart = (element) -> + build_request_data = (query_string) -> + { + query: query_string + } + + build_labels = (data) -> + data['data']['project']['issues_created_per_month']['titles'] + + build_datasets = (data) -> + data['data']['project']['issues_created_per_month']['series'] + + query_string = ' + { + project(group_path:"' + $('#group-path').val() + '", project_path:"' + $('#project-path').val() + '") { + issues_created_per_month(filter_labels:["bug"], collection_labels: ["Discussion", "Platform", "CI/CD", "Gitaly", "Distribution", "Monitoring", "Geo", "frontend"]) { + titles + series { + label + data + backgroundColor + } + } + } + } + ' + + config = { + type: 'bar', + options: { + scales: { + xAxes: [{ + stacked: true + }] + yAxes: [{ + stacked: true + }] + } + } + } + + $.ajax({ + url: '/graphql', + method: 'POST', + dataType: 'json', + data: build_request_data(query_string), + success: (data) -> + config['data'] = { + labels: build_labels(data), + datasets: build_datasets(data) + } + async: false + }) + + context = element.getContext('2d') + chart = new Chart(context, config) + BugsCreatedPerDayChart = (element) -> build_request_data = (query_string) -> { @@ -284,8 +398,12 @@ BugsClosedPerDayChart = (element) -> chart = new Chart(context, config) $(document).ready () -> - if document.getElementById('cumulative-bugs-created-per-month') - CumulativeBugsCreatedPerMonthChart(document.getElementById('cumulative-bugs-created-per-month')) + if document.getElementById('cumulative-all-bugs-created-per-month') + CumulativeAllBugsCreatedPerMonthChart(document.getElementById('cumulative-all-bugs-created-per-month')) + if document.getElementById('cumulative-open-bugs-created-per-month') + CumulativeOpenBugsCreatedPerMonthChart(document.getElementById('cumulative-open-bugs-created-per-month')) + if document.getElementById('all-bugs-created-per-month') + AllBugsCreatedPerMonthChart(document.getElementById('all-bugs-created-per-month')) if document.getElementById('bugs-created-per-month') BugsCreatedPerMonthChart(document.getElementById('bugs-created-per-month')) if document.getElementById('bugs-created-per-day') diff --git a/app/views/projects/bugs_by_severity.html.haml b/app/views/projects/bugs_by_severity.html.haml index 6ed031a612392ca4446a9da0840b6c6132358286..814d159b28ec9d2fd57695700763c83075619519 100644 --- a/app/views/projects/bugs_by_severity.html.haml +++ b/app/views/projects/bugs_by_severity.html.haml @@ -7,17 +7,29 @@ .col-lg-12 .card .card-header - %h3.card-title Cumulative Open bugs by Severity - %canvas#cumulative-bugs-created-severity-month + %h3.card-title Cumulative Bugs Created Per Month Per Severity (open and closed) + %canvas#cumulative-all-bugs-severity-month .row.row-cards .col-lg-12 .card .card-header - %h3.card-title Open bugs by Severity + %h3.card-title Cumulative Bugs Created Per Month Per Severity (open state) + %canvas#cumulative-open-bugs-created-severity-month + .row.row-cards + .col-lg-12 + .card + .card-header + %h3.card-title Bugs created Per Month Per Severity (open and closed) + %canvas#all-bugs-created-severity-month + .row.row-cards + .col-lg-12 + .card + .card-header + %h3.card-title Bugs created Per Month Per Severity (open state) %canvas#bugs-created-severity-month .row.row-cards .col-lg-12 .card .card-header - %h3.card-title Closed bugs by Severity + %h3.card-title Bugs closed Per Month Per Severity %canvas#bugs-closed-severity-month diff --git a/app/views/projects/bugs_by_team.html.haml b/app/views/projects/bugs_by_team.html.haml index 00bfa508183f8957130384fdf8dd2fe180cb1cb6..0b2d250760301d415b2f55f0f74bdff399baee01 100644 --- a/app/views/projects/bugs_by_team.html.haml +++ b/app/views/projects/bugs_by_team.html.haml @@ -7,13 +7,25 @@ .col-lg-12 .card .card-header - %h3.card-title Cumulative Bugs Created Per Month Per Team - %canvas#cumulative-bugs-created-per-month + %h3.card-title Cumulative Bugs Created Per Month Per Team (open and closed) + %canvas#cumulative-all-bugs-created-per-month .row.row-cards .col-lg-12 .card .card-header - %h3.card-title Bugs Created Per Month Per Team + %h3.card-title Cumulative Open Bugs Created Per Month Per Team (open state) + %canvas#cumulative-open-bugs-created-per-month + .row.row-cards + .col-lg-12 + .card + .card-header + %h3.card-title Bugs Created Per Month Per Team (open and closed) + %canvas#all-bugs-created-per-month + .row.row-cards + .col-lg-12 + .card + .card-header + %h3.card-title Bugs Created Per Month Per Team (open state) %canvas#bugs-created-per-month .row.row-cards .col-lg-12 @@ -25,7 +37,7 @@ .col-lg-12 .card .card-header - %h3.card-title Bugs Created Per Day Per Team + %h3.card-title Bugs Created Per Day Per Team (open state) %canvas#bugs-created-per-day .row.row-cards .col-lg-12 diff --git a/app/views/projects/feature_proposals_by_team.html.haml b/app/views/projects/feature_proposals_by_team.html.haml index 646656e96fd126aa790f3f7bbc034ddbf5da35b3..174921cde8667f4c100c1b4677918da4beb901e5 100644 --- a/app/views/projects/feature_proposals_by_team.html.haml +++ b/app/views/projects/feature_proposals_by_team.html.haml @@ -7,7 +7,7 @@ .col-lg-12 .card .card-header - %h3.card-title Feature Proposal Created Per Month Per Team + %h3.card-title Feature Proposal Created Per Month Per Team (open state) %canvas#proposals-created-per-month .row.row-cards .col-lg-12 diff --git a/lib/gitlab_insights/finders/periodic_issues_per_label_finder.rb b/lib/gitlab_insights/finders/periodic_issues_per_label_finder.rb index 31be1d76042f3137752298e1887c00b69b0d7a91..06bf4cc927121ce60accaa9511124368c2e0aebb 100644 --- a/lib/gitlab_insights/finders/periodic_issues_per_label_finder.rb +++ b/lib/gitlab_insights/finders/periodic_issues_per_label_finder.rb @@ -18,7 +18,7 @@ module GitlabInsights def find(opts) Rails.cache.fetch({project: project, opts: opts, field: field, period_type: period_normalizer}, expires_in: 3.hours) do results = project.issues - results = results.where(state: opts[:state]) + results = results.where(state: opts[:state]) if opts[:state] results = results.all(labels: opts[:filter_labels]) results = results.order(field => :asc) # issues will need to be closed for `closed_at` to be populated