Django+echart draws a graph

Disclaimer: Please download to the official website to download echarts in advance, and this article refers to the adminlte template to build the front page

views:

<!-- /.row -->
        <div class="row">
        <div class="col-xs-12">
          <!-- interactive chart -->
          <div class="box box-primary">
            <div class="box-header with-border">
              <i class="fa fa-bar-chart-o"></i>

              <h3 class="box-title">Internet Trends</h3>
                 <div class="box-tools pull-right">
                <button type="button" class="btn btn-box-tool" data-widget="collapse"><i class="fa fa-minus"></i>
                </button>
                <button type="button" class="btn btn-box-tool" data-widget="remove"><i class="fa fa-times"></i></button>
              </div>
            </div>
            <div class="box-body">
              <div class="row">
                  <div class="col-md-9">
                      </div>
            <div class="col-md-3">
            <form action="" method="post" id="net_range">
                <div class="box-tools">
              <div class="form-group" >
                <select onchange="submitForm_net();" class="form-control select2" style="width: 100%;" name="select_net">
                <span class="glyphicon glyphicon-search form-control-feedback"></span>
                  <option selected="selected">{{ net_range_default }}</option>
                  <option>0.5小时</option>
                    <option>1小时</option>
                  <option>1天 </option>
                  <option>7天 </option>
                  <option>30天 </option>
                </select>
              </div>
              <!-- /.form-group -->
            </div>
            <!-- /.col -->
            </form>
          </div>
          <!-- /.row -->
        </div>
              <div class="net" id="net-grow-chart" style="height: 300px;"></div>
            </div>
            <!-- /.box-body-->
          </div>
          <!-- /.box -->

        </div>
        <!-- /.col -->
      </div>
      <!-- /.row -->

Select box:

  //form submit
function submitForm_net(){
    var form_net = document.getElementById("net_range");
    form_net.submit();
}

ECAHRTS:

  // #################### [Network Traffic Trend] Graphic ####################
 var myChart_net_grow = echarts.init(document.getElementById('net-grow-chart'));
 option_net_grow = {
     title: {
         text: 'Network traffic',
         subtext: ''
     },
     tooltip: {
         trigger: 'axis',
         axisPointer: {
             type: 'cross'
         }
     },
         legend: {
        data:['Receive traffic (kbps)','Send traffic (kbps)']
    },
     toolbox: {
         show: true,
         feature: {
             saveAsImage: {}
         }
     },
     xAxis: A
         type: 'category',
         boundaryGap: false,
         zlevel: 1,
         data: [{% for i in netgrow_list %}'{{ i.chk_time | date:"m-d H:i:s" }}',{% endfor %}]
     },
     yAxis: {
         type: 'value',
         axisLabel: {
             formatter: '{value}'
         },
         axisPointer: {
             snap: true
         },
         max:100,
         min: 0
     },
     series: [
         {
             name:'Receive traffic (kbps)',
             type:'line',
             smooth: true,
             data: [{% for i in netgrow_list %}{{ i.recv_kbps }},{% endfor %}]
         },
               {
             name:'Send traffic (kbps)',
             type:'line',
             smooth: true,
             data: [{% for i in netgrow_list %}{{ i.send_kbps }},{% endfor %}]
         }
     ]
 };
 myChart_net_grow.showLoading();  //显示loading
 setInterval(function () {
     myChart_net_grow.hideLoading(); //Do not display loading after display is complete
     myChart_net_grow.setOption(option_net_grow, true);
 },500);

VIEWS:

@login_required(login_url='/login')
def linux_monitor(request):
    messageinfo_list = models.TabAlarmInfo.objects.all()
    tagsdefault = request.GET.get('tagsdefault')
    if not tagsdefault:
        tagsdefault = models.TabLinuxServers.objects.order_by('tags')[0].tags
    cpu_range_defualt =   request.GET.get('cpu_range_default')
    if not cpu_range_defualt:
        cpu_range_defualt = '1 hour'.decode("utf-8")
    mem_range_default = request.GET.get('mem_range_default')
    if not mem_range_default:
        mem_range_default = '1 hour'.decode("utf-8")
    net_range_default = request.GET.get('net_range_default')
    if not net_range_default:
        net_range_default = '1 hour'.decode("utf-8")
    hostinfo = models.TabLinuxServers.objects.all().order_by('tags')

    net_begin_time = tools.range(net_range_default)
    cpu_begin_time = tools.range(cpu_range_defualt)
    mem_begin_time = tools.range(mem_range_default)
    end_time = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")

    netgrow = models.OsInfoHis.objects.filter(tags=tagsdefault, recv_kbps__isnull=False).filter(
        chk_time__gt=net_begin_time, chk_time__lt=end_time).order_by('-chk_time')
    netgrow_list = list(netgrow)
    netgrow_list.reverse()

    cpugrow = models.OsInfoHis.objects.filter(tags=tagsdefault, cpu_used__isnull=False).filter(
        chk_time__gt=cpu_begin_time, chk_time__lt=end_time).order_by('-chk_time')
    cpugrow_list = list(cpugrow)
    cpugrow_list.reverse()

    memgrow = models.OsInfoHis.objects.filter(tags=tagsdefault, mem_used__isnull=False).filter(
        chk_time__gt=mem_begin_time, chk_time__lt=end_time).order_by('-chk_time')
    memgrow_list = list(memgrow)
    memgrow_list.reverse()

    diskinfos = models.OsFilesystem.objects.filter(tags=tagsdefault)

    try:
        osinfo = models.OsInfo.objects.get(tags=tagsdefault)
    except models.OsInfo.DoesNotExist:
        osinfo = models.OsInfoHis.objects.filter(tags=tagsdefault,cpu_used__isnull=False).order_by('-chk_time')[0]

    if request.method == 'POST':
        if request.POST.has_key('select_tags') or request.POST.has_key('select_cpu')or request.POST.has_key('select_mem') or request.POST.has_key('select_net'):
            if request.POST.has_key('select_tags'):
                tagsdefault = request.POST.get('select_tags', None).encode("utf-8")
            elif request.POST.has_key('select_net'):
                net_range_defualt = request.POST.get('select_net',None)
            elif request.POST.has_key('select_cpu'):
                cpu_range_defualt = request.POST.get('select_cpu',None)
            elif request.POST.has_key('select_mem'):
                mem_range_default = request.POST.get('select_mem', None)
            return HttpResponseRedirect('/linux_monitor?tagsdefault=%s&net_range_default=%s&cpu_range_default=%s&mem_range_default=%s' %(tagsdefault,net_range_default,cpu_range_defualt,mem_range_default))

        else:
            logout(request)
            return HttpResponseRedirect('/login/')

    if messageinfo_list:
        msg_num = len(messageinfo_list)
        msg_last = models.TabAlarmInfo.objects.latest('id')
        msg_last_content = msg_last.alarm_content
        tim_last = (datetime.datetime.now() - msg_last.alarm_time).seconds / 60
        return render_to_response('linux_monitor.html', {'netgrow_list':netgrow_list,'cpugrow_list':cpugrow_list,'memgrow_list':memgrow_list, 'tagsdefault':tagsdefault, 'hostinfo':hostinfo, 'osinfo': osinfo,'net_range_default':net_range_default,'cpu_range_default':cpu_range_defualt,'mem_range_default':mem_range_default, 'messageinfo_list': messageinfo_list,
                                                   'msg_num': msg_num,'msg_last_content': msg_last_content, 'tim_last': tim_last,'diskinfos':diskinfos})
    else:
        return render_to_response('linux_monitor.html', {'netgrow_list':netgrow_list,'cpugrow_list':cpugrow_list,'memgrow_list':memgrow_list, 'tagsdefault':tagsdefault, 'hostinfo':hostinfo, 'osinfo': osinfo,'net_range_default':net_range_default,'cpu_range_default':cpu_range_defualt,'mem_range_default':mem_range_default,'diskinfos':diskinfos})

Effect picture:


Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=324755059&siteId=291194637