@@ -201,56 +201,60 @@ <h3>🙏 Acknowledgements</h3>
201201
202202 <!-- 渲染脚本:与之前一致 -->
203203 < 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 ( ) ) ;
220209
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+ } ;
228218
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"]' ) ;
233221
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 ) + '%' ;
237225
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>` : '-' ;
250237
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+ } ) ( ) ;
253256 </ script >
254257
258+
255259</ body >
256260</ html >
0 commit comments