Skip to content

Commit ab794d4

Browse files
committed
add: total ranking(continue)
1 parent 5f8cf51 commit ab794d4

File tree

1 file changed

+103
-7
lines changed

1 file changed

+103
-7
lines changed

src/Home.vue

Lines changed: 103 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,10 @@
8686
<template v-else> - </template>
8787
</td>
8888
<td>
89+
<template v-if="item.date">
8990
<span class="label-date">{{ item.date }}</span>
91+
</template>
92+
<template v-else> - </template>
9093
</td>
9194
<td class="text-center">
9295
<template v-if="item.hasLogs">
@@ -148,18 +151,16 @@ import Resources from './Resources.vue'
148151
const { allLeaderboards, selectedCategory, leaderboard, languageData, datasetResults, language, dataset, total} = useAllLeaderboard()
149152
const GITHUB_URL = 'https://github.com/multi-swe-bench/experiments/tree/main/evaluation'
150153
console.log({ allLeaderboards, selectedCategory, leaderboard, languageData, datasetResults, language, dataset, total});
151-
import { ref,computed } from 'vue';
154+
import { ref,computed, watch } from 'vue';
152155
153-
// 初始化排序状态
154156
const sortOrder = ref({
155-
overall: 'desc', // 初始为降序
157+
overall: 'desc',
156158
easy: 'desc',
157159
medium: 'desc',
158160
hard: 'desc',
159161
date: 'desc',
160162
});
161163
162-
// 获取图标的 CSS 类
163164
const getSortIconClass = (category: string) => {
164165
return {
165166
'sort-icon': true, // 基础类,始终应用
@@ -169,10 +170,8 @@ const getSortIconClass = (category: string) => {
169170
};
170171
};
171172
172-
// 当前选中的排序类别
173173
const selectedSortCategory = ref('overall');
174174
175-
// 计算排序后的数据
176175
const sortedResults = computed(() => {
177176
if (!Array.isArray(datasetResults.value) || datasetResults.value.length === 0) {
178177
return [];
@@ -197,7 +196,6 @@ const sortedResults = computed(() => {
197196
});
198197
});
199198
200-
// 处理点击排序
201199
function sortColumn(category: string) {
202200
if (selectedSortCategory.value === category) {
203201
sortOrder.value[category] = sortOrder.value[category] === 'desc' ? 'asc' : 'desc';
@@ -207,6 +205,104 @@ function sortColumn(category: string) {
207205
}
208206
209207
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)
210306
</script>
211307

212308
<style lang="scss">

0 commit comments

Comments
 (0)