diff --git a/packages/cjs/flask-state.js b/packages/cjs/flask-state.js
index 11d61a7..a3d952e 100644
--- a/packages/cjs/flask-state.js
+++ b/packages/cjs/flask-state.js
@@ -32,17 +32,16 @@
this.language = language;
this.mobile = MachineStatus.isMobile();
this.index = 0;
- this.ajax = new Ajax();
this.initFlaskStateContainer(this.mobile);
this.setEventListener();
this.initFlaskStateLanguage(this.language);
this.setInitParams();
if (this.mobile) {
- this.setTagChangeEventListener(this.consoleCpuChart, this.consoleMemoryChart, this.consoleLoadavgChart, this.consoleDiskusageChart);
+ this.setTagChangeEventListener(this.consoleCpuChart, this.consoleMemoryChart, this.consoleLoadavgChart, this.consoleDiskUsageChart);
}
// Bind window resizing redraw event
window.addEventListener('resize', () => {
- MachineStatus.resizeChartTimer([this.consoleMemoryChart, this.consoleCpuChart, this.consoleLoadavgChart, this.consoleDiskusageChart]);
+ MachineStatus.resizeChartTimer([this.consoleMemoryChart, this.consoleCpuChart, this.consoleLoadavgChart, this.consoleDiskUsageChart]);
})
};
@@ -154,7 +153,7 @@
this.consoleCpuChart = echarts.init(document.getElementById('fs-info-cpu-chart'), null, {renderer: 'svg'});
this.consoleMemoryChart = echarts.init(document.getElementById('fs-info-memory-chart'), null, {renderer: 'svg'});
this.consoleLoadavgChart = echarts.init(document.getElementById('fs-info-loadavg-chart'), null, {renderer: 'svg'});
- this.consoleDiskusageChart = echarts.init(document.getElementById('fs-info-diskusage-chart'), null, {renderer: 'svg'});
+ this.consoleDiskUsageChart = echarts.init(document.getElementById('fs-info-diskusage-chart'), null, {renderer: 'svg'});
this.cpuOption = MachineStatus.generateChatOption(this.mobile, this.language.cpu || 'CPU', '', this.language.today || 'Today');
this.memoryOption = MachineStatus.generateChatOption(this.mobile, this.language.memory || 'Memory', '', this.language.today || 'Today');
this.diskUsageOption = MachineStatus.generateChatOption(this.mobile, this.language.disk_usage || 'Disk Usage', '', this.language.today || 'Today');
@@ -166,134 +165,144 @@
this.consoleCpuChart.showLoading();
this.consoleMemoryChart.showLoading();
this.consoleLoadavgChart.showLoading();
- this.consoleDiskusageChart.showLoading();
- this.ajax.send({
- type: 'POST',
- url: '/v0/state/hoststatus',
- data: {'timeQuantum': days},
- success: response => {
- if (response.code !== 200) {
- return;
- }
+ this.consoleDiskUsageChart.showLoading();
+ fetch(
+ "/v0/state/hoststatus",
+ {
+ method: "POST",
+ credentials: "include",
+ headers: {
+ "Content-Type": "application/json;charset=UTF-8",
+ },
+ body: JSON.stringify({"timeQuantum": days}),
+ }
+ ).then((res) => {
+ if (res.ok) {
+ res.json().then((response) => {
+ if (response.code !== 200) {
+ return;
+ }
- const fields = ["ts", "cpu", "memory", "load_avg", "disk_usage"];
- const data = response.data;
+ const fields = ["ts", "cpu", "memory", "load_avg", "disk_usage"];
+ const data = response.data;
- data.items = data.items.map(item => {
- let element = {};
- fields.forEach((field, index) => {
- if (field === "ts") return element[field] = SECONDS_TO_MILLISECONDS * item[index];
- element[field] = item[index];
- });
- return element;
- });
- let currentStatistic = data.currentStatistic;
- if (Object.keys(currentStatistic).length) {
- let hostInfoSpan = document.getElementById('fs-host-status').getElementsByClassName('fs-badge-content');
- hostInfoSpan[0].innerHTML = currentStatistic.memory + '%';
- hostInfoSpan[1].innerHTML = currentStatistic.cpu + '%';
- hostInfoSpan[2].innerHTML = currentStatistic.disk_usage + '%';
- hostInfoSpan[3].innerHTML = currentStatistic.load_avg[0] + "," + currentStatistic.load_avg[1] + "," + currentStatistic.load_avg[2];
-
- hostInfoSpan[4].innerHTML = MachineStatus.getFormatSeconds(currentStatistic.boot_seconds || 0, this.language.days, this.language.hours, this.language.minutes, this.language.seconds);
-
- const machineIndex = ['memory', 'cpu', 'disk_usage', 'load_avg'];
- machineIndex.forEach(function (item, index) {
- let paramClass = '';
- if (item === 'load_avg') {
- let loadavgAvg = (currentStatistic.load_avg[0] + currentStatistic.load_avg[1] + currentStatistic.load_avg[2]) / 3;
- paramClass = loadavgAvg >= LOADAVG_VALUE.WARNING ? loadavgAvg >= LOADAVG_VALUE.DANGER ? 'background-red' : 'background-orange' : 'background-green';
- } else {
- paramClass = currentStatistic[item] >= MACHINE_VALUE.WARNING ? currentStatistic.memory >= MACHINE_VALUE.DANGER ? 'background-red' : 'background-orange' : 'background-green';
- }
- let param = hostInfoSpan[index].classList;
- param.remove('background-green', 'background-orange', 'background-red');
- param.add(paramClass);
+ data.items = data.items.map(item => {
+ let element = {};
+ fields.forEach((field, index) => {
+ if (field === "ts") return element[field] = SECONDS_TO_MILLISECONDS * item[index];
+ element[field] = item[index];
+ });
+ return element;
});
-
- let hostInfoExtendSpan = document.getElementById('fs-redis-status').getElementsByClassName('fs-badge-content');
- let hostInfoKeysList = ['used_memory', 'used_memory_rss', 'mem_fragmentation_ratio', 'hits_ratio', 'delta_hits_ratio', 'uptime_in_seconds', 'connected_clients'];
- let hideRedis = true
- for (let item of hostInfoKeysList) {
- if (currentStatistic[item]) {
- hideRedis = false
- break
- }
- }
- if (hideRedis) {
- document.getElementById('fs-redis-status-title').innerHTML = '';
- document.getElementById('fs-redis-status-title').style.marginTop = '0';
- document.getElementById('fs-redis-status').style.display = 'none';
- } else {
- hostInfoKeysList.forEach((item, index) => {
- switch (item) {
- case 'used_memory':
- hostInfoExtendSpan[index].innerHTML = Math.ceil(currentStatistic[item] / BIT_TO_MB) + ' M';
- break;
- case 'used_memory_rss':
- hostInfoExtendSpan[index].innerHTML = Math.ceil(currentStatistic[item] / BIT_TO_MB) + ' M';
- break;
- case 'mem_fragmentation_ratio':
- let ratio = currentStatistic[item];
- hostInfoExtendSpan[index].innerHTML = currentStatistic[item];
- if (ratio !== null && ratio !== undefined && ratio > 1) {
- let hostInfoExtendSpanClass = hostInfoExtendSpan[index].classList;
- hostInfoExtendSpanClass.remove('background-green');
- hostInfoExtendSpanClass.add('background-red');
- }
- break;
- case 'hits_ratio':
- hostInfoExtendSpan[index].innerHTML = currentStatistic[item] + '%';
- break;
- case 'delta_hits_ratio':
- hostInfoExtendSpan[index].innerHTML = currentStatistic[item] + '%';
- break;
- case 'uptime_in_seconds':
- hostInfoExtendSpan[index].innerHTML = MachineStatus.getFormatSeconds(currentStatistic[item], this.language.days, this.language.hours, this.language.minutes, this.language.seconds);
- break;
- case 'connected_clients':
- hostInfoExtendSpan[index].innerHTML = currentStatistic[item];
+ let currentStatistic = data.currentStatistic;
+ if (Object.keys(currentStatistic).length) {
+ let hostInfoSpan = document.getElementById('fs-host-status').getElementsByClassName('fs-badge-content');
+ hostInfoSpan[0].innerHTML = currentStatistic.memory + '%';
+ hostInfoSpan[1].innerHTML = currentStatistic.cpu + '%';
+ hostInfoSpan[2].innerHTML = currentStatistic.disk_usage + '%';
+ hostInfoSpan[3].innerHTML = currentStatistic.load_avg[0] + "," + currentStatistic.load_avg[1] + "," + currentStatistic.load_avg[2];
+
+ hostInfoSpan[4].innerHTML = MachineStatus.getFormatSeconds(currentStatistic.boot_seconds || 0, this.language.days, this.language.hours, this.language.minutes, this.language.seconds);
+
+ const machineIndex = ['memory', 'cpu', 'disk_usage', 'load_avg'];
+ machineIndex.forEach(function (item, index) {
+ let paramClass;
+ if (item === 'load_avg') {
+ let loadavgAvg = (currentStatistic.load_avg[0] + currentStatistic.load_avg[1] + currentStatistic.load_avg[2]) / 3;
+ paramClass = loadavgAvg >= LOADAVG_VALUE.WARNING ? loadavgAvg >= LOADAVG_VALUE.DANGER ? 'background-red' : 'background-orange' : 'background-green';
+ } else {
+ paramClass = currentStatistic[item] >= MACHINE_VALUE.WARNING ? currentStatistic.memory >= MACHINE_VALUE.DANGER ? 'background-red' : 'background-orange' : 'background-green';
}
+ let param = hostInfoSpan[index].classList;
+ param.remove('background-green', 'background-orange', 'background-red');
+ param.add(paramClass);
});
+
+ let hostInfoExtendSpan = document.getElementById('fs-redis-status').getElementsByClassName('fs-badge-content');
+ let hostInfoKeysList = ['used_memory', 'used_memory_rss', 'mem_fragmentation_ratio', 'hits_ratio', 'delta_hits_ratio', 'uptime_in_seconds', 'connected_clients'];
+ let hideRedis = true
+ for (let item of hostInfoKeysList) {
+ if (currentStatistic[item]) {
+ hideRedis = false
+ break
+ }
+ }
+ if (hideRedis) {
+ document.getElementById('fs-redis-status-title').innerHTML = '';
+ document.getElementById('fs-redis-status-title').style.marginTop = '0';
+ document.getElementById('fs-redis-status').style.display = 'none';
+ } else {
+ hostInfoKeysList.forEach((item, index) => {
+ switch (item) {
+ case 'used_memory':
+ hostInfoExtendSpan[index].innerHTML = Math.ceil(currentStatistic[item] / BIT_TO_MB) + ' M';
+ break;
+ case 'used_memory_rss':
+ hostInfoExtendSpan[index].innerHTML = Math.ceil(currentStatistic[item] / BIT_TO_MB) + ' M';
+ break;
+ case 'mem_fragmentation_ratio':
+ let ratio = currentStatistic[item];
+ hostInfoExtendSpan[index].innerHTML = currentStatistic[item];
+ if (ratio !== null && ratio !== undefined && ratio > 1) {
+ let hostInfoExtendSpanClass = hostInfoExtendSpan[index].classList;
+ hostInfoExtendSpanClass.remove('background-green');
+ hostInfoExtendSpanClass.add('background-red');
+ }
+ break;
+ case 'hits_ratio':
+ hostInfoExtendSpan[index].innerHTML = currentStatistic[item] + '%';
+ break;
+ case 'delta_hits_ratio':
+ hostInfoExtendSpan[index].innerHTML = currentStatistic[item] + '%';
+ break;
+ case 'uptime_in_seconds':
+ hostInfoExtendSpan[index].innerHTML = MachineStatus.getFormatSeconds(currentStatistic[item], this.language.days, this.language.hours, this.language.minutes, this.language.seconds);
+ break;
+ case 'connected_clients':
+ hostInfoExtendSpan[index].innerHTML = currentStatistic[item];
+ }
+ });
+ }
}
- }
- data.items.reverse();
- let dataMap = MachineStatus.getChartsData(data.items);
-
- let tsList = dataMap.ts_list;
- let cpuList = dataMap.cpu_list;
- let memoryList = dataMap.memory_list;
- let loadavgList = dataMap.load_avg_list[0];
- let loadavg5MinList = dataMap.load_avg_list[1];
- let loadavg15MinList = dataMap.load_avg_list[2];
- let diskUsageList = dataMap.disk_usage_list;
-
- this.memoryOption.xAxis.data = tsList;
- this.cpuOption.xAxis.data = tsList;
- this.loadavgOption.xAxis.data = tsList;
- this.diskUsageOption.xAxis.data = tsList;
-
- this.memoryOption.series[0].data = memoryList;
- this.cpuOption.series[0].data = cpuList;
- this.diskUsageOption.series[0].data = diskUsageList;
- this.loadavgOption.series[0].data = loadavgList;
- this.loadavgOption.series[1].data = loadavg5MinList;
- this.loadavgOption.series[2].data = loadavg15MinList;
-
- this.consoleMemoryChart.setOption(this.memoryOption);
- this.consoleCpuChart.setOption(this.cpuOption);
- this.consoleLoadavgChart.setOption(this.loadavgOption);
- this.consoleDiskusageChart.setOption(this.diskUsageOption);
- MachineStatus.resizeChart([this.consoleMemoryChart, this.consoleCpuChart, this.consoleLoadavgChart, this.consoleDiskusageChart]);
- },
- complete: () => {
- this.consoleMemoryChart.hideLoading();
- this.consoleCpuChart.hideLoading();
- this.consoleLoadavgChart.hideLoading();
- this.consoleDiskusageChart.hideLoading();
- },
- }).then();
+ data.items.reverse();
+ let dataMap = MachineStatus.getChartsData(data.items);
+
+ let tsList = dataMap.ts_list;
+ let cpuList = dataMap.cpu_list;
+ let memoryList = dataMap.memory_list;
+ let loadavgList = dataMap.load_avg_list[0];
+ let loadavg5MinList = dataMap.load_avg_list[1];
+ let loadavg15MinList = dataMap.load_avg_list[2];
+ let diskUsageList = dataMap.disk_usage_list;
+
+ this.memoryOption.xAxis.data = tsList;
+ this.cpuOption.xAxis.data = tsList;
+ this.loadavgOption.xAxis.data = tsList;
+ this.diskUsageOption.xAxis.data = tsList;
+
+ this.memoryOption.series[0].data = memoryList;
+ this.cpuOption.series[0].data = cpuList;
+ this.diskUsageOption.series[0].data = diskUsageList;
+ this.loadavgOption.series[0].data = loadavgList;
+ this.loadavgOption.series[1].data = loadavg5MinList;
+ this.loadavgOption.series[2].data = loadavg15MinList;
+
+ this.consoleMemoryChart.setOption(this.memoryOption);
+ this.consoleCpuChart.setOption(this.cpuOption);
+ this.consoleLoadavgChart.setOption(this.loadavgOption);
+ this.consoleDiskUsageChart.setOption(this.diskUsageOption);
+ MachineStatus.resizeChart([this.consoleMemoryChart, this.consoleCpuChart, this.consoleLoadavgChart, this.consoleDiskUsageChart]);
+ }).then(() => {
+ this.consoleMemoryChart.hideLoading();
+ this.consoleCpuChart.hideLoading();
+ this.consoleLoadavgChart.hideLoading();
+ this.consoleDiskUsageChart.hideLoading();
+ })
+ }
+ }).catch(function (err) {
+ console.log(err);
+ })
};
/* Check if the device is a mobile phone */
@@ -356,7 +365,8 @@
data: [lineName],
textStyle: {
fontSize: 14
- }
+ },
+ show: titleText === 'Load Avg',
},
grid: {
left: '3%',
@@ -368,8 +378,10 @@
toolbox: {
show: !isMobile,
feature: {
- saveAsImage: {}
- }
+ saveAsImage: {
+ title: ' ',
+ }
+ },
},
xAxis: {
type: 'category',
@@ -381,7 +393,10 @@
}
},
yAxis: {
- type: 'value'
+ type: 'value',
+ axisLabel: {
+ formatter: (value) => value + (titleText === 'Load Avg' ? '' : '%'),
+ },
},
series: [
{
@@ -466,64 +481,6 @@
};
}
- /* Native Ajax classes */
- class Ajax {
- constructor(xhr) {
- xhr = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP");
- this.xhr = xhr;
- }
-
- send(options) {
-
- let xhr = this.xhr;
-
- let opt = {
- type: options.type || 'get',
- url: options.url || '',
- async: options.async || true,
- data: JSON.stringify(options.data),
- dataType: options.dataType || 'json',
- contentType: 'application/json',
- success: options.success || null,
- complete: options.complete || null
- };
-
-
- return new Promise((resolve, reject) => {
- xhr.open(opt.type, opt.url, opt.async);
- xhr.onreadystatechange = () => {
- // readyState: 0: init, 1: connect has set up, 2: receive request, 3: request.. , 4: request end, send response
- if (xhr.readyState === 4) {
- // status: 200: OK, 401: Verification Failed, 404: Not Found Page
- if (opt.dataType === 'json') {
- const data = JSON.parse(xhr.responseText);
- resolve(data);
- if (opt.success !== null) {
- opt.success(data);
- } else {
- reject(new Error(String(xhr.status) || 'No callback function.'));
- }
- } else {
- reject(new Error(String(xhr.status) || 'Error data type.'));
- }
- }
- };
-
- xhr.onerror = () => {
- reject(new Error(String(xhr.status) || 'Server is fail.'));
- };
-
- xhr.setRequestHeader("Content-type", opt.contentType);
- xhr.send(opt.data);
- xhr.onloadend = () => {
- if (opt.complete != null) {
- opt.complete();
- }
- };
- });
- }
- }
-
/* singleton */
const FlaskStateInstance = (function () {
let instance = null;
diff --git a/packages/cjs/flask-state.min.js b/packages/cjs/flask-state.min.js
index 273d161..1b71336 100644
--- a/packages/cjs/flask-state.min.js
+++ b/packages/cjs/flask-state.min.js
@@ -10,4 +10,4 @@
'use strict';
-module.exports=function(e){var t={};function s(a){if(t[a])return t[a].exports;var n=t[a]={i:a,l:!1,exports:{}};return e[a].call(n.exports,n,n.exports,s),n.l=!0,n.exports}return s.m=e,s.c=t,s.d=function(e,t,a){s.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:a})},s.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},s.t=function(e,t){if(1&t&&(e=s(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var a=Object.create(null);if(s.r(a),Object.defineProperty(a,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var n in e)s.d(a,n,function(t){return e[t]}.bind(null,n));return a},s.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return s.d(t,"a",t),t},s.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},s.p="",s(s.s=0)}([function(e,t,s){"use strict";const a=85,n=75,i=10,o=5,r=1048576;class d{constructor(e){this.language=e,this.mobile=d.isMobile(),this.index=0,this.ajax=new l,this.initFlaskStateContainer(this.mobile),this.setEventListener(),this.initFlaskStateLanguage(this.language),this.setInitParams(),this.mobile&&this.setTagChangeEventListener(this.consoleCpuChart,this.consoleMemoryChart,this.consoleLoadavgChart,this.consoleDiskusageChart),window.addEventListener("resize",(()=>{d.resizeChartTimer([this.consoleMemoryChart,this.consoleCpuChart,this.consoleLoadavgChart,this.consoleDiskusageChart])}))}setFlaskStateData(){document.getElementById("fs-background").style.display="block",document.getElementById("fs-info-container").style.display="block",document.getElementsByTagName("body")[0].style.overflowX="hidden",document.getElementsByTagName("body")[0].style.overflowY="hidden",document.getElementById("fs-select-days").value="1",this.setCharts("1")}initFlaskStateContainer(){let e='
Host Status
Memory
CPU
Disk Usage
Load Avg
Uptime
Redis Status
Used Mem
Mem Fragmentation Ratio
Cache Hits Ratio
24h Hits Ratio
Uptime
Connections
'+(this.mobile?'
':"
")+"
";document.getElementsByTagName("body")[0].insertAdjacentHTML("beforeend",e)}setEventListener(){if(window.addEventListener){document.getElementById("fs-info-close").addEventListener("click",(function(){document.getElementById("fs-background").style.display="none",document.getElementById("fs-info-container").style.display="none",document.getElementsByTagName("body")[0].style.overflowX="auto",document.getElementsByTagName("body")[0].style.overflowY="auto",document.getElementById("fs-state-circular")&&document.getElementById("fs-state-circular").classList.remove("fs-circular-out")})),document.getElementById("fs-background").addEventListener("click",(function(e){"fs-background"===String(e.target.id)&&(document.getElementById("fs-background").style.display="none",document.getElementById("fs-info-container").style.display="none",document.getElementsByTagName("body")[0].style.overflowX="auto",document.getElementsByTagName("body")[0].style.overflowY="auto",document.getElementById("fs-state-circular")&&document.getElementById("fs-state-circular").classList.remove("fs-circular-out"))}));let e=document.getElementById("fs-select-days");e.addEventListener("change",(()=>{this.setCharts(e.value)}))}}setTagChangeEventListener(...e){if(document.getElementById("fs-info-tab")){let t=document.getElementById("fs-info-tab").getElementsByTagName("li"),s=document.getElementById("fs-info-tab-memory"),a=t[0],n=0;const i={0:"fs-info-tab-memory",1:"fs-info-tab-cpu",2:"fs-info-tab-disk-usage",3:"fs-info-tab-loadavg"};for(let o of t){let t=document.getElementById(i[n]);o.children[0].addEventListener("click",(()=>{o.classList.add("active"),a.classList.remove("active"),s.classList.remove("fs-show"),t.classList.add("fs-show"),d.resizeChart(e),s=t,a=o})),n++}}}initFlaskStateLanguage(){0!==Object.keys(this.language).length&&(document.getElementById("fs-host-status-title").innerHTML=this.language.host_status,document.getElementById("fs-redis-status-title").innerHTML=this.language.redis_status,document.getElementById("fs-cpu").innerHTML=this.language.cpu,document.getElementById("fs-memory").innerHTML=this.language.memory,document.getElementById("fs-disk-usage").innerHTML=this.language.disk_usage,document.getElementById("fs-load-avg").innerHTML=this.language.load_avg,document.getElementById("fs-boot-seconds").innerHTML=this.language.boot_seconds,document.getElementById("fs-used-memory").innerHTML=this.language.used_memory,document.getElementById("fs-used-memory-rss").innerHTML=this.language.used_memory_rss,document.getElementById("fs-mem-fragmentation-ratio").innerHTML=this.language.mem_fragmentation_ratio,document.getElementById("fs-hits-ratio").innerHTML=this.language.hits_ratio,document.getElementById("fs-delta-hits-ratio").innerHTML=this.language.delta_hits_ratio,document.getElementById("fs-uptime-in-seconds").innerHTML=this.language.uptime_in_seconds,document.getElementById("fs-connected-clients").innerHTML=this.language.connected_clients,document.getElementById("fs-days").innerHTML=this.language.days)}setInitParams(){this.consoleCpuChart=echarts.init(document.getElementById("fs-info-cpu-chart"),null,{renderer:"svg"}),this.consoleMemoryChart=echarts.init(document.getElementById("fs-info-memory-chart"),null,{renderer:"svg"}),this.consoleLoadavgChart=echarts.init(document.getElementById("fs-info-loadavg-chart"),null,{renderer:"svg"}),this.consoleDiskusageChart=echarts.init(document.getElementById("fs-info-diskusage-chart"),null,{renderer:"svg"}),this.cpuOption=d.generateChatOption(this.mobile,this.language.cpu||"CPU","",this.language.today||"Today"),this.memoryOption=d.generateChatOption(this.mobile,this.language.memory||"Memory","",this.language.today||"Today"),this.diskUsageOption=d.generateChatOption(this.mobile,this.language.disk_usage||"Disk Usage","",this.language.today||"Today"),this.loadavgOption=d.generateChatOption(this.mobile,"Load Avg","loadavg",this.language.minutes||"min")}setCharts(e){this.consoleCpuChart.showLoading(),this.consoleMemoryChart.showLoading(),this.consoleLoadavgChart.showLoading(),this.consoleDiskusageChart.showLoading(),this.ajax.send({type:"POST",url:"/v0/state/hoststatus",data:{timeQuantum:e},success:e=>{if(200!==e.code)return;const t=["ts","cpu","memory","load_avg","disk_usage"],s=e.data;s.items=s.items.map((e=>{let s={};return t.forEach(((t,a)=>{if("ts"===t)return s[t]=1e3*e[a];s[t]=e[a]})),s}));let l=s.currentStatistic;if(Object.keys(l).length){let e=document.getElementById("fs-host-status").getElementsByClassName("fs-badge-content");e[0].innerHTML=l.memory+"%",e[1].innerHTML=l.cpu+"%",e[2].innerHTML=l.disk_usage+"%",e[3].innerHTML=l.load_avg[0]+","+l.load_avg[1]+","+l.load_avg[2],e[4].innerHTML=d.getFormatSeconds(l.boot_seconds||0,this.language.days,this.language.hours,this.language.minutes,this.language.seconds);["memory","cpu","disk_usage","load_avg"].forEach((function(t,s){let r="";if("load_avg"===t){let e=(l.load_avg[0]+l.load_avg[1]+l.load_avg[2])/3;r=e>=o?e>=i?"background-red":"background-orange":"background-green"}else r=l[t]>=n?l.memory>=a?"background-red":"background-orange":"background-green";let d=e[s].classList;d.remove("background-green","background-orange","background-red"),d.add(r)}));let t=document.getElementById("fs-redis-status").getElementsByClassName("fs-badge-content"),s=["used_memory","used_memory_rss","mem_fragmentation_ratio","hits_ratio","delta_hits_ratio","uptime_in_seconds","connected_clients"],c=!0;for(let e of s)if(l[e]){c=!1;break}c?(document.getElementById("fs-redis-status-title").innerHTML="",document.getElementById("fs-redis-status-title").style.marginTop="0",document.getElementById("fs-redis-status").style.display="none"):s.forEach(((e,s)=>{switch(e){case"used_memory":case"used_memory_rss":t[s].innerHTML=Math.ceil(l[e]/r)+" M";break;case"mem_fragmentation_ratio":let a=l[e];if(t[s].innerHTML=l[e],null!=a&&a>1){let e=t[s].classList;e.remove("background-green"),e.add("background-red")}break;case"hits_ratio":case"delta_hits_ratio":t[s].innerHTML=l[e]+"%";break;case"uptime_in_seconds":t[s].innerHTML=d.getFormatSeconds(l[e],this.language.days,this.language.hours,this.language.minutes,this.language.seconds);break;case"connected_clients":t[s].innerHTML=l[e]}}))}s.items.reverse();let c=d.getChartsData(s.items),g=c.ts_list,u=c.cpu_list,m=c.memory_list,f=c.load_avg_list[0],h=c.load_avg_list[1],p=c.load_avg_list[2],y=c.disk_usage_list;this.memoryOption.xAxis.data=g,this.cpuOption.xAxis.data=g,this.loadavgOption.xAxis.data=g,this.diskUsageOption.xAxis.data=g,this.memoryOption.series[0].data=m,this.cpuOption.series[0].data=u,this.diskUsageOption.series[0].data=y,this.loadavgOption.series[0].data=f,this.loadavgOption.series[1].data=h,this.loadavgOption.series[2].data=p,this.consoleMemoryChart.setOption(this.memoryOption),this.consoleCpuChart.setOption(this.cpuOption),this.consoleLoadavgChart.setOption(this.loadavgOption),this.consoleDiskusageChart.setOption(this.diskUsageOption),d.resizeChart([this.consoleMemoryChart,this.consoleCpuChart,this.consoleLoadavgChart,this.consoleDiskusageChart])},complete:()=>{this.consoleMemoryChart.hideLoading(),this.consoleCpuChart.hideLoading(),this.consoleLoadavgChart.hideLoading(),this.consoleDiskusageChart.hideLoading()}}).then()}static isMobile(){let e=navigator.userAgent,t={trident:e.indexOf("Trident")>-1,presto:e.indexOf("Presto")>-1,webKit:e.indexOf("AppleWebKit")>-1,gecko:e.indexOf("Gecko")>-1&&-1===e.indexOf("KHTML"),mobile:e.match(/AppleWebKit.*Mobile.*/)&&!0,ios:e.match(/\(i[^;]+;( U;)? CPU.Mac OS X/)&&!0,android:e.indexOf("Android")>-1||e.indexOf("Linux")>-1,iPhone:e.indexOf("iPhone")>-1,iPad:e.indexOf("iPad")>-1,webApp:-1===e.indexOf("Safari"),wechat:e.indexOf("MicroMessenger")>-1,qq:e.match(/\sQQ/i)&&" qq"===e.match(/\sQQ/i)[0]};return t.iPhone||t.iPad||t.webApp||t.wechat||t.qq||t.ios||t.mobile||!1}static resizeChartTimer(e,t){clearTimeout(this.clearId),this.clearId=setTimeout((function(){d.resizeChart(e)}),t||200)}static resizeChart(e){e.forEach((e=>e.resize()))}static generateChatOption(e,t,s="",a=""){let n={color:"loadavg"===s?["#ffa726","#42a5f5","#66bb6a"]:["#42a5f5"],title:{show:!e,text:t},tooltip:{trigger:"axis",formatter:e=>{let t=echarts.format.formatTime("yyyy-MM-dd hh:mm:ss",new Date(parseInt(e[0].axisValue)),!1)+"
";for(let a=0;a";return t}},legend:{data:[a],textStyle:{fontSize:14}},grid:{left:"3%",right:"4%",bottom:"3%",top:e?30:60,containLabel:!0},toolbox:{show:!e,feature:{saveAsImage:{}}},xAxis:{type:"category",boundaryGap:!1,axisLabel:{formatter:function(e){return echarts.format.formatTime("hh:mm",new Date(parseInt(e)),!1)}}},yAxis:{type:"value"},series:[{name:a,type:"line",symbol:"none",hoverAnimation:!1}]};return"loadavg"===s&&(n.legend.data=["1 "+a,"5 "+a,"15 "+a],n.series=[],n.legend.data.forEach((e=>{n.series.push({name:e,type:"line",symbol:"none",hoverAnimation:!1})}))),n}static getChartsData(e){let t=[],s=[],a=[],n=[],i=[],o=[],r=[];for(let d=0;d=60?(o=i/60,o>=60&&(r=o/60,o%=60),r>=24&&(d=r/24,r%=24)):l=i+n,o>0&&(l=Math.floor(o)+" "+a),r>0&&(l=Math.floor(r)+" "+s),d>0&&(l=Math.floor(d)+" "+t),l}}class l{constructor(e){e=window.XMLHttpRequest?new XMLHttpRequest:new ActiveXObject("Microsoft.XMLHTTP"),this.xhr=e}send(e){let t=this.xhr,s={type:e.type||"get",url:e.url||"",async:e.async||!0,data:JSON.stringify(e.data),dataType:e.dataType||"json",contentType:"application/json",success:e.success||null,complete:e.complete||null};return new Promise(((e,a)=>{t.open(s.type,s.url,s.async),t.onreadystatechange=()=>{if(4===t.readyState)if("json"===s.dataType){const n=JSON.parse(t.responseText);e(n),null!==s.success?s.success(n):a(new Error(String(t.status)||"No callback function."))}else a(new Error(String(t.status)||"Error data type."))},t.onerror=()=>{a(new Error(String(t.status)||"Server is fail."))},t.setRequestHeader("Content-type",s.contentType),t.send(s.data),t.onloadend=()=>{null!=s.complete&&s.complete()}}))}}const c=function(){let e=null;return function(t){return e||(e=new d(t))}}();t.init=function(e){let t=null,s={};if(null!==e&&"object"==typeof e&&(t=e.hasOwnProperty("dom")?e.dom:null,s=e.hasOwnProperty("lang")&&e.lang.hasOwnProperty("language")?e.lang:{}),t instanceof HTMLElement){if(t.getAttribute("flaskState"))return;t.setAttribute("flaskState","true"),t.addEventListener("click",(()=>c(s).setFlaskStateData()))}else{if(document.getElementById("fs-state-circular"))return;let e="";document.getElementsByTagName("body")[0].insertAdjacentHTML("beforeend",e);let t,n=document.getElementById("fs-state-circular");function a(e){n.style.top=e.clientY-t+300+"px"}n.onclick=function(){this.classList.add("fs-circular-out"),c(s).setFlaskStateData()},n.onmousedown=function(e){t=t||e.clientY,document.addEventListener("mousemove",a)},document.onmouseup=function(){document.removeEventListener("mousemove",a);const e=parseInt(n.style.top);n.classList.add("fs-circular-animation"),n.style.top=Math.min(Math.max(e,50),window.screen.height-200)+"px",setTimeout((()=>n.classList.remove("fs-circular-animation")),500)}}}}]);
\ No newline at end of file
+module.exports=function(e){var t={};function s(a){if(t[a])return t[a].exports;var n=t[a]={i:a,l:!1,exports:{}};return e[a].call(n.exports,n,n.exports,s),n.l=!0,n.exports}return s.m=e,s.c=t,s.d=function(e,t,a){s.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:a})},s.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},s.t=function(e,t){if(1&t&&(e=s(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var a=Object.create(null);if(s.r(a),Object.defineProperty(a,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var n in e)s.d(a,n,function(t){return e[t]}.bind(null,n));return a},s.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return s.d(t,"a",t),t},s.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},s.p="",s(s.s=0)}([function(e,t,s){"use strict";const a=85,n=75,i=10,o=5,d=1048576;class r{constructor(e){this.language=e,this.mobile=r.isMobile(),this.index=0,this.initFlaskStateContainer(this.mobile),this.setEventListener(),this.initFlaskStateLanguage(this.language),this.setInitParams(),this.mobile&&this.setTagChangeEventListener(this.consoleCpuChart,this.consoleMemoryChart,this.consoleLoadavgChart,this.consoleDiskUsageChart),window.addEventListener("resize",(()=>{r.resizeChartTimer([this.consoleMemoryChart,this.consoleCpuChart,this.consoleLoadavgChart,this.consoleDiskUsageChart])}))}setFlaskStateData(){document.getElementById("fs-background").style.display="block",document.getElementById("fs-info-container").style.display="block",document.getElementsByTagName("body")[0].style.overflowX="hidden",document.getElementsByTagName("body")[0].style.overflowY="hidden",document.getElementById("fs-select-days").value="1",this.setCharts("1")}initFlaskStateContainer(){let e='Host Status
Memory
CPU
Disk Usage
Load Avg
Uptime
Redis Status
Used Mem
Mem Fragmentation Ratio
Cache Hits Ratio
24h Hits Ratio
Uptime
Connections
'+(this.mobile?'
':"
")+"
";document.getElementsByTagName("body")[0].insertAdjacentHTML("beforeend",e)}setEventListener(){if(window.addEventListener){document.getElementById("fs-info-close").addEventListener("click",(function(){document.getElementById("fs-background").style.display="none",document.getElementById("fs-info-container").style.display="none",document.getElementsByTagName("body")[0].style.overflowX="auto",document.getElementsByTagName("body")[0].style.overflowY="auto",document.getElementById("fs-state-circular")&&document.getElementById("fs-state-circular").classList.remove("fs-circular-out")})),document.getElementById("fs-background").addEventListener("click",(function(e){"fs-background"===String(e.target.id)&&(document.getElementById("fs-background").style.display="none",document.getElementById("fs-info-container").style.display="none",document.getElementsByTagName("body")[0].style.overflowX="auto",document.getElementsByTagName("body")[0].style.overflowY="auto",document.getElementById("fs-state-circular")&&document.getElementById("fs-state-circular").classList.remove("fs-circular-out"))}));let e=document.getElementById("fs-select-days");e.addEventListener("change",(()=>{this.setCharts(e.value)}))}}setTagChangeEventListener(...e){if(document.getElementById("fs-info-tab")){let t=document.getElementById("fs-info-tab").getElementsByTagName("li"),s=document.getElementById("fs-info-tab-memory"),a=t[0],n=0;const i={0:"fs-info-tab-memory",1:"fs-info-tab-cpu",2:"fs-info-tab-disk-usage",3:"fs-info-tab-loadavg"};for(let o of t){let t=document.getElementById(i[n]);o.children[0].addEventListener("click",(()=>{o.classList.add("active"),a.classList.remove("active"),s.classList.remove("fs-show"),t.classList.add("fs-show"),r.resizeChart(e),s=t,a=o})),n++}}}initFlaskStateLanguage(){0!==Object.keys(this.language).length&&(document.getElementById("fs-host-status-title").innerHTML=this.language.host_status,document.getElementById("fs-redis-status-title").innerHTML=this.language.redis_status,document.getElementById("fs-cpu").innerHTML=this.language.cpu,document.getElementById("fs-memory").innerHTML=this.language.memory,document.getElementById("fs-disk-usage").innerHTML=this.language.disk_usage,document.getElementById("fs-load-avg").innerHTML=this.language.load_avg,document.getElementById("fs-boot-seconds").innerHTML=this.language.boot_seconds,document.getElementById("fs-used-memory").innerHTML=this.language.used_memory,document.getElementById("fs-used-memory-rss").innerHTML=this.language.used_memory_rss,document.getElementById("fs-mem-fragmentation-ratio").innerHTML=this.language.mem_fragmentation_ratio,document.getElementById("fs-hits-ratio").innerHTML=this.language.hits_ratio,document.getElementById("fs-delta-hits-ratio").innerHTML=this.language.delta_hits_ratio,document.getElementById("fs-uptime-in-seconds").innerHTML=this.language.uptime_in_seconds,document.getElementById("fs-connected-clients").innerHTML=this.language.connected_clients,document.getElementById("fs-days").innerHTML=this.language.days)}setInitParams(){this.consoleCpuChart=echarts.init(document.getElementById("fs-info-cpu-chart"),null,{renderer:"svg"}),this.consoleMemoryChart=echarts.init(document.getElementById("fs-info-memory-chart"),null,{renderer:"svg"}),this.consoleLoadavgChart=echarts.init(document.getElementById("fs-info-loadavg-chart"),null,{renderer:"svg"}),this.consoleDiskUsageChart=echarts.init(document.getElementById("fs-info-diskusage-chart"),null,{renderer:"svg"}),this.cpuOption=r.generateChatOption(this.mobile,this.language.cpu||"CPU","",this.language.today||"Today"),this.memoryOption=r.generateChatOption(this.mobile,this.language.memory||"Memory","",this.language.today||"Today"),this.diskUsageOption=r.generateChatOption(this.mobile,this.language.disk_usage||"Disk Usage","",this.language.today||"Today"),this.loadavgOption=r.generateChatOption(this.mobile,"Load Avg","loadavg",this.language.minutes||"min")}setCharts(e){this.consoleCpuChart.showLoading(),this.consoleMemoryChart.showLoading(),this.consoleLoadavgChart.showLoading(),this.consoleDiskUsageChart.showLoading(),fetch("/v0/state/hoststatus",{method:"POST",credentials:"include",headers:{"Content-Type":"application/json;charset=UTF-8"},body:JSON.stringify({timeQuantum:e})}).then((e=>{e.ok&&e.json().then((e=>{if(200!==e.code)return;const t=["ts","cpu","memory","load_avg","disk_usage"],s=e.data;s.items=s.items.map((e=>{let s={};return t.forEach(((t,a)=>{if("ts"===t)return s[t]=1e3*e[a];s[t]=e[a]})),s}));let l=s.currentStatistic;if(Object.keys(l).length){let e=document.getElementById("fs-host-status").getElementsByClassName("fs-badge-content");e[0].innerHTML=l.memory+"%",e[1].innerHTML=l.cpu+"%",e[2].innerHTML=l.disk_usage+"%",e[3].innerHTML=l.load_avg[0]+","+l.load_avg[1]+","+l.load_avg[2],e[4].innerHTML=r.getFormatSeconds(l.boot_seconds||0,this.language.days,this.language.hours,this.language.minutes,this.language.seconds);["memory","cpu","disk_usage","load_avg"].forEach((function(t,s){let d;if("load_avg"===t){let e=(l.load_avg[0]+l.load_avg[1]+l.load_avg[2])/3;d=e>=o?e>=i?"background-red":"background-orange":"background-green"}else d=l[t]>=n?l.memory>=a?"background-red":"background-orange":"background-green";let r=e[s].classList;r.remove("background-green","background-orange","background-red"),r.add(d)}));let t=document.getElementById("fs-redis-status").getElementsByClassName("fs-badge-content"),s=["used_memory","used_memory_rss","mem_fragmentation_ratio","hits_ratio","delta_hits_ratio","uptime_in_seconds","connected_clients"],c=!0;for(let e of s)if(l[e]){c=!1;break}c?(document.getElementById("fs-redis-status-title").innerHTML="",document.getElementById("fs-redis-status-title").style.marginTop="0",document.getElementById("fs-redis-status").style.display="none"):s.forEach(((e,s)=>{switch(e){case"used_memory":case"used_memory_rss":t[s].innerHTML=Math.ceil(l[e]/d)+" M";break;case"mem_fragmentation_ratio":let a=l[e];if(t[s].innerHTML=l[e],null!=a&&a>1){let e=t[s].classList;e.remove("background-green"),e.add("background-red")}break;case"hits_ratio":case"delta_hits_ratio":t[s].innerHTML=l[e]+"%";break;case"uptime_in_seconds":t[s].innerHTML=r.getFormatSeconds(l[e],this.language.days,this.language.hours,this.language.minutes,this.language.seconds);break;case"connected_clients":t[s].innerHTML=l[e]}}))}s.items.reverse();let c=r.getChartsData(s.items),g=c.ts_list,u=c.cpu_list,m=c.memory_list,h=c.load_avg_list[0],f=c.load_avg_list[1],p=c.load_avg_list[2],y=c.disk_usage_list;this.memoryOption.xAxis.data=g,this.cpuOption.xAxis.data=g,this.loadavgOption.xAxis.data=g,this.diskUsageOption.xAxis.data=g,this.memoryOption.series[0].data=m,this.cpuOption.series[0].data=u,this.diskUsageOption.series[0].data=y,this.loadavgOption.series[0].data=h,this.loadavgOption.series[1].data=f,this.loadavgOption.series[2].data=p,this.consoleMemoryChart.setOption(this.memoryOption),this.consoleCpuChart.setOption(this.cpuOption),this.consoleLoadavgChart.setOption(this.loadavgOption),this.consoleDiskUsageChart.setOption(this.diskUsageOption),r.resizeChart([this.consoleMemoryChart,this.consoleCpuChart,this.consoleLoadavgChart,this.consoleDiskUsageChart])})).then((()=>{this.consoleMemoryChart.hideLoading(),this.consoleCpuChart.hideLoading(),this.consoleLoadavgChart.hideLoading(),this.consoleDiskUsageChart.hideLoading()}))})).catch((function(e){}))}static isMobile(){let e=navigator.userAgent,t={trident:e.indexOf("Trident")>-1,presto:e.indexOf("Presto")>-1,webKit:e.indexOf("AppleWebKit")>-1,gecko:e.indexOf("Gecko")>-1&&-1===e.indexOf("KHTML"),mobile:e.match(/AppleWebKit.*Mobile.*/)&&!0,ios:e.match(/\(i[^;]+;( U;)? CPU.Mac OS X/)&&!0,android:e.indexOf("Android")>-1||e.indexOf("Linux")>-1,iPhone:e.indexOf("iPhone")>-1,iPad:e.indexOf("iPad")>-1,webApp:-1===e.indexOf("Safari"),wechat:e.indexOf("MicroMessenger")>-1,qq:e.match(/\sQQ/i)&&" qq"===e.match(/\sQQ/i)[0]};return t.iPhone||t.iPad||t.webApp||t.wechat||t.qq||t.ios||t.mobile||!1}static resizeChartTimer(e,t){clearTimeout(this.clearId),this.clearId=setTimeout((function(){r.resizeChart(e)}),t||200)}static resizeChart(e){e.forEach((e=>e.resize()))}static generateChatOption(e,t,s="",a=""){let n={color:"loadavg"===s?["#ffa726","#42a5f5","#66bb6a"]:["#42a5f5"],title:{show:!e,text:t},tooltip:{trigger:"axis",formatter:e=>{let t=echarts.format.formatTime("yyyy-MM-dd hh:mm:ss",new Date(parseInt(e[0].axisValue)),!1)+"
";for(let a=0;a";return t}},legend:{data:[a],textStyle:{fontSize:14},show:"Load Avg"===t},grid:{left:"3%",right:"4%",bottom:"3%",top:e?30:60,containLabel:!0},toolbox:{show:!e,feature:{saveAsImage:{title:" "}}},xAxis:{type:"category",boundaryGap:!1,axisLabel:{formatter:function(e){return echarts.format.formatTime("hh:mm",new Date(parseInt(e)),!1)}}},yAxis:{type:"value",axisLabel:{formatter:e=>e+("Load Avg"===t?"":"%")}},series:[{name:a,type:"line",symbol:"none",hoverAnimation:!1}]};return"loadavg"===s&&(n.legend.data=["1 "+a,"5 "+a,"15 "+a],n.series=[],n.legend.data.forEach((e=>{n.series.push({name:e,type:"line",symbol:"none",hoverAnimation:!1})}))),n}static getChartsData(e){let t=[],s=[],a=[],n=[],i=[],o=[],d=[];for(let r=0;r=60?(o=i/60,o>=60&&(d=o/60,o%=60),d>=24&&(r=d/24,d%=24)):l=i+n,o>0&&(l=Math.floor(o)+" "+a),d>0&&(l=Math.floor(d)+" "+s),r>0&&(l=Math.floor(r)+" "+t),l}}const l=function(){let e=null;return function(t){return e||(e=new r(t))}}();t.init=function(e){let t=null,s={};if(null!==e&&"object"==typeof e&&(t=e.hasOwnProperty("dom")?e.dom:null,s=e.hasOwnProperty("lang")&&e.lang.hasOwnProperty("language")?e.lang:{}),t instanceof HTMLElement){if(t.getAttribute("flaskState"))return;t.setAttribute("flaskState","true"),t.addEventListener("click",(()=>l(s).setFlaskStateData()))}else{if(document.getElementById("fs-state-circular"))return;let e="";document.getElementsByTagName("body")[0].insertAdjacentHTML("beforeend",e);let t,n=document.getElementById("fs-state-circular");function a(e){n.style.top=e.clientY-t+300+"px"}n.onclick=function(){this.classList.add("fs-circular-out"),l(s).setFlaskStateData()},n.onmousedown=function(e){t=t||e.clientY,document.addEventListener("mousemove",a)},document.onmouseup=function(){document.removeEventListener("mousemove",a);const e=parseInt(n.style.top);n.classList.add("fs-circular-animation"),n.style.top=Math.min(Math.max(e,50),window.screen.height-200)+"px",setTimeout((()=>n.classList.remove("fs-circular-animation")),500)}}}}]);
\ No newline at end of file
diff --git a/packages/umd/flask-state.js b/packages/umd/flask-state.js
index 6570a81..147b611 100644
--- a/packages/umd/flask-state.js
+++ b/packages/umd/flask-state.js
@@ -36,17 +36,16 @@
this.language = language;
this.mobile = MachineStatus.isMobile();
this.index = 0;
- this.ajax = new Ajax();
this.initFlaskStateContainer(this.mobile);
this.setEventListener();
this.initFlaskStateLanguage(this.language);
this.setInitParams();
if (this.mobile) {
- this.setTagChangeEventListener(this.consoleCpuChart, this.consoleMemoryChart, this.consoleLoadavgChart, this.consoleDiskusageChart);
+ this.setTagChangeEventListener(this.consoleCpuChart, this.consoleMemoryChart, this.consoleLoadavgChart, this.consoleDiskUsageChart);
}
// Bind window resizing redraw event
window.addEventListener('resize', () => {
- MachineStatus.resizeChartTimer([this.consoleMemoryChart, this.consoleCpuChart, this.consoleLoadavgChart, this.consoleDiskusageChart]);
+ MachineStatus.resizeChartTimer([this.consoleMemoryChart, this.consoleCpuChart, this.consoleLoadavgChart, this.consoleDiskUsageChart]);
})
};
@@ -158,7 +157,7 @@
this.consoleCpuChart = echarts.init(document.getElementById('fs-info-cpu-chart'), null, {renderer: 'svg'});
this.consoleMemoryChart = echarts.init(document.getElementById('fs-info-memory-chart'), null, {renderer: 'svg'});
this.consoleLoadavgChart = echarts.init(document.getElementById('fs-info-loadavg-chart'), null, {renderer: 'svg'});
- this.consoleDiskusageChart = echarts.init(document.getElementById('fs-info-diskusage-chart'), null, {renderer: 'svg'});
+ this.consoleDiskUsageChart = echarts.init(document.getElementById('fs-info-diskusage-chart'), null, {renderer: 'svg'});
this.cpuOption = MachineStatus.generateChatOption(this.mobile, this.language.cpu || 'CPU', '', this.language.today || 'Today');
this.memoryOption = MachineStatus.generateChatOption(this.mobile, this.language.memory || 'Memory', '', this.language.today || 'Today');
this.diskUsageOption = MachineStatus.generateChatOption(this.mobile, this.language.disk_usage || 'Disk Usage', '', this.language.today || 'Today');
@@ -170,134 +169,144 @@
this.consoleCpuChart.showLoading();
this.consoleMemoryChart.showLoading();
this.consoleLoadavgChart.showLoading();
- this.consoleDiskusageChart.showLoading();
- this.ajax.send({
- type: 'POST',
- url: '/v0/state/hoststatus',
- data: {'timeQuantum': days},
- success: response => {
- if (response.code !== 200) {
- return;
- }
+ this.consoleDiskUsageChart.showLoading();
+ fetch(
+ "/v0/state/hoststatus",
+ {
+ method: "POST",
+ credentials: "include",
+ headers: {
+ "Content-Type": "application/json;charset=UTF-8",
+ },
+ body: JSON.stringify({"timeQuantum": days}),
+ }
+ ).then((res) => {
+ if (res.ok) {
+ res.json().then((response) => {
+ if (response.code !== 200) {
+ return;
+ }
- const fields = ["ts", "cpu", "memory", "load_avg", "disk_usage"];
- const data = response.data;
+ const fields = ["ts", "cpu", "memory", "load_avg", "disk_usage"];
+ const data = response.data;
- data.items = data.items.map(item => {
- let element = {};
- fields.forEach((field, index) => {
- if (field === "ts") return element[field] = SECONDS_TO_MILLISECONDS * item[index];
- element[field] = item[index];
- });
- return element;
- });
- let currentStatistic = data.currentStatistic;
- if (Object.keys(currentStatistic).length) {
- let hostInfoSpan = document.getElementById('fs-host-status').getElementsByClassName('fs-badge-content');
- hostInfoSpan[0].innerHTML = currentStatistic.memory + '%';
- hostInfoSpan[1].innerHTML = currentStatistic.cpu + '%';
- hostInfoSpan[2].innerHTML = currentStatistic.disk_usage + '%';
- hostInfoSpan[3].innerHTML = currentStatistic.load_avg[0] + "," + currentStatistic.load_avg[1] + "," + currentStatistic.load_avg[2];
-
- hostInfoSpan[4].innerHTML = MachineStatus.getFormatSeconds(currentStatistic.boot_seconds || 0, this.language.days, this.language.hours, this.language.minutes, this.language.seconds);
-
- const machineIndex = ['memory', 'cpu', 'disk_usage', 'load_avg'];
- machineIndex.forEach(function (item, index) {
- let paramClass = '';
- if (item === 'load_avg') {
- let loadavgAvg = (currentStatistic.load_avg[0] + currentStatistic.load_avg[1] + currentStatistic.load_avg[2]) / 3;
- paramClass = loadavgAvg >= LOADAVG_VALUE.WARNING ? loadavgAvg >= LOADAVG_VALUE.DANGER ? 'background-red' : 'background-orange' : 'background-green';
- } else {
- paramClass = currentStatistic[item] >= MACHINE_VALUE.WARNING ? currentStatistic.memory >= MACHINE_VALUE.DANGER ? 'background-red' : 'background-orange' : 'background-green';
- }
- let param = hostInfoSpan[index].classList;
- param.remove('background-green', 'background-orange', 'background-red');
- param.add(paramClass);
+ data.items = data.items.map(item => {
+ let element = {};
+ fields.forEach((field, index) => {
+ if (field === "ts") return element[field] = SECONDS_TO_MILLISECONDS * item[index];
+ element[field] = item[index];
+ });
+ return element;
});
-
- let hostInfoExtendSpan = document.getElementById('fs-redis-status').getElementsByClassName('fs-badge-content');
- let hostInfoKeysList = ['used_memory', 'used_memory_rss', 'mem_fragmentation_ratio', 'hits_ratio', 'delta_hits_ratio', 'uptime_in_seconds', 'connected_clients'];
- let hideRedis = true
- for (let item of hostInfoKeysList) {
- if (currentStatistic[item]) {
- hideRedis = false
- break
- }
- }
- if (hideRedis) {
- document.getElementById('fs-redis-status-title').innerHTML = '';
- document.getElementById('fs-redis-status-title').style.marginTop = '0';
- document.getElementById('fs-redis-status').style.display = 'none';
- } else {
- hostInfoKeysList.forEach((item, index) => {
- switch (item) {
- case 'used_memory':
- hostInfoExtendSpan[index].innerHTML = Math.ceil(currentStatistic[item] / BIT_TO_MB) + ' M';
- break;
- case 'used_memory_rss':
- hostInfoExtendSpan[index].innerHTML = Math.ceil(currentStatistic[item] / BIT_TO_MB) + ' M';
- break;
- case 'mem_fragmentation_ratio':
- let ratio = currentStatistic[item];
- hostInfoExtendSpan[index].innerHTML = currentStatistic[item];
- if (ratio !== null && ratio !== undefined && ratio > 1) {
- let hostInfoExtendSpanClass = hostInfoExtendSpan[index].classList;
- hostInfoExtendSpanClass.remove('background-green');
- hostInfoExtendSpanClass.add('background-red');
- }
- break;
- case 'hits_ratio':
- hostInfoExtendSpan[index].innerHTML = currentStatistic[item] + '%';
- break;
- case 'delta_hits_ratio':
- hostInfoExtendSpan[index].innerHTML = currentStatistic[item] + '%';
- break;
- case 'uptime_in_seconds':
- hostInfoExtendSpan[index].innerHTML = MachineStatus.getFormatSeconds(currentStatistic[item], this.language.days, this.language.hours, this.language.minutes, this.language.seconds);
- break;
- case 'connected_clients':
- hostInfoExtendSpan[index].innerHTML = currentStatistic[item];
+ let currentStatistic = data.currentStatistic;
+ if (Object.keys(currentStatistic).length) {
+ let hostInfoSpan = document.getElementById('fs-host-status').getElementsByClassName('fs-badge-content');
+ hostInfoSpan[0].innerHTML = currentStatistic.memory + '%';
+ hostInfoSpan[1].innerHTML = currentStatistic.cpu + '%';
+ hostInfoSpan[2].innerHTML = currentStatistic.disk_usage + '%';
+ hostInfoSpan[3].innerHTML = currentStatistic.load_avg[0] + "," + currentStatistic.load_avg[1] + "," + currentStatistic.load_avg[2];
+
+ hostInfoSpan[4].innerHTML = MachineStatus.getFormatSeconds(currentStatistic.boot_seconds || 0, this.language.days, this.language.hours, this.language.minutes, this.language.seconds);
+
+ const machineIndex = ['memory', 'cpu', 'disk_usage', 'load_avg'];
+ machineIndex.forEach(function (item, index) {
+ let paramClass;
+ if (item === 'load_avg') {
+ let loadavgAvg = (currentStatistic.load_avg[0] + currentStatistic.load_avg[1] + currentStatistic.load_avg[2]) / 3;
+ paramClass = loadavgAvg >= LOADAVG_VALUE.WARNING ? loadavgAvg >= LOADAVG_VALUE.DANGER ? 'background-red' : 'background-orange' : 'background-green';
+ } else {
+ paramClass = currentStatistic[item] >= MACHINE_VALUE.WARNING ? currentStatistic.memory >= MACHINE_VALUE.DANGER ? 'background-red' : 'background-orange' : 'background-green';
}
+ let param = hostInfoSpan[index].classList;
+ param.remove('background-green', 'background-orange', 'background-red');
+ param.add(paramClass);
});
+
+ let hostInfoExtendSpan = document.getElementById('fs-redis-status').getElementsByClassName('fs-badge-content');
+ let hostInfoKeysList = ['used_memory', 'used_memory_rss', 'mem_fragmentation_ratio', 'hits_ratio', 'delta_hits_ratio', 'uptime_in_seconds', 'connected_clients'];
+ let hideRedis = true
+ for (let item of hostInfoKeysList) {
+ if (currentStatistic[item]) {
+ hideRedis = false
+ break
+ }
+ }
+ if (hideRedis) {
+ document.getElementById('fs-redis-status-title').innerHTML = '';
+ document.getElementById('fs-redis-status-title').style.marginTop = '0';
+ document.getElementById('fs-redis-status').style.display = 'none';
+ } else {
+ hostInfoKeysList.forEach((item, index) => {
+ switch (item) {
+ case 'used_memory':
+ hostInfoExtendSpan[index].innerHTML = Math.ceil(currentStatistic[item] / BIT_TO_MB) + ' M';
+ break;
+ case 'used_memory_rss':
+ hostInfoExtendSpan[index].innerHTML = Math.ceil(currentStatistic[item] / BIT_TO_MB) + ' M';
+ break;
+ case 'mem_fragmentation_ratio':
+ let ratio = currentStatistic[item];
+ hostInfoExtendSpan[index].innerHTML = currentStatistic[item];
+ if (ratio !== null && ratio !== undefined && ratio > 1) {
+ let hostInfoExtendSpanClass = hostInfoExtendSpan[index].classList;
+ hostInfoExtendSpanClass.remove('background-green');
+ hostInfoExtendSpanClass.add('background-red');
+ }
+ break;
+ case 'hits_ratio':
+ hostInfoExtendSpan[index].innerHTML = currentStatistic[item] + '%';
+ break;
+ case 'delta_hits_ratio':
+ hostInfoExtendSpan[index].innerHTML = currentStatistic[item] + '%';
+ break;
+ case 'uptime_in_seconds':
+ hostInfoExtendSpan[index].innerHTML = MachineStatus.getFormatSeconds(currentStatistic[item], this.language.days, this.language.hours, this.language.minutes, this.language.seconds);
+ break;
+ case 'connected_clients':
+ hostInfoExtendSpan[index].innerHTML = currentStatistic[item];
+ }
+ });
+ }
}
- }
- data.items.reverse();
- let dataMap = MachineStatus.getChartsData(data.items);
-
- let tsList = dataMap.ts_list;
- let cpuList = dataMap.cpu_list;
- let memoryList = dataMap.memory_list;
- let loadavgList = dataMap.load_avg_list[0];
- let loadavg5MinList = dataMap.load_avg_list[1];
- let loadavg15MinList = dataMap.load_avg_list[2];
- let diskUsageList = dataMap.disk_usage_list;
-
- this.memoryOption.xAxis.data = tsList;
- this.cpuOption.xAxis.data = tsList;
- this.loadavgOption.xAxis.data = tsList;
- this.diskUsageOption.xAxis.data = tsList;
-
- this.memoryOption.series[0].data = memoryList;
- this.cpuOption.series[0].data = cpuList;
- this.diskUsageOption.series[0].data = diskUsageList;
- this.loadavgOption.series[0].data = loadavgList;
- this.loadavgOption.series[1].data = loadavg5MinList;
- this.loadavgOption.series[2].data = loadavg15MinList;
-
- this.consoleMemoryChart.setOption(this.memoryOption);
- this.consoleCpuChart.setOption(this.cpuOption);
- this.consoleLoadavgChart.setOption(this.loadavgOption);
- this.consoleDiskusageChart.setOption(this.diskUsageOption);
- MachineStatus.resizeChart([this.consoleMemoryChart, this.consoleCpuChart, this.consoleLoadavgChart, this.consoleDiskusageChart]);
- },
- complete: () => {
- this.consoleMemoryChart.hideLoading();
- this.consoleCpuChart.hideLoading();
- this.consoleLoadavgChart.hideLoading();
- this.consoleDiskusageChart.hideLoading();
- },
- }).then();
+ data.items.reverse();
+ let dataMap = MachineStatus.getChartsData(data.items);
+
+ let tsList = dataMap.ts_list;
+ let cpuList = dataMap.cpu_list;
+ let memoryList = dataMap.memory_list;
+ let loadavgList = dataMap.load_avg_list[0];
+ let loadavg5MinList = dataMap.load_avg_list[1];
+ let loadavg15MinList = dataMap.load_avg_list[2];
+ let diskUsageList = dataMap.disk_usage_list;
+
+ this.memoryOption.xAxis.data = tsList;
+ this.cpuOption.xAxis.data = tsList;
+ this.loadavgOption.xAxis.data = tsList;
+ this.diskUsageOption.xAxis.data = tsList;
+
+ this.memoryOption.series[0].data = memoryList;
+ this.cpuOption.series[0].data = cpuList;
+ this.diskUsageOption.series[0].data = diskUsageList;
+ this.loadavgOption.series[0].data = loadavgList;
+ this.loadavgOption.series[1].data = loadavg5MinList;
+ this.loadavgOption.series[2].data = loadavg15MinList;
+
+ this.consoleMemoryChart.setOption(this.memoryOption);
+ this.consoleCpuChart.setOption(this.cpuOption);
+ this.consoleLoadavgChart.setOption(this.loadavgOption);
+ this.consoleDiskUsageChart.setOption(this.diskUsageOption);
+ MachineStatus.resizeChart([this.consoleMemoryChart, this.consoleCpuChart, this.consoleLoadavgChart, this.consoleDiskUsageChart]);
+ }).then(() => {
+ this.consoleMemoryChart.hideLoading();
+ this.consoleCpuChart.hideLoading();
+ this.consoleLoadavgChart.hideLoading();
+ this.consoleDiskUsageChart.hideLoading();
+ })
+ }
+ }).catch(function (err) {
+ console.log(err);
+ })
};
/* Check if the device is a mobile phone */
@@ -360,7 +369,8 @@
data: [lineName],
textStyle: {
fontSize: 14
- }
+ },
+ show: titleText === 'Load Avg',
},
grid: {
left: '3%',
@@ -372,8 +382,10 @@
toolbox: {
show: !isMobile,
feature: {
- saveAsImage: {}
- }
+ saveAsImage: {
+ title: ' ',
+ }
+ },
},
xAxis: {
type: 'category',
@@ -385,7 +397,10 @@
}
},
yAxis: {
- type: 'value'
+ type: 'value',
+ axisLabel: {
+ formatter: (value) => value + (titleText === 'Load Avg' ? '' : '%'),
+ },
},
series: [
{
@@ -470,64 +485,6 @@
};
}
- /* Native Ajax classes */
- class Ajax {
- constructor(xhr) {
- xhr = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP");
- this.xhr = xhr;
- }
-
- send(options) {
-
- let xhr = this.xhr;
-
- let opt = {
- type: options.type || 'get',
- url: options.url || '',
- async: options.async || true,
- data: JSON.stringify(options.data),
- dataType: options.dataType || 'json',
- contentType: 'application/json',
- success: options.success || null,
- complete: options.complete || null
- };
-
-
- return new Promise((resolve, reject) => {
- xhr.open(opt.type, opt.url, opt.async);
- xhr.onreadystatechange = () => {
- // readyState: 0: init, 1: connect has set up, 2: receive request, 3: request.. , 4: request end, send response
- if (xhr.readyState === 4) {
- // status: 200: OK, 401: Verification Failed, 404: Not Found Page
- if (opt.dataType === 'json') {
- const data = JSON.parse(xhr.responseText);
- resolve(data);
- if (opt.success !== null) {
- opt.success(data);
- } else {
- reject(new Error(String(xhr.status) || 'No callback function.'));
- }
- } else {
- reject(new Error(String(xhr.status) || 'Error data type.'));
- }
- }
- };
-
- xhr.onerror = () => {
- reject(new Error(String(xhr.status) || 'Server is fail.'));
- };
-
- xhr.setRequestHeader("Content-type", opt.contentType);
- xhr.send(opt.data);
- xhr.onloadend = () => {
- if (opt.complete != null) {
- opt.complete();
- }
- };
- });
- }
- }
-
/* singleton */
const FlaskStateInstance = (function () {
let instance = null;
diff --git a/packages/umd/flask-state.min.js b/packages/umd/flask-state.min.js
index 1cc6f82..a0318ee 100644
--- a/packages/umd/flask-state.min.js
+++ b/packages/umd/flask-state.min.js
@@ -10,4 +10,4 @@
'use strict';
-!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.flaskState=t():e.flaskState=t()}(window,(function(){return function(e){var t={};function s(a){if(t[a])return t[a].exports;var n=t[a]={i:a,l:!1,exports:{}};return e[a].call(n.exports,n,n.exports,s),n.l=!0,n.exports}return s.m=e,s.c=t,s.d=function(e,t,a){s.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:a})},s.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},s.t=function(e,t){if(1&t&&(e=s(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var a=Object.create(null);if(s.r(a),Object.defineProperty(a,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var n in e)s.d(a,n,function(t){return e[t]}.bind(null,n));return a},s.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return s.d(t,"a",t),t},s.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},s.p="",s(s.s=0)}([function(e,t,s){"use strict";const a=85,n=75,i=10,o=5,r=1048576;class d{constructor(e){this.language=e,this.mobile=d.isMobile(),this.index=0,this.ajax=new l,this.initFlaskStateContainer(this.mobile),this.setEventListener(),this.initFlaskStateLanguage(this.language),this.setInitParams(),this.mobile&&this.setTagChangeEventListener(this.consoleCpuChart,this.consoleMemoryChart,this.consoleLoadavgChart,this.consoleDiskusageChart),window.addEventListener("resize",(()=>{d.resizeChartTimer([this.consoleMemoryChart,this.consoleCpuChart,this.consoleLoadavgChart,this.consoleDiskusageChart])}))}setFlaskStateData(){document.getElementById("fs-background").style.display="block",document.getElementById("fs-info-container").style.display="block",document.getElementsByTagName("body")[0].style.overflowX="hidden",document.getElementsByTagName("body")[0].style.overflowY="hidden",document.getElementById("fs-select-days").value="1",this.setCharts("1")}initFlaskStateContainer(){let e='Host Status
Memory
CPU
Disk Usage
Load Avg
Uptime
Redis Status
Used Mem
Mem Fragmentation Ratio
Cache Hits Ratio
24h Hits Ratio
Uptime
Connections
'+(this.mobile?'
':"
")+"
";document.getElementsByTagName("body")[0].insertAdjacentHTML("beforeend",e)}setEventListener(){if(window.addEventListener){document.getElementById("fs-info-close").addEventListener("click",(function(){document.getElementById("fs-background").style.display="none",document.getElementById("fs-info-container").style.display="none",document.getElementsByTagName("body")[0].style.overflowX="auto",document.getElementsByTagName("body")[0].style.overflowY="auto",document.getElementById("fs-state-circular")&&document.getElementById("fs-state-circular").classList.remove("fs-circular-out")})),document.getElementById("fs-background").addEventListener("click",(function(e){"fs-background"===String(e.target.id)&&(document.getElementById("fs-background").style.display="none",document.getElementById("fs-info-container").style.display="none",document.getElementsByTagName("body")[0].style.overflowX="auto",document.getElementsByTagName("body")[0].style.overflowY="auto",document.getElementById("fs-state-circular")&&document.getElementById("fs-state-circular").classList.remove("fs-circular-out"))}));let e=document.getElementById("fs-select-days");e.addEventListener("change",(()=>{this.setCharts(e.value)}))}}setTagChangeEventListener(...e){if(document.getElementById("fs-info-tab")){let t=document.getElementById("fs-info-tab").getElementsByTagName("li"),s=document.getElementById("fs-info-tab-memory"),a=t[0],n=0;const i={0:"fs-info-tab-memory",1:"fs-info-tab-cpu",2:"fs-info-tab-disk-usage",3:"fs-info-tab-loadavg"};for(let o of t){let t=document.getElementById(i[n]);o.children[0].addEventListener("click",(()=>{o.classList.add("active"),a.classList.remove("active"),s.classList.remove("fs-show"),t.classList.add("fs-show"),d.resizeChart(e),s=t,a=o})),n++}}}initFlaskStateLanguage(){0!==Object.keys(this.language).length&&(document.getElementById("fs-host-status-title").innerHTML=this.language.host_status,document.getElementById("fs-redis-status-title").innerHTML=this.language.redis_status,document.getElementById("fs-cpu").innerHTML=this.language.cpu,document.getElementById("fs-memory").innerHTML=this.language.memory,document.getElementById("fs-disk-usage").innerHTML=this.language.disk_usage,document.getElementById("fs-load-avg").innerHTML=this.language.load_avg,document.getElementById("fs-boot-seconds").innerHTML=this.language.boot_seconds,document.getElementById("fs-used-memory").innerHTML=this.language.used_memory,document.getElementById("fs-used-memory-rss").innerHTML=this.language.used_memory_rss,document.getElementById("fs-mem-fragmentation-ratio").innerHTML=this.language.mem_fragmentation_ratio,document.getElementById("fs-hits-ratio").innerHTML=this.language.hits_ratio,document.getElementById("fs-delta-hits-ratio").innerHTML=this.language.delta_hits_ratio,document.getElementById("fs-uptime-in-seconds").innerHTML=this.language.uptime_in_seconds,document.getElementById("fs-connected-clients").innerHTML=this.language.connected_clients,document.getElementById("fs-days").innerHTML=this.language.days)}setInitParams(){this.consoleCpuChart=echarts.init(document.getElementById("fs-info-cpu-chart"),null,{renderer:"svg"}),this.consoleMemoryChart=echarts.init(document.getElementById("fs-info-memory-chart"),null,{renderer:"svg"}),this.consoleLoadavgChart=echarts.init(document.getElementById("fs-info-loadavg-chart"),null,{renderer:"svg"}),this.consoleDiskusageChart=echarts.init(document.getElementById("fs-info-diskusage-chart"),null,{renderer:"svg"}),this.cpuOption=d.generateChatOption(this.mobile,this.language.cpu||"CPU","",this.language.today||"Today"),this.memoryOption=d.generateChatOption(this.mobile,this.language.memory||"Memory","",this.language.today||"Today"),this.diskUsageOption=d.generateChatOption(this.mobile,this.language.disk_usage||"Disk Usage","",this.language.today||"Today"),this.loadavgOption=d.generateChatOption(this.mobile,"Load Avg","loadavg",this.language.minutes||"min")}setCharts(e){this.consoleCpuChart.showLoading(),this.consoleMemoryChart.showLoading(),this.consoleLoadavgChart.showLoading(),this.consoleDiskusageChart.showLoading(),this.ajax.send({type:"POST",url:"/v0/state/hoststatus",data:{timeQuantum:e},success:e=>{if(200!==e.code)return;const t=["ts","cpu","memory","load_avg","disk_usage"],s=e.data;s.items=s.items.map((e=>{let s={};return t.forEach(((t,a)=>{if("ts"===t)return s[t]=1e3*e[a];s[t]=e[a]})),s}));let l=s.currentStatistic;if(Object.keys(l).length){let e=document.getElementById("fs-host-status").getElementsByClassName("fs-badge-content");e[0].innerHTML=l.memory+"%",e[1].innerHTML=l.cpu+"%",e[2].innerHTML=l.disk_usage+"%",e[3].innerHTML=l.load_avg[0]+","+l.load_avg[1]+","+l.load_avg[2],e[4].innerHTML=d.getFormatSeconds(l.boot_seconds||0,this.language.days,this.language.hours,this.language.minutes,this.language.seconds);["memory","cpu","disk_usage","load_avg"].forEach((function(t,s){let r="";if("load_avg"===t){let e=(l.load_avg[0]+l.load_avg[1]+l.load_avg[2])/3;r=e>=o?e>=i?"background-red":"background-orange":"background-green"}else r=l[t]>=n?l.memory>=a?"background-red":"background-orange":"background-green";let d=e[s].classList;d.remove("background-green","background-orange","background-red"),d.add(r)}));let t=document.getElementById("fs-redis-status").getElementsByClassName("fs-badge-content"),s=["used_memory","used_memory_rss","mem_fragmentation_ratio","hits_ratio","delta_hits_ratio","uptime_in_seconds","connected_clients"],c=!0;for(let e of s)if(l[e]){c=!1;break}c?(document.getElementById("fs-redis-status-title").innerHTML="",document.getElementById("fs-redis-status-title").style.marginTop="0",document.getElementById("fs-redis-status").style.display="none"):s.forEach(((e,s)=>{switch(e){case"used_memory":case"used_memory_rss":t[s].innerHTML=Math.ceil(l[e]/r)+" M";break;case"mem_fragmentation_ratio":let a=l[e];if(t[s].innerHTML=l[e],null!=a&&a>1){let e=t[s].classList;e.remove("background-green"),e.add("background-red")}break;case"hits_ratio":case"delta_hits_ratio":t[s].innerHTML=l[e]+"%";break;case"uptime_in_seconds":t[s].innerHTML=d.getFormatSeconds(l[e],this.language.days,this.language.hours,this.language.minutes,this.language.seconds);break;case"connected_clients":t[s].innerHTML=l[e]}}))}s.items.reverse();let c=d.getChartsData(s.items),g=c.ts_list,u=c.cpu_list,m=c.memory_list,f=c.load_avg_list[0],h=c.load_avg_list[1],p=c.load_avg_list[2],y=c.disk_usage_list;this.memoryOption.xAxis.data=g,this.cpuOption.xAxis.data=g,this.loadavgOption.xAxis.data=g,this.diskUsageOption.xAxis.data=g,this.memoryOption.series[0].data=m,this.cpuOption.series[0].data=u,this.diskUsageOption.series[0].data=y,this.loadavgOption.series[0].data=f,this.loadavgOption.series[1].data=h,this.loadavgOption.series[2].data=p,this.consoleMemoryChart.setOption(this.memoryOption),this.consoleCpuChart.setOption(this.cpuOption),this.consoleLoadavgChart.setOption(this.loadavgOption),this.consoleDiskusageChart.setOption(this.diskUsageOption),d.resizeChart([this.consoleMemoryChart,this.consoleCpuChart,this.consoleLoadavgChart,this.consoleDiskusageChart])},complete:()=>{this.consoleMemoryChart.hideLoading(),this.consoleCpuChart.hideLoading(),this.consoleLoadavgChart.hideLoading(),this.consoleDiskusageChart.hideLoading()}}).then()}static isMobile(){let e=navigator.userAgent,t={trident:e.indexOf("Trident")>-1,presto:e.indexOf("Presto")>-1,webKit:e.indexOf("AppleWebKit")>-1,gecko:e.indexOf("Gecko")>-1&&-1===e.indexOf("KHTML"),mobile:e.match(/AppleWebKit.*Mobile.*/)&&!0,ios:e.match(/\(i[^;]+;( U;)? CPU.Mac OS X/)&&!0,android:e.indexOf("Android")>-1||e.indexOf("Linux")>-1,iPhone:e.indexOf("iPhone")>-1,iPad:e.indexOf("iPad")>-1,webApp:-1===e.indexOf("Safari"),wechat:e.indexOf("MicroMessenger")>-1,qq:e.match(/\sQQ/i)&&" qq"===e.match(/\sQQ/i)[0]};return t.iPhone||t.iPad||t.webApp||t.wechat||t.qq||t.ios||t.mobile||!1}static resizeChartTimer(e,t){clearTimeout(this.clearId),this.clearId=setTimeout((function(){d.resizeChart(e)}),t||200)}static resizeChart(e){e.forEach((e=>e.resize()))}static generateChatOption(e,t,s="",a=""){let n={color:"loadavg"===s?["#ffa726","#42a5f5","#66bb6a"]:["#42a5f5"],title:{show:!e,text:t},tooltip:{trigger:"axis",formatter:e=>{let t=echarts.format.formatTime("yyyy-MM-dd hh:mm:ss",new Date(parseInt(e[0].axisValue)),!1)+"
";for(let a=0;a";return t}},legend:{data:[a],textStyle:{fontSize:14}},grid:{left:"3%",right:"4%",bottom:"3%",top:e?30:60,containLabel:!0},toolbox:{show:!e,feature:{saveAsImage:{}}},xAxis:{type:"category",boundaryGap:!1,axisLabel:{formatter:function(e){return echarts.format.formatTime("hh:mm",new Date(parseInt(e)),!1)}}},yAxis:{type:"value"},series:[{name:a,type:"line",symbol:"none",hoverAnimation:!1}]};return"loadavg"===s&&(n.legend.data=["1 "+a,"5 "+a,"15 "+a],n.series=[],n.legend.data.forEach((e=>{n.series.push({name:e,type:"line",symbol:"none",hoverAnimation:!1})}))),n}static getChartsData(e){let t=[],s=[],a=[],n=[],i=[],o=[],r=[];for(let d=0;d=60?(o=i/60,o>=60&&(r=o/60,o%=60),r>=24&&(d=r/24,r%=24)):l=i+n,o>0&&(l=Math.floor(o)+" "+a),r>0&&(l=Math.floor(r)+" "+s),d>0&&(l=Math.floor(d)+" "+t),l}}class l{constructor(e){e=window.XMLHttpRequest?new XMLHttpRequest:new ActiveXObject("Microsoft.XMLHTTP"),this.xhr=e}send(e){let t=this.xhr,s={type:e.type||"get",url:e.url||"",async:e.async||!0,data:JSON.stringify(e.data),dataType:e.dataType||"json",contentType:"application/json",success:e.success||null,complete:e.complete||null};return new Promise(((e,a)=>{t.open(s.type,s.url,s.async),t.onreadystatechange=()=>{if(4===t.readyState)if("json"===s.dataType){const n=JSON.parse(t.responseText);e(n),null!==s.success?s.success(n):a(new Error(String(t.status)||"No callback function."))}else a(new Error(String(t.status)||"Error data type."))},t.onerror=()=>{a(new Error(String(t.status)||"Server is fail."))},t.setRequestHeader("Content-type",s.contentType),t.send(s.data),t.onloadend=()=>{null!=s.complete&&s.complete()}}))}}const c=function(){let e=null;return function(t){return e||(e=new d(t))}}();t.init=function(e){let t=null,s={};if(null!==e&&"object"==typeof e&&(t=e.hasOwnProperty("dom")?e.dom:null,s=e.hasOwnProperty("lang")&&e.lang.hasOwnProperty("language")?e.lang:{}),t instanceof HTMLElement){if(t.getAttribute("flaskState"))return;t.setAttribute("flaskState","true"),t.addEventListener("click",(()=>c(s).setFlaskStateData()))}else{if(document.getElementById("fs-state-circular"))return;let e="";document.getElementsByTagName("body")[0].insertAdjacentHTML("beforeend",e);let t,n=document.getElementById("fs-state-circular");function a(e){n.style.top=e.clientY-t+300+"px"}n.onclick=function(){this.classList.add("fs-circular-out"),c(s).setFlaskStateData()},n.onmousedown=function(e){t=t||e.clientY,document.addEventListener("mousemove",a)},document.onmouseup=function(){document.removeEventListener("mousemove",a);const e=parseInt(n.style.top);n.classList.add("fs-circular-animation"),n.style.top=Math.min(Math.max(e,50),window.screen.height-200)+"px",setTimeout((()=>n.classList.remove("fs-circular-animation")),500)}}}}])}));
\ No newline at end of file
+!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.flaskState=t():e.flaskState=t()}(window,(function(){return function(e){var t={};function s(a){if(t[a])return t[a].exports;var n=t[a]={i:a,l:!1,exports:{}};return e[a].call(n.exports,n,n.exports,s),n.l=!0,n.exports}return s.m=e,s.c=t,s.d=function(e,t,a){s.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:a})},s.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},s.t=function(e,t){if(1&t&&(e=s(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var a=Object.create(null);if(s.r(a),Object.defineProperty(a,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var n in e)s.d(a,n,function(t){return e[t]}.bind(null,n));return a},s.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return s.d(t,"a",t),t},s.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},s.p="",s(s.s=0)}([function(e,t,s){"use strict";const a=85,n=75,i=10,o=5,d=1048576;class r{constructor(e){this.language=e,this.mobile=r.isMobile(),this.index=0,this.initFlaskStateContainer(this.mobile),this.setEventListener(),this.initFlaskStateLanguage(this.language),this.setInitParams(),this.mobile&&this.setTagChangeEventListener(this.consoleCpuChart,this.consoleMemoryChart,this.consoleLoadavgChart,this.consoleDiskUsageChart),window.addEventListener("resize",(()=>{r.resizeChartTimer([this.consoleMemoryChart,this.consoleCpuChart,this.consoleLoadavgChart,this.consoleDiskUsageChart])}))}setFlaskStateData(){document.getElementById("fs-background").style.display="block",document.getElementById("fs-info-container").style.display="block",document.getElementsByTagName("body")[0].style.overflowX="hidden",document.getElementsByTagName("body")[0].style.overflowY="hidden",document.getElementById("fs-select-days").value="1",this.setCharts("1")}initFlaskStateContainer(){let e='Host Status
Memory
CPU
Disk Usage
Load Avg
Uptime
Redis Status
Used Mem
Mem Fragmentation Ratio
Cache Hits Ratio
24h Hits Ratio
Uptime
Connections
'+(this.mobile?'
':"
")+"
";document.getElementsByTagName("body")[0].insertAdjacentHTML("beforeend",e)}setEventListener(){if(window.addEventListener){document.getElementById("fs-info-close").addEventListener("click",(function(){document.getElementById("fs-background").style.display="none",document.getElementById("fs-info-container").style.display="none",document.getElementsByTagName("body")[0].style.overflowX="auto",document.getElementsByTagName("body")[0].style.overflowY="auto",document.getElementById("fs-state-circular")&&document.getElementById("fs-state-circular").classList.remove("fs-circular-out")})),document.getElementById("fs-background").addEventListener("click",(function(e){"fs-background"===String(e.target.id)&&(document.getElementById("fs-background").style.display="none",document.getElementById("fs-info-container").style.display="none",document.getElementsByTagName("body")[0].style.overflowX="auto",document.getElementsByTagName("body")[0].style.overflowY="auto",document.getElementById("fs-state-circular")&&document.getElementById("fs-state-circular").classList.remove("fs-circular-out"))}));let e=document.getElementById("fs-select-days");e.addEventListener("change",(()=>{this.setCharts(e.value)}))}}setTagChangeEventListener(...e){if(document.getElementById("fs-info-tab")){let t=document.getElementById("fs-info-tab").getElementsByTagName("li"),s=document.getElementById("fs-info-tab-memory"),a=t[0],n=0;const i={0:"fs-info-tab-memory",1:"fs-info-tab-cpu",2:"fs-info-tab-disk-usage",3:"fs-info-tab-loadavg"};for(let o of t){let t=document.getElementById(i[n]);o.children[0].addEventListener("click",(()=>{o.classList.add("active"),a.classList.remove("active"),s.classList.remove("fs-show"),t.classList.add("fs-show"),r.resizeChart(e),s=t,a=o})),n++}}}initFlaskStateLanguage(){0!==Object.keys(this.language).length&&(document.getElementById("fs-host-status-title").innerHTML=this.language.host_status,document.getElementById("fs-redis-status-title").innerHTML=this.language.redis_status,document.getElementById("fs-cpu").innerHTML=this.language.cpu,document.getElementById("fs-memory").innerHTML=this.language.memory,document.getElementById("fs-disk-usage").innerHTML=this.language.disk_usage,document.getElementById("fs-load-avg").innerHTML=this.language.load_avg,document.getElementById("fs-boot-seconds").innerHTML=this.language.boot_seconds,document.getElementById("fs-used-memory").innerHTML=this.language.used_memory,document.getElementById("fs-used-memory-rss").innerHTML=this.language.used_memory_rss,document.getElementById("fs-mem-fragmentation-ratio").innerHTML=this.language.mem_fragmentation_ratio,document.getElementById("fs-hits-ratio").innerHTML=this.language.hits_ratio,document.getElementById("fs-delta-hits-ratio").innerHTML=this.language.delta_hits_ratio,document.getElementById("fs-uptime-in-seconds").innerHTML=this.language.uptime_in_seconds,document.getElementById("fs-connected-clients").innerHTML=this.language.connected_clients,document.getElementById("fs-days").innerHTML=this.language.days)}setInitParams(){this.consoleCpuChart=echarts.init(document.getElementById("fs-info-cpu-chart"),null,{renderer:"svg"}),this.consoleMemoryChart=echarts.init(document.getElementById("fs-info-memory-chart"),null,{renderer:"svg"}),this.consoleLoadavgChart=echarts.init(document.getElementById("fs-info-loadavg-chart"),null,{renderer:"svg"}),this.consoleDiskUsageChart=echarts.init(document.getElementById("fs-info-diskusage-chart"),null,{renderer:"svg"}),this.cpuOption=r.generateChatOption(this.mobile,this.language.cpu||"CPU","",this.language.today||"Today"),this.memoryOption=r.generateChatOption(this.mobile,this.language.memory||"Memory","",this.language.today||"Today"),this.diskUsageOption=r.generateChatOption(this.mobile,this.language.disk_usage||"Disk Usage","",this.language.today||"Today"),this.loadavgOption=r.generateChatOption(this.mobile,"Load Avg","loadavg",this.language.minutes||"min")}setCharts(e){this.consoleCpuChart.showLoading(),this.consoleMemoryChart.showLoading(),this.consoleLoadavgChart.showLoading(),this.consoleDiskUsageChart.showLoading(),fetch("/v0/state/hoststatus",{method:"POST",credentials:"include",headers:{"Content-Type":"application/json;charset=UTF-8"},body:JSON.stringify({timeQuantum:e})}).then((e=>{e.ok&&e.json().then((e=>{if(200!==e.code)return;const t=["ts","cpu","memory","load_avg","disk_usage"],s=e.data;s.items=s.items.map((e=>{let s={};return t.forEach(((t,a)=>{if("ts"===t)return s[t]=1e3*e[a];s[t]=e[a]})),s}));let l=s.currentStatistic;if(Object.keys(l).length){let e=document.getElementById("fs-host-status").getElementsByClassName("fs-badge-content");e[0].innerHTML=l.memory+"%",e[1].innerHTML=l.cpu+"%",e[2].innerHTML=l.disk_usage+"%",e[3].innerHTML=l.load_avg[0]+","+l.load_avg[1]+","+l.load_avg[2],e[4].innerHTML=r.getFormatSeconds(l.boot_seconds||0,this.language.days,this.language.hours,this.language.minutes,this.language.seconds);["memory","cpu","disk_usage","load_avg"].forEach((function(t,s){let d;if("load_avg"===t){let e=(l.load_avg[0]+l.load_avg[1]+l.load_avg[2])/3;d=e>=o?e>=i?"background-red":"background-orange":"background-green"}else d=l[t]>=n?l.memory>=a?"background-red":"background-orange":"background-green";let r=e[s].classList;r.remove("background-green","background-orange","background-red"),r.add(d)}));let t=document.getElementById("fs-redis-status").getElementsByClassName("fs-badge-content"),s=["used_memory","used_memory_rss","mem_fragmentation_ratio","hits_ratio","delta_hits_ratio","uptime_in_seconds","connected_clients"],c=!0;for(let e of s)if(l[e]){c=!1;break}c?(document.getElementById("fs-redis-status-title").innerHTML="",document.getElementById("fs-redis-status-title").style.marginTop="0",document.getElementById("fs-redis-status").style.display="none"):s.forEach(((e,s)=>{switch(e){case"used_memory":case"used_memory_rss":t[s].innerHTML=Math.ceil(l[e]/d)+" M";break;case"mem_fragmentation_ratio":let a=l[e];if(t[s].innerHTML=l[e],null!=a&&a>1){let e=t[s].classList;e.remove("background-green"),e.add("background-red")}break;case"hits_ratio":case"delta_hits_ratio":t[s].innerHTML=l[e]+"%";break;case"uptime_in_seconds":t[s].innerHTML=r.getFormatSeconds(l[e],this.language.days,this.language.hours,this.language.minutes,this.language.seconds);break;case"connected_clients":t[s].innerHTML=l[e]}}))}s.items.reverse();let c=r.getChartsData(s.items),g=c.ts_list,u=c.cpu_list,m=c.memory_list,f=c.load_avg_list[0],h=c.load_avg_list[1],p=c.load_avg_list[2],y=c.disk_usage_list;this.memoryOption.xAxis.data=g,this.cpuOption.xAxis.data=g,this.loadavgOption.xAxis.data=g,this.diskUsageOption.xAxis.data=g,this.memoryOption.series[0].data=m,this.cpuOption.series[0].data=u,this.diskUsageOption.series[0].data=y,this.loadavgOption.series[0].data=f,this.loadavgOption.series[1].data=h,this.loadavgOption.series[2].data=p,this.consoleMemoryChart.setOption(this.memoryOption),this.consoleCpuChart.setOption(this.cpuOption),this.consoleLoadavgChart.setOption(this.loadavgOption),this.consoleDiskUsageChart.setOption(this.diskUsageOption),r.resizeChart([this.consoleMemoryChart,this.consoleCpuChart,this.consoleLoadavgChart,this.consoleDiskUsageChart])})).then((()=>{this.consoleMemoryChart.hideLoading(),this.consoleCpuChart.hideLoading(),this.consoleLoadavgChart.hideLoading(),this.consoleDiskUsageChart.hideLoading()}))})).catch((function(e){}))}static isMobile(){let e=navigator.userAgent,t={trident:e.indexOf("Trident")>-1,presto:e.indexOf("Presto")>-1,webKit:e.indexOf("AppleWebKit")>-1,gecko:e.indexOf("Gecko")>-1&&-1===e.indexOf("KHTML"),mobile:e.match(/AppleWebKit.*Mobile.*/)&&!0,ios:e.match(/\(i[^;]+;( U;)? CPU.Mac OS X/)&&!0,android:e.indexOf("Android")>-1||e.indexOf("Linux")>-1,iPhone:e.indexOf("iPhone")>-1,iPad:e.indexOf("iPad")>-1,webApp:-1===e.indexOf("Safari"),wechat:e.indexOf("MicroMessenger")>-1,qq:e.match(/\sQQ/i)&&" qq"===e.match(/\sQQ/i)[0]};return t.iPhone||t.iPad||t.webApp||t.wechat||t.qq||t.ios||t.mobile||!1}static resizeChartTimer(e,t){clearTimeout(this.clearId),this.clearId=setTimeout((function(){r.resizeChart(e)}),t||200)}static resizeChart(e){e.forEach((e=>e.resize()))}static generateChatOption(e,t,s="",a=""){let n={color:"loadavg"===s?["#ffa726","#42a5f5","#66bb6a"]:["#42a5f5"],title:{show:!e,text:t},tooltip:{trigger:"axis",formatter:e=>{let t=echarts.format.formatTime("yyyy-MM-dd hh:mm:ss",new Date(parseInt(e[0].axisValue)),!1)+"
";for(let a=0;a";return t}},legend:{data:[a],textStyle:{fontSize:14},show:"Load Avg"===t},grid:{left:"3%",right:"4%",bottom:"3%",top:e?30:60,containLabel:!0},toolbox:{show:!e,feature:{saveAsImage:{title:" "}}},xAxis:{type:"category",boundaryGap:!1,axisLabel:{formatter:function(e){return echarts.format.formatTime("hh:mm",new Date(parseInt(e)),!1)}}},yAxis:{type:"value",axisLabel:{formatter:e=>e+("Load Avg"===t?"":"%")}},series:[{name:a,type:"line",symbol:"none",hoverAnimation:!1}]};return"loadavg"===s&&(n.legend.data=["1 "+a,"5 "+a,"15 "+a],n.series=[],n.legend.data.forEach((e=>{n.series.push({name:e,type:"line",symbol:"none",hoverAnimation:!1})}))),n}static getChartsData(e){let t=[],s=[],a=[],n=[],i=[],o=[],d=[];for(let r=0;r=60?(o=i/60,o>=60&&(d=o/60,o%=60),d>=24&&(r=d/24,d%=24)):l=i+n,o>0&&(l=Math.floor(o)+" "+a),d>0&&(l=Math.floor(d)+" "+s),r>0&&(l=Math.floor(r)+" "+t),l}}const l=function(){let e=null;return function(t){return e||(e=new r(t))}}();t.init=function(e){let t=null,s={};if(null!==e&&"object"==typeof e&&(t=e.hasOwnProperty("dom")?e.dom:null,s=e.hasOwnProperty("lang")&&e.lang.hasOwnProperty("language")?e.lang:{}),t instanceof HTMLElement){if(t.getAttribute("flaskState"))return;t.setAttribute("flaskState","true"),t.addEventListener("click",(()=>l(s).setFlaskStateData()))}else{if(document.getElementById("fs-state-circular"))return;let e="";document.getElementsByTagName("body")[0].insertAdjacentHTML("beforeend",e);let t,n=document.getElementById("fs-state-circular");function a(e){n.style.top=e.clientY-t+300+"px"}n.onclick=function(){this.classList.add("fs-circular-out"),l(s).setFlaskStateData()},n.onmousedown=function(e){t=t||e.clientY,document.addEventListener("mousemove",a)},document.onmouseup=function(){document.removeEventListener("mousemove",a);const e=parseInt(n.style.top);n.classList.add("fs-circular-animation"),n.style.top=Math.min(Math.max(e,50),window.screen.height-200)+"px",setTimeout((()=>n.classList.remove("fs-circular-animation")),500)}}}}])}));
\ No newline at end of file