make large badge number human readable
Signed-off-by: Julien Flawinne <jf.satnogs at protonmail dot com>spacecruft
parent
cbd0ec096a
commit
05d4f8a705
|
@ -1,7 +1,9 @@
|
|||
"""Miscellaneous functions for SatNOGS DB"""
|
||||
import binascii
|
||||
import logging
|
||||
import math
|
||||
from datetime import datetime, timedelta
|
||||
from decimal import Decimal
|
||||
|
||||
from django.conf import settings
|
||||
from django.core.cache import cache
|
||||
|
@ -318,3 +320,25 @@ def cache_statistics():
|
|||
latest_payload=Max('timestamp')) \
|
||||
.order_by('-count')
|
||||
cache.set('stats_observers', observers, 60 * 60 * 2)
|
||||
|
||||
|
||||
def remove_exponent(converted_number):
|
||||
"""Remove exponent."""
|
||||
return converted_number.quantize(
|
||||
Decimal(1)
|
||||
) if converted_number == converted_number.to_integral() else converted_number.normalize()
|
||||
|
||||
|
||||
def millify(number, precision=0):
|
||||
"""Humanize number."""
|
||||
millnames = ['', 'k', 'M', 'B', 'T', 'P', 'E', 'Z', 'Y']
|
||||
number = float(number)
|
||||
millidx = max(
|
||||
0,
|
||||
min(
|
||||
len(millnames) - 1, int(math.floor(0 if number == 0 else math.log10(abs(number)) / 3))
|
||||
)
|
||||
)
|
||||
result = '{:.{precision}f}'.format(number / 10**(3 * millidx), precision=precision)
|
||||
result = remove_exponent(Decimal(result))
|
||||
return '{0}{dx}'.format(result, dx=millnames[millidx])
|
||||
|
|
|
@ -26,7 +26,7 @@ from db.base.models import SERVICE_TYPE, TRANSMITTER_STATUS, \
|
|||
TRANSMITTER_TYPE, DemodData, Mode, Satellite, Transmitter, \
|
||||
TransmitterEntry, TransmitterSuggestion
|
||||
from db.base.tasks import export_frames
|
||||
from db.base.utils import cache_statistics
|
||||
from db.base.utils import cache_statistics, millify
|
||||
|
||||
LOGGER = logging.getLogger('db')
|
||||
|
||||
|
@ -183,7 +183,8 @@ def satellite(request, norad):
|
|||
'latest_frame': latest_frame,
|
||||
'frame_count': frame_count,
|
||||
'mapbox_token': settings.MAPBOX_TOKEN,
|
||||
'recent_observers': recent_observers
|
||||
'recent_observers': recent_observers,
|
||||
'badge_telemetry_count': millify(satellite_obj.telemetry_data_count)
|
||||
}
|
||||
)
|
||||
|
||||
|
|
|
@ -56,7 +56,7 @@
|
|||
aria-selected="false">
|
||||
<i class="nav-icon fas fa-chart-bar"></i>
|
||||
{% if satellite.telemetry_data_count %}
|
||||
<span class="badge badge-satnogs-primary navbar-badge">{{ satellite.telemetry_data_count }}</span>
|
||||
<span class="badge badge-satnogs-primary navbar-badge">{{ badge_telemetry_count }}</span>
|
||||
{% endif %}
|
||||
<p class="d-none d-lg-inline-block">Data</p>
|
||||
</a>
|
||||
|
|
Loading…
Reference in New Issue