This repository has been archived on 2025-09-14. You can view files and clone it, but cannot push or open issues or pull requests.
Files
k18-ntcs-web-ntc/src/main/webapp/WEB-INF/views/dashboard/trafficAppTrendList.jsp

1500 lines
51 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<%@ page contentType="text/html;charset=UTF-8"%>
<%@ include file="/WEB-INF/include/taglib.jsp"%>
<html>
<head>
<title><spring:message code="app"></spring:message>
</title>
<link rel="stylesheet" href="${pageContext.request.contextPath}/static/pages/css/dashboard.css">
<link rel="stylesheet" href="${pageContext.request.contextPath}/static/pages/css/pagination.css">
<script src="${pageContext.request.contextPath}/static/pages/scripts/jquery.pagination.js"></script>
<script src="${ctxStatic }/global/plugins/tableExport-3.3.13/xlsx.core.js"></script>
<script src="${ctxStatic }/global/plugins/tableExport-3.3.13/FileSaver.js"></script>
<script src="${ctxStatic }/global/plugins/tableExport-3.3.13/tableexport.js"></script>
</head>
<body>
<div class="page-content">
<div class="theme-panel hidden-xs hidden-sm">
<button type="button" class="btn btn-default"
onClick="javascript:window.location.reload()">
<i class="fa fa-refresh"></i>
</button>
<button type="button" class="btn btn-default" onClick="javascript:window.location='${ctx}/dashboard/traffic/appTypeList'">
<i class="fa fa-history"></i>
</button>
</div>
<h3 class="page-title">
${appName}
</h3>
<h5 class="page-header"></h5>
<ul class="nav nav-tabs">
<li class="changeData active" value="1"><a href="javascript:void(0);"><spring:message code="real_time"/></a></li>
<li class="changeData" value="2"><a href="javascript:void(0);"><spring:message code="history"/></a></li>
</ul>
<br>
<div class="row chart-realTime">
<form:form id="searchForm1" method="get" class="form-search">
<!-- 搜索内容与操作按钮栏 -->
<div class="col-md-12">
<div class="pull-left">
<div class="input-group">
<div class="input-group-btn">
<span class="selectpicker form-control" ><spring:message code="area_id"/></span>
</div>
<select id="entranceId1" name="entranceId" class="selectpicker form-control" width="100px" data-live-search="true" data-live-search-placeholder="search">
<option value=""><spring:message code="select"/></option>
<c:forEach items="${fns:getDictList('ENTRANCE')}" var="dict" >
<c:if test="${!empty entranceId }">
<option value="${dict.itemCode}" <c:if test="${entranceId==dict.itemCode }">selected</c:if>><spring:message code="${dict.itemValue}"></spring:message></option>
</c:if>
<c:if test="${empty entranceId }">
<option value="${dict.itemCode}"><spring:message code="${dict.itemValue}"></spring:message></option>
</c:if>
</c:forEach>
</select>
</div>
</div>
<div class="pull-left">
<div class="input-group">
<div class="input-group-btn">
<span class="selectpicker form-control" ><spring:message code="isp"/></span>
</div>
<select id="isp1" name="isp" class="selectpicker form-control input-medium" data-max-options="10" data-selected-text-format="count > 3" multiple data-live-search="true" data-live-search-placeholder="search">
<%-- <option value=""><spring:message code="select"/></option> --%>
<c:forEach items="${fns:getIspDicList('ispCode')}" var="dict" >
<option value="${dict.ispKeyCode}"><spring:message code="${dict.ispKeyName}"></spring:message></option>
</c:forEach>
</select>
</div>
</div>
<div class="pull-left">
<button type="button" class="btn blue"
onClick="return searchList1()">
<i class="fa fa-search"></i>
<spring:message code="search" />
</button>
<button type="button" class="btn btn-default" id="resetBtn1">
<i class="fa fa-refresh"></i>
<spring:message code="reset" />
</button>
</div>
</div>
<!-- 搜索内容与操作按钮栏 -->
</form:form>
</div>
<div class="row chart-history hidden">
<form:form id="searchForm2" method="get" class="form-search">
<!-- 搜索内容与操作按钮栏 -->
<div class="col-md-12">
<div class="pull-left chart-history">
<div class="input-group">
<div class="input-group-btn">
<span class="selectpicker form-control"><spring:message
code="begin_date" /></span>
</div>
<input name="beginDate" id="beginDate" type="text" readonly="readonly" maxlength="20" class="form-control Wdate input-medium"
value="" onclick="WdatePicker({onpicked:function(){this.onchange()},dateFmt:'yyyy-MM-dd HH:mm:ss',isShowClear:true,maxDate:'#F{\'new Date()\'}'});" onchange="setStartTime('#beginDate','#endDate',1,'m','yyyy-MM-dd hh:mm:ss',false)"/>
</div>
</div>
<div class="pull-left chart-history">
<div class="input-group">
<div class="input-group-btn">
<span class="selectpicker form-control"><spring:message
code="end_date" /></span>
</div>
<input name="endDate" id="endDate" type="text" readonly="readonly" maxlength="20" class="form-control Wdate input-medium"
value="" onclick="WdatePicker({onpicked:function(){this.onchange()},dateFmt:'yyyy-MM-dd HH:mm:ss',isShowClear:true,maxDate:'#F{\'new Date()\'}'});" onchange="setEndTime('#beginDate','#endDate',1,'m','yyyy-MM-dd hh:mm:ss',false)"/>
</div>
</div>
<div class="pull-left">
<div class="input-group">
<div class="input-group-btn">
<span class="selectpicker form-control" ><spring:message code="area_id"/></span>
</div>
<select id="entranceId2" name="entranceId" class="selectpicker form-control" width="100px" data-live-search="true" data-live-search-placeholder="search">
<option value=""><spring:message code="select"/></option>
<c:forEach items="${fns:getDictList('ENTRANCE')}" var="dict" >
<c:if test="${!empty entranceId }">
<option value="${dict.itemCode}" <c:if test="${entranceId==dict.itemCode }">selected</c:if>><spring:message code="${dict.itemValue}"></spring:message></option>
</c:if>
<c:if test="${empty entranceId }">
<option value="${dict.itemCode}"><spring:message code="${dict.itemValue}"></spring:message></option>
</c:if>
</c:forEach>
</select>
</div>
</div>
<div class="pull-left">
<div class="input-group">
<div class="input-group-btn">
<span class="selectpicker form-control" ><spring:message code="isp"/></span>
</div>
<select id="isp2" name="isp" class="selectpicker form-control input-medium" data-max-options="10" data-selected-text-format="count > 3" multiple data-live-search="true" data-live-search-placeholder="search">
<%-- <option value=""><spring:message code="select"/></option> --%>
<c:forEach items="${fns:getIspDicList('ispCode')}" var="dict" >
<option value="${dict.ispKeyCode}"><spring:message code="${dict.ispKeyName}"></spring:message></option>
</c:forEach>
</select>
</div>
</div>
<div class="pull-left">
<button type="button" class="btn blue"
onClick="return searchList2()">
<i class="fa fa-search"></i>
<spring:message code="search" />
</button>
<button type="button" class="btn btn-default" id="resetBtn2">
<i class="fa fa-refresh"></i>
<spring:message code="reset" />
</button>
</div>
</div>
<!-- 搜索内容与操作按钮栏 -->
</form:form>
</div>
<br>
<div class="row">
<div class="col-md-12 " id="appSelect">
<select id="unitType" class="selectpicker select2 input-small">
<option value="Unique Ip">Unique Ip</option>
<option value="Gbps">Gbps</option>
<option value="pps">pps</option>
</select>
</div>
</div>
<div class="row chart-realTime">
<div id="chart-realTime" style="width: 97%; height: 430px; margin-top: 20px"></div>
<input id="total" type="hidden" />
<input id="sipData" type="hidden" />
<input id="dipData" type="hidden" />
<input id="timeData" type="hidden" />
<input id="c2sData" type="hidden" />
<input id="s2cData" type="hidden" />
<input id="totalData" type="hidden" />
<input id="appType" name="appType" type="hidden" value="${appType}" />
<input id="beginDateh" type="hidden" value="${beginDate}" />
<input id="endDateh" type="hidden" value="${endDate}" />
</div>
<div class="row chart-history hidden">
<div id="chart-history" style="width: 97%; height: 430px; margin-top: 20px"></div>
</div>
<ul class="nav nav-tabs chart-history hidden">
<li class="searchQuota active" value="1" onclick="changeOrderby(1)"><a href="javascript:void(0);"><spring:message code="link_num"/></a></li>
<li class="searchQuota" value="2" onclick="changeOrderby(2)"><a href="javascript:void(0);"><spring:message code="packet"/></a></li>
<li class="searchQuota" value="3" onclick="changeOrderby(3)"><a href="javascript:void(0);"><spring:message code="byte"/></a></li>
</ul>
<div class="btn-group pull-right chart-history hidden" style="padding-top: 5px">
<button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown"><i class="fa fa-wrench"></i> <spring:message code="export"/>
<span class="caret"></span>
</button>
<ul class="dropdown-menu" role="menu" style="min-width: 81px;right: -12px;">
<li><a class="btn export-btn" data-type="xlsx" id="export-btn"><i class="fa fa-download"> </i> excel </a><li>
<li><a class="btn export-btn" data-type="csv" id="export-btn"><i class="fa fa-download"> </i> csv &nbsp;&nbsp;&nbsp;</a><li>
</ul>
<div class="btn-group">
<button type="button" class="btn btn-default css-print" onClick="doPrint()"><i class="fa glyphicon glyphicon-print" style="top:3px;margin-right: 3px;"></i><spring:message code="print"/></button>
</div>
</div>
<br>
<div class="row chart-history hidden" style="padding-top: 5px">
<div class="table-responsive">
<table id="contentTable" style="width: 100%;"
class="table table-striped table-bordered table-condensed text-nowrap">
<thead>
<tr>
<th><spring:message code="client_ip"/></th>
<%-- <th><spring:message code="isp"/></th> --%>
<th><spring:message code="link_num"/></th>
<th><spring:message code="percentage"/> (<spring:message code="link_num"/>)</th>
<th><spring:message code="packets"/></th>
<th><spring:message code="pps"/></th>
<th><spring:message code="percentage"/> (<spring:message code="packets"/>)</th>
<th><spring:message code="bytes"/></th>
<th class='lowercase'><spring:message code="bps"/></th>
<th><spring:message code="percentage"/> (<spring:message code="bytes"/>)</th>
</tr>
</thead>
<tbody id="tableData"></tbody>
</table>
<div id="page" class="pageView"><div class="M-box"></div><div class="pageMessage"> <spring:message code="current"/> <input type="text" class="pageCurrent" readonly="readonly"/> / <span class="pageNum"></span> <spring:message code="page"/> , <spring:message code="total"/> <span class="pageTotal"></span> <spring:message code="count"/></div></div>
<div class="none-data"><i class="fa fa-warning font-red-flamingo"></i>&nbsp;&nbsp;<spring:message code="noneData"/></div>
</div>
</div>
</div>
<script src="${pageContext.request.contextPath}/static/global/plugins/highcharts/js/highcharts.js"></script>
<script src="${pageContext.request.contextPath}/static/global/plugins/highcharts/js/exporting.js"></script>
<%-- <script src="${pageContext.request.contextPath}/static/global/plugins/highcharts/js/series-label.js"></script> --%>
<script src="${pageContext.request.contextPath}/static/global/plugins/highcharts/js/offline-exporting.js"></script>
<script src="${pageContext.request.contextPath}/static/global/plugins/highcharts/js/exporting-data.js"></script>
<script src="${pageContext.request.contextPath}/static/global/plugins/highcharts/js/standalone.js"></script>
<script src="${pageContext.request.contextPath}/static/global/plugins/highcharts/js/no-data-to-display.js"></script>
<script type="text/javascript">
var appName="${appName}";
$(document).ready(function() {
var starth = $("#beginDateh").val();
var endh = $("#endDateh").val();
$("#beginDate").val(starth);
$("#endDate").val(endh);
var appType=$("#appType").val();
var entranceId1=$("#entranceId1").val();
var entranceId2=$("#entranceId2").val();
var isp1=$("#isp1").val();
var isp2=$("#isp2").val();
var unitType=$("#unitType").val();
var searchQuota=$(".searchQuota[class~='active']").val();
showRealTimeTransChart(appType,entranceId1,isp1,unitType);// 实时折线
appTransAjax(starth,endh,appType,entranceId2,isp2,unitType);
appTop100List(starth,endh,appType,entranceId2,searchQuota,isp2,unitType);
//筛选功能初始化
$("#resetBtn1").on("click",function() {
$("#searchForm1 select.selectpicker").each(function() {
$(this).selectpicker('val',"");
$(this).find("option").attr("selected",false);
// $(this).find("option:first").attr("selected",true);
});
$("#searchForm1")[0].reset();
$("#appSelect select.selectpicker").each(function() {
$(this).selectpicker('val',"Unique Ip");
$(this).find("option").attr("selected",false);
$(this).find("option:first").attr("selected",true);
});
});
//筛选功能初始化
$("#resetBtn2").on("click",function() {
$("#searchForm2 select.selectpicker").each(function() {
$(this).selectpicker('val',"");
$(this).find("option").attr("selected",false);
// $(this).find("option:first").attr("selected",true);
});
// $(".Wdate").attr("value", '');
$("#appSelect select.selectpicker").each(function() {
$(this).selectpicker('val',"Unique Ip");
$(this).find("option").attr("selected",false);
});
var deftime=(new Date().getTime())-(1000 * 60 * 60);
var defbegin=dateFtt("yyyy-MM-dd hh:mm:ss",new Date(deftime)); // 默认一小时
var defend=dateFtt("yyyy-MM-dd hh:mm:ss",new Date());
$("#searchForm2")[0].reset();
$("#beginDate").val(defbegin);
$("#endDate").val(defend);
});
$(".searchQuota").on("click",function(){
$(".searchQuota").removeClass("active");
$(this).addClass("active");
})
$(".chart-history").addClass("hidden");
$(".chart-realTime").removeClass("hidden");
$(".changeData").on("click",function(){
loading();
$(".changeData").removeClass("active");
$(this).addClass("active");
$("#appSelect select.selectpicker").each(function() {
$(this).selectpicker('val',"Unique Ip");
$(this).find("option").attr("selected",false);
});
var starth = $("#beginDateh").val();
var endh = $("#endDateh").val();
$("#beginDate").val(starth);
$("#endDate").val(endh);
var appType=$("#appType").val();
var entranceId1=$("#entranceId1").val();
var entranceId2=$("#entranceId2").val();
var isp1=$("#isp1").val();
var isp2=$("#isp2").val();
var unitType=$("#unitType").val();
var searchQuota=$(".searchQuota[class~='active']").val();
if($(this).val()==1){
showRealTimeTransChart(appType,entranceId1,isp1,unitType);// 实时折线
$(".chart-realTime").removeClass("hidden");
$(".chart-history").addClass("hidden");
}else{
appTransAjax(starth,endh,appType,entranceId2,isp2,unitType);
$(".chart-realTime").addClass("hidden");
$(".chart-history").removeClass("hidden");
}
/* if($(this).val()==1){
$(".chart-realTime").removeClass("hidden");
$(".chart-history").addClass("hidden");
}else{
$(".chart-realTime").addClass("hidden");
$(".chart-history").removeClass("hidden");
} */
})
$('.pageView').hide();
$("#unitType").on("change",function(){
loading();
var starth = $("#beginDateh").val();
var endh = $("#endDateh").val();
$("#beginDate").val(starth);
$("#endDate").val(endh);
var appType=$("#appType").val();
var entranceId1=$("#entranceId1").val();
var entranceId2=$("#entranceId2").val();
var isp1=$("#isp1").val();
var isp2=$("#isp2").val();
var unitType=$("#unitType").val();
var searchQuota=$(".searchQuota[class~='active']").val();
showRealTimeTransChart(appType,entranceId1,isp1,unitType);// 实时折线
appTransAjax(starth,endh,appType,entranceId2,isp2,unitType);
});
});
// 改变排序字段
function changeOrderby(searchQuota) {
loading();
appTop100List($("#beginDate").val(),$("#endDate").val(),$("#appType").val(),$("#entranceId2").val(),searchQuota,$("#isp2").val(),unitType=$("#unitType").val());
}
function searchList1() {
loading();
var unitType=$("#unitType").val();
var appType=$("#appType").val();
var entranceId1=$("#entranceId1").val();
var isp1=$("#isp1").val();
showRealTimeTransChart(appType,entranceId1,isp1,unitType);// 折线
}
function searchList2() {
var unitType=$("#unitType").val();
var start = $("#beginDate").val();
var end = $("#endDate").val();
$("#beginDateh").val(start);
$("#endDateh").val(end);
if (start == '' || end == '' || end == null || start == null) {
window.location.reload();
} else {
var appType=$("#appType").val();
var entranceId2=$("#entranceId2").val();
var isp2=$("#isp2").val();
var searchQuota=$(".searchQuota[class~='active']").val();
appTransAjax(start,end,appType,entranceId2,isp2,unitType);// 折线
appTop100List(start,end,appType,entranceId2,searchQuota,isp2);// 列表
}
}
// 列表
function appTop100List(start,end,appType,entranceId,searchQuota,isp){
$.ajax({
url : "${ctx}/dashboard/traffic/ajaxAppTopList",
type : 'get',
dataType : "json",
data : {
"beginDate" : start,
"endDate" : end,
"appType" : appType,
"entranceId" : entranceId,
"searchQuota":searchQuota,
"searchIspCode":isp,
},
async : true,
timeout : 50000,
traditional:true,
success : function(data) {
if (data != null && data.length > 0 && data[0].error != null) {
top.$.jBox.tip( "<spring:message code='request_service_failed'/>", "<spring:message code='info'/>");
return;
}
fileData = data;
getPageData(1, 10);//初始化第一页的数据
pageJuan(10);//初始化分页
closeTip();
if (data != null && data.length < 1) {
$(".none-data").show();
$('.pageView').hide();
} else {
$('.none-data').hide();
$('.pageView').show();
}
},
error : function(data, textStatus, errorThrown) {
closeTip();
},
complete : function(XMLHttpRequest, status) {//超时设置
closeTip();
}
});
}
// 处理接口数据
function htmlData(fileDataS) {
$("#tableData").html("");
if (fileDataS == null || fileData == '') {
$(".none-data").show();
$('.pageView').hide();
} else {
$('.none-data').hide();
$('.pageView').show();
var start=$("#beginDateh").val();
var end=$("#endDateh").val();
var totalunique=0;
var totalpkt=0;
var totalbyte=0;
$.each(fileDataS, function(index, data) {
totalunique=totalunique+(Number(data.logNum));
totalpkt=totalpkt+(Number(data.pktNum));
totalbyte=totalbyte+(Number(data.byteNum));
})
$.each(fileDataS, function(index, data) {
if (data != null) {
var html ="<tr>";
html += "<td class='tc'>" + data.ipAddr + "</td>";
// html += "<td class='tc'>" + data.ispName + "</td>";
html += "<td class='tc'>" + data.logNum + "</td>";
html += "<td class='tc'>" + data.logPercent + " %</td>";
// html += "<td class='tc'>" + (((data.entranceId)==1) ? "Astana":"Almaty") + "</td>";
html += "<td class='tc'>" + Math.round(data.pktNum*100)/100 + "</td>";
html += "<td class='tc'>" + data.pps + "</td>";
html += "<td class='tc'>" + data.pktPercent + " %</td>";
html += "<td class='tc'>" + Math.round(data.byteNum*100)/100 + "</td>";
html += "<td class='tc'>" + Math.round(data.bps*100)/100 + "</td>";
html += "<td class='tc'>" + data.bytePercent + " %</td>";
html += "</tr>"
if(index==fileDataS.length-1){
html+="<tr class='tr-total hidden'>"
html+= "<td class='tc'>"+"<spring:message code='report_total'/>"+"</td>";
// html+= "<td class='tc'>" +"--"+"</td>";
html+= "<td class='tc'>"+totalunique+"</td>";
html+= "<td class='tc'>" +"--"+"</td>";
html+= "<td class='tc'>"+totalpkt+"</td>";
html+= "<td class='tc'>"+"--"+"</td>";
html+= "<td class='tc'>"+"--"+"</td>";
html+= "<td class='tc'>"+totalbyte+"</td>";
html+= "<td class='tc'>"+"--"+"</td>";
html+= "<td class='tc'>"+"--"+"</td>";
html+="</tr>"
}
}
$("#tableData").append(html);
});
}
}
// app曲线图
function appTransAjax(beginDate, endDate,appType,entranceId,isp,unitType) {
loading();
$.ajax({ url : "${ctx}/dashboard/traffic/ajaxAppTrend",
type : "get",
dataType : "json",
async : true,
data : {
"beginDate" : beginDate,
"endDate" : endDate,
"appType" : appType,
"entranceId" : entranceId,
"searchIspCode":isp,
"searchQuotaType":unitType
},
traditional:true,
success : function(rs) {
var series=new Array();
var sipResult=new Array();
var dipResult=new Array();
var c2sResult=new Array();
var s2cResult=new Array();
var totalResult=new Array();
var sipData=new Array();
var dipData=new Array();
var timeData=new Array();
var c2sData=new Array();
var s2cData=new Array();
var totalData=new Array();
var total=[];
if(rs!=null&&Object.keys(rs).length>0){
if(unitType=='Unique Ip'){
sipResult=rs.sipResult;
dipResult=rs.dipResult
total.push(rs.sipSum,rs.dipSum);
// 图表导出用列
$(sipResult).each(function(i,d){
sipData.push(d[1])
timeData.push(d[0])
})
$(dipResult).each(function(i,d){
dipData.push(d[1])
})
}else{
c2sResult=rs.c2sResult
s2cResult=rs.s2cResult
totalResult=rs.totalResult
// 图表导出用列
$(c2sResult).each(function(i,d){
c2sData.push(d[1])
timeData.push(d[0])
})
$(s2cResult).each(function(i,d){
s2cData.push(d[1])
})
$(totalResult).each(function(i,d){
totalData.push(d[1])
})
total.push('--','--','--');
}
}else{
if(unitType=='Unique Ip'){
total.push(0,0);
}else{
total.push('--','--','--');
}
}
showActionHistoryChart(sipResult,dipResult,c2sResult,s2cResult,totalResult);
$("#total").val(JSON.stringify(total));
$("#sipData").val(JSON.stringify(sipData));
$("#dipData").val(JSON.stringify(dipData));
$("#timeData").val(JSON.stringify(timeData));
$("#c2sData").val(JSON.stringify(c2sData));
$("#s2cData").val(JSON.stringify(s2cData));
$("#totalData").val(JSON.stringify(totalData));
closeTip();
},
error : function(data, textStatus, errorThrown) {
closeTip();
},
complete : function(XMLHttpRequest, status) {//超时设置
closeTip();
}
});
}
/**
* 获取本页数据
* @param currentPage 当前页数 【初次查数据默认第1页】
*/
var fileData;
function getPageData(currentPage, pageNumber) {
if (typeof (fileData) != "undefined" && fileData != null ) {
//计算每页数据起始和终止数据编号
// var pageNumber = 10;
var maxLength = currentPage * pageNumber - 1;
var minLength = currentPage * pageNumber - pageNumber;
var pageData = [];
for (var i = minLength; i < fileData.length; i++) {
if (maxLength < i) {
break;
} else {
pageData.push(fileData[i]);
}
}
htmlData(pageData);
} else {
//把空数据传到页面中去
htmlData(fileData);
}
}
// 导出列表
$(".export-btn").click(function(){
var nowDate=new Date();
var dataType = $(this).attr("data-type");
getPageData(1,999999);// 设置导出页条数
var start=$("#beginDate").val();
var end=$("#endDate").val();
var htmlTitle="";
htmlTitle+="<tr class='tr-title'>";
htmlTitle+= "<th class='tc' colspan='1'>"+"${appName}"+"</th>";
htmlTitle+= "<th class='tc' colspan='2'>"+start+"--"+ end +"</th>";
htmlTitle+="</tr>"
$("#contentTable thead").prepend(htmlTitle);
if(dataType=="xlsx"){
getTableContent("contentTable");
}else{
var te = $("#contentTable").tableExport({
headings:true,
footers:true,
formats:[dataType],
fileName:"${appName}"+nowDate.getFullYear()+(nowDate.getMonth()+1)+nowDate.getDate()+nowDate.getHours()+nowDate.getMinutes()+nowDate.getSeconds(),
bootstrap:false
});
$("#myexport").click();
$("caption").remove();
}
$(".tr-title").remove();
getPageData(1,10);
pageJuan(10);//初始化分页
});
/**
* 调用后台接口
* @param Int id 表格id
* @return Array
*/
function getTableContent(id){
var mytable = document.getElementById(id);
var nowDate=new Date();
var data = [];
for(var i=0,rows=mytable.rows.length; i<rows; i++){
for(var j=0,cells=mytable.rows[i].cells.length; j<cells; j++){
if(!data[i]){
data[i] = new Array();
}
data[i][j] = mytable.rows[i].cells[j].innerHTML;
}
}
var title= data.shift();
var heard= data.shift();
var map ={};
map["titleTime"]=title;
map["heard"]=heard;
map["book"]=data;
map["titleCode"]="${appName}"+nowDate.getFullYear()+(nowDate.getMonth()+1)+nowDate.getDate()+nowDate.getHours()+nowDate.getMinutes()+nowDate.getSeconds();
var exports = JSON.stringify(map);
aJaxImportPost("${ctx}/export/ajaxExport",{"exports":exports});
}
$("#print-btn").click(function() {
window.print();
});
/**
* 分页控件处理
*/
function pageJuan(showData) {
if (typeof (fileData) != "undefined" && fileData != null) {
var totalData = fileData.length;
// var showData = 10;
if (showData > totalData) {
showData = totalData;
}
var current=1;
$('.M-box').pagination({
totalData : totalData,
showData : showData,
coping : true,
callback : function(index) {
//改变显示开始和结束数据编号
getPageData(index.getCurrent(), showData);
current=index.getCurrent();
$(".pageCurrent").val(current);
}
});
if(totalData<10){
$(".pageCurrent").val(1);
}
$(".pageTotal").text(totalData);
$(".pageNum").text(Math.ceil(totalData/10));
}
}
function realTimeTrendAjax(beginDate, endDate,appType,entranceId,isp,unitType){
var result={};
$.ajax({
url : "${ctx}/dashboard/traffic/ajaxAppTrend",
type : "get",
dataType : "json",
data : {
"beginDate" : beginDate,
"endDate" : endDate,
"appType" : appType,
"entranceId" : entranceId,
"searchIspCode":isp,
"searchQuotaType":unitType
},
async : false,
traditional:true,
success : function(rs) {
result=rs;
closeTip();
},
error : function(data, textStatus, errorThrown) {
closeTip();
},
complete : function(XMLHttpRequest, status) {//超时设置
closeTip();
}
});
return result;
}
var timer=null;
// 局点信息
function showRealTimeTransChart(appType,entranceId,isp,unitType) {
var time1=(new Date().getTime())-(1000 * 60 * 10+1000 * 60 * 5);
var time2=(new Date().getTime())-(1000 * 60 * 5);//推迟五分钟
var beginDate=dateFtt("yyyy-MM-dd hh:mm:ss",new Date(time1)); //获取十个点
var endDate=dateFtt("yyyy-MM-dd hh:mm:ss",new Date(time2)); // 少算一分钟
var sipResult=new Array();
var dipResult=new Array();
var c2sResult=new Array();
var s2cResult=new Array();
var totalResult=new Array();
var unitType=$("#unitType").val();
var intData = realTimeTrendAjax(beginDate, endDate,appType,entranceId,isp,unitType); //初始化数据 为10个点
var zxchart=null;
if(unitType=='Unique Ip'){
sipResult=intData.sipResult;
dipResult=intData.dipResult;
zxchart=[{
name: '<spring:message code="client_ip"/>',
lineColor:'#a9d4cf',
lineWidth:1,
marker: {
enabled: false
},
fillOpacity: 0.2 ,// 透明度
data: (function () {
var data = [];
if(sipResult!=null&&sipResult.length>0){
var count=10;
if(sipResult.length<10){
count=sipResult.length;
}
for (var i = 0; i < count; i++) {
var d =sipResult[i];
var x = d[0], // 时间
y = d[1];
data.push({
x: x,
y: y
});
}
} else{
var time = (new Date()).getTime()-(1000 * 60 * 10+1000 * 60 * 5);
for (var i = 0; i <10; i++) {
data.push({
x: time + i * 1000*60,
y: 0
});
}
}
return data;
}())
},
{
name: '<spring:message code="server_ip"/>',
lineColor:'#eecf8d',
lineWidth:1,
marker: {
enabled: false
},
fillOpacity: 0.2, // 透明度
data: (function () {
var data = [];
if(dipResult!=null&&dipResult.length>0){
var count=10;
if(dipResult.length<10){
count=dipResult.length;
}
for (var i = 0; i < count; i++) {
var d =dipResult[i];
var x = d[0], // 当前时间
y = d[1];
data.push({
x: x,
y: y
});
}
}else{
var time = (new Date()).getTime()-(1000 * 60 * 10+1000 * 60 * 5);
for (var i = 0; i <10; i++) {
data.push({
x: time + i * 1000*60,
y: 0
});
}
}
return data;
}())
}]
}else{
c2sResult=intData.c2sResult;
s2cResult=intData.s2cResult;
totalResult=intData.totalResult;
zxchart=[
{
name: 'total',
lineColor:'#709c58',
lineWidth:1,
marker: {
enabled: false
},
fillOpacity: 0.2, // 透明度
data: (function () {
var data = [];
if(totalResult!=null&&totalResult.length>0){
var count=10;
if(totalResult.length<10){
count=totalResult.length;
}
for (var i = 0; i < count; i++) {
var d =totalResult[i];
var x = d[0], // 当前时间
y = d[1];
data.push({
x: x,
y: y
});
}
}else{
var time = (new Date()).getTime()-(1000 * 60 * 10+1000 * 60 * 5);
for (var i = 0; i <10; i++) {
data.push({
x: time + i * 1000*60,
y: 0
});
}
}
return data;
}())
},
{
name: 's2c',
lineColor:'#c9a206',
lineWidth:1,
marker: {
enabled: false
},
fillOpacity: 0.15, // 透明度
data: (function () {
var data = [];
if(s2cResult!=null&&s2cResult.length>0){
var count=10;
if(s2cResult.length<10){
count=s2cResult.length;
}
for (var i = 0; i < count; i++) {
var d =s2cResult[i];
var x = d[0], // 当前时间
y = d[1];
data.push({
x: x,
y: y
});
}
}else{
var time = (new Date()).getTime()-(1000 * 60 * 10+1000 * 60 * 5);
for (var i = 0; i <10; i++) {
data.push({
x: time + i * 1000*60,
y: 0
});
}
}
return data;
}())
},
{
name: 'c2s',
lineColor:'#64b5c5',
lineWidth:1,
marker: {
enabled: false
},
fillOpacity: 0.1, // 透明度
data: (function () {
var data = [];
if(c2sResult!=null&&c2sResult.length>0){
var count=10;
if(c2sResult.length<10){
count=c2sResult.length;
}
for (var i = 0; i < count; i++) {
var d =c2sResult[i];
var x = d[0], // 时间
y = d[1];
data.push({
x: x,
y: y
});
}
} else{
var time = (new Date()).getTime()-(1000 * 60 * 10+1000 * 60 * 5);
for (var i = 0; i <10; i++) {
data.push({
x: time + i * 1000*60,
y: 0
});
}
}
return data;
}())
}
]
}
var nowDate=new Date();
Highcharts.setOptions({ global: { useUTC: false } });
var num=0;
var chart = Highcharts.chart('chart-realTime',
{
chart: {
// type: 'spline',
type: 'area',
marginRight: 10,
// events: {
// events: {
// load: function() {}
// }
// }
},
noData:{
style: {//设置字体颜色
color: '#413333',
fontFamily:'Microsoft YaHei',
fontWeight:"unset",
},
},
exporting : {
filename : appName+nowDate.getFullYear()+(nowDate.getMonth()+1)+nowDate.getDate()+nowDate.getHours()+nowDate.getMinutes()+nowDate.getSeconds(),
scale : 1,
sourceWidth : 1280,
sourceHeight : 500,
buttons : {
contextButton : {
menuItems : [
Highcharts.getOptions().exporting.buttons.contextButton.menuItems[0],// 打印
Highcharts.getOptions().exporting.buttons.contextButton.menuItems[1],// jpeg
'downloadPNG','downloadPDF',
Highcharts.getOptions().exporting.buttons.contextButton.menuItems[4],// excel
Highcharts.getOptions().exporting.buttons.contextButton.menuItems[3],// cvs
]
}
}
},
// colors:['#a9d4cf','#eecf8d','#ebb093'],
colors:['#709c58','#c9a206','#64b5c5'],
title : {
text : (function () {
var timebe=(new Date().getTime())-(1000 * 60 * 6);
var start=(new Date().getTime())-(1000 * 60 * 10+1000 * 60 * 5);
var begin=dateFtt("yyyy-MM-dd hh:mm:ss",new Date(start)); //获取1个点少算一分钟
var end=dateFtt("yyyy-MM-dd hh:mm:ss",new Date(timebe));
var tlt=appName+begin+'--'+end+''
return tlt;
}())
},
xAxis: {
type:'datetime',
dateTimeLabelFormats: {
second: '%H:%M:%S',
minute: '%H:%M',
hour: '%H:%M',
day: '%m-%d',
week: '%m-%d',
month: '%Y-%m',
year: '%Y'
},
title: {
text: 'Real Time',
align:'high',
},
labels: {
// rotation: -45, //倾斜的角度
},
},
yAxis : {
title : {
text : unitType
},
min:0,
allowDecimals:false
},
tooltip: {
dateTimeLabelFormats: {
millisecond: '%Y-%m-%d %H:%M:%S',
second: '%Y-%m-%d %H:%M:%S',
minute: '%Y-%m-%d %H:%M:%S',
hour: '%Y-%m-%d %H:%M:%S',
day: '%Y-%m-%d %H:%M:%S',
week: '%Y-%m-%d %H:%M:%S',
month: '%Y-%m-%d %H:%M:%S',
year: '%Y-%m-%d %H:%M:%S'
}
},
credits : {//是否有水印
enabled : false
},
plotOptions : {
series : {
marker : {
radius : 2,
hover : {
enabled : true,
radius : 7,
radiusPlus : 5
}
},
// fillOpacity: 0.2 // 透明度
}
},
series: zxchart
});
var series = chart.series[0];
var series1 = chart.series[1];
if(unitType!='Unique Ip'){
var series2 = chart.series[2];
}
window.clearInterval(timer);
// if(sipResult!=null&&sipResult.length>0){
var nu=0;
var unitType=$("#unitType").val();
timer=setInterval(function() {
var time3=(new Date().getTime())-(1000 * 60 * 5);
var time4=(new Date().getTime())-(1000 * 60 * 4);
var c2sResult=new Array();
var s2cResult=new Array();
var totalResult=new Array();
var begin=dateFtt("yyyy-MM-dd hh:mm:ss",new Date(time3)); //获取1个点少算一分钟
var end=dateFtt("yyyy-MM-dd hh:mm:ss",new Date(time4));
$.ajax({
url : "${ctx}/dashboard/traffic/ajaxAppTrend",
type : "post",
dataType : "json",
cache:false,
data : {
"beginDate" : begin,
"endDate" : end,
"appType" : appType,
"entranceId" : entranceId,
"searchIspCode":isp,
"searchQuotaType":unitType
},
async : true,
traditional:true,
success : function(rs) {
var realTimeData=rs;
if(realTimeData!=null&&Object.keys(realTimeData).length>0){
if(unitType=='Unique Ip'){
var sipReal=realTimeData.sipResult;
var dipReal=realTimeData.dipResult;
var d =sipReal[0];
series.addPoint([d[0], d[1]], true, true);
var t =dipReal[0];
series1.addPoint([t[0], t[1]], true, true);
}else{
var c2sRes=realTimeData.c2sResult;
var s2cRes=realTimeData.s2cResult;
var totalRes=realTimeData.totalResult;
var s =totalRes[0];
series.addPoint([s[0], s[1]], true, true);
var t =s2cRes[0];
series1.addPoint([t[0], t[1]], true, true);
var d =c2sRes[0];
series2.addPoint([d[0], d[1]], true, true);
}
}else{
var x=(new Date()).getTime()-(1000 * 60 * 5);
var y=0;
if(unitType=='Unique Ip'){
series.addPoint([x, y], true, true);
series1.addPoint([x, y], true, true);
}else{
series.addPoint([x, y], true, true);
series1.addPoint([x, y], true, true);
series2.addPoint([x, y], true, true);
}
}
var start=(new Date().getTime())-(1000 * 60 * 10+1000 * 60 * 5);
var startTime=dateFtt("yyyy-MM-dd hh:mm:ss",new Date(start));
var ends=(new Date().getTime())-(1000 * 60 * 5);
var endTime=dateFtt("yyyy-MM-dd hh:mm:ss",new Date(ends));
chart.title.update({ text: appName+startTime+'--'+endTime+''});
closeTip();
},
error : function(data, textStatus, errorThrown) {
closeTip();
},
complete : function(XMLHttpRequest, status) {//超时设置
closeTip();
}
});
},1000*60);
// }else{
// window.clearInterval(timer);
// }
}
// 历史信息
function showActionHistoryChart(sipResult,dipResult,c2sResult,s2cResult,totalResult) {
var nowDate=new Date();
Highcharts.setOptions({ global: { useUTC: false } });
var num=0;
var lsChart=null;
var unitType=$("#unitType").val();
if(unitType=='Unique Ip'){
lsChart= [{
name: '<spring:message code="client_ip"/>',
data: sipResult,
lineColor:'#a9d4cf',
lineWidth:1,
marker: {
enabled: false
},
fillOpacity: 0.2 // 透明度
},
{
name: '<spring:message code="server_ip"/>',
data: dipResult,
lineColor:'#eecf8d',
lineWidth:1,
marker: {
enabled: false
},
fillOpacity: 0.2 // 透明度
}]
}else{
lsChart= [
{
name: 'total',
data: totalResult,
// lineColor:'#D9853A',
lineColor:'#709c58',
lineWidth:1,
marker: {
enabled: false
},
fillOpacity: 0.2 // 透明度
},
{
name: 's2c',
data: s2cResult,
// lineColor:'#EAB33B',
lineColor:'#c9a206',
lineWidth:1,
marker: {
enabled: false
},
fillOpacity: 0.15 // 透明度
},{
name: 'c2s',
data: c2sResult,
// lineColor:'#E5E2CD',
lineColor:'#64b5c5',
lineWidth:1,
marker: {
enabled: false
},
fillOpacity: 0.1 // 透明度
}]
}
var chart = Highcharts.chart('chart-history',
{
chart: {
type: 'area',
zoomType: 'x'
},
noData:{
style: {//设置字体颜色
color: '#413333',
fontFamily:'Microsoft YaHei',
fontWeight:"unset",
},
},
exporting : {
filename : appName+nowDate.getFullYear()+(nowDate.getMonth()+1)+nowDate.getDate()+nowDate.getHours()+nowDate.getMinutes()+nowDate.getSeconds(),
scale : 1,
sourceWidth : 1280,
sourceHeight : 500,
buttons : {
contextButton : {
menuItems : [
Highcharts.getOptions().exporting.buttons.contextButton.menuItems[0],// 打印
Highcharts.getOptions().exporting.buttons.contextButton.menuItems[1],// jpeg
'downloadPNG','downloadPDF',
Highcharts.getOptions().exporting.buttons.contextButton.menuItems[4],// excel
Highcharts.getOptions().exporting.buttons.contextButton.menuItems[3],// cvs
]
}
}
},
// colors:['#EF843C','#EFCA6B','#6ED0E0'],
colors:['#709c58','#c9a206','#64b5c5'],
title : {
text : appName+$("#beginDateh").val()+'--'+$("#endDateh").val()+''
},
xAxis: {
type:'datetime',
dateTimeLabelFormats: {
second: '%H:%M:%S',
minute: '%H:%M',
hour: '%H:%M',
day: '%m-%d',
week: '%m-%d',
month: '%Y-%m',
year: '%Y'
},
title: {
text: 'History Time',
align:'high',
},
labels: {
// rotation: -45, //倾斜的角度
},
},
yAxis : {
title : {
text : unitType
},
min:0,
allowDecimals:false
},
tooltip: {
dateTimeLabelFormats: {
millisecond: '%Y-%m-%d %H:%M:%S',
second: '%Y-%m-%d %H:%M:%S',
minute: '%Y-%m-%d %H:%M:%S',
hour: '%Y-%m-%d %H:%M:%S',
day: '%Y-%m-%d %H:%M:%S',
week: '%Y-%m-%d %H:%M:%S',
month: '%Y-%m-%d %H:%M:%S',
year: '%Y-%m-%d %H:%M:%S'
}
},
credits : {//是否有水印
enabled : false
},
plotOptions : {
series : {
marker : {
radius : 2,
hover : {
enabled : true,
radius : 7,
radiusPlus : 5
}
},
// fillOpacity: 0.2 // 透明度
}
},
series:lsChart
});
}
(function(H) {
H.Chart.prototype.downloadXLS = function() {
var nowDate=new Date();
var start=$("#beginDateh").val();
var end=$("#endDateh").val();
var rows = this.getDataRows(true);
var heard = rows.shift(); // 删除一个重复行
rows.shift(); // 删除一个重复行
var total=[];
var map={};
var unitType=$("#unitType").val();
if(heard[0].indexOf("History") != -1){
rows = [];
/* 调用后台接口导出 */
total = JSON.parse($("#total").val());
var timeData = JSON.parse($("#timeData").val());
var sipData = JSON.parse($("#sipData").val());
var dipData = JSON.parse($("#dipData").val());
var c2sData = JSON.parse($("#c2sData").val());
var s2cData = JSON.parse($("#s2cData").val());
var totalData = JSON.parse($("#totalData").val());
if(unitType=='Unique Ip'){
for(var i=0;i<sipData.length;i++){
var colData=[];
var time=new Date(timeData[i]); //
var ftime=dateFtt("yyyy-MM-dd hh:mm:ss",time);
colData.push(ftime,sipData[i],dipData[i]);
rows.push(colData)
}
}else{
for(var i=0;i<c2sData.length;i++){
var colData=[];
var time=new Date(timeData[i]); //
var ftime=dateFtt("yyyy-MM-dd hh:mm:ss",time);
colData.push(ftime,c2sData[i],c2sData[i],totalData[i])
rows.push(colData)
}
}
}else{
var siptotal=0;
var diptotal=0;
$(rows).each(function (i,d){
if(d!=null){
if(i==0){
start=d[0];
}
if(i==rows.length-1){
end=d[0];
}
siptotal=siptotal+Number(d[1]);
diptotal=diptotal+Number(d[2]);
}
})
if(unitType=='Unique Ip'){
total.push(siptotal,diptotal);
}else{
total.push('--','--','--');
}
}
total.unshift('<spring:message code="report_total"/>');
rows.push(total)
map["titleTime"]=appName+","+start+"--"+end;
map["heard"]=heard;
map["book"]=rows;
map["titleCode"]=appName+nowDate.getFullYear()+(nowDate.getMonth()+1)+nowDate.getDate()+nowDate.getHours()+nowDate.getMinutes()+nowDate.getSeconds();
var exports = JSON.stringify(map);
aJaxImportPost("${ctx}/export/ajaxExport",{"exports":exports});
};
}(Highcharts));
(function(H) {
H.Chart.prototype.downloadCSV = function() {
var rows = this.getDataRows(true);
var data=[];
var heard = rows.shift(); // 删除一个重复行
var total=[];
var start = "";
var end = "";
var unitType=$("#unitType").val();
if(heard[0].indexOf("History") != -1){
start = $("#beginDateh").val();
end = $("#endDateh").val();
total = JSON.parse($("#total").val());
var timeData = JSON.parse($("#timeData").val());
var sipData = JSON.parse($("#sipData").val());
var dipData = JSON.parse($("#dipData").val());
var c2sData = JSON.parse($("#c2sData").val());
var s2cData = JSON.parse($("#s2cData").val());
var totalData = JSON.parse($("#totalData").val());
if(unitType=='Unique Ip'){
for(var i=0;i<sipData.length;i++){
var colData=[];
var time=new Date(timeData[i]); //
var ftime=dateFtt("yyyy-MM-dd hh:mm:ss",time);
colData.push(ftime,sipData[i],dipData[i])
data.push({
num1:ftime,
num2:sipData[i],
num3:dipData[i],
})
}
data.unshift({
num1:'RealTime',
num2:'<spring:message code="client_ip"/>',
num3:'<spring:message code="server_ip"/>',
})
}else{
for(var i=0;i<c2sData.length;i++){
var colData=[];
var time=new Date(timeData[i]); //
var ftime=dateFtt("yyyy-MM-dd hh:mm:ss",time);
colData.push(ftime,c2sData[i],s2cData[i],totalData[i])
data.push({
num1:ftime,
num2:c2sData[i],
num3:s2cData[i],
num4:totalData[i],
})
}
data.unshift({
num1:'RealTime',
num2:'c2s',
num3:'s2c',
num4:'total',
})
}
}else{
var siptotal=0;
var diptotal=0;
$(rows).each(function (i,d){
if(d!=null){
if(unitType=='Unique Ip'){
data.push({
num1:d[0],
num2:d[1],
num3:d[2],
});
}else{
data.push({
num1:d[0],
num2:d[1],
num3:d[2],
num4:d[3],
});
}
if(i>0){
if(i==1){
start=d[0];
}
if(i==rows.length-1){
end=d[0];
}
siptotal=siptotal+Number(d[1]);
diptotal=diptotal+Number(d[2]);
}
}
})
if(unitType=='Unique Ip'){
total.push(siptotal,diptotal);
}else{
total.push('--','--','--');
}
}
data.push({
num1:"<spring:message code='report_total'/>",
num2:total
})
var titleKey=null;
if(unitType=='Unique Ip'){
titleKey=["num1","num2","num3"];
}else{
titleKey=["num1","num2","num3","num4"];
}
exportCsv({
title:["${appName}",start+"--"+end],
titleForKey:titleKey,
data:data
});
};
}(Highcharts));
function exportCsv(obj){
var nowDate=new Date();
//title ["","",""]
var title = obj.title;
//titleForKey ["","",""]
var titleForKey = obj.titleForKey;
var data = obj.data;
var str = [];
str.push(obj.title.join(",")+"\n");
for(var i=0;i<data.length;i++){
var temp = [];
for(var j=0;j<titleForKey.length;j++){
temp.push(data[i][titleForKey[j]]);
}
str.push(temp.join(",")+"\n");
}
str = "\uFEFF"+str.join(""); //
var blob = new Blob([str], {type: 'text/plain'});
var uri = 'data:text/csv;charset=utf-8,' + encodeURIComponent(blob);
var downloadLink = document.createElement("a");
downloadLink.href = window.URL.createObjectURL(blob);
downloadLink.download = "${appName}"+nowDate.getFullYear()+(nowDate.getMonth()+1)+nowDate.getDate()+nowDate.getHours()+nowDate.getMinutes()+nowDate.getSeconds()+".csv";
downloadLink.style.display = 'none';
document.body.appendChild(downloadLink);
downloadLink.click();
document.body.removeChild(downloadLink);
}
</script>
</body>
</html>