48
48
<h2 >{{ breakdownDisplayNamePlural }} Breakdown </h2 >
49
49
<br >
50
50
51
- <v-data-table :headers =" headers" :items =" Array.from(breakdowns) " class =" elevation-2" style =" padding-left : 100px ; padding-right : 100px ;" >
51
+ <v-data-table :headers =" headers" :items =" breakdownList " class =" elevation-2" style =" padding-left : 100px ; padding-right : 100px ;" >
52
52
<template v-slot :item =" {item } " >
53
53
<tr >
54
- <td >{{ item[0] }}</td >
55
- <td >{{ item[1] .acceptedPrompts }}</td >
56
- <td >{{ item[1] .acceptedLinesOfCode }}</td >
57
- <td v-if =" item[1] .acceptanceRate !== undefined" >{{ item[1] .acceptanceRate.toFixed(2) }}%</td >
54
+ <td >{{ item.name }}</td >
55
+ <td >{{ item.acceptedPrompts }}</td >
56
+ <td >{{ item.acceptedLinesOfCode }}</td >
57
+ <td v-if =" item.acceptanceRate !== undefined" >{{ item.acceptanceRate.toFixed(2) }}%</td >
58
58
</tr >
59
59
</template >
60
60
</v-data-table >
@@ -118,7 +118,7 @@ export default defineComponent({
118
118
},
119
119
headers() {
120
120
return [
121
- { title: ` ${this .breakdownDisplayName } Name ` , key: ' breakdownName ' },
121
+ { title: ` ${this .breakdownDisplayName } Name ` , key: ' name ' },
122
122
{ title: ' Accepted Prompts' , key: ' acceptedPrompts' },
123
123
{ title: ' Accepted Lines of Code' , key: ' acceptedLinesOfCode' },
124
124
{ title: ' Acceptance Rate (%)' , key: ' acceptanceRate' },
@@ -127,8 +127,8 @@ export default defineComponent({
127
127
},
128
128
setup(props ) {
129
129
130
- // Create an empty map to store the breakdowns.
131
- const breakdowns = ref ( new Map < string , Breakdown >() );
130
+ // Create a reactive reference to store the breakdowns.
131
+ const breakdownList = ref < Breakdown []>([] );
132
132
133
133
// Number of breakdowns
134
134
const numberOfBreakdowns = ref (0 );
@@ -158,7 +158,7 @@ export default defineComponent({
158
158
data .forEach ((m : Metrics ) => m .breakdown .forEach (breakdownData =>
159
159
{
160
160
const breakdownName = breakdownData [props .breakdownKey as keyof typeof breakdownData ] as string ;
161
- let breakdown = breakdowns .value .get ( breakdownName );
161
+ let breakdown = breakdownList .value .find ( b => b . name === breakdownName );
162
162
163
163
if (! breakdown ) {
164
164
// Create a new breakdown object if it does not exist
@@ -168,7 +168,7 @@ export default defineComponent({
168
168
suggestedLinesOfCode: breakdownData .lines_suggested ,
169
169
acceptedLinesOfCode: breakdownData .lines_accepted ,
170
170
});
171
- breakdowns .value .set ( breakdownName , breakdown );
171
+ breakdownList .value .push ( breakdown );
172
172
} else {
173
173
// Update the existing breakdown object
174
174
breakdown .acceptedPrompts += breakdownData .acceptances_count ;
@@ -180,54 +180,40 @@ export default defineComponent({
180
180
}));
181
181
182
182
// Sort breakdowns map by acceptance rate
183
- breakdowns .value [Symbol .iterator ] = function * () {
184
- yield * [... this .entries ()].sort ((a , b ) => b [1 ].acceptanceRate - a [1 ].acceptanceRate );
185
- }
183
+ breakdownList .value .sort ((a , b ) => b .acceptanceRate - a .acceptanceRate );
186
184
187
185
// Get the top 5 breakdowns by acceptance rate
188
- const top5BreakdownsAcceptanceRate = new Map ([ ... breakdowns . value ] .slice (0 , 5 ) );
186
+ const top5BreakdownsAcceptanceRate = breakdownList . value .slice (0 , 5 );
189
187
190
188
breakdownsChartDataTop5AcceptanceRate .value = {
191
- labels: Array . from ( top5BreakdownsAcceptanceRate . values ()) .map (breakdown => breakdown .name ),
189
+ labels: top5BreakdownsAcceptanceRate .map (breakdown => breakdown .name ),
192
190
datasets: [
193
191
{
194
- data: Array . from ( top5BreakdownsAcceptanceRate . values ()) .map (breakdown => breakdown .acceptanceRate .toFixed (2 )),
192
+ data: top5BreakdownsAcceptanceRate .map (breakdown => breakdown .acceptanceRate .toFixed (2 )),
195
193
backgroundColor: pieChartColors .value ,
196
194
},
197
195
],
198
196
};
199
197
200
198
// Sort breakdowns map by accepted prompts
201
- breakdowns .value [Symbol .iterator ] = function * () {
202
- yield * [... this .entries ()].sort ((a , b ) => b [1 ].acceptedPrompts - a [1 ].acceptedPrompts );
203
- }
204
-
205
- breakdownsChartData .value = {
206
- labels: Array .from (breakdowns .value .values ()).map (breakdown => breakdown .name ),
207
- datasets: [
208
- {
209
- data: Array .from (breakdowns .value .values ()).map (breakdown => breakdown .acceptedPrompts ),
210
- backgroundColor: pieChartColors .value ,
211
- },
212
- ],
213
- };
199
+ breakdownList .value .sort ((a , b ) => b .acceptedPrompts - a .acceptedPrompts );
214
200
215
201
// Get the top 5 breakdowns by accepted prompts
216
- const top5BreakdownsAcceptedPrompts = new Map ([ ... breakdowns . value ] .slice (0 , 5 ) );
202
+ const top5BreakdownsAcceptedPrompts = breakdownList . value .slice (0 , 5 );
217
203
218
204
breakdownsChartDataTop5AcceptedPrompts .value = {
219
- labels: Array . from ( top5BreakdownsAcceptedPrompts . values ()) .map (breakdown => breakdown .name ),
205
+ labels: top5BreakdownsAcceptedPrompts .map (breakdown => breakdown .name ),
220
206
datasets: [
221
207
{
222
- data: Array . from ( top5BreakdownsAcceptedPrompts . values ()) .map (breakdown => breakdown .acceptedPrompts ),
208
+ data: top5BreakdownsAcceptedPrompts .map (breakdown => breakdown .acceptedPrompts ),
223
209
backgroundColor: pieChartColors .value ,
224
210
},
225
211
],
226
212
};
227
213
228
- numberOfBreakdowns .value = breakdowns .value .size ;
214
+ numberOfBreakdowns .value = breakdownList .value .length ;
229
215
230
- return { chartOptions , breakdowns , numberOfBreakdowns ,
216
+ return { chartOptions , breakdownList , numberOfBreakdowns ,
231
217
breakdownsChartData , breakdownsChartDataTop5AcceptedPrompts , breakdownsChartDataTop5AcceptanceRate };
232
218
},
233
219
0 commit comments