Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
39 changes: 20 additions & 19 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -22,30 +22,31 @@
},
"dependencies": {
"@element-plus/icons-vue": "^2.3.2",
"@vuepress/bundler-vite": "2.0.0-rc.19",
"@vuepress/helper": "2.0.0-rc.66",
"@vuepress/plugin-docsearch": "2.0.0-rc.76",
"@vuepress/plugin-links-check": "2.0.0-rc.74",
"element-plus": "^2.9.1",
"mathjax-full": "3.2.2",
"sass-embedded": "1.83.0",
"vue": "^3.5.13",
"vue3-carousel": "0.9.0",
"vuepress": "2.0.0-rc.19",
"vuepress-theme-hope": "2.0.0-rc.71"
"@vuepress/bundler-vite": "2.0.0-rc.26",
"@vuepress/plugin-docsearch": "2.0.0-rc.120",
"@vuepress/plugin-links-check": "2.0.0-rc.120",
"element-plus": "^2.12.0",
"sass-embedded": "1.93.3",
"vue": "^3.5.25",
"vue3-carousel": "0.17.0",
"vuepress": "2.0.0-rc.26",
"vuepress-theme-hope": "2.0.0-rc.99"
},
"devDependencies": {
"@eslint/js": "9.17.0",
"eslint": "9.17.0",
"eslint-plugin-vue": "9.32.0",
"gh-pages": "6.2.0",
"globals": "15.13.0",
"typescript": "5.5.4",
"typescript-eslint": "8.18.0"
"@eslint/js": "9.39.1",
"@vuepress/helper": "2.0.0-rc.120",
"@vuepress/plugin-back-to-top": "2.0.0-rc.120",
"eslint": "9.39.1",
"eslint-plugin-vue": "10.6.2",
"gh-pages": "6.3.0",
"globals": "16.5.0",
"katex": "^0.16.25",
"typescript": "5.9.3",
"typescript-eslint": "8.48.1"
},
"prettier": {
"singleQuote": true,
"trailingComma": "all"
},
"packageManager": "pnpm@9.15.1"
"packageManager": "pnpm@10.25.0"
}
4,752 changes: 2,437 additions & 2,315 deletions pnpm-lock.yaml

Large diffs are not rendered by default.

2 changes: 2 additions & 0 deletions pnpm-workspace.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
onlyBuiltDependencies:
- vue-demi
19 changes: 14 additions & 5 deletions src/.vuepress/client.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,15 @@

import { defineDocSearchConfig } from '@vuepress/plugin-docsearch/client';
import { computed } from 'vue';
import { defineClientConfig, usePageData, useRouter, withBase } from 'vuepress/client';
import useLegacyRoute from './composables/useLegacyRoute';
import {
defineClientConfig,
usePageData,
useRouter,
withBase,
} from 'vuepress/client';
import useLegacyRoute from './composables/useLegacyRoute.js';
import DocSearch from './components/DocSearch.vue';
import Layout from './components/SidebarLayout.vue';
import { getDocVersion } from './utils/index.js';

export default defineClientConfig({
Expand All @@ -32,11 +38,11 @@ export default defineClientConfig({
const pageData = usePageData();
const router = useRouter();

let lastTo = '';
let lastTo = '';

router.onError((error) => {
console.warn(error);
if(!lastTo) return;
if (!lastTo) return;
window.location.href = withBase(lastTo);
lastTo = '';
});
Expand All @@ -58,4 +64,7 @@ export default defineClientConfig({

defineDocSearchConfig(docSearchConfig);
},
layouts: {
Layout: Layout,
},
});
135 changes: 70 additions & 65 deletions src/.vuepress/components/ConfigItem.vue
Original file line number Diff line number Diff line change
Expand Up @@ -26,95 +26,100 @@ const props = defineProps<{
}>();

const formData = defineModel('info', {
default: () => ({
measurementCount: null,
dataType: null,
frequency: null,
frequencyUnit: null,
averageStringLength: null,
})
default: () => ({
measurementCount: null,
dataType: null,
frequency: null,
frequencyUnit: null,
averageStringLength: null,
})
});

const need4columns = (dataType: string | null) => {
return dataType === 'TEXT' || dataType === 'STRING' || dataType === 'BLOB';
return dataType === 'TEXT' || dataType === 'STRING' || dataType === 'BLOB';
};

</script>

<template>
<div class="outer-box">
<div class="config-title">配置项 {{ props.index }}</div>
<div class="config-title">测点类型-{{ props.index }}</div>
<el-form :inline="true" class="config-row">
<el-form-item label="测点数量:" label-width="85px">
<el-input v-model="formData.measurementCount" placeholder="请输入测点数量" type="number" min="0" :style="{ width: need4columns(formData.dataType) ? '150px' : '205px'}"></el-input>
</el-form-item>
<el-form-item label-width="100px">
<template #label>
数据类型:
<client-only>
<el-tooltip placement="top" effect="light">
<template #content>
字符串(TEXT)平均长度说明:
<ul>
<li>ASCII 字母和符号(如 A-Z, a-z, 0-9, l@# 等):1 字节</li>
<li>常见汉字:3 字节(UTF-8)</li>
<li>Emoji 和特殊符号:通常 3-4 字节(UTF-8)</li>
</ul>
</template>
<el-icon><Icons.QuestionFilled /></el-icon>
</el-tooltip>
</client-only>
</template>
<el-select v-model="formData.dataType" placeholder="请选择数据类型" :style="{ width: need4columns(formData.dataType) ? '155px' : '205px'}">
<el-option label="BOOLEAN (9字节)" value="BOOLEAN"></el-option>
<el-option label="INT32 (12字节)" value="INT32"></el-option>
<el-option label="INT64 (16字节)" value="INT64"></el-option>
<el-option label="FLOAT (12字节)" value="FLOAT"></el-option>
<el-option label="DOUBLE (16字节)" value="DOUBLE"></el-option>
<el-option label="TEXT (8+a字节)" value="TEXT"></el-option>
<el-option label="STRING (8+a字节)" value="STRING"></el-option>
<el-option label="BLOB (8+a字节)" value="BLOB"></el-option>
<el-option label="TIMESTAMP (16字节)" value="TIMESTAMP"></el-option>
<el-option label="DATE (12字节)" value="DATE"></el-option>
</el-select>
</el-form-item>
<el-form-item label="采样频率:" label-width="85px">
<el-input v-model="formData.frequency" placeholder="请输入采样频率" type="number" min="0" :style="{ width: need4columns(formData.dataType) ? '135px' : '205px'}"></el-input>
<el-select v-model="formData.frequencyUnit" placeholder="请选择频率单位" :style="{ width: need4columns(formData.dataType) ? '65px' : '130px'}">
<el-option label="HZ" value="HZ"></el-option>
<el-option label="秒" value="SECOND"></el-option>
<el-option label="分钟" value="MINUTE"></el-option>
<el-option label="小时" value="HOUR"></el-option>
<el-option label="天" value="DAY"></el-option>
</el-select>
</el-form-item>
<el-form-item label="字符串平均长度(a):" label-width="160px" v-if="need4columns(formData.dataType)">
<el-input v-model="formData.averageStringLength" type="number" style="width: 140px;"></el-input>
</el-form-item>
<el-form-item label="测点数量:" label-width="85px">
<el-input v-model="formData.measurementCount" placeholder="请输入测点数量" type="number" min="0"
:style="{ width: need4columns(formData.dataType) ? '150px' : '205px' }"></el-input>
</el-form-item>
<el-form-item label-width="100px">
<template #label>
数据类型:
<client-only>
<el-tooltip placement="top" effect="light">
<template #content>
字符串(TEXT)平均长度说明:
<ul>
<li>ASCII 字母和符号(如 A-Z, a-z, 0-9, l@# 等):1 字节</li>
<li>常见汉字:3 字节(UTF-8)</li>
<li>Emoji 和特殊符号:通常 3-4 字节(UTF-8)</li>
</ul>
</template>
<el-icon>
<Icons.QuestionFilled />
</el-icon>
</el-tooltip>
</client-only>
</template>
<el-select v-model="formData.dataType" placeholder="请选择数据类型"
:style="{ width: need4columns(formData.dataType) ? '155px' : '205px' }">
<el-option label="BOOLEAN (9字节)" value="BOOLEAN"></el-option>
<el-option label="INT32 (12字节)" value="INT32"></el-option>
<el-option label="INT64 (16字节)" value="INT64"></el-option>
<el-option label="FLOAT (12字节)" value="FLOAT"></el-option>
<el-option label="DOUBLE (16字节)" value="DOUBLE"></el-option>
<el-option label="TEXT (8+a字节)" value="TEXT"></el-option>
<el-option label="STRING (8+a字节)" value="STRING"></el-option>
<el-option label="BLOB (8+a字节)" value="BLOB"></el-option>
<el-option label="TIMESTAMP (16字节)" value="TIMESTAMP"></el-option>
<el-option label="DATE (12字节)" value="DATE"></el-option>
</el-select>
</el-form-item>
<el-form-item label="采样频率:" label-width="85px">
<el-input v-model="formData.frequency" placeholder="请输入采样频率" type="number" min="0"
:style="{ width: need4columns(formData.dataType) ? '135px' : '205px' }"></el-input>
<el-select v-model="formData.frequencyUnit" placeholder="请选择频率单位"
:style="{ width: need4columns(formData.dataType) ? '65px' : '130px' }">
<el-option label="HZ" value="HZ"></el-option>
<el-option label="秒" value="SECOND"></el-option>
<el-option label="分钟" value="MINUTE"></el-option>
<el-option label="小时" value="HOUR"></el-option>
<el-option label="天" value="DAY"></el-option>
</el-select>
</el-form-item>
<el-form-item label="字符串平均长度(a):" label-width="160px" v-if="need4columns(formData.dataType)">
<el-input v-model="formData.averageStringLength" type="number" style="width: 140px;"></el-input>
</el-form-item>
</el-form>
</div>
</template>

<style>
.outer-box {
border: 2px solid rgb(239, 238, 238);
border-radius: 15px;
padding: 15px 50px 25px;
margin-bottom: 20px;
border: 2px solid rgb(239, 238, 238);
border-radius: 15px;
padding: 15px 50px 25px;
margin-bottom: 20px;
}

.config-title {
text-align: center;
text-align: center;
}

.config-row {
display: flex;
justify-content: space-between;
margin-top: 30px;
display: flex;
justify-content: space-between;
margin-top: 30px;
}

.config-row .el-form-item {
margin-right: 0;
margin-right: 0;
}

</style>
85 changes: 49 additions & 36 deletions src/.vuepress/components/ResourceEvaluator.vue
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@

<script setup lang="ts">
import { computed, ref } from "vue";
import { ElButton, ElIcon, ElForm, ElFormItem, ElInput, ElSelect, ElOption, ElTooltip } from "element-plus/es";
import { ElButton, ElIcon, ElForm, ElFormItem, ElInput, ElSelect, ElOption, ElTooltip, ElRow } from "element-plus/es";
import * as Icons from "@element-plus/icons-vue";
import 'element-plus/theme-chalk/index.css';
import ConfigItem from "./ConfigItem.vue";
Expand Down Expand Up @@ -228,7 +228,7 @@ const removeConfigItem = (index: number) => {
if (configItems.value.length > 1) {
configItems.value.splice(index, 1);
} else {
alert('至少保留一个配置项');
alert('至少保留一个测点类型');
}
};

Expand Down Expand Up @@ -284,7 +284,7 @@ const calculateSpacePrecise = () => {
return;
}
} else {
alert(`请完整填写配置项 ${index + 1} 的数据`);
alert(`请完整填写 测点类型-${index + 1} 的数据`);
return;
}
});
Expand Down Expand Up @@ -341,33 +341,32 @@ const calculateSpacePrecise = () => {
<el-button class="calculate-button" color="#4c59c7" @click="calculateSpacePrecise()">计算结果</el-button>
</div>
<div class="result-row">
<el-form :inline="true">
<el-form-item label-width="200px">
<template #label>
每节点共需磁盘空间:
<client-only>
<el-tooltip placement="top" effect="light">
<template #content>
<ul>
<li>双活为两节点单副本(每台机器按单副本规划资源)</li>
<li>三节点分布式集群推荐使用双副本(每台机器按双副本规划资源)</li>
</ul>
</template>
<el-icon>
<Icons.QuestionFilled />
</el-icon>
</el-tooltip>
</client-only>
</template>
</el-form-item>

<el-form-item label="单副本空间:" label-width="150px">
<div class="result-text">{{ singleSpaceStorage }}</div>
</el-form-item>
<el-form-item label="双副本空间:" label-width="150px">
<div class="result-text">{{ doubleSpaceStorage }}</div>
</el-form-item>
</el-form>
<el-row class="result-title">
每节点共需磁盘空间&nbsp;&nbsp;
<client-only>
<el-tooltip placement="top" effect="light">
<template #content>
<ul>
<li>双活为两节点单副本(每台机器按单副本规划资源)</li>
<li>三节点分布式集群推荐使用双副本(每台机器按双副本规划资源)</li>
</ul>
</template>
<el-icon>
<Icons.QuestionFilled />
</el-icon>
</el-tooltip>
</client-only>
</el-row>
<el-row class="result-line">
<el-form :inline="true">
<el-form-item label="单机(单副本):" style="margin-bottom:0" label-width="150px">
<div class="result-text">{{ singleSpaceStorage }}</div>
</el-form-item>
<el-form-item label="分布式(两副本):" style="margin-bottom:0" label-width="150px">
<div class="result-text">{{ doubleSpaceStorage }}</div>
</el-form-item>
</el-form>
</el-row>
</div>
</div>
</ClientOnly>
Expand All @@ -385,12 +384,12 @@ const calculateSpacePrecise = () => {
.vp-breadcrumb {
display: none;
}
}

.theme-hope-content {
width: 1230px;
max-width: 100% !important;
overflow: auto;
[vp-content] {
width: 1230px;
max-width: 100% !important;
overflow: auto;
}
}

.calc-content-area {
Expand Down Expand Up @@ -442,13 +441,27 @@ const calculateSpacePrecise = () => {

.result-row {
display: flex;
justify-content: space-evenly;
flex-direction: column;
justify-content: center;
background-color: #f2f5fc;
border-radius: 15px;
padding: 30px;
margin-bottom: 50px;
}

.result-title {
font-size: 16px;
font-weight: bold;
margin-bottom: 16px;
color: #4c59c7;
font-weight: bold;
justify-content: center;
}

.result-line {
justify-content: center;
}

.result-text {
color: #4c59c7;
font-weight: bold;
Expand Down
Loading