@@ -201,56 +201,60 @@ <h3>🙏 Acknowledgements</h3>
201
201
202
202
<!-- 渲染脚本:与之前一致 -->
203
203
< script >
204
- const tbody = document . getElementById ( "leaderboard-body" ) ;
205
- const radios = document . querySelectorAll ( 'input[name="langradio"]' ) ;
206
- const xhr = new XMLHttpRequest ( ) ;
207
- xhr . open ( "GET" , "results/results.json" , false ) ;
208
- xhr . send ( ) ;
209
- if ( xhr . status !== 200 ) {
210
- alert ( "Failed to load results.json" ) ;
211
- }
212
- const raw = Object . values ( JSON . parse ( xhr . responseText ) ) ;
213
- const keyMap = {
214
- full : "%resolved_full" ,
215
- python : "%resolved_python" ,
216
- java : "%resolved_java" ,
217
- javascript : "%resolved_javascript" ,
218
- typescript : "%resolved_typescript"
219
- } ;
204
+ ( async ( ) => {
205
+ /* 1. 读取结果文件 */
206
+ const res = await fetch ( 'results/results.json' ) ;
207
+ if ( ! res . ok ) { alert ( 'Failed to load results.json' ) ; return ; }
208
+ const raw = Object . values ( await res . json ( ) ) ;
220
209
221
- function render ( lang ) {
222
- tbody . innerHTML = "" ;
223
- const k = keyMap [ lang ] ;
224
- raw . filter ( r => r [ k ] != null )
225
- . sort ( ( a , b ) => b [ k ] - a [ k ] )
226
- . forEach ( ( r , i ) => {
227
- const medal = i === 0 ? "🥇 " : i === 1 ? "🥈 " : i === 2 ? "🥉 " : "" ;
210
+ /* 2. 各语言字段名 —— 按你的 results.json 来改 */
211
+ const keyMap = {
212
+ full : '%resolved_full' ,
213
+ python : '%resolved_python' ,
214
+ java : '%resolved_java' ,
215
+ javascript : '%resolved_javascript' ,
216
+ typescript : '%resolved_typescript'
217
+ } ;
228
218
229
- // 读 org_icon 和 site_url
230
- const orgIcon = r . org_icon
231
- ? `<img src="${ r . org } " alt="org" style="height:1.5em;margin:0.2em 0;">`
232
- : "-" ;
219
+ const tbody = document . getElementById ( 'leaderboard-body' ) ;
220
+ const radios = document . querySelectorAll ( 'input[name="langradio"]' ) ;
233
221
234
- const siteLink = r . site_url
235
- ? `<a href=" ${ r . site } " target="_blank" style="text-decoration:none;">🔗</a>`
236
- : "-" ;
222
+ /* 百分比显示工具 */
223
+ const toPercent = v => v == null ? '--'
224
+ : ( v < 1 ? v * 100 : v ) . toFixed ( 1 ) + '%' ;
237
225
238
- tbody . insertAdjacentHTML ( "beforeend" , `
239
- <tr>
240
- <td>${ medal } ${ r . method } </td>
241
- <td>${ r . model } </td>
242
- <td class="text-center">${ ( r [ k ] * 100 ) . toFixed ( 1 ) } %</td>
243
- <td class="text-center">${ orgIcon } </td>
244
- <td class="text-center">${ siteLink } </td>
245
- <td class="text-center">${ r . date } </td>
246
- </tr>
247
- ` ) ;
248
- } ) ;
249
- }
226
+ function render ( lang ) {
227
+ const k = keyMap [ lang ] ;
228
+ tbody . innerHTML = '' ;
229
+
230
+ raw . filter ( r => r [ k ] != null )
231
+ . sort ( ( a , b ) => b [ k ] - a [ k ] )
232
+ . forEach ( ( r , i ) => {
233
+ const medal = i === 0 ? '🥇 ' : i === 1 ? '🥈 '
234
+ : i === 2 ? '🥉 ' : '' ;
235
+ const orgIcon = r . org ? `<img src="${ r . org } " style="height:1.5em;">` : '-' ;
236
+ const siteLink = r . site ? `<a href="${ r . site } " target="_blank">🔗</a>` : '-' ;
250
237
251
- render ( "full" ) ;
252
- radios . forEach ( r => r . addEventListener ( "change" , ( ) => r . checked && render ( r . value ) ) ) ;
238
+ tbody . insertAdjacentHTML ( 'beforeend' , `
239
+ <tr>
240
+ <td>${ medal } ${ r . method } </td>
241
+ <td>${ r . model } </td>
242
+ <td class="text-center">${ toPercent ( r [ k ] ) } </td>
243
+ <td class="text-center">${ orgIcon } </td>
244
+ <td class="text-center">${ siteLink } </td>
245
+ <td class="text-center">${ r . date ?? '--' } </td>
246
+ </tr>
247
+ ` ) ;
248
+ } ) ;
249
+ }
250
+
251
+ render ( 'full' ) ; // 默认显示全量
252
+ radios . forEach ( r => // 监听语言切换
253
+ r . addEventListener ( 'change' , ( ) => r . checked && render ( r . value ) )
254
+ ) ;
255
+ } ) ( ) ;
253
256
</ script >
254
257
258
+
255
259
</ body >
256
260
</ html >
0 commit comments