diff --git a/abonapp/templates/abonapp/charts.html b/abonapp/templates/abonapp/charts.html
index 9678b55..7c9373e 100644
--- a/abonapp/templates/abonapp/charts.html
+++ b/abonapp/templates/abonapp/charts.html
@@ -15,11 +15,11 @@
type: 'line',
data: {
datasets: [{
- label: 'Траффик абонента',
+ label: 'Траффик в Mbit/s',
data: [{{ charts_data }}],
borderWidth: 1,
- pointRadius: 1,
- lineTension: 0.1
+ pointRadius: 0,
+ lineTension: 0
}]
},
options: {
@@ -29,12 +29,15 @@
time: {
unit: 'hour',
min: {{ time_min }},
- max: {{ time_max }},
- displayFormats: {
- hour: 'HH:MM:SS'
- }
+ max: {{ time_max }}
},
position: 'bottom'
+ }],
+ yAxes: [{
+ scaleLabel: {
+ display: true,
+ labelString: 'Mbit/s'
+ }
}]
}
}
diff --git a/abonapp/views.py b/abonapp/views.py
index 2fba1e5..60da4c1 100644
--- a/abonapp/views.py
+++ b/abonapp/views.py
@@ -650,6 +650,9 @@ def chgroup_tariff(request, gid):
def charts(request, gid, uid):
from statistics.models import getModel
from datetime import datetime, date, time, timedelta
+
+ def byte_to_mbit(x):
+ return ((x/60)*8)/2**20
try:
StatElem = getModel()
abon = models.Abon.objects.get(pk=uid)
@@ -662,9 +665,10 @@ def charts(request, gid, uid):
charts_data = None
else:
charts_data = StatElem.objects.filter(ip=abon.ip_address.ip)
- oct_limit = StatElem.percentile([cd.octets for cd in charts_data], 0.05)
- charts_data = ["{x:%d,y:%d}" % (cd.cur_time.timestamp(), cd.octets) for cd in charts_data if
- cd.octets < oct_limit and cd.octets > 102400]
+ oct_limit = StatElem.percentile([cd.octets for cd in charts_data], 0.01)
+ # ниже возвращаем пары значений трафика который переведён в mByte, и unix timestamp
+ charts_data = ["{x:%d,y:%.4f}" % (cd.cur_time.timestamp(), byte_to_mbit(cd.octets)) for cd in charts_data if
+ cd.octets < oct_limit]
except models.Abon.DoesNotExist:
messages.error(request, _('Abon does not exist'))
@@ -682,8 +686,8 @@ def charts(request, gid, uid):
'abon_group': abongroup,
'abon': abon,
'charts_data': ','.join(charts_data),
- 'time_min': midnight.timestamp(),
- 'time_max': (midnight + timedelta(hours=23, minutes=59, seconds=59)).timestamp()
+ 'time_min': int(midnight.timestamp()),
+ 'time_max': int((midnight + timedelta(hours=23, minutes=59, seconds=59)).timestamp())
})