From 3813c7eaba1e7c103e3b12fd7e0559e27cd0cf07 Mon Sep 17 00:00:00 2001 From: bashmak Date: Wed, 10 May 2017 16:48:03 +0300 Subject: [PATCH] continue --- abonapp/templates/abonapp/charts.html | 17 ++++++++++------- abonapp/views.py | 14 +++++++++----- 2 files changed, 19 insertions(+), 12 deletions(-) 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()) })