diff --git a/CHANGELOG.md b/CHANGELOG.md index d250cbe..ae68fb7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,13 +1,13 @@ -# 1.2.4 +# 1.2.5 + +* 新增`#椰奶监控`ⁿᵉʷ + + +# 1.2.1 ~ 1.2.4 * 修改**搜图搜番**正则防止误触发 * 删除`申请头衔`文案 * 修改部分文案 - - - -# 1.2.1 ~ 1.2.3 - * 优化群违禁词匹配,增加违禁词添加人、添加时间 * 优化群字符列表,字符id显示 * 新增可选依赖项`puppeteer-extra``puppeteer-extra-plugin-stealth` diff --git a/apps/state.js b/apps/state.js index 0664fe2..db0cb14 100644 --- a/apps/state.js +++ b/apps/state.js @@ -24,20 +24,19 @@ export class NewState extends plugin { } async state (e) { - if (!/椰奶/.test(e.msg) && !Config.Notice.state) return false - - if (!State.si) return e.reply('❎ 没有检测到systeminformation依赖,请运行:"pnpm add systeminformation -w"进行安装') if (e.msg.includes('监控')) { - let data = { - chartData: JSON.stringify(_.every(_.omit(State.chartData, 'echarts_theme'), _.isEmpty) ? undefined : State.chartData) - } return await puppeteer.render('state/monitor', { - ...data + chartData: JSON.stringify(State.chartData) }, { e, scale: 1.4 }) } + + if (!/椰奶/.test(e.msg) && !Config.Notice.state) return false + + if (!State.si) return e.reply('❎ 没有检测到systeminformation依赖,请运行:"pnpm add systeminformation -w"进行安装') + // 防止多次触发 if (interval) { return false } else interval = true // 系统 diff --git a/model/State.js b/model/State.js index c931128..b25f35b 100644 --- a/model/State.js +++ b/model/State.js @@ -15,14 +15,18 @@ export default new class OSUtils { this._fsStats = null this.chartData = { - // 上行 - upload: [], - // 下行 - download: [], - // 读 - readSpeed: [], - // 写 - writeSpeed: [], + network: { + // 上行 + upload: [], + // 下行 + download: [] + }, + fsStats: { + // 读 + readSpeed: [], + // 写 + writeSpeed: [] + }, // cpu cpu: [], // 内存 @@ -39,8 +43,8 @@ export default new class OSUtils { set network (value) { if (_.isNumber(value[0]?.tx_sec) && _.isNumber(value[0]?.rx_sec)) { this._network = value - this.addData(this.chartData.upload, [Date.now(), value[0].tx_sec]) - this.addData(this.chartData.download, [Date.now(), value[0].rx_sec]) + this.addData(this.chartData.network.upload, [Date.now(), value[0].tx_sec]) + this.addData(this.chartData.network.download, [Date.now(), value[0].rx_sec]) } } @@ -51,8 +55,8 @@ export default new class OSUtils { set fsStats (value) { if (_.isNumber(value?.wx_sec) && _.isNumber(value?.rx_sec)) { this._fsStats = value - this.addData(this.chartData.writeSpeed, [Date.now(), value.wx_sec]) - this.addData(this.chartData.readSpeed, [Date.now(), value.rx_sec]) + this.addData(this.chartData.fsStats.writeSpeed, [Date.now(), value.wx_sec]) + this.addData(this.chartData.fsStats.readSpeed, [Date.now(), value.rx_sec]) } } @@ -161,18 +165,22 @@ export default new class OSUtils { * @param {boolean} [isSuffix=true] - 如果为 true,则在所得到的大小后面加上 kb、mb、gb、tb 等后缀. * @returns {string} 文件大小格式转换后的字符串. */ - getFileSize (size = 0, isByte = true, isSuffix = true) { - if (typeof size !== 'number') return '无效参数' - const BYTE_SIZE = 1024 - let i = -1 - const units = ['B', 'KB', 'MB', 'GB', 'TB'] - do { - size = size / BYTE_SIZE - i++ - } while (size >= 1 && i < units.length - 1) - - const csize = Math.max(size, 0.1).toFixed(2) - return `${csize}${isByte ? '' : ' '}${units[i]}${isSuffix ? ' ' + (isByte ? '' : 'B') : ''}` + getFileSize (size, isByte = true, isSuffix = true) { // 把字节转换成正常文件大小 + if (size == null || size == undefined) return 0 + let num = 1024.00 // byte + if (isByte && size < num) { + return size.toFixed(2) + 'B' + } + if (size < Math.pow(num, 2)) { + return (size / num).toFixed(2) + `K${isSuffix ? 'b' : ''}` + } // kb + if (size < Math.pow(num, 3)) { + return (size / Math.pow(num, 2)).toFixed(2) + `M${isSuffix ? 'b' : ''}` + } // M + if (size < Math.pow(num, 4)) { + return (size / Math.pow(num, 3)).toFixed(2) + 'G' + } // G + return (size / Math.pow(num, 4)).toFixed(2) + 'T' // T } /** diff --git a/resources/state/monitor.html b/resources/state/monitor.html index 1afa92e..b6ba599 100644 --- a/resources/state/monitor.html +++ b/resources/state/monitor.html @@ -18,45 +18,82 @@ } return value.toFixed(0) + units[unitIndex] // 返回带有动态单位标签的字符串 } + var publicOption = { + animation: false, + textStyle: { + fontFamily: 'Number, "汉仪文黑-65W", YS, PingFangSC-Medium, "PingFang SC", sans-serif' + }, + grid: { + left: '1%', + right: '1.5%', + bottom: '0', + containLabel: true + }, + xAxis: [ + { + type: 'time' + } + ], + yAxis: [ + { + type: 'value', + axisLabel: { + formatter: by + } + } + ], + }
-
+
+
+
+
+ +
+
+
+ +
+
+
+
{{/if}}