def playerRank(stat_dict, user_id, img_url) : wins = stat_dict[user_id]["WinsCount"] rank_index = 0 player_rank = RANKS_TUPLE[0][1] prev = 0 need_next = wins for (index, (need, title)) in enumerate(RANKS_TUPLE[1:]) : if wins >= need : player_rank = title rank_index = index prev = need else : need_next = need break rank_img = html.image(img_url % { "rank_index" : rank_index }) rank_progress = html.progressBar(100 * (wins - prev) / (need_next - prev)) return """ %s<br><br> <div style="float:left; text-align:left;">%s</div> <div style="float:right; text-align:right; width:80px;">%s</div> """ % (player_rank, rank_img, rank_progress)
def playerStatisticsTable(stat_dict, user_id) : player_stat_dict = stat_dict[user_id] wins = player_stat_dict["WinsCount"] losts = player_stat_dict["LostsCount"] battles = wins + losts kills = player_stat_dict["KillsStat"] if battles != 0 : efficiency = float(kills) / float(battles) skill_factor = float(wins) / float(battles) else : efficiency = skill_factor = 0 skill_factor_text = ( """ <div style="float:left; text-align:left;">%.2f </div> <div style="float:right; text-align:right; width:70px;">%s</div> """ % (skill_factor, html.progressBar(skill_factor * 100)) ) return html.statusTable([ ("Battles", str(battles)), ("Wins", str(wins)), ("Losts", str(losts)), ("Skill factor", skill_factor_text), ("Efficiency", "%2.f" % (efficiency)), ("Last hope", str(player_stat_dict["SoleSurvivorWavesStat"])), ("Kills", str(kills)), ("Time played", ulib.tools.fmt.formatTimeDelta(player_stat_dict["TotalPlayTime"])), ])
def playerPerksTable(stat_dict, user_id) : perks_list = [] for (perk, levels_map) in ( ("Berserk", BERSERK_LEVELS_MAP), ("Sharpshooter", SHARPSHOOTER_LEVELS_MAP), ("Firebug", FIREBUG_LEVELS_MAP), ("Field medic", FIELD_MEDIC_LEVELS_MAP), ("Demolitions", DEMOLITIONS_LEVELS_MAP), ("Support spec", SUPPORT_SPEC_LEVELS_MAP), ("Commando", COMMANDO_LEVELS_MAP) ) : (level, percent) = calculateLevelProgress(levels_map, stat_dict[user_id]) max_percent = calculateProgress(levels_map, stat_dict[user_id]) perks_list.append([ perk, str(level), { "width" : "150px", "body" : html.progressBar(percent) }, { "width" : "150px", "body" : html.progressBar(max_percent) }, ]) return html.tableWithHeader(["Perk", "Level", "Until the next", "Until the max"], perks_list)
def disksFree(dirs_list) : format_size = ( lambda arg : "%s <span class=\"back\">%s</span>" % (tuple(ulib.tools.fmt.formatSize(arg).split(" "))) ) dirs_list = map(ulib.validators.fs.validAccessiblePath, ulib.validators.common.validStringList(dirs_list)) rows_list = [] for path in dirs_list : label = ( os.path.basename(path) or path ) (full, used) = ulib.tools.unix.diskFree(path) percent = 100 * used / full rows_list.append([ { "nowrap" : None, "body" : label }, { "style" : "width: 70%", "body" : html.progressBar(percent) }, { "nowrap" : None, "body" : format_size(full) }, { "nowrap" : None, "body" : format_size(used) }, { "nowrap" : None, "body" : format_size(full - used) }, ]) df_table = html.tableWithHeader(["Label", "", "Size", "Used", "Free"], rows_list) return (df_table,)
def serverPerksTable(stat_dict, profile_url) : count = 1 players_list = [] for (user_id, player_stat_dict) in sorted(stat_dict.items(), key=( lambda arg : arg[1]["PlayerName"].lower() )) : perk_progress = ( lambda levels_map : { "width" : "13%", "body" : html.progressBar(calculateProgress(levels_map, player_stat_dict)) } ) player_name = "<a href=\"%s\">»</a> %s" % (profile_url % { "user_id" : user_id }, player_stat_dict["PlayerName"]) players_list.append([ str(count), { "nowrap" : None, "body" : player_name }, perk_progress(BERSERK_LEVELS_MAP), perk_progress(SHARPSHOOTER_LEVELS_MAP), perk_progress(FIREBUG_LEVELS_MAP), perk_progress(FIELD_MEDIC_LEVELS_MAP), perk_progress(DEMOLITIONS_LEVELS_MAP), perk_progress(SUPPORT_SPEC_LEVELS_MAP), perk_progress(COMMANDO_LEVELS_MAP), ]) count += 1 players_header_list = ["N", "Name", "Berserk", "Sharpshooter", "Firebug", "FieldMedic", "Demolitions", "SupportSpec", "Commando"] return html.tableWithHeader(players_header_list, players_list)