21
21
</div >
22
22
</div >
23
23
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" >
26
26
<h5 ><small class =" text-nowrap" >UnTriaged findings per week</small ></h5 >
27
27
<SpinnerVue v-if =" !loadedUnTriaged" />
28
28
<MultiLineChart
29
29
v-if =" loadedUnTriaged"
30
30
:chart-data =" chartDataForUnTriagedFindingsCountGraph"
31
31
/>
32
32
</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 >
33
42
</div >
34
43
</div >
35
44
</div >
@@ -64,6 +73,10 @@ const chartDataForUnTriagedFindingsCountGraph = ref({
64
73
labels: [] as string [],
65
74
datasets: [] as DataSetObject [],
66
75
});
76
+ const chartDataForPercentTriagedFindingGraph = ref ({
77
+ labels: [] as string [],
78
+ datasets: [] as DataSetObject [],
79
+ });
67
80
const findingsCount = ref ([] as FindingCountOverTime []);
68
81
const azureDevOpsTotalFindingsCountList = ref ([] as number []);
69
82
const bitbucketTotalFindingsCountList = ref ([] as number []);
@@ -77,6 +90,10 @@ const azureDevOpsUnTriagedFindingsCountList = ref([] as number[]);
77
90
const bitbucketUnTriagedFindingsCountList = ref ([] as number []);
78
91
const gitHubUnTriagedFindingsCountList = ref ([] as number []);
79
92
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 []);
80
97
81
98
function arrayContainsAllZeros(arr : number []) {
82
99
return arr .every ((item ) => item === 0 );
@@ -130,6 +147,7 @@ function getTotalCounts() {
130
147
});
131
148
132
149
setChartDataForTotalFindingsCount ();
150
+ setChartDataForPercentTriagedFindingGraph ();
133
151
})
134
152
.catch ((error ) => {
135
153
AxiosConfig .handleError (error );
@@ -155,6 +173,7 @@ function getUnTriagedCounts() {
155
173
});
156
174
157
175
setChartDataForUnTriagedFindingsCount ();
176
+ setChartDataForPercentTriagedFindingGraph ();
158
177
})
159
178
.catch ((error ) => {
160
179
AxiosConfig .handleError (error );
@@ -304,5 +323,67 @@ function setChartDataForUnTriagedFindingsCount() {
304
323
loadedUnTriaged .value = true ;
305
324
}
306
325
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
+
307
388
getGraphData ();
308
389
</script >
0 commit comments