@@ -69,7 +69,7 @@ <h3 class="fw-light text-nowrap">
6969 </ div >
7070
7171 <!-- 排名表 -->
72- < table id ="origin " class ="table table-striped table-bordered border border-primary border-3 mt-4 w-100 ">
72+ <!-- < table id="origin" class="table table-striped table-bordered border border-primary border-3 mt-4 w-100">
7373 <thead>
7474 <tr>
7575 <th style="width:50%">Method</th>
@@ -79,7 +79,22 @@ <h3 class="fw-light text-nowrap">
7979 </tr>
8080 </thead>
8181 <tbody id="leaderboard-body"></tbody>
82+ </table> -->
83+
84+ < table id ="origin " class ="table table-striped table-bordered border border-primary border-3 mt-4 w-100 ">
85+ < thead >
86+ < tr >
87+ < th style ="width:30% "> Method</ th >
88+ < th style ="width:20% "> Model</ th >
89+ < th style ="width:10% " class ="text-center "> %Resolved</ th >
90+ < th style ="width:15% " class ="text-center "> Org</ th >
91+ < th style ="width:15% " class ="text-center "> Site</ th >
92+ < th style ="width:10% " class ="text-center "> Date</ th >
93+ </ tr >
94+ </ thead >
95+ < tbody id ="leaderboard-body "> </ tbody >
8296 </ table >
97+
8398
8499 <!-- Notes -->
85100 < div id ="notes " class ="w-100 ">
@@ -186,28 +201,56 @@ <h3>🙏 Acknowledgements</h3>
186201
187202 <!-- 渲染脚本:与之前一致 -->
188203 < script >
189- const tbody = document . getElementById ( "leaderboard-body" ) ;
190- const radios = document . querySelectorAll ( 'input[name="langradio"]' ) ;
191- const xhr = new XMLHttpRequest ( ) ; xhr . open ( "GET" , "results/results.json" , false ) ; xhr . send ( ) ;
192- if ( xhr . status !== 200 ) { alert ( "Failed to load results.json" ) ; }
193- const raw = Object . values ( JSON . parse ( xhr . responseText ) ) ;
194- const keyMap = { full :"%resolved_full" , python :"%resolved_python" ,
195- java :"%resolved_java" , javascript :"%resolved_javascript" ,
196- typescript :"%resolved_typescript" } ;
197- function render ( lang ) {
198- tbody . innerHTML = "" ;
199- const k = keyMap [ lang ] ;
200- raw . filter ( r => r [ k ] != null ) . sort ( ( a , b ) => b [ k ] - a [ k ] ) . forEach ( ( r , i ) => {
201- const medal = i === 0 ?"🥇 " :i === 1 ?"🥈 " :i === 2 ?"🥉 " :"" ;
202- tbody . insertAdjacentHTML ( "beforeend" ,
203- `<tr><td>${ medal } ${ r . method } </td>
204- <td>${ r . model } </td>
205- <td class="text-center">${ ( r [ k ] * 100 ) . toFixed ( 1 ) } %</td>
206- <td class="text-center">${ r . date } </td></tr>` ) ;
207- } ) ;
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+ } ;
220+
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 ? "🥉 " : "" ;
228+
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+ : "-" ;
233+
234+ const siteLink = r . site_url
235+ ? `<a href="${ r . site } " target="_blank" style="text-decoration:none;">🔗</a>`
236+ : "-" ;
237+
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+ } ) ;
208249 }
250+
209251 render ( "full" ) ;
210- radios . forEach ( r => r . addEventListener ( "change" , ( ) => r . checked && render ( r . value ) ) ) ;
211- </ script >
252+ radios . forEach ( r => r . addEventListener ( "change" , ( ) => r . checked && render ( r . value ) ) ) ;
253+ </ script >
254+
212255</ body >
213256</ html >
0 commit comments