|
1009 | 1009 |
|
1010 | 1010 | {# ── Card 4: Speed (Speedtest Tracker) ── #} |
1011 | 1011 | {% if speedtest_configured and speedtest_latest %} |
1012 | | - <div class="metric-card health-good"> |
| 1012 | + {# Compute speed health based on booked speed: >=80% good, 50-80% warn, <50% crit #} |
| 1013 | + {% if booked_download and booked_download > 0 %} |
| 1014 | + {% set dl_ratio = speedtest_latest.download_mbps / booked_download %} |
| 1015 | + {% if dl_ratio >= 0.8 %} |
| 1016 | + {% set speed_health = 'health-good' %} |
| 1017 | + {% set dl_val_class = 'val-good' %} |
| 1018 | + {% elif dl_ratio >= 0.5 %} |
| 1019 | + {% set speed_health = 'health-warn' %} |
| 1020 | + {% set dl_val_class = 'val-warn' %} |
| 1021 | + {% else %} |
| 1022 | + {% set speed_health = 'health-crit' %} |
| 1023 | + {% set dl_val_class = 'val-bad' %} |
| 1024 | + {% endif %} |
| 1025 | + {% else %} |
| 1026 | + {% set speed_health = 'health-good' %} |
| 1027 | + {% set dl_val_class = 'val-good' %} |
| 1028 | + {% endif %} |
| 1029 | + {% if booked_upload and booked_upload > 0 %} |
| 1030 | + {% set ul_ratio = speedtest_latest.upload_mbps / booked_upload %} |
| 1031 | + {% if ul_ratio >= 0.8 %} |
| 1032 | + {% set ul_val_class = 'val-good' %} |
| 1033 | + {% elif ul_ratio >= 0.5 %} |
| 1034 | + {% set ul_val_class = 'val-warn' %} |
| 1035 | + {% else %} |
| 1036 | + {% set ul_val_class = 'val-bad' %} |
| 1037 | + {% endif %} |
| 1038 | + {% else %} |
| 1039 | + {% set ul_val_class = 'val-good' %} |
| 1040 | + {% endif %} |
| 1041 | + <div class="metric-card {{ speed_health }}"> |
1013 | 1042 | <div class="metric-card-header" onclick="toggleCard(this.parentNode)"> |
1014 | 1043 | <span class="status-dot"></span> |
1015 | 1044 | <span class="card-title">⚡ {{ t.speed }}</span> |
|
1018 | 1047 | <div class="metric-card-body"> |
1019 | 1048 | <div class="metric-row"> |
1020 | 1049 | <div class="metric-item"> |
1021 | | - <div class="metric-value val-good">{{ speedtest_latest.download_human or (speedtest_latest.download_mbps ~ ' Mbps') }}</div> |
| 1050 | + <div class="metric-value {{ dl_val_class }}">{{ speedtest_latest.download_human or (speedtest_latest.download_mbps ~ ' Mbps') }}</div> |
1022 | 1051 | <div class="metric-label">{{ t.download }}</div> |
1023 | 1052 | </div> |
1024 | 1053 | <div class="metric-item"> |
1025 | | - <div class="metric-value val-good">{{ speedtest_latest.upload_human or (speedtest_latest.upload_mbps ~ ' Mbps') }}</div> |
| 1054 | + <div class="metric-value {{ ul_val_class }}">{{ speedtest_latest.upload_human or (speedtest_latest.upload_mbps ~ ' Mbps') }}</div> |
1026 | 1055 | <div class="metric-label">{{ t.upload }}</div> |
1027 | 1056 | </div> |
1028 | 1057 | </div> |
|
0 commit comments