86
86
<template v-else > - </template >
87
87
</td >
88
88
<td >
89
+ <template v-if =" item .date " >
89
90
<span class =" label-date" >{{ item.date }}</span >
91
+ </template >
92
+ <template v-else > - </template >
90
93
</td >
91
94
<td class =" text-center" >
92
95
<template v-if =" item .hasLogs " >
@@ -148,18 +151,16 @@ import Resources from './Resources.vue'
148
151
const { allLeaderboards, selectedCategory, leaderboard, languageData, datasetResults, language, dataset, total} = useAllLeaderboard ()
149
152
const GITHUB_URL = ' https://github.com/multi-swe-bench/experiments/tree/main/evaluation'
150
153
console .log ({ allLeaderboards , selectedCategory , leaderboard , languageData , datasetResults , language , dataset , total });
151
- import { ref ,computed } from ' vue' ;
154
+ import { ref ,computed , watch } from ' vue' ;
152
155
153
- // 初始化排序状态
154
156
const sortOrder = ref ({
155
- overall: ' desc' , // 初始为降序
157
+ overall: ' desc' ,
156
158
easy: ' desc' ,
157
159
medium: ' desc' ,
158
160
hard: ' desc' ,
159
161
date: ' desc' ,
160
162
});
161
163
162
- // 获取图标的 CSS 类
163
164
const getSortIconClass = (category : string ) => {
164
165
return {
165
166
' sort-icon' : true , // 基础类,始终应用
@@ -169,10 +170,8 @@ const getSortIconClass = (category: string) => {
169
170
};
170
171
};
171
172
172
- // 当前选中的排序类别
173
173
const selectedSortCategory = ref (' overall' );
174
174
175
- // 计算排序后的数据
176
175
const sortedResults = computed (() => {
177
176
if (! Array .isArray (datasetResults .value ) || datasetResults .value .length === 0 ) {
178
177
return [];
@@ -197,7 +196,6 @@ const sortedResults = computed(() => {
197
196
});
198
197
});
199
198
200
- // 处理点击排序
201
199
function sortColumn(category : string ) {
202
200
if (selectedSortCategory .value === category ) {
203
201
sortOrder .value [category ] = sortOrder .value [category ] === ' desc' ? ' asc' : ' desc' ;
@@ -207,6 +205,104 @@ function sortColumn(category: string) {
207
205
}
208
206
209
207
208
+ // 初始化一个空的结果集合
209
+ const allModelResults = ref ([]);
210
+
211
+ // 遍历 allLeaderboards 计算每个模型的综合结果
212
+ function aggregateModelResults(allLeaderboards ) {
213
+ if (! Array .isArray (datasetResults .value ) || datasetResults .value .length === 0 ) {
214
+ return [];
215
+ }
216
+ let num = 0
217
+ let totalNum = 0
218
+ let easyNum = 0
219
+ let mediumNum = 0
220
+ let highNum = 0
221
+ console .log (" this is continue" )
222
+ const modelMap = {}; // 存储模型的累计结果
223
+ const modelNames = new Set (); // 存储所有模型名称
224
+ const languageCount = allLeaderboards .value .length ; // 语言数量
225
+ const allLeaderboardsValue = allLeaderboards .value
226
+ // 遍历所有语言的结果
227
+ allLeaderboardsValue .forEach (leaderboard => {
228
+ leaderboard .data .forEach (languageData => {
229
+ console .log (languageData .name )
230
+ totalNum += languageData .data .all_ids .length
231
+ easyNum += languageData .data .easy_ids .length
232
+ mediumNum += languageData .data .medium_ids .length
233
+ highNum += languageData .data .hard_ids .length
234
+ languageData .results .forEach (result => {
235
+ const { resolved, resolvedEasy, resolvedMedium, resolvedHard,site,orgIcon, date} = result ;
236
+ let {name} = result
237
+ if (! name .startsWith (' M' )) {
238
+ name = ' m' + name .toLowerCase ()
239
+ }else {
240
+ name = name .toLowerCase ()
241
+ }
242
+
243
+ // 初始化模型数据,如果是第一次看到这个模型
244
+ if (! modelMap [name ]) {
245
+ modelMap [name ] = {
246
+ resolved: 0 ,
247
+ resolvedEasy: 0 ,
248
+ resolvedMedium: 0 ,
249
+ resolvedHard: 0 ,
250
+ resolvedEasyRate: 0 ,
251
+ resolvedMediumRate: 0 ,
252
+ resolvedHardRate: 0 ,
253
+ count: 0 , // 统计每个模型出现过的语言数
254
+ site: site ,
255
+ orgIcon: orgIcon ,
256
+ date: date
257
+ };
258
+ }
259
+
260
+ // 累加当前语言的模型分数
261
+ modelMap [name ].resolved += resolved ;
262
+ modelMap [name ].resolvedEasy += resolvedEasy ;
263
+ modelMap [name ].resolvedMedium += resolvedMedium ;
264
+ modelMap [name ].resolvedHard += resolvedHard ;
265
+ modelMap [name ].count += 1 ;
266
+ modelMap [name ].date = modelMap [name ].date > date ? modelMap [name ].date : date
267
+ modelNames .add (name );
268
+ num = num + 1
269
+ });
270
+ });
271
+ });
272
+ allModelResults .value = Object .keys (modelMap )
273
+ .filter (name => modelMap [name ].count === languageCount ) // 只保留在每个语言中都存在的模型
274
+ .map (name => ({
275
+ name ,
276
+ resolved: modelMap [name ].resolved ,
277
+ resolvedEasy: modelMap [name ].resolvedEasy ,
278
+ resolvedMedium: modelMap [name ].resolvedMedium ,
279
+ resolvedHard: modelMap [name ].resolvedHard ,
280
+ resolvedRate: modelMap [name ].resolved / totalNum ,
281
+ resolvedEasyRate: modelMap [name ].resolvedEasy / easyNum ,
282
+ resolvedMediumRate: modelMap [name ].resolvedMedium / mediumNum ,
283
+ resolvedHardRate: modelMap [name ].resolvedHard / highNum ,
284
+ site: modelMap [name ].site ,
285
+ orgIcon: modelMap [name ].orgIcon ,
286
+ date: modelMap [name ].date ,
287
+ }));
288
+ }
289
+ // watch(allLeaderboards, () => {
290
+ // aggregateModelResults(allLeaderboards);
291
+ // allModelResults.value.sort((a, b) => b.resolved - a.resolved);
292
+ // const newLanguage = {
293
+ // name: 'Ranking',
294
+ // data: [
295
+ // {
296
+ // results: allModelResults // 将模型统计结果插入
297
+ // }
298
+ // ]
299
+ // };
300
+ // if(allLeaderboards.value){
301
+ // allLeaderboards.value.unshift(newLanguage);
302
+ // console.log(allLeaderboards)
303
+ // }
304
+ // }, { immediate: true }); // { immediate: true } 会在一开始就执行一次计算
305
+ console .log (allModelResults )
210
306
</script >
211
307
212
308
<style lang="scss">
0 commit comments