diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 25bb1d45f..c6015021f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -853,51 +853,61 @@ packages: resolution: {integrity: sha512-88fSzjC5xeH9S2Vg3rPgXJULkHcLYMkh8faix8DX4h4TIAL65ekwuQMA/g2CXq8W+NJC43V6fUpYZNjaX3+IIg==} cpu: [arm] os: [linux] + libc: [glibc] '@rollup/rollup-linux-arm-musleabihf@4.34.6': resolution: {integrity: sha512-wM4ztnutBqYFyvNeR7Av+reWI/enK9tDOTKNF+6Kk2Q96k9bwhDDOlnCUNRPvromlVXo04riSliMBs/Z7RteEg==} cpu: [arm] os: [linux] + libc: [musl] '@rollup/rollup-linux-arm64-gnu@4.34.6': resolution: {integrity: sha512-9RyprECbRa9zEjXLtvvshhw4CMrRa3K+0wcp3KME0zmBe1ILmvcVHnypZ/aIDXpRyfhSYSuN4EPdCCj5Du8FIA==} cpu: [arm64] os: [linux] + libc: [glibc] '@rollup/rollup-linux-arm64-musl@4.34.6': resolution: {integrity: sha512-qTmklhCTyaJSB05S+iSovfo++EwnIEZxHkzv5dep4qoszUMX5Ca4WM4zAVUMbfdviLgCSQOu5oU8YoGk1s6M9Q==} cpu: [arm64] os: [linux] + libc: [musl] '@rollup/rollup-linux-loongarch64-gnu@4.34.6': resolution: {integrity: sha512-4Qmkaps9yqmpjY5pvpkfOerYgKNUGzQpFxV6rnS7c/JfYbDSU0y6WpbbredB5cCpLFGJEqYX40WUmxMkwhWCjw==} cpu: [loong64] os: [linux] + libc: [glibc] '@rollup/rollup-linux-powerpc64le-gnu@4.34.6': resolution: {integrity: sha512-Zsrtux3PuaxuBTX/zHdLaFmcofWGzaWW1scwLU3ZbW/X+hSsFbz9wDIp6XvnT7pzYRl9MezWqEqKy7ssmDEnuQ==} cpu: [ppc64] os: [linux] + libc: [glibc] '@rollup/rollup-linux-riscv64-gnu@4.34.6': resolution: {integrity: sha512-aK+Zp+CRM55iPrlyKiU3/zyhgzWBxLVrw2mwiQSYJRobCURb781+XstzvA8Gkjg/hbdQFuDw44aUOxVQFycrAg==} cpu: [riscv64] os: [linux] + libc: [glibc] '@rollup/rollup-linux-s390x-gnu@4.34.6': resolution: {integrity: sha512-WoKLVrY9ogmaYPXwTH326+ErlCIgMmsoRSx6bO+l68YgJnlOXhygDYSZe/qbUJCSiCiZAQ+tKm88NcWuUXqOzw==} cpu: [s390x] os: [linux] + libc: [glibc] '@rollup/rollup-linux-x64-gnu@4.34.6': resolution: {integrity: sha512-Sht4aFvmA4ToHd2vFzwMFaQCiYm2lDFho5rPcvPBT5pCdC+GwHG6CMch4GQfmWTQ1SwRKS0dhDYb54khSrjDWw==} cpu: [x64] os: [linux] + libc: [glibc] '@rollup/rollup-linux-x64-musl@4.34.6': resolution: {integrity: sha512-zmmpOQh8vXc2QITsnCiODCDGXFC8LMi64+/oPpPx5qz3pqv0s6x46ps4xoycfUiVZps5PFn1gksZzo4RGTKT+A==} cpu: [x64] os: [linux] + libc: [musl] '@rollup/rollup-win32-arm64-msvc@4.34.6': resolution: {integrity: sha512-3/q1qUsO/tLqGBaD4uXsB6coVGB3usxw3qyeVb59aArCgedSF66MPdgRStUd7vbZOsko/CgVaY5fo2vkvPLWiA==} @@ -1466,8 +1476,8 @@ packages: resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} engines: {node: '>=6'} - caniuse-lite@1.0.30001699: - resolution: {integrity: sha512-b+uH5BakXZ9Do9iK+CkDmctUSEqZl+SP056vc5usa0PL+ev5OHw003rZXcnjNDv3L8P5j6rwT6C0BPKSikW08w==} + caniuse-lite@1.0.30001759: + resolution: {integrity: sha512-Pzfx9fOKoKvevQf8oCXoyNRQ5QyxJj+3O0Rqx2V5oxT61KGx8+n6hV/IUyJeifUci2clnmmKVpvtiqRzgiWjSw==} ccount@2.0.1: resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} @@ -4481,7 +4491,7 @@ snapshots: autoprefixer@10.4.20(postcss@8.5.2): dependencies: browserslist: 4.24.4 - caniuse-lite: 1.0.30001699 + caniuse-lite: 1.0.30001759 fraction.js: 4.3.7 normalize-range: 0.1.2 picocolors: 1.1.1 @@ -4515,7 +4525,7 @@ snapshots: browserslist@4.24.4: dependencies: - caniuse-lite: 1.0.30001699 + caniuse-lite: 1.0.30001759 electron-to-chromium: 1.5.97 node-releases: 2.0.19 update-browserslist-db: 1.1.2(browserslist@4.24.4) @@ -4528,7 +4538,7 @@ snapshots: camelcase@5.3.1: {} - caniuse-lite@1.0.30001699: {} + caniuse-lite@1.0.30001759: {} ccount@2.0.1: {} diff --git a/src/.vuepress/components/ResourceEvaluator.vue b/src/.vuepress/components/ResourceEvaluator.vue index ccb437388..6be37d01e 100644 --- a/src/.vuepress/components/ResourceEvaluator.vue +++ b/src/.vuepress/components/ResourceEvaluator.vue @@ -22,6 +22,7 @@ import { ElButton, ElIcon, ElForm, ElFormItem, ElInput, ElSelect, ElOption, ElTo import * as Icons from "@element-plus/icons-vue"; import 'element-plus/theme-chalk/index.css'; import ConfigItem from "./ConfigItem.vue"; +import { ClientOnly } from "vuepress/client"; class Calculator { static add(...args: Array): number { @@ -183,256 +184,274 @@ class Calculator { const totalSpaceInBytes = ref(0); const singleSpaceStorage = computed(() => { - let tmp = Calculator.toFixed(Calculator.divide(totalSpaceInBytes.value, 1024, 1024, 1024), 2); - if (tmp >= 1024) { - return Calculator.toFixed(Calculator.divide(totalSpaceInBytes.value, 1024, 1024, 1024, 1024), 2).toString() + ' TB'; - } else { - return tmp.toString() + ' GB'; - } + let tmp = Calculator.toFixed(Calculator.divide(totalSpaceInBytes.value, 1024, 1024, 1024), 2); + if (tmp >= 1024) { + return Calculator.toFixed(Calculator.divide(totalSpaceInBytes.value, 1024, 1024, 1024, 1024), 2).toString() + ' TB'; + } else { + return tmp.toString() + ' GB'; + } }); const doubleSpaceStorage = computed(() => { - let tmp = Calculator.toFixed(Calculator.divide(Calculator.multiply(totalSpaceInBytes.value, 2), 1024, 1024, 1024), 2); - if (tmp >= 1024) { - return Calculator.toFixed(Calculator.divide(Calculator.multiply(totalSpaceInBytes.value, 2), 1024, 1024, 1024, 1024), 2).toString() + ' TB'; - } else { - return tmp.toString() + ' GB'; - } + let tmp = Calculator.toFixed(Calculator.divide(Calculator.multiply(totalSpaceInBytes.value, 2), 1024, 1024, 1024), 2); + if (tmp >= 1024) { + return Calculator.toFixed(Calculator.divide(Calculator.multiply(totalSpaceInBytes.value, 2), 1024, 1024, 1024, 1024), 2).toString() + ' TB'; + } else { + return tmp.toString() + ' GB'; + } }); const configItems = ref([{ - measurementCount: null, - dataType: null, - frequency: null, - frequencyUnit: 'HZ', - averageStringLength: null, + measurementCount: null, + dataType: null, + frequency: null, + frequencyUnit: 'HZ', + averageStringLength: null, }]); const storeInfo = ref({ - storePeriod: null, - storePeriodUnit: 'DAY', - compressionRatio: null, + storePeriod: null, + storePeriodUnit: 'DAY', + compressionRatio: 10, }); const addConfigItem = () => { - configItems.value.push({ - measurementCount: null, - dataType: null, - frequency: null, - frequencyUnit: 'HZ', - averageStringLength: null, - }); + configItems.value.push({ + measurementCount: null, + dataType: null, + frequency: null, + frequencyUnit: 'HZ', + averageStringLength: null, + }); }; const removeConfigItem = (index: number) => { - if (configItems.value.length > 1) { - configItems.value.splice(index, 1); - } else { - alert('至少保留一个配置项'); - } + if (configItems.value.length > 1) { + configItems.value.splice(index, 1); + } else { + alert('至少保留一个配置项'); + } }; const dataTypeBytes: Record = { - 'BOOLEAN': 9, - 'INT32': 12, - 'INT64': 16, - 'FLOAT': 12, - 'DOUBLE': 16, - 'TEXT': 8, - 'STRING': 8, - 'BLOB': 8, - 'TIMESTAMP': 16, - 'DATATIME': 12, + 'BOOLEAN': 9, + 'INT32': 12, + 'INT64': 16, + 'FLOAT': 12, + 'DOUBLE': 16, + 'TEXT': 8, + 'STRING': 8, + 'BLOB': 8, + 'TIMESTAMP': 16, + 'DATATIME': 12, }; const storeDurationInDays: Record = { - 'DAY': 1, - 'MONTH': 30, - 'YEAR': 365, + 'DAY': 1, + 'MONTH': 30, + 'YEAR': 365, }; const samplingPeriodInSec: Record = { - 'HZ': 1, - 'SECOND': 1, - 'MINUTE': 60, - 'HOUR': 3600, - 'DAY': 86400, + 'HZ': 1, + 'SECOND': 1, + 'MINUTE': 60, + 'HOUR': 3600, + 'DAY': 86400, } const calculateSpacePrecise = () => { - let totalSpace = 0; - configItems.value.forEach((item, index) => { - if (item.measurementCount && item.frequency && item.dataType && item.frequencyUnit) { - if (storeInfo.value.storePeriod && storeInfo.value.compressionRatio) { - let measurementCount = item.measurementCount; - let dataTypeSize = dataTypeBytes[item.dataType]; - if (item.dataType === 'STRING' || item.dataType === 'TEXT' || item.dataType === 'BLOB') { - if (item.averageStringLength === null) { - alert('请填写字符串平均长度'); - return; - } - dataTypeSize = Calculator.add(dataTypeSize, Number(item.averageStringLength)); - } - let samplingPeriod = Calculator.multiply(samplingPeriodInSec[item.frequencyUnit], item.frequency); - let samplePerDay = item.frequencyUnit === 'HZ' ? Calculator.multiply(86400, item.frequency) : Calculator.divide(86400, samplingPeriod); - let storePeriodInDay = Calculator.multiply(storeDurationInDays[storeInfo.value.storePeriodUnit], Number(storeInfo.value.storePeriod)); - totalSpace = Calculator.add(totalSpace, Calculator.divide(Calculator.multiply(measurementCount, dataTypeSize, samplePerDay, storePeriodInDay), storeInfo.value.compressionRatio)); - } else { - alert('请完整填写存储周期和压缩比'); - return; - } - } else { - alert(`请完整填写配置项 ${index + 1} 的数据`); + let totalSpace = 0; + configItems.value.forEach((item, index) => { + if (item.measurementCount && item.frequency && item.dataType && item.frequencyUnit) { + if (storeInfo.value.storePeriod && storeInfo.value.compressionRatio) { + let measurementCount = item.measurementCount; + let dataTypeSize = dataTypeBytes[item.dataType]; + if (item.dataType === 'STRING' || item.dataType === 'TEXT' || item.dataType === 'BLOB') { + if (item.averageStringLength === null) { + alert('请填写字符串平均长度'); return; + } + dataTypeSize = Calculator.add(dataTypeSize, Number(item.averageStringLength)); } - }); - totalSpaceInBytes.value = totalSpace; + let samplingPeriod = Calculator.multiply(samplingPeriodInSec[item.frequencyUnit], item.frequency); + let samplePerDay = item.frequencyUnit === 'HZ' ? Calculator.multiply(86400, item.frequency) : Calculator.divide(86400, samplingPeriod); + let storePeriodInDay = Calculator.multiply(storeDurationInDays[storeInfo.value.storePeriodUnit], Number(storeInfo.value.storePeriod)); + totalSpace = Calculator.add(totalSpace, Calculator.divide(Calculator.multiply(measurementCount, dataTypeSize, samplePerDay, storePeriodInDay), storeInfo.value.compressionRatio)); + } else { + alert('请完整填写存储周期和压缩比'); + return; + } + } else { + alert(`请完整填写配置项 ${index + 1} 的数据`); + return; + } + }); + totalSpaceInBytes.value = totalSpace; } - \ No newline at end of file diff --git a/src/.vuepress/theme.ts b/src/.vuepress/theme.ts index 103997d69..b7ae2c212 100644 --- a/src/.vuepress/theme.ts +++ b/src/.vuepress/theme.ts @@ -19,7 +19,6 @@ import { hopeTheme } from 'vuepress-theme-hope'; import { enNavbar, zhNavbar } from './navbar/index.js'; import { enSidebar, zhSidebar } from './sidebar/index.js'; -import { error } from 'vuepress/utils'; export default hopeTheme( { diff --git a/src/zh/ResourceEvaluator.md b/src/zh/ResourceEvaluator.md index e16bc100d..027885c1b 100644 --- a/src/zh/ResourceEvaluator.md +++ b/src/zh/ResourceEvaluator.md @@ -1,7 +1,8 @@ --- -home: true -heroText: '' +toc: false +containerClass: 'calc-page' --- +