| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608 |
- function getData(filename){
- $.get("../../tmp/log/"+filename,
- function(data,status){
-
- //生成数据数组
- let rowData= data.split('\n');
- let arrData = new Array();
- for (const iterator of rowData) {
- arrData.push(iterator.split(","));
- }
- console.log(arrData);
- let api = new Object;
- let delayInMinute
-
- //遍历所有数据
- for (const iterator of arrData) {
- let delay = parseInt(iterator[2]);
- if (api.hasOwnProperty.call(api, iterator[0])) {
- let element = api[iterator[0]];
- element.times++;
- element.delay += delay;
- try{
- let hour = parseInt(iterator[1].split(':')[0]);
- element.delayHour[hour] += delay;
- if(delay>api[iterator[0]].delayMaxHour[hour]){
- api[iterator[0]].delayMaxHour[hour] = delay;
- }
- if(delay < api[iterator[0]].delayMinHour[hour]){
- api[iterator[0]].delayMinHour[hour] = delay;
- }
- element.timesHour[hour] ++;
-
- }catch(e){
- }
- }else{
- api[iterator[0]] = {
- times:1,
- timesHour:[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
- delay:delay,
- //一小时总执行时间
- delayHour:[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
- //一小时最高执行时间
- delayMaxHour:[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
- //一小时最低执行时间
-
- delayMinHour:[30000,30000,30000,30000,30000,30000,30000,30000,30000,30000,30000,30000,30000,30000,30000,30000,30000,30000,30000,30000,30000,30000,30000,30000],
- //一小时平均执行时间
- delayAverageHour:[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
- };
- try{
- let hour = parseInt(iterator[1].split(':')[0]);
- api[iterator[0]].delayHour[hour] = parseInt(iterator[2]);
- api[iterator[0]].delayMaxHour[hour] = parseInt(iterator[2]);
- api[iterator[0]].delayMinHour[hour] = parseInt(iterator[2]);
- api[iterator[0]].timesHour[hour] = 1;
- }catch(e){
- }
- }
- }
- let api_timms = new Array();
- let api_delay = new Array();
- let ApiDelayInHour = new Array();
- let ApiTimesInHour = new Array();
- let ApiAverageInHour = new Array();
- let ohlc = new Array();
- let volume = new Array();
- for (const key in api) {
- if (api.hasOwnProperty.call(api, key)) {
- //计算每个小时的平均执行时间
- for (let index = 0; index < api[key].delayAverageHour.length; index++) {
- api[key].delayAverageHour[index] = api[key].delayHour[index]/api[key].timesHour[index];
- }
- const element = api[key];
- api_timms.push({
- name:key,
- y:element.times
- });
- api_delay.push({
- name:key,
- y:element.delay
- });
- ApiDelayInHour.push({
- name:key,
- data:element.delayHour
- });
- ApiTimesInHour.push({
- name:key,
- data:element.timesHour
- });
- ApiAverageInHour.push({
- name:key,
- data:element.delayAverageHour
- });
- for (let index = 1; index < api[key].delayAverageHour.length; index++) {
- api[key].delayAverageHour[index] = api[key].delayHour[index]/api[key].timesHour[index];
- if(key=="/app/uwbw/update.php"){
- ohlc.push([
- Date.UTC(2022,1,1,index,0,0,0), // the date
- api[key].delayAverageHour[index-1], // open
- api[key].delayMaxHour[index], // high
- api[key].delayMinHour[index], // low
- api[key].delayAverageHour[index] // close
- ]);
-
- volume.push([
- Date.UTC(2022,1,1,index,0,0,0), // the date
- element.timesHour[index] // the volume
- ]);
- }
- }
- }
- }
- chart_1(api_timms);
- chart_2(api_delay);
- chart_3(ApiDelayInHour);
- chart_3a(ApiAverageInHour);
- chart_4(ApiTimesInHour);
- chart_5(ohlc,volume);
- chart_6(ohlc,volume);
- });
-
- }
- function chart_1(data){
- // Make monochrome colors
- var pieColors = (function () {
- var colors = [],
- base = Highcharts.getOptions().colors[0],
- i;
- for (i = 0; i < 10; i += 1) {
- // Start out with a darkened base color (negative brighten), and end
- // up with a much brighter color
- colors.push(Highcharts.color(base).brighten((i - 3) / 7).get());
- }
- return colors;
- }());
- // Build the chart
- Highcharts.chart('chart-1', {
- chart: {
- plotBackgroundColor: null,
- plotBorderWidth: null,
- plotShadow: false,
- type: 'pie'
- },
- title: {
- text: 'API 执行次数'
- },
- tooltip: {
- pointFormat: '{series.name}: <b>{point.percentage:.1f}%</b>'
- },
- accessibility: {
- point: {
- valueSuffix: '%'
- }
- },
- plotOptions: {
- pie: {
- allowPointSelect: true,
- cursor: 'pointer',
- colors: pieColors,
- dataLabels: {
- enabled: true,
- format: '<b>{point.name}</b><br>{point.percentage:.1f} %',
- distance: -50,
- filter: {
- property: 'percentage',
- operator: '>',
- value: 4
- }
- }
- }
- },
- series: [{
- name: 'Share',
- data: data
- }]
- });
- }
- function chart_2(data){
- // Make monochrome colors
- var pieColors = (function () {
- var colors = [],
- base = Highcharts.getOptions().colors[0],
- i;
- for (i = 0; i < 10; i += 1) {
- // Start out with a darkened base color (negative brighten), and end
- // up with a much brighter color
- colors.push(Highcharts.color(base).brighten((i - 3) / 7).get());
- }
- return colors;
- }());
- // Build the chart
- Highcharts.chart('chart-2', {
- chart: {
- plotBackgroundColor: null,
- plotBorderWidth: null,
- plotShadow: false,
- type: 'pie'
- },
- title: {
- text: 'API 累积执行时间'
- },
- tooltip: {
- pointFormat: '{series.name}: <b>{point.percentage:.1f}%</b>'
- },
- accessibility: {
- point: {
- valueSuffix: '%'
- }
- },
- plotOptions: {
- pie: {
- allowPointSelect: true,
- cursor: 'pointer',
- colors: pieColors,
- dataLabels: {
- enabled: true,
- format: '<b>{point.name}</b><br>{point.percentage:.1f} %',
- distance: -50,
- filter: {
- property: 'percentage',
- operator: '>',
- value: 4
- }
- }
- }
- },
- series: [{
- name: 'Share',
- data: data
- }]
- });
- }
- //按照小时计算的api 执行时间
- function chart_3(data){
- Highcharts.chart('chart-3', {
- title: {
- text: '按照小时计算的 API 执行时间'
- },
-
- subtitle: {
- text: 'Source: thesolarfoundation.com'
- },
-
- yAxis: {
- title: {
- text: '执行时间'
- }
- },
-
- xAxis: {
- categories: [
- '8',
- '9',
- '10',
- '11',
- '12',
- '13',
- '14',
- '15',
- '16',
- '17',
- '18',
- '19',
- '20',
- '21',
- '22',
- '23',
- '0',
- '1',
- '2',
- '3',
- '4',
- '5',
- '6',
- '7'
- ],
- accessibility: {
- rangeDescription: 'Range: 0 to 23'
- }
- },
-
- legend: {
- layout: 'vertical',
- align: 'right',
- verticalAlign: 'middle'
- },
-
- plotOptions: {
- series: {
- label: {
- connectorAllowed: false
- },
- pointStart: 0
- }
- },
-
- series: data,
-
- responsive: {
- rules: [{
- condition: {
- maxWidth: 500
- },
- chartOptions: {
- legend: {
- layout: 'horizontal',
- align: 'center',
- verticalAlign: 'bottom'
- }
- }
- }]
- }
-
- });
- }
- function chart_3a(data){
- Highcharts.chart('chart-3a', {
- title: {
- text: '按照小时计算的 API 平均执行时间'
- },
-
- subtitle: {
- text: '总执行时间/次数'
- },
-
- yAxis: {
- title: {
- text: '执行时间'
- }
- },
-
- xAxis: {
- categories: [
- '8',
- '9',
- '10',
- '11',
- '12',
- '13',
- '14',
- '15',
- '16',
- '17',
- '18',
- '19',
- '20',
- '21',
- '22',
- '23',
- '0',
- '1',
- '2',
- '3',
- '4',
- '5',
- '6',
- '7'
- ],
- accessibility: {
- rangeDescription: 'Range: 0 to 23'
- }
- },
-
- legend: {
- layout: 'vertical',
- align: 'right',
- verticalAlign: 'middle'
- },
-
- plotOptions: {
- series: {
- label: {
- connectorAllowed: false
- },
- pointStart: 0
- }
- },
-
- series: data,
-
- responsive: {
- rules: [{
- condition: {
- maxWidth: 500
- },
- chartOptions: {
- legend: {
- layout: 'horizontal',
- align: 'center',
- verticalAlign: 'bottom'
- }
- }
- }]
- }
-
- });
- }
- function chart_4(data){
- Highcharts.chart('chart-4', {
- chart: {
- type: 'column'
- },
- title: {
- text: 'API 执行次数'
- },
- subtitle: {
- text: 'Source: WorldClimate.com'
- },
- xAxis: {
- categories: [
- '8',
- '9',
- '10',
- '11',
- '12',
- '13',
- '14',
- '15',
- '16',
- '17',
- '18',
- '19',
- '20',
- '21',
- '22',
- '23',
- '0',
- '1',
- '2',
- '3',
- '4',
- '5',
- '6',
- '7'
- ],
- crosshair: true
- },
- yAxis: {
- min: 0,
- title: {
- text: '执行次数'
- }
- },
- legend: {
- layout: 'vertical',
- align: 'right',
- verticalAlign: 'middle'
- },
- tooltip: {
- headerFormat: '<span style="font-size:10px">{point.key}</span><table>',
- pointFormat: '<tr><td style="color:{series.color};padding:0">{series.name}: </td>' +
- '<td style="padding:0"><b>{point.y} 次</b></td></tr>',
- footerFormat: '</table>',
- shared: true,
- useHTML: true
- },
- plotOptions: {
- column: {
- pointPadding: 0.2,
- borderWidth: 0
- }
- },
- series: data
- });
- }
- function chart_6(ohlc,volume){
- {
- // create the chart
- Highcharts.stockChart('chart-6', {
- title: {
- text: 'AAPL stock price by minute'
- },
- rangeSelector: {
- buttons: [{
- type: 'hour',
- count: 1,
- text: '1h'
- }, {
- type: 'day',
- count: 1,
- text: '1D'
- }, {
- type: 'all',
- count: 1,
- text: 'All'
- }],
- selected: 1,
- inputEnabled: false
- },
- series: [{
- name: 'AAPL',
- type: 'candlestick',
- data: ohlc,
- tooltip: {
- valueDecimals: 2
- }
- }]
- });
- }
- }
- function chart_5(ohlc,volume){
- // create the chart
- groupingUnits = [[
- 'week', // unit name
- [1] // allowed multiples
- ], [
- 'month',
- [1, 2, 3, 4, 6]
- ]];
- Highcharts.stockChart('chart-5', {
- rangeSelector: {
- selected: 2
- },
-
- title: {
- text: 'progress_curve'
- },
- yAxis: [{
- labels: {
- align: 'right',
- x: -3
- },
- title: {
- text: 'EXP'
- },
- height: '60%',
- lineWidth: 2,
- resize: {
- enabled: true
- }
- }, {
- labels: {
- align: 'right',
- x: -3
- },
- title: {
- text: 'action'
- },
- top: '65%',
- height: '35%',
- offset: 0,
- lineWidth: 2
- }],
-
- tooltip: {
- shared: false,
- useHTML: true,
- pointFormatter: function() {
- if(this.high){
- return '<b><a href="../">'+this.series.name + ' : ' + this.high + ' ' +'gLocal.gui.h'+ '</a><br><a href="../">' +'gLocal.gui.day_EXP' + ' : ' + Math.round((this.high - this.low)*100)/100 + ' ' +'gLocal.gui.h'+'</a></b><br/>';
- }
- else{
- return '<b><a href="../">'+this.series.name + ' : ' + this.y + ' ' +'gLocal.gui.times'+'</a><span style="display:none;">'+this.x+'</span></b>';
- }
- },
- valueDecimals: 2,//保留两位小數
- split: true
- },
-
- series: [{
- type: 'ohlc',
- name: 'gLocal.gui.EXP_in_total',
- data: ohlc,
- dataGrouping: {
- units: [[
- 'week', // unit name
- [1] // allowed multiples
- ], [
- 'month',
- [1, 2, 3, 4, 6]
- ]]
- }
- }, {
- type: 'column',
- name: 'gLocal.gui.day_action',
- data: volume,
- yAxis: 1,
- dataGrouping: {
- units: groupingUnits
- }
- }]
- });
- }
|