1.3.0: Updated ONLINE.
This commit is contained in:
@@ -2,3 +2,5 @@ Flask
|
|||||||
pandas
|
pandas
|
||||||
numpy
|
numpy
|
||||||
playwright
|
playwright
|
||||||
|
gunicorn
|
||||||
|
gevent
|
||||||
|
|||||||
@@ -295,7 +295,9 @@ class FeatureService:
|
|||||||
SUM(first_death) as sum_fd,
|
SUM(first_death) as sum_fd,
|
||||||
SUM(clutch_1v1) as sum_1v1,
|
SUM(clutch_1v1) as sum_1v1,
|
||||||
SUM(clutch_1v2) as sum_1v2,
|
SUM(clutch_1v2) as sum_1v2,
|
||||||
SUM(clutch_1v3) + SUM(clutch_1v4) + SUM(clutch_1v5) as sum_1v3p,
|
SUM(clutch_1v3) as sum_1v3,
|
||||||
|
SUM(clutch_1v4) as sum_1v4,
|
||||||
|
SUM(clutch_1v5) as sum_1v5,
|
||||||
SUM(kill_2) as sum_2k,
|
SUM(kill_2) as sum_2k,
|
||||||
SUM(kill_3) as sum_3k,
|
SUM(kill_3) as sum_3k,
|
||||||
SUM(kill_4) as sum_4k,
|
SUM(kill_4) as sum_4k,
|
||||||
@@ -340,6 +342,15 @@ class FeatureService:
|
|||||||
df['basic_avg_kill_3'] = df['sum_3k'] / df['matches_played']
|
df['basic_avg_kill_3'] = df['sum_3k'] / df['matches_played']
|
||||||
df['basic_avg_kill_4'] = df['sum_4k'] / df['matches_played']
|
df['basic_avg_kill_4'] = df['sum_4k'] / df['matches_played']
|
||||||
df['basic_avg_kill_5'] = df['sum_5k'] / df['matches_played']
|
df['basic_avg_kill_5'] = df['sum_5k'] / df['matches_played']
|
||||||
|
|
||||||
|
# New Metrics
|
||||||
|
df['basic_multi_kill_rate'] = (df['sum_2k'] + df['sum_3k'] + df['sum_4k'] + df['sum_5k']) / df['rounds_played'].replace(0, 1)
|
||||||
|
df['basic_total_1v1'] = df['sum_1v1']
|
||||||
|
df['basic_total_1v2'] = df['sum_1v2']
|
||||||
|
df['basic_total_1v3'] = df['sum_1v3']
|
||||||
|
df['basic_total_1v4'] = df['sum_1v4']
|
||||||
|
df['basic_total_1v5'] = df['sum_1v5']
|
||||||
|
|
||||||
df['basic_avg_assisted_kill'] = df['sum_assist'] / df['matches_played']
|
df['basic_avg_assisted_kill'] = df['sum_assist'] / df['matches_played']
|
||||||
df['basic_avg_perfect_kill'] = df['sum_perfect'] / df['matches_played']
|
df['basic_avg_perfect_kill'] = df['sum_perfect'] / df['matches_played']
|
||||||
df['basic_avg_revenge_kill'] = df['sum_revenge'] / df['matches_played']
|
df['basic_avg_revenge_kill'] = df['sum_revenge'] / df['matches_played']
|
||||||
|
|||||||
@@ -222,8 +222,16 @@
|
|||||||
{{ detail_item('3K Rounds (三杀)', features['basic_avg_kill_3'], 'basic_avg_kill_3') }}
|
{{ detail_item('3K Rounds (三杀)', features['basic_avg_kill_3'], 'basic_avg_kill_3') }}
|
||||||
{{ detail_item('4K Rounds (四杀)', features['basic_avg_kill_4'], 'basic_avg_kill_4') }}
|
{{ detail_item('4K Rounds (四杀)', features['basic_avg_kill_4'], 'basic_avg_kill_4') }}
|
||||||
{{ detail_item('5K Rounds (五杀)', features['basic_avg_kill_5'], 'basic_avg_kill_5') }}
|
{{ detail_item('5K Rounds (五杀)', features['basic_avg_kill_5'], 'basic_avg_kill_5') }}
|
||||||
|
{{ detail_item('Multi-Kill % (多杀率)', features['basic_multi_kill_rate'], 'basic_multi_kill_rate', '{:.1%}') }}
|
||||||
|
|
||||||
<!-- Row 6: Special -->
|
<!-- Row 6: Clutch -->
|
||||||
|
{{ detail_item('1v1 Wins (1v1胜)', features['basic_total_1v1'], 'basic_total_1v1', '{:.0f}') }}
|
||||||
|
{{ detail_item('1v2 Wins (1v2胜)', features['basic_total_1v2'], 'basic_total_1v2', '{:.0f}') }}
|
||||||
|
{{ detail_item('1v3 Wins (1v3胜)', features['basic_total_1v3'], 'basic_total_1v3', '{:.0f}') }}
|
||||||
|
{{ detail_item('1v4 Wins (1v4胜)', features['basic_total_1v4'], 'basic_total_1v4', '{:.0f}') }}
|
||||||
|
{{ detail_item('1v5 Wins (1v5胜)', features['basic_total_1v5'], 'basic_total_1v5', '{:.0f}') }}
|
||||||
|
|
||||||
|
<!-- Row 7: Special -->
|
||||||
{{ detail_item('Perfect Kills (无伤杀)', features['basic_avg_perfect_kill'], 'basic_avg_perfect_kill') }}
|
{{ detail_item('Perfect Kills (无伤杀)', features['basic_avg_perfect_kill'], 'basic_avg_perfect_kill') }}
|
||||||
{{ detail_item('Revenge Kills (复仇杀)', features['basic_avg_revenge_kill'], 'basic_avg_revenge_kill') }}
|
{{ detail_item('Revenge Kills (复仇杀)', features['basic_avg_revenge_kill'], 'basic_avg_revenge_kill') }}
|
||||||
</div>
|
</div>
|
||||||
@@ -602,7 +610,7 @@ document.addEventListener('DOMContentLoaded', function() {
|
|||||||
// Map friendly names to keys
|
// Map friendly names to keys
|
||||||
const keys = ['score_bat', 'score_hps', 'score_ptl', 'score_tct', 'score_util', 'score_sta'];
|
const keys = ['score_bat', 'score_hps', 'score_ptl', 'score_tct', 'score_util', 'score_sta'];
|
||||||
// Corresponding Labels
|
// Corresponding Labels
|
||||||
const rawLabels = ['Aim (BAT)', 'Clutch (HPS)', 'Pistol (PTL)', 'Defense (SIDE)', 'Util (UTIL)', 'Rating (STA)'];
|
const rawLabels = ['Aim (BAT)', 'Clutch (HPS)', 'Pistol (PTL)', 'Defense (SIDE)', 'Util (UTIL)', 'Stability (STA)'];
|
||||||
|
|
||||||
const labels = rawLabels.map((l, i) => {
|
const labels = rawLabels.map((l, i) => {
|
||||||
const k = keys[i];
|
const k = keys[i];
|
||||||
|
|||||||
Reference in New Issue
Block a user