function str2Obj(str){
var data = {};
kv = str.split('&');
for(i in kv){
v = kv[i].split('=');
data[v[0]] = v[1];
}
return data;
}
function wsOriginPost(method, version, args, callback){
var req_data = {};
req_data['name'] = 'webstats';
req_data['func'] = method;
req_data['version'] = version;
if (typeof(args) == 'string'){
req_data['args'] = JSON.stringify(str2Obj(args));
} else {
req_data['args'] = JSON.stringify(args);
}
$.post('/plugins/run', req_data, function(data) {
if (!data.status){
//错误展示10S
layer.msg(data.msg,{icon:0,time:2000,shade: [10, '#000']});
return;
}
if(typeof(callback) == 'function'){
callback(data);
}
},'json');
}
function wsPost(method, version, args,callback){
var loadT = layer.msg('正在获取...', { icon: 16, time: 0, shade: 0.3 });
wsOriginPost(method, version, args,function(data){
layer.close(loadT);
callback(data);
});
}
function wsPostCallbak(method, version, args,callback){
var loadT = layer.msg('正在获取...', { icon: 16, time: 0, shade: 0.3 });
var req_data = {};
req_data['name'] = 'webstats';
req_data['func'] = method;
args['version'] = version;
if (typeof(args) == 'string'){
req_data['args'] = JSON.stringify(str2Obj(args));
} else {
req_data['args'] = JSON.stringify(args);
}
$.post('/plugins/callback', req_data, function(data) {
layer.close(loadT);
if (!data.status){
layer.msg(data.msg,{icon:0,time:2000,shade: [0.3, '#000']});
return;
}
if(typeof(callback) == 'function'){
callback(data);
}
},'json');
}
function toSecond(val){
if (val>=1000){
val = (val / 1000).toFixed()+"s";
return val;
}
return val + "ms";
}
function makeHoursData(data, type="ip"){
var list = [];
var rlist = [];
for (var i = 0; i < 24; i++) {
if (i<10){
list.push("0"+i)
} else {
list.push(i+"")
}
rlist.push(i+"")
}
var rdata = {};
rdata['key'] = rlist;
var tmpdata = {};
for (var i = 0; i < data.length; i++) {
var tk = data[i]['time'];
var v = data[i];
if (type=='length'){
v['length'] = (v['length']/1024).toFixed();
}
tmpdata[tk] = v;
}
var val = [];
for (var i = 0; i < list.length; i++) {
var tk = list[i];
if (tmpdata[tk]){
val.push(tmpdata[tk][type]);
}else{
val.push(0);
}
}
rdata['value'] = val;
// console.log(rdata);
return rdata
}
function makeDayData(data, type="ip") {
var rdata = {};
var rdata_key = [];
var rdata_val = [];
for (var i = 0; i < data.length; i++) {
var tk = data[i]['time'];
rdata_key.push(tk);
var v = data[i][type];
if (type=='length'){
v = (v/1024).toFixed();
}
rdata_val.push(v)
}
rdata['key'] = rdata_key;
rdata['value'] = rdata_val;
return rdata
}
function getTime() {
var now = new Date();
var hour = now.getHours();
var minute = now.getMinutes();
var second = now.getSeconds();
if (minute < 10) {
minute = "0" + minute;
}
if (second < 10) {
second = "0" + second;
}
var nowdate = hour + ":" + minute + ":" + second;
return nowdate;
}
var ovTimer = null;
function wsOverviewRequest(page){
clearInterval(ovTimer);
var args = {};
args['site'] = $('select[name="site"]').val();
var query_date = 'today';
if ($('#time_choose').attr("data-name") != ''){
query_date = $('#time_choose').attr("data-name");
} else {
query_date = $('#search_time button.cur').attr("data-name");
}
args['query_date'] = query_date;
args['order'] = $('#time_order button.cur').attr('data-name');
var select_option = $('.indicators-container input:checked').parent().attr('data-name');
console.log($('.indicators-container input:checked').parent().find('span').text());
// console.log(select_option);
wsPost('get_overview_list', '' ,args, function(rdata){
var rdata = $.parseJSON(rdata.data);
var list = '';
var data = rdata.data.data;
var statData = rdata.data.stat_list;
console.log(statData, data);
var stat_pv = statData['pv'] == null?0:statData['pv'];
var stat_uv = statData['uv'] == null?0:statData['uv'];
var stat_ip = statData['ip'] == null?0:statData['ip'];
var stat_length = statData['length'] == null?0:statData['length'];
var stat_req = statData['req'] == null?0:statData['req'];
$('.overview_list .overview_box:eq(0) .ov_num').text(stat_pv);
$('.overview_list .overview_box:eq(1) .ov_num').text(stat_uv);
$('.overview_list .overview_box:eq(2) .ov_num').text(stat_ip);
$('.overview_list .overview_box:eq(3) .ov_num').text(toSize(stat_length));
$('.overview_list .overview_box:eq(4) .ov_num').text(stat_req);
var list = [];
for (var i = 0; i < data.length; i++) {
list.push(data[i][select_option]);
}
// console.log("list",list);
var chat = {};
var is_compare = false;
var tmpChatData = {
"key":[],
"value":[]
}
if (select_option == 'realtime_traffic' || select_option == 'realtime_request'){
} else {
if (args['order'] == 'hour'){
tmpChatData = makeHoursData(data, select_option);
} else {
tmpChatData = makeDayData(data, select_option);
}
}
chat['yAxis'] = [{
type: 'value',
splitNumber: 5,
axisLabel: {
textStyle: {
color: '#a8aab0',
fontStyle: 'normal',
fontFamily: '微软雅黑',
fontSize: 12,
},
},
axisLine:{
show: false
},
axisTick:{
show: false
},
splitLine: {
show: true,
lineStyle: {
color: '#E5E9ED'
}
}
}];
chat['tooltip'] = {
show:true,
trigger: 'axis',
backgroundColor: 'rgba(255,255,255,0.8)',
axisPointer: { // 坐标轴指示器,坐标轴触发有效
type: 'line', // 默认为直线,可选为:'line' | 'shadow'
lineStyle: {
color: 'rgba(150,150,150,0.2)'
}
},
textStyle: {
color: '#666',
fontSize: '14px',
},
extraCssText: 'width:220px;height:'+(is_compare?'30%':'22%')+';padding:0;box-shadow: 0 0 3px rgba(0, 0, 0, 0.3);"',
formatter: function (params) {
var htmlStr = "";
for (var i = 0; i < params.length; i++) {
var tem = params[i].name;
var val = params[i].value;
if(args['order'] == 'hour'){
if (tem.indexOf('/') < 0) {
tem > 9 ? tem = tem + ":00 - " + tem + ":59" : tem = "0" + tem + ":00 - " +
"0" + tem + ":59";
}
val > 0 ? val = val : val = '--'
}
htmlStr +=
'
' +
'' +
' ' + params[i].seriesName + ' ' +
'' + val + ' ' + '
'
}
var res ='' +
tem + '' + (is_compare?trend_name:'') +
' ' + htmlStr + '
'
return res;
}
}
var legendName = $('.indicators-container input:checked').parent().find('span').text()
chat['legendData'] = [legendName];
var statEc = echarts.init(document.getElementById('total_num_echart'));
var option = {
tooltip:chat['tooltip'],
backgroundColor:'#fff',
legend:{
data:chat['legendData'],
left:'center',
top:'94%',
},
grid: {
bottom: '9%',
containLabel: true,
x: 20,
y: 20,
x2: 20,
y2: 20
},
xAxis: {
type: 'category',
boundaryGap: false,
boundaryGap: false,
axisTick: {
alignWithLabel: true
},
data: tmpChatData["key"],
},
yAxis: chat['yAxis'],
graphic:[{
type: 'group',
right: 330,
top: 0,
z: 100,
children: [{
type: 'text',
left: 'center',
top: 'center',
z: 100,
style: {
fill: '#ccc',
text: args['site'],
font: '16px Arial'
}
}]
}],
series: [
{
name:legendName,
data: tmpChatData["value"],
type: 'line',
smooth: true,
itemStyle: {
normal: {
color:'#3A84FF',
lineStyle: {
color: "#3A84FF",
width:1,
},
areaStyle: {
color: new echarts.graphic.LinearGradient(0, 1, 0, 0, [{
offset: 0,
color: 'rgba(58,132,255,0)'
}, {
offset: 1,
color: 'rgba(58,132,255,0.35)'
}]),
}
}
},
areaStyle: {}
}
]
};
statEc.setOption(option);
if (select_option == 'realtime_traffic' || select_option == 'realtime_request'){
var xData = [];
var yData = [];
ovTimer = setInterval(function(){
var select_option = $('.indicators-container input:checked').parent().attr('data-name');
if (select_option != "realtime_traffic" && select_option != 'realtime_request' ){
clearInterval(ovTimer);
console.log("get_logs_realtime_info over:"+select_option);
return;
}
wsOriginPost("get_logs_realtime_info",'',{"site":args["site"], "type":select_option} , function(rdata){
var rdata = $.parseJSON(rdata.data);
var realtime_traffic = rdata.data['realtime_traffic'];
var realtime_request = rdata.data['realtime_request'];
realtime_traffic_calc = (realtime_traffic/1024).toFixed()
$('.overview_list .overview_box:eq(5) .ov_num').text(realtime_traffic_calc+"kb");
$('.overview_list .overview_box:eq(6) .ov_num').text(realtime_request);
var realtime_name = select_option == 'realtime_traffic' ? '实时流量':'每秒请求';
var val = realtime_request;
if (select_option == 'realtime_traffic'){
val = realtime_traffic_calc;
realtime_name = realtime_name + " "+ realtime_traffic_calc + "kb";
}
xData.push(getTime());
yData.push(val);
if (xData.length > 20){
xData.shift();
yData.shift();
}
statEc.setOption({
xAxis: {
data: xData
},
series: [{
name: realtime_name,
data: yData
}]
});
});
},2000);
}
});
}
function wsOverview(){
////////////////////////////////////////////////////////////////////////////////////////////////////////
var randstr = getRandomString(10);
var html = '\
\
网站: \
\
未设置 \
\
时间: \
\
时段: \
\
\
\
\
\
\
\
';
$(".soft-man-con").html(html);
$('[data-toggle="tooltip"]').tooltip();
//日期范围
laydate.render({
elem: '#time_choose',
value:'',
range:true,
done:function(value, startDate, endDate){
if(!value){
return false;
}
$('#search_time button').each(function(){
$(this).removeClass('cur');
});
var timeA = value.split('-')
var start = $.trim(timeA[0]+'-'+timeA[1]+'-'+timeA[2])
var end = $.trim(timeA[3]+'-'+timeA[4]+'-'+timeA[5])
query_txt = toUnixTime(start + " 00:00:00") + "-"+ toUnixTime(end + " 00:00:00")
$('#time_choose').attr("data-name",query_txt);
$('#time_choose').addClass("cur");
wsOverviewRequest(1);
},
});
$('#ov_refresh').click(function(){
wsOverviewRequest(1);
});
$('#time_order button:eq(0)').addClass('cur');
$('#time_order button').click(function(){
$('#time_order button').each(function(){
if ($(this).hasClass('cur')){
$(this).removeClass('cur');
}
});
$(this).addClass('cur');
wsOverviewRequest(1);
});
$('#search_time button:eq(0)').addClass('cur');
$('#search_time button').click(function(){
$('#search_time button').each(function(){
if ($(this).hasClass('cur')){
$(this).removeClass('cur');
}
});
$('#time_choose').attr("data-name",'');
$('#time_choose').removeClass("cur");
$(this).addClass('cur');
wsOverviewRequest(1);
});
$('.indicators-container input').click(function(){
$('.indicators-container input').each(function(){
$(this).removeAttr('checked');
});
$(this).prop({'checked':true});
wsOverviewRequest(1);
});
wsPost('get_default_site','',{},function(rdata){
$('select[name="site"]').html('');
var rdata = $.parseJSON(rdata.data);
var rdata = rdata.data;
var default_site = rdata["default"];
var select = '';
for (var i = 0; i < rdata["list"].length; i++) {
if (default_site == rdata["list"][i]){
select += ''+rdata["list"][i]+' ';
} else{
select += ''+rdata["list"][i]+' ';
}
}
$('select[name="site"]').html(select);
wsOverviewRequest(1);
$('select[name="site"]').change(function(){
wsOverviewRequest(1);
});
});
////////////////////////////////////////////////////////////////////////////////////////////////////////
}
var ovTimer = null;
function wsSitesListRequest(page){
clearInterval(ovTimer);
var args = {};
args['site'] = $('select[name="site"]').val();
var query_date = 'today';
if ($('#time_choose').attr("data-name") != ''){
query_date = $('#time_choose').attr("data-name");
} else {
query_date = $('#search_time button.cur').attr("data-name");
}
args['query_date'] = query_date;
args['order'] = $('#time_order button.cur').attr('data-name');
var select_option = $('.indicators-container input:checked').parent().attr('data-name');
console.log($('.indicators-container input:checked').parent().find('span').text());
// console.log(select_option);
wsPost('get_overview_list', '' ,args, function(rdata){
var rdata = $.parseJSON(rdata.data);
var list = '';
var data = rdata.data.data;
var statData = rdata.data.stat_list;
console.log(statData, data);
var stat_pv = statData['pv'] == null?0:statData['pv'];
var stat_uv = statData['uv'] == null?0:statData['uv'];
var stat_ip = statData['ip'] == null?0:statData['ip'];
var stat_length = statData['length'] == null?0:statData['length'];
var stat_req = statData['req'] == null?0:statData['req'];
$('.overview_list .overview_box:eq(0) .ov_num').text(stat_pv);
$('.overview_list .overview_box:eq(1) .ov_num').text(stat_uv);
$('.overview_list .overview_box:eq(2) .ov_num').text(stat_ip);
$('.overview_list .overview_box:eq(3) .ov_num').text(toSize(stat_length));
$('.overview_list .overview_box:eq(4) .ov_num').text(stat_req);
});
}
function wsSitesList(){
////////////////////////////////////////////////////////////////////////////////////////////////////////
var randstr = getRandomString(10);
var html = '';
$(".soft-man-con").html(html);
$('[data-toggle="tooltip"]').tooltip();
//日期范围
laydate.render({
elem: '#time_choose',
value:'',
range:true,
done:function(value, startDate, endDate){
if(!value){
return false;
}
$('#search_time button').each(function(){
$(this).removeClass('cur');
});
var timeA = value.split('-')
var start = $.trim(timeA[0]+'-'+timeA[1]+'-'+timeA[2])
var end = $.trim(timeA[3]+'-'+timeA[4]+'-'+timeA[5])
query_txt = toUnixTime(start + " 00:00:00") + "-"+ toUnixTime(end + " 00:00:00")
$('#time_choose').attr("data-name",query_txt);
$('#time_choose').addClass("cur");
wsSitesListRequest(1);
},
});
$('#time_order button:eq(0)').addClass('cur');
$('#time_order button').click(function(){
$('#time_order button').each(function(){
if ($(this).hasClass('cur')){
$(this).removeClass('cur');
}
});
$(this).addClass('cur');
wsSitesListRequest(1);
});
$('#search_time button:eq(0)').addClass('cur');
$('#search_time button').click(function(){
$('#search_time button').each(function(){
if ($(this).hasClass('cur')){
$(this).removeClass('cur');
}
});
$('#time_choose').attr("data-name",'');
$('#time_choose').removeClass("cur");
$(this).addClass('cur');
wsSitesListRequest(1);
});
wsSitesListRequest(1);
////////////////////////////////////////////////////////////////////////////////////////////////////////
}
function wsSpiderStatLogRequest(page){
var args = {};
args['page'] = page;
args['page_size'] = 10;
args['site'] = $('select[name="site"]').val();
args['status_code'] = $('select[name="status_code"]').val();
var query_date = 'today';
if ($('#time_choose').attr("data-name") != ''){
query_date = $('#time_choose').attr("data-name");
} else {
query_date = $('#search_time button.cur').attr("data-name");
}
args['query_date'] = query_date;
args['tojs'] = 'wsSpiderStatLogRequest';
wsPost('get_spider_stat_list', '' ,args, function(rdata){
var rdata = $.parseJSON(rdata.data);
var list = '';
var data = rdata.data.data;
if (data.length > 0){
for(i in data){
list += '';
list += '' + data[i]['time']+' ';
list += '' + data[i]['baidu'] +' ';
list += '' + data[i]['bing'] +' ';
list += '' + data[i]['qh360'] +' ';
list += '' + data[i]['google'] +' ';
list += '' + data[i]['bytes'] +' ';
list += '' + data[i]['sogou'] +' ';
list += '' + data[i]['soso'] +' ';
list += '' + data[i]['youdao'] +' ';
list += '' + data[i]['youdao'] +' ';
list += '' + data[i]['dnspod'] +' ';
list += '' + data[i]['yandex'] +' ';
list += '' + data[i]['other'] +' ';
list += '' + data[i]['other'] +' ';
list += ' ';
}
} else{
list += '蜘蛛列表为空 ';
}
var table = '\
';
$('#ws_table').html(table);
$('#wsPage').html(rdata.data.page);
$('[data-toggle="tooltip"]').tooltip();
var sumData = rdata.data.sum_data;
var percent = ((sumData.spider/sumData.reqest_total)*100).toFixed();
$('#spider_left_total .request_spider').text(sumData.spider+"("+percent+"%)");
$('#spider_left_total .request_total').text(sumData.reqest_total);
// 图形化
var initData = rdata.data.stat_list;
var colorList = ['#6ec71e','#4885FF'];
var source_name = {baidu:'百度',google:'Google',bytes:'头条',soso:'搜搜',bing:'必应',qh360:'奇虎360',youdao:'有道',yandex:'Yandex',dnspod:'DNSPOD',mpcrawler:'mpcrawler',other:'其他',};
var lenend2_obj = {};
var rightEc = echarts.init(document.getElementById('echart_right_total'));
var xAxixName = $('#search_time button.cur').text();
var is_compare = false;
var lenend = [];
var serData = [];
for(var i = 0;i (is_compare?2:4)) {
lenend2_obj[lenend[i]] = false;
} else {
lenend2_obj[lenend[i]] = true;
}
}
var rightOption = {
backgroundColor:'#fff',
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'shadow' ,
textStyle: {
color: '#fff',
fontSize: '26'
},
}
},
legend: {
top:'0%',
data: lenend,
selected:lenend2_obj,
textStyle:{
fontSize:12,
color:'#808080'
},
icon:'rect'
},
grid: {
top:60,
left:60,
right:0,
bottom:50
},
xAxis: [{
type: 'category',
axisLabel:{
color:'#4D4D4D',
fontSize:14,
fontWeight:'bold'
},
data: [xAxixName],
}],
color:['#4fa8f9', '#6ec71e', '#f56e6a', '#fc8b40', '#818af8', '#31c9d7', '#f35e7a', '#ab7aee',
'#14d68b', '#cde5ff'],
yAxis: [{
type: 'value',
axisLine: {
show: false,
},
axisTick: {
show: false
},
splitNumber:4, //y轴分割线数量
axisLabel:{
color:'#8C8C8C'
},
splitLine:{
lineStyle:{
type:'dashed'
}
}
}],
series: serData
}
rightEc.setOption(rightOption);
var oop = lenend.slice(0, (is_compare?3:5));
rightEc.on('legendselectchanged', function (params) {
var legend_option = this.getOption(),newAxisName = [];
$.each(legend_option['xAxis'][0]['data'],function(index,item){
newAxisName.push(item.replace(/\([^\)]*\)/g,""))
})
legend_option['xAxis'][0]['data'] = newAxisName;
var num = 0;
for(var e in params.selected){
if(params.selected.hasOwnProperty(e)){
params.selected[e]? num++ : '';
}
}
if(num > (is_compare?3:5)){
oop.push(params.name)
}
if (num > (is_compare?3:5)) {
var hah = oop.slice(oop.length - (is_compare?4:6), oop.length - (is_compare?3:4))[0] + '';
legend_option.legend[0].selected[hah] = false;
}
if (num < 1){
legend_option.legend[0].selected[params.name] = true;
}
this.setOption(legend_option);
});
});
}
function wsSpiderStat(){
////////////////////////////////////////////////////////////////////////////////////////////////////////
var randstr = getRandomString(10);
var html = '';
$(".soft-man-con").html(html);
//日期范围
laydate.render({
elem: '#time_choose',
value:'',
range:true,
done:function(value, startDate, endDate){
if(!value){
return false;
}
$('#search_time button').each(function(){
$(this).removeClass('cur');
});
var timeA = value.split('-')
var start = $.trim(timeA[0]+'-'+timeA[1]+'-'+timeA[2])
var end = $.trim(timeA[3]+'-'+timeA[4]+'-'+timeA[5])
query_txt = toUnixTime(start + " 00:00:00") + "-"+ toUnixTime(end + " 00:00:00")
$('#time_choose').attr("data-name",query_txt);
$('#time_choose').addClass("cur");
wsSpiderStatLogRequest(1);
},
});
$('#search_time button:eq(0)').addClass('cur');
$('#search_time button').click(function(){
$('#search_time button').each(function(){
if ($(this).hasClass('cur')){
$(this).removeClass('cur');
}
});
$('#time_choose').attr("data-name",'');
$('#time_choose').removeClass("cur");
$(this).addClass('cur');
wsSpiderStatLogRequest(1);
});
$('select[name="status_code"]').change(function(){
wsSpiderStatLogRequest(1);
});
wsPost('get_default_site','',{},function(rdata){
$('select[name="site"]').html('');
var rdata = $.parseJSON(rdata.data);
var rdata = rdata.data;
var default_site = rdata["default"];
var select = '';
for (var i = 0; i < rdata["list"].length; i++) {
if (default_site == rdata["list"][i]){
select += ''+rdata["list"][i]+' ';
} else{
select += ''+rdata["list"][i]+' ';
}
}
$('select[name="site"]').html(select);
wsSpiderStatLogRequest(1);
$('select[name="site"]').change(function(){
wsSpiderStatLogRequest(1);
});
});
////////////////////////////////////////////////////////////////////////////////////////////////////////
}
function wsClientStatLogRequest(page){
var args = {};
args['page'] = page;
args['page_size'] = 10;
args['site'] = $('select[name="site"]').val();
args['status_code'] = $('select[name="status_code"]').val();
var query_date = 'today';
if ($('#time_choose').attr("data-name") != ''){
query_date = $('#time_choose').attr("data-name");
} else {
query_date = $('#search_time button.cur').attr("data-name");
}
args['query_date'] = query_date;
args['tojs'] = 'wsClientStatLogRequest';
wsPost('get_client_stat_list', '' ,args, function(rdata){
var rdata = $.parseJSON(rdata.data);
var list = '';
var data = rdata.data.data;
if (data.length > 0){
for(i in data){
list += '';
list += '' + data[i]['time']+' ';
list += '' + data[i]['android'] +' ';
list += '' + data[i]['iphone'] +' ';
list += '' + data[i]['windows'] +' ';
list += '' + data[i]['chrome'] +' ';
list += '' + data[i]['weixin'] +' ';
list += '' + data[i]['qh360'] +' ';
list += '' + data[i]['edeg'] +' ';
list += '' + data[i]['firefox'] +' ';
list += '' + data[i]['safari'] +' ';
list += '' + data[i]['mac'] +' ';
list += '' + data[i]['msie'] +' ';
list += '' + data[i]['machine'] +' ';
list += '' + data[i]['other'] +' ';
list += ' ';
}
} else{
list += '客服端列表为空 ';
}
var table = '\
';
$('#ws_table').html(table);
$('#wsPage').html(rdata.data.page);
$('[data-toggle="tooltip"]').tooltip();
// 图形化
var initData = rdata.data.stat_list;
var sumData = rdata.data.sum_data;
var colorList = ['#6ec71e','#4885FF'];
var source_name = {android:'安卓',iphone:'iOS',windows:'Windows',chrome:'Chrome',weixin:'微信',qh360:'360',edeg:'Edge',firefox:'火狐',safari:'Safari',mac:'Mac',linux:'Linux',msie:'IE',metasr:'搜狗',theworld:'世界之窗',tt:'腾讯TT',maxthon:'遨游',opera:'Opera',qq:'QQ浏览器',uc:'UC',pc2345:'2345',other:'其他',machine:'Machine'};
var lenend2_obj = {};
var leftEc = echarts.init(document.getElementById('echart_left_total'));
var rightEc = echarts.init(document.getElementById('echart_right_total'));
var datas = [
{ value: sumData.pc, name: 'PC客服端' },
{ value: sumData.mobile, name: '移动客服端' },
];
var leftOption = {
backgroundColor:'#fff',
title: {
text: sumData.reqest_total,
textStyle: {
color: '#484848',
fontSize: 17
},
subtext: '总请求数',
subtextStyle: {
color: '#717171',
fontSize: 15
},
itemGap: 20,
left: 'center',
top: '42%'
},
tooltip: {
trigger: 'item'
},
series: [{
type: 'pie',
radius: ['45%', '55%'],
center: ["50%", "50%"],
clockwise: true,
avoidLabelOverlap: false,
hoverOffset: 15,
itemStyle: {
normal: {
label: {
show: true,
position: 'outside',
color: '#666',
formatter: function(params) {
var percent = 0;
var total = 0;
for (var i = 0; i < datas.length; i++) {
total += datas[i].value;
}
if(params.name !== '') {
return params.name + '\n' + '\n' + params.value + '/次';
}else {
return '';
}
},
},
labelLine: {
length: 20,
length2: 10
},
color: function(params) {
return colorList[params.dataIndex]
}
}
},
data: datas
},{
itemStyle: {
normal: {
color: '#F5F6FA',
}
},
type: 'pie',
hoverAnimation: false,
radius: ['42%', '58%'],
center: ["50%", "50%"],
label: {
normal: {
show:false,
}
},
data: [],
z:-1
}]
}
leftEc.setOption(leftOption);
var xAxixName = $('#search_time button.cur').text();
var is_compare = false;
var lenend = [];
var serData = [];
for(var i = 0;i (is_compare?2:4)) {
lenend2_obj[lenend[i]] = false;
} else {
lenend2_obj[lenend[i]] = true;
}
}
var rightOption = {
backgroundColor:'#fff',
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'shadow' ,
textStyle: {
color: '#fff',
fontSize: '26'
},
}
},
legend: {
top:'0%',
data: lenend,
selected:lenend2_obj,
textStyle:{
fontSize:12,
color:'#808080'
},
icon:'rect'
},
grid: {
top:60,
left:60,
right:0,
bottom:50
},
xAxis: [{
type: 'category',
axisLabel:{
color:'#4D4D4D',
fontSize:14,
fontWeight:'bold'
},
data: [xAxixName],
}],
color:['#4fa8f9', '#6ec71e', '#f56e6a', '#fc8b40', '#818af8', '#31c9d7', '#f35e7a', '#ab7aee',
'#14d68b', '#cde5ff'],
yAxis: [{
type: 'value',
axisLine: {
show: false,
},
axisTick: {
show: false
},
splitNumber:4, //y轴分割线数量
axisLabel:{
color:'#8C8C8C'
},
splitLine:{
lineStyle:{
type:'dashed'
}
}
}],
series: serData
}
rightEc.setOption(rightOption);
var oop = lenend.slice(0, (is_compare?3:5));
rightEc.on('legendselectchanged', function (params) {
var legend_option = this.getOption(),newAxisName = [];
$.each(legend_option['xAxis'][0]['data'],function(index,item){
newAxisName.push(item.replace(/\([^\)]*\)/g,""))
})
legend_option['xAxis'][0]['data'] = newAxisName;
var num = 0;
for(var e in params.selected){
if(params.selected.hasOwnProperty(e)){
params.selected[e]? num++ : '';
}
}
if(num > (is_compare?3:5)){
oop.push(params.name)
}
if (num > (is_compare?3:5)) {
var hah = oop.slice(oop.length - (is_compare?4:6), oop.length - (is_compare?3:4))[0] + '';
legend_option.legend[0].selected[hah] = false;
}
if (num < 1){
legend_option.legend[0].selected[params.name] = true;
}
this.setOption(legend_option)
});
});
}
function wsClientStat(){
////////////////////////////////////////////////////////////////////////////////////////////////////////
var randstr = getRandomString(10);
var html = '';
$(".soft-man-con").html(html);
//日期范围
laydate.render({
elem: '#time_choose',
value:'',
range:true,
done:function(value, startDate, endDate){
if(!value){
return false;
}
$('#search_time button').each(function(){
$(this).removeClass('cur');
});
var timeA = value.split('-')
var start = $.trim(timeA[0]+'-'+timeA[1]+'-'+timeA[2])
var end = $.trim(timeA[3]+'-'+timeA[4]+'-'+timeA[5])
query_txt = toUnixTime(start + " 00:00:00") + "-"+ toUnixTime(end + " 00:00:00")
$('#time_choose').attr("data-name",query_txt);
$('#time_choose').addClass("cur");
wsClientStatLogRequest(1);
},
});
$('#search_time button:eq(0)').addClass('cur');
$('#search_time button').click(function(){
$('#search_time button').each(function(){
if ($(this).hasClass('cur')){
$(this).removeClass('cur');
}
});
$('#time_choose').attr("data-name",'');
$('#time_choose').removeClass("cur");
$(this).addClass('cur');
wsClientStatLogRequest(1);
});
$('select[name="status_code"]').change(function(){
wsClientStatLogRequest(1);
});
wsPost('get_default_site','',{},function(rdata){
$('select[name="site"]').html('');
var rdata = $.parseJSON(rdata.data);
var rdata = rdata.data;
var default_site = rdata["default"];
var select = '';
for (var i = 0; i < rdata["list"].length; i++) {
if (default_site == rdata["list"][i]){
select += ''+rdata["list"][i]+' ';
} else{
select += ''+rdata["list"][i]+' ';
}
}
$('select[name="site"]').html(select);
wsClientStatLogRequest(1);
$('select[name="site"]').change(function(){
wsClientStatLogRequest(1);
});
});
////////////////////////////////////////////////////////////////////////////////////////////////////////
}
function wsTableErrorLogRequest(page){
var args = {};
args['page'] = page;
args['page_size'] = 10;
args['site'] = $('select[name="site"]').val();
args['status_code'] = $('select[name="status_code"]').val();
var query_date = 'today';
if ($('#time_choose').attr("data-name") != ''){
query_date = $('#time_choose').attr("data-name");
} else {
query_date = $('#search_time button.cur').attr("data-name");
}
args['query_date'] = query_date;
args['tojs'] = 'wsTableErrorLogRequest';
wsPost('get_logs_error_list', '' ,args, function(rdata){
var rdata = $.parseJSON(rdata.data);
var list = '';
var data = rdata.data.data;
if (data.length > 0){
for(i in data){
list += '';
list += '' + getLocalTime(data[i]['time'])+' ';
list += '' + data[i]['domain'] +' ';
list += '' + data[i]['ip'] +' ';
list += '' + toSize(data[i]['body_length']) +' ';
list += '' + toSecond(data[i]['request_time']) +' ';
list += '' + data[i]['uri'] +' ';
list += '' + data[i]['status_code']+'/' + data[i]['method'] +' ';
list += '详情 ';
list += ' ';
}
} else{
list += '错误日志为空 ';
}
var table = '\
';
$('#ws_table').html(table);
$('#wsPage').html(rdata.data.page);
$(".tablescroll .details").click(function(){
var index = $(this).attr('data-id');
var res = data[index];
layer.open({
type: 1,
title: "【"+res.domain + "】详情信息",
area: '600px',
closeBtn: 2,
shadeClose: false,
content: '\
\
\
时间 ' + getLocalTime(res.time) + ' 真实IP ' + res.ip + ' 客户端端口 '+(res.client_port>0 && res.client_port != ''?res.client_port:'')+' \
类型 ' + res.method + ' 状态 ' + res.status_code + ' 响应大小 ' + toSize(res.body_length) + ' \ \
\
协议
\
\
URL
\
' + $('
').text(res.uri).html() + '
\
完整IP列表
\
' + $('
').text(res.ip_list).html() + '
\
来路
\
' + $('
').text(res.referer == null ?'None':res.referer).html() + '
\
User-Agent
\
' + $('
').text(res.user_agent).html() + '
\
处理耗时
\
' +res.request_time + ' ms
\
',
});
});
});
}
function wsSitesErrorLog(){
////////////////////////////////////////////////////////////////////////////////////////////////////////
var randstr = getRandomString(10);
var html = '\
\
网站: \
\
未设置 \
\
状态码: \
\
所有 \
50x \
40x \
500 \
501 \
502 \
503 \
403 \
404 \
\
时间: \
\
\
\
';
$(".soft-man-con").html(html);
//日期范围
laydate.render({
elem: '#time_choose',
value:'',
range:true,
done:function(value, startDate, endDate){
if(!value){
return false;
}
$('#search_time button').each(function(){
$(this).removeClass('cur');
});
var timeA = value.split('-')
var start = $.trim(timeA[0]+'-'+timeA[1]+'-'+timeA[2])
var end = $.trim(timeA[3]+'-'+timeA[4]+'-'+timeA[5])
query_txt = toUnixTime(start + " 00:00:00") + "-"+ toUnixTime(end + " 00:00:00")
$('#time_choose').attr("data-name",query_txt);
$('#time_choose').addClass("cur");
wsTableErrorLogRequest(1);
},
});
$('#search_time button:eq(0)').addClass('cur');
$('#search_time button').click(function(){
$('#search_time button').each(function(){
if ($(this).hasClass('cur')){
$(this).removeClass('cur');
}
});
$('#time_choose').attr("data-name",'');
$('#time_choose').removeClass("cur");
$(this).addClass('cur');
wsTableErrorLogRequest(1);
});
$('select[name="status_code"]').change(function(){
wsTableErrorLogRequest(1);
});
wsPost('get_default_site','',{},function(rdata){
$('select[name="site"]').html('');
var rdata = $.parseJSON(rdata.data);
var rdata = rdata.data;
var default_site = rdata["default"];
var select = '';
for (var i = 0; i < rdata["list"].length; i++) {
if (default_site == rdata["list"][i]){
select += ''+rdata["list"][i]+' ';
} else{
select += ''+rdata["list"][i]+' ';
}
}
$('select[name="site"]').html(select);
wsTableErrorLogRequest(1);
$('select[name="site"]').change(function(){
wsTableErrorLogRequest(1);
});
});
////////////////////////////////////////////////////////////////////////////////////////////////////////
}
function wsTableLogRequest(page){
var args = {};
args['page'] = page;
args['page_size'] = 10;
args['site'] = $('select[name="site"]').val();
args['method'] = $('select[name="method"]').val();
args['status_code'] = $('select[name="status_code"]').val();
args['spider_type'] = $('select[name="spider_type"]').val();
var query_date = 'today';
if ($('#time_choose').attr("data-name") != ''){
query_date = $('#time_choose').attr("data-name");
} else {
query_date = $('#search_time button.cur').attr("data-name");
}
args['query_date'] = query_date;
// console.log("query_date:",query_date);
var search_uri = $('input[name="search_uri"]').val();
args['search_uri'] = search_uri;
args['tojs'] = 'wsTableLogRequest';
wsPost('get_logs_list', '' ,args, function(rdata){
var rdata = $.parseJSON(rdata.data);
var list = '';
var data = rdata.data.data;
if (data.length > 0){
for(i in data){
list += '';
list += '' + getLocalTime(data[i]['time'])+' ';
list += '' + data[i]['domain'] +' ';
list += '' + data[i]['ip'] +' ';
list += '' + toSize(data[i]['body_length']) +' ';
list += '' + toSecond(data[i]['request_time']) +' ';
list += '' + data[i]['uri'] +' ';
list += '' + data[i]['status_code']+'/' + data[i]['method'] +' ';
list += '详情 ';
list += ' ';
}
} else{
list += '网站日志为空 ';
}
var table = '\
';
$('#ws_table').html(table);
$('#wsPage').html(rdata.data.page);
$(".tablescroll .details").click(function(){
var index = $(this).attr('data-id');
var res = data[index];
layer.open({
type: 1,
title: "【"+res.domain + "】详情信息",
area: '600px',
closeBtn: 2,
shadeClose: false,
content: '\
\
\
时间 ' + getLocalTime(res.time) + ' 真实IP ' + res.ip + ' 客户端端口 '+(res.client_port>0 && res.client_port != ''?res.client_port:'')+' \
类型 ' + res.method + ' 状态 ' + res.status_code + ' 响应大小 ' + toSize(res.body_length) + ' \ \
\
协议
\
\
URL
\
' + $('
').text(res.uri).html() + '
\
完整IP列表
\
' + $('
').text(res.ip_list).html() + '
\
来路
\
' + $('
').text(res.referer == null ?'None':res.referer).html() + '
\
User-Agent
\
' + $('
').text(res.user_agent).html() + '
\
处理耗时
\
' +res.request_time + ' ms
\
',
});
});
});
}
function wsSitesLog(){
////////////////////////////////////////////////////////////////////////////////////////////////////////
var randstr = getRandomString(10);
var html = '\
\
\
请求类型: \
\
所有 \
GET \
POST \
HEAD \
PUT \
DELETE \
\
状态码: \
\
所有 \
500 \
502 \
503 \
404 \
200 \
\
蜘蛛过滤: \
\
不过滤 \
仅显示蜘蛛 \
不显示蜘蛛 \
百度 \
必应 \
奇虎360 \
Google \
头条 \
搜狗 \
有道 \
搜搜 \
Dnspod \
Yandex \
神马 \
其他 \
\
URL过滤: \
\
\
\
';
$(".soft-man-con").html(html);
//日期范围
laydate.render({
elem: '#time_choose',
value:'',
range:true,
done:function(value, startDate, endDate){
if(!value){
return false;
}
$('#search_time button').each(function(){
$(this).removeClass('cur');
});
var timeA = value.split('-')
var start = $.trim(timeA[0]+'-'+timeA[1]+'-'+timeA[2])
var end = $.trim(timeA[3]+'-'+timeA[4]+'-'+timeA[5])
query_txt = toUnixTime(start + " 00:00:00") + "-"+ toUnixTime(end + " 00:00:00")
$('#time_choose').attr("data-name",query_txt);
$('#time_choose').addClass("cur");
wsTableLogRequest(1);
},
});
$('#search_time button:eq(0)').addClass('cur');
$('#search_time button').click(function(){
$('#search_time button').each(function(){
if ($(this).hasClass('cur')){
$(this).removeClass('cur');
}
});
$('#time_choose').attr("data-name",'');
$('#time_choose').removeClass("cur");
$(this).addClass('cur');
wsTableLogRequest(1);
});
$('select[name="method"]').change(function(){
wsTableLogRequest(1);
});
$('select[name="status_code"]').change(function(){
wsTableLogRequest(1);
});
$('select[name="spider_type"]').change(function(){
wsTableLogRequest(1);
});
$('#logs_search').click(function(){
wsTableLogRequest(1);
});
wsPost('get_default_site','',{},function(rdata){
$('select[name="site"]').html('');
var rdata = $.parseJSON(rdata.data);
var rdata = rdata.data;
var default_site = rdata["default"];
var select = '';
for (var i = 0; i < rdata["list"].length; i++) {
if (default_site == rdata["list"][i]){
select += ''+rdata["list"][i]+' ';
} else{
select += ''+rdata["list"][i]+' ';
}
}
$('select[name="site"]').html(select);
wsTableLogRequest(1);
$('select[name="site"]').change(function(){
wsTableLogRequest(1);
});
});
////////////////////////////////////////////////////////////////////////////////////////////////////////
}