From 718e0851bbfff4ff76672d9d6fb79ba08896466c Mon Sep 17 00:00:00 2001 From: bashmak Date: Wed, 17 May 2017 13:31:27 +0300 Subject: [PATCH] =?UTF-8?q?=D0=93=D1=80=D0=B0=D1=84=D0=B8=D0=BA=20=D1=82?= =?UTF-8?q?=D0=B5=D0=BF=D0=B5=D1=80=D1=8C=20=D1=80=D0=B5=D0=B0=D0=BB=D0=B8?= =?UTF-8?q?=D0=B7=D1=83=D0=B5=D1=82=20Chartist.js?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- abonapp/templates/abonapp/charts.html | 67 +++++++++++++-------------- abonapp/views.py | 19 +++++--- 2 files changed, 46 insertions(+), 40 deletions(-) diff --git a/abonapp/templates/abonapp/charts.html b/abonapp/templates/abonapp/charts.html index 1be60c3..44dac59 100644 --- a/abonapp/templates/abonapp/charts.html +++ b/abonapp/templates/abonapp/charts.html @@ -10,42 +10,41 @@
{% if charts_data %} - - + ] + }, { + height: '600px', + showArea: true, + showLine: false, + showPoint: false, + high: {{ high }}, + axisX: { + type: Chartist.FixedScaleAxis, + divisor: 12, + labelInterpolationFnc: function (value) { + return moment(value).format('HH:mm:ss'); + } + }, + axisY: { + labelInterpolationFnc: function (value) { + return value + ' MBit/s'; + } + } + }); + }); + {% else %} -

Данные не переданы

+

Данные не переданы

{% endif %}
diff --git a/abonapp/views.py b/abonapp/views.py index 347c30c..b9e9e0f 100644 --- a/abonapp/views.py +++ b/abonapp/views.py @@ -712,6 +712,7 @@ def clear_dev(request, gid, uid): def charts(request, gid, uid): from statistics.models import getModel from datetime import datetime, date, time, timedelta + high = 100 def byte_to_mbit(x): return ((x/60)*8)/2**20 @@ -729,7 +730,16 @@ def charts(request, gid, uid): charts_data = StatElem.objects.filter(ip=abon.ip_address) #oct_limit = StatElem.percentile([cd.octets for cd in charts_data], 0.05) # ниже возвращаем пары значений трафика который переведён в mByte, и unix timestamp - charts_data = ["{x:%d,y:%.4f}" % (cd.cur_time.timestamp(), byte_to_mbit(cd.octets)) for cd in charts_data] + midnight = datetime.combine(date.today(), time.min) + charts_data = [(cd.cur_time.timestamp()*1000, byte_to_mbit(cd.octets)) for cd in charts_data] + charts_data.append( (charts_data[-1:][0][0], 0.0) ) + charts_data = ["{x: new Date(%d), y: %.2f}" % (cd[0], cd[1]) for cd in charts_data] + charts_data.append("{x:new Date(%d),y:0}" % (int((midnight + timedelta(days=1)).timestamp()) * 1000)) + + abontariff = abon.active_tariff() + high = abontariff.speedIn + abontariff.speedOut + if high > 100: + high = 100 except models.Abon.DoesNotExist: messages.error(request, _('Abon does not exist')) @@ -741,14 +751,11 @@ def charts(request, gid, uid): messages.error(request, e) return redirect('abonapp:abon_home', gid=gid, uid=uid) - midnight = datetime.combine(date.today(), time.min) - return render(request, 'abonapp/charts.html', { 'abon_group': abongroup, 'abon': abon, - 'charts_data': ','.join(charts_data) if charts_data is not None else None, - 'time_min': int(midnight.timestamp()), - 'time_max': int((midnight + timedelta(hours=23, minutes=59, seconds=59)).timestamp()) + 'charts_data': ',\n'.join(charts_data) if charts_data is not None else None, + 'high': high })