Skip to content

Commit 5d06ef4

Browse files
authored
Version 3.3.2: Add percent untriaged graph (#43)
1 parent 052e4ad commit 5d06ef4

File tree

2 files changed

+84
-3
lines changed

2 files changed

+84
-3
lines changed

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "resc-frontend",
3-
"version": "3.3.1",
3+
"version": "3.3.2",
44
"author": "ABN AMRO Bank",
55
"description": "Repository Scanner Frontend",
66
"license": "MIT",

src/components/Metrics/FindingMetrics.vue

+83-2
Original file line numberDiff line numberDiff line change
@@ -21,15 +21,24 @@
2121
</div>
2222
</div>
2323

24-
<div class="row">
25-
<div class="col-md-5 mt-5 pt-2">
24+
<div class="row mt-5">
25+
<div class="col-md-5 pt-2">
2626
<h5><small class="text-nowrap">UnTriaged findings per week</small></h5>
2727
<SpinnerVue v-if="!loadedUnTriaged" />
2828
<MultiLineChart
2929
v-if="loadedUnTriaged"
3030
:chart-data="chartDataForUnTriagedFindingsCountGraph"
3131
/>
3232
</div>
33+
<div class="col-md-1"></div>
34+
<div class="col-md-5 pt-2">
35+
<h5><small class="text-nowrap">Percent of untriaged findings per week</small></h5>
36+
<SpinnerVue v-if="!loadedUnTriaged || !loadedTotal" />
37+
<MultiLineChart
38+
v-if="loadedUnTriaged && loadedTotal"
39+
:chart-data="chartDataForPercentTriagedFindingGraph"
40+
/>
41+
</div>
3342
</div>
3443
</div>
3544
</div>
@@ -64,6 +73,10 @@ const chartDataForUnTriagedFindingsCountGraph = ref({
6473
labels: [] as string[],
6574
datasets: [] as DataSetObject[],
6675
});
76+
const chartDataForPercentTriagedFindingGraph = ref({
77+
labels: [] as string[],
78+
datasets: [] as DataSetObject[],
79+
});
6780
const findingsCount = ref([] as FindingCountOverTime[]);
6881
const azureDevOpsTotalFindingsCountList = ref([] as number[]);
6982
const bitbucketTotalFindingsCountList = ref([] as number[]);
@@ -77,6 +90,10 @@ const azureDevOpsUnTriagedFindingsCountList = ref([] as number[]);
7790
const bitbucketUnTriagedFindingsCountList = ref([] as number[]);
7891
const gitHubUnTriagedFindingsCountList = ref([] as number[]);
7992
const totalUnTriagedFindingsCountList = ref([] as number[]);
93+
const percentTriagedAzureDevOpsList = ref([] as number[]);
94+
const percentTriagedBitbucketList = ref([] as number[]);
95+
const percentTriagedGitHubList = ref([] as number[]);
96+
const percentTriagedTotalList = ref([] as number[]);
8097
8198
function arrayContainsAllZeros(arr: number[]) {
8299
return arr.every((item) => item === 0);
@@ -130,6 +147,7 @@ function getTotalCounts() {
130147
});
131148
132149
setChartDataForTotalFindingsCount();
150+
setChartDataForPercentTriagedFindingGraph();
133151
})
134152
.catch((error) => {
135153
AxiosConfig.handleError(error);
@@ -155,6 +173,7 @@ function getUnTriagedCounts() {
155173
});
156174
157175
setChartDataForUnTriagedFindingsCount();
176+
setChartDataForPercentTriagedFindingGraph();
158177
})
159178
.catch((error) => {
160179
AxiosConfig.handleError(error);
@@ -304,5 +323,67 @@ function setChartDataForUnTriagedFindingsCount() {
304323
loadedUnTriaged.value = true;
305324
}
306325
326+
function setChartDataForPercentTriagedFindingGraph() {
327+
// Do not execute if not all data is loaded
328+
if (loadedTotal.value === false || loadedUnTriaged.value === false) {
329+
return;
330+
}
331+
332+
const datasets = [];
333+
334+
if (!arrayContainsAllZeros(azureDevOpsTotalFindingsCountList.value)) {
335+
percentTriagedAzureDevOpsList.value = zipUntriagedTotalToPercent(
336+
azureDevOpsUnTriagedFindingsCountList.value,
337+
azureDevOpsTotalFindingsCountList.value,
338+
);
339+
const datasetObj = prepareDataSetForVcsProvider(
340+
`${Config.value('azureDevOpsVal')}`,
341+
percentTriagedAzureDevOpsList.value,
342+
);
343+
datasets.push(datasetObj);
344+
}
345+
346+
if (!arrayContainsAllZeros(bitbucketTotalFindingsCountList.value)) {
347+
percentTriagedBitbucketList.value = zipUntriagedTotalToPercent(
348+
bitbucketUnTriagedFindingsCountList.value,
349+
bitbucketTotalFindingsCountList.value,
350+
);
351+
const datasetObj = prepareDataSetForVcsProvider(
352+
`${Config.value('bitbucketVal')}`,
353+
percentTriagedBitbucketList.value,
354+
);
355+
datasets.push(datasetObj);
356+
}
357+
358+
if (!arrayContainsAllZeros(gitHubTotalFindingsCountList.value)) {
359+
percentTriagedGitHubList.value = zipUntriagedTotalToPercent(
360+
gitHubUnTriagedFindingsCountList.value,
361+
gitHubTotalFindingsCountList.value,
362+
);
363+
const datasetObj = prepareDataSetForVcsProvider(
364+
`${Config.value('githubPublicVal')}`,
365+
percentTriagedGitHubList.value,
366+
);
367+
datasets.push(datasetObj);
368+
}
369+
370+
if (!arrayContainsAllZeros(totalTotalFindingsCountList.value)) {
371+
percentTriagedTotalList.value = zipUntriagedTotalToPercent(
372+
totalUnTriagedFindingsCountList.value,
373+
totalTotalFindingsCountList.value,
374+
);
375+
const datasetObj = prepareDataSetForVcsProvider('Total', percentTriagedTotalList.value);
376+
datasets.push(datasetObj);
377+
}
378+
379+
chartDataForPercentTriagedFindingGraph.value['labels'] = labelsWeekUnTriaged.value;
380+
chartDataForPercentTriagedFindingGraph.value['datasets'] = datasets;
381+
loadedUnTriaged.value = true;
382+
}
383+
384+
function zipUntriagedTotalToPercent(untriaged: number[], total: number[]) {
385+
return total.map((item, index) => (untriaged[index] * 100) / Math.max(1, item));
386+
}
387+
307388
getGraphData();
308389
</script>

0 commit comments

Comments
 (0)