Browse Source

continue

devel
bashmak 9 years ago
parent
commit
3813c7eaba
  1. 17
      abonapp/templates/abonapp/charts.html
  2. 14
      abonapp/views.py

17
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'
}
}]
}
}

14
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())
})

Loading…
Cancel
Save