Browse Source

Merge branch 'devel' of https://github.com/bashmak/djing into devel

devel
http 9 years ago
parent
commit
cf61c1e5c5
  1. 1
      abonapp/templates/abonapp/buy_tariff.html
  2. 67
      abonapp/templates/abonapp/charts.html
  3. 4
      abonapp/templates/abonapp/peoples.html
  4. 19
      abonapp/views.py
  5. 4
      static/css/all.min.css
  6. 8
      static/css/custom.css
  7. 16
      static/js/Chart.bundle.min.js
  8. 14
      static/js/Chart.min.js
  9. 23
      static/js/all.min.js
  10. 562
      static/js/datetime_with_moment.min.js
  11. 2
      templates/all_base.html

1
abonapp/templates/abonapp/buy_tariff.html

@ -38,7 +38,6 @@
<div class="input-group">
<span class="input-group-addon"><span class="glyphicon glyphicon-calendar"></span></span>
<input type="text" class="form-control" name="deadline" id="id_deadline" value="{{ tariffs.0.calc_deadline|date:"Y-m-d" }}">
<script type="text/javascript" src="/static/js/datetime_with_moment.min.js"></script>
<script type="text/javascript">
$(function () {
$('#id_deadline').datetimepicker({

67
abonapp/templates/abonapp/charts.html

@ -10,42 +10,41 @@
</div>
<div class="panel-body">
{% if charts_data %}
<canvas id="netChart" width="300" height="100"></canvas>
<script type="text/javascript">
var myChart = new Chart('netChart', {
type: 'line',
data: {
datasets: [{
label: 'Траффик в Mbit/s',
data: [{{ charts_data }}],
borderWidth: 1,
pointRadius: 0,
lineTension: 0
}]
},
options: {
scales: {
xAxes: [{
type: 'time',
time: {
unit: 'hour',
min: {{ time_min }},
max: {{ time_max }}
},
position: 'bottom'
}],
yAxes: [{
scaleLabel: {
display: true,
labelString: 'Mbit/s'
<div id="chrt"></div>
<script type="text/javascript">
$(document).ready(function ($) {
new Chartist.Line('#chrt', {
series: [
{
name: 'График траффика',
data: [
{{ charts_data }}
]
}
}]
}
}
});
</script>
]
}, {
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';
}
}
});
});
</script>
{% else %}
<h2>Данные не переданы</h2>
<h2>Данные не переданы</h2>
{% endif %}
</div>
</div>

4
abonapp/templates/abonapp/peoples.html

@ -104,7 +104,7 @@
</tr>
{% empty %}
<tr>
<td colspan="9">
<td colspan="10">
{% trans 'Subscribers not found' %}.
{% if perms.abonapp.add_abon %}
<a href="{% url 'abonapp:add_abon' abon_group.pk %}">{% trans 'Add abon' %}</a>
@ -115,7 +115,7 @@
</tbody>
<tfoot>
<tr>
<td colspan="9" class="btn-group">
<td colspan="10" class="btn-group">
{% if perms.abonapp.add_abon %}
<a href="{% url 'abonapp:add_abon' abon_group.pk %}" class="btn btn-sm btn-default" title="Добавить">
<span class="glyphicon glyphicon-plus"></span> {% trans 'Add abon' %}

19
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
})

4
static/css/all.min.css
File diff suppressed because it is too large
View File

8
static/css/custom.css

@ -231,3 +231,11 @@ button[data-toggle=offcanvas]{
background-color: #44596b;
border: 0;
}
/*
* Цвет заливки графика
*/
.ct-series-a .ct-area {
fill: black;
}

16
static/js/Chart.bundle.min.js
File diff suppressed because it is too large
View File

14
static/js/Chart.min.js
File diff suppressed because it is too large
View File

23
static/js/all.min.js
File diff suppressed because it is too large
View File

562
static/js/datetime_with_moment.min.js
File diff suppressed because it is too large
View File

2
templates/all_base.html

@ -8,8 +8,6 @@
<link rel="stylesheet" href="/static/css/all.min.css">
<link rel="stylesheet" href="/static/css/custom.css">
<script src="/static/js/all.min.js"></script>
<script src="/static/js/datetime_with_moment.min.js"></script>
<script src="/static/js/Chart.min.js"></script>
<script src="/static/js/my.js"></script>
<link rel="shortcut icon" href="/static/img/favicon_m.ico">
<meta name="author" content="Дмитрий Новиков">

Loading…
Cancel
Save