@@ -262,19 +262,58 @@ async function addLevelIndicators() {
262262 if ( isUserPage ( ) ) {
263263 var userId = document . querySelector ( ".page-header h1" ) . innerText . trim ( )
264264 var userStaticsTable = document . querySelector ( "#statics tbody" )
265-
265+ const isShowUserTempTier = JSON . parse ( await getPrefs ( 'show_userpage_temp_tier' , 'false' ) )
266266 const userData = await ( await fetch ( "https://api.solved.ac/user_information.php?id=" + userId ) ) . json ( )
267- if ( ! userData ) return
268267
268+ if ( ! userData && ! isShowUserTempTier ) return
269+
269270 var newRow = document . createElement ( "tr" )
270271 var newRowHeader = document . createElement ( "th" )
271- newRowHeader . innerText = "solved.ac"
272272 var newRowDescription = document . createElement ( "td" )
273- newRowDescription . innerHTML = "<a href=\"https://solved.ac/" + userData . user_id + "\">"
274- + "<span class=\"text-" + levelCssClass ( userData . level ) + "\">"
275- + levelLabel ( userData . level ) + "<b>" + userData . user_id + "</b>"
276- + "</span>"
277- + "</a>"
273+
274+ if ( ! userData && isShowUserTempTier ) {
275+ var acceptPanel = document . querySelector ( ".panel.panel-default" )
276+ var acceptProblems = acceptPanel . querySelectorAll ( ".problem_number>a" )
277+ var totalExpPoint = 0
278+ var promises = [ ] ;
279+ var levelData = [ ]
280+
281+ const levelDataResponses = await ( await fetch ( "https://api.solved.ac/exp_table.php" ) ) . text ( )
282+ levelDataResponses . split ( ',' ) . forEach ( level => levelData . push ( parseInt ( level ) ) )
283+
284+ for ( i = 0 ; i < acceptProblems . length ; i ++ ) {
285+ var problemId = acceptProblems [ i ] . textContent ;
286+ promises [ i ] = fetch ( "https://api.solved.ac/problem_level.php?id=" + problemId )
287+ }
288+
289+ responses = await Promise . all ( promises )
290+ for ( i = 0 ; i < responses . length ; i ++ ) {
291+ data = await responses [ i ] . json ( )
292+ if ( data . level != 0 )
293+ totalExpPoint += levelData [ data . level ]
294+ }
295+
296+ var expTable = [ ]
297+ const expTableData = await ( await fetch ( "https://api.solved.ac/exp_cap.php" ) ) . text ( )
298+ expTableData . split ( ',' ) . forEach ( level => expTable . push ( parseInt ( level ) ) )
299+ var expectLevel = getExpectLevelFromExpPoint ( totalExpPoint , expTable )
300+
301+ newRowHeader . innerText = "solved.ac 임시티어"
302+ newRowDescription . innerHTML = "<a href=\"https://www.acmicpc.net/user/" + userId + "\">"
303+ + "<span class=\"text-" + levelCssClass ( expectLevel ) + "\">"
304+ + levelLabel ( expectLevel ) + "<b>" + userId + "</b>"
305+ + "</span>"
306+ + "</a>"
307+ }
308+ else {
309+ newRowHeader . innerText = "solved.ac"
310+ newRowDescription . innerHTML = "<a href=\"https://solved.ac/" + userData . user_id + "\">"
311+ + "<span class=\"text-" + levelCssClass ( userData . level ) + "\">"
312+ + levelLabel ( userData . level ) + "<b>" + userData . user_id + "</b>"
313+ + "</span>"
314+ + "</a>"
315+ }
316+
278317 newRow . appendChild ( newRowHeader )
279318 newRow . appendChild ( newRowDescription )
280319 userStaticsTable . appendChild ( newRow )
0 commit comments