diff --git a/Makefile b/Makefile
index 2c3bebf..eca80c5 100644
--- a/Makefile
+++ b/Makefile
@@ -1,8 +1,14 @@
target: dist build
- create-version-file metadata.yml --outfile build/file_version_info.txt
+ uv run python update_version.py
+ cd webui && npm run build
+ cd ..
+ uv run create-version-file metadata.yml --outfile build/file_version_info.txt
uv run pyinstaller -F main.py --version-file build/file_version_info.txt -n Lightening
gui: build
+ uv run python update_version.py
+ cd webui && npm run build
+ cd ..
uv run pyinstaller webview_app.py -n LighteningGUI --noconsole --add-data "webui/dist;webui/dist" -y
dist:
diff --git a/VERSION b/VERSION
new file mode 100644
index 0000000..bb83058
--- /dev/null
+++ b/VERSION
@@ -0,0 +1 @@
+1.0.12
diff --git a/metadata.yml b/metadata.yml
new file mode 100644
index 0000000..380852c
--- /dev/null
+++ b/metadata.yml
@@ -0,0 +1,4 @@
+version: 1.0.12
+company_name: EGM
+file_description: EGM Lightning Protection Calculator
+product_name: Lightening
diff --git a/package-lock.json b/package-lock.json
new file mode 100644
index 0000000..625743a
--- /dev/null
+++ b/package-lock.json
@@ -0,0 +1,6 @@
+{
+ "name": "EGM",
+ "lockfileVersion": 3,
+ "requires": true,
+ "packages": {}
+}
diff --git a/update_version.py b/update_version.py
new file mode 100644
index 0000000..d6f3558
--- /dev/null
+++ b/update_version.py
@@ -0,0 +1,76 @@
+#!/usr/bin/env python3
+"""更新版本号脚本"""
+import re
+import sys
+from pathlib import Path
+
+
+def get_version():
+ """从 VERSION 文件读取版本号"""
+ version_file = Path(__file__).parent / "VERSION"
+ return version_file.read_text().strip()
+
+
+def increment_version(version: str) -> str:
+ """递增版本号的修订号"""
+ parts = version.split(".")
+ if len(parts) == 3:
+ parts[2] = str(int(parts[2]) + 1)
+ return ".".join(parts)
+ return version
+
+
+def update_index_html(version: str):
+ """更新 webui/index.html 中的标题版本号"""
+ index_file = Path(__file__).parent / "webui" / "index.html"
+ content = index_file.read_text(encoding="utf-8")
+
+ # 替换标题中的版本号
+ new_content = re.sub(
+ r"
EGM 输电线路绕击跳闸率计算( v[\d.]+)?",
+ f"EGM 输电线路绕击跳闸率计算 v{version}",
+ content
+ )
+
+ index_file.write_text(new_content, encoding="utf-8")
+ print(f"Updated version in {index_file} to v{version}")
+
+
+def update_version_file(version: str):
+ """更新 VERSION 文件"""
+ version_file = Path(__file__).parent / "VERSION"
+ version_file.write_text(version + "\n")
+
+
+def create_metadata(version: str):
+ """创建 metadata.yml 文件"""
+ metadata_file = Path(__file__).parent / "metadata.yml"
+ content = f"""version: {version}
+company_name: EGM
+file_description: EGM Lightning Protection Calculator
+product_name: Lightening
+"""
+ metadata_file.write_text(content)
+ print(f"Created metadata.yml with version {version}")
+
+
+def main():
+ # 检查是否只获取版本号
+ if len(sys.argv) > 1 and sys.argv[1] == "--get":
+ print(get_version())
+ return
+
+ # 获取当前版本并递增
+ current_version = get_version()
+ new_version = increment_version(current_version)
+
+ # 更新所有文件
+ update_version_file(new_version)
+ update_index_html(new_version)
+ create_metadata(new_version)
+
+ print(f"Version updated: {current_version} -> {new_version}")
+
+
+if __name__ == "__main__":
+ main()
diff --git a/webui/index.html b/webui/index.html
index 4b952a6..1e96b22 100644
--- a/webui/index.html
+++ b/webui/index.html
@@ -4,7 +4,7 @@
- EGM 输电线路绕击跳闸率计算
+ EGM 输电线路绕击跳闸率计算 v1.0.12
diff --git a/webui/package-lock.json b/webui/package-lock.json
index 567371f..cff800e 100644
--- a/webui/package-lock.json
+++ b/webui/package-lock.json
@@ -21,7 +21,7 @@
"tailwindcss": "^3.4.0",
"typescript": "^5.3.0",
"vite": "^5.0.0",
- "vue-tsc": "^1.8.0"
+ "vue-tsc": "^2.0.0"
}
},
"node_modules/@alloc/quick-lru": {
@@ -1218,34 +1218,32 @@
}
},
"node_modules/@volar/language-core": {
- "version": "1.11.1",
- "resolved": "https://registry.npmmirror.com/@volar/language-core/-/language-core-1.11.1.tgz",
- "integrity": "sha512-dOcNn3i9GgZAcJt43wuaEykSluAuOkQgzni1cuxLxTV0nJKanQztp7FxyswdRILaKH+P2XZMPRp2S4MV/pElCw==",
+ "version": "2.4.15",
+ "resolved": "https://registry.npmmirror.com/@volar/language-core/-/language-core-2.4.15.tgz",
+ "integrity": "sha512-3VHw+QZU0ZG9IuQmzT68IyN4hZNd9GchGPhbD9+pa8CVv7rnoOZwo7T8weIbrRmihqy3ATpdfXFnqRrfPVK6CA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@volar/source-map": "1.11.1"
+ "@volar/source-map": "2.4.15"
}
},
"node_modules/@volar/source-map": {
- "version": "1.11.1",
- "resolved": "https://registry.npmmirror.com/@volar/source-map/-/source-map-1.11.1.tgz",
- "integrity": "sha512-hJnOnwZ4+WT5iupLRnuzbULZ42L7BWWPMmruzwtLhJfpDVoZLjNBxHDi2sY2bgZXCKlpU5XcsMFoYrsQmPhfZg==",
+ "version": "2.4.15",
+ "resolved": "https://registry.npmmirror.com/@volar/source-map/-/source-map-2.4.15.tgz",
+ "integrity": "sha512-CPbMWlUN6hVZJYGcU/GSoHu4EnCHiLaXI9n8c9la6RaI9W5JHX+NqG+GSQcB0JdC2FIBLdZJwGsfKyBB71VlTg==",
"dev": true,
- "license": "MIT",
- "dependencies": {
- "muggle-string": "^0.3.1"
- }
+ "license": "MIT"
},
"node_modules/@volar/typescript": {
- "version": "1.11.1",
- "resolved": "https://registry.npmmirror.com/@volar/typescript/-/typescript-1.11.1.tgz",
- "integrity": "sha512-iU+t2mas/4lYierSnoFOeRFQUhAEMgsFuQxoxvwn5EdQopw43j+J27a4lt9LMInx1gLJBC6qL14WYGlgymaSMQ==",
+ "version": "2.4.15",
+ "resolved": "https://registry.npmmirror.com/@volar/typescript/-/typescript-2.4.15.tgz",
+ "integrity": "sha512-2aZ8i0cqPGjXb4BhkMsPYDkkuc2ZQ6yOpqwAuNwUoncELqoy5fRgOQtLR9gB0g902iS0NAkvpIzs27geVyVdPg==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@volar/language-core": "1.11.1",
- "path-browserify": "^1.0.1"
+ "@volar/language-core": "2.4.15",
+ "path-browserify": "^1.0.1",
+ "vscode-uri": "^3.0.8"
}
},
"node_modules/@vue/compiler-core": {
@@ -1298,22 +1296,32 @@
"@vue/shared": "3.5.29"
}
},
- "node_modules/@vue/language-core": {
- "version": "1.8.27",
- "resolved": "https://registry.npmmirror.com/@vue/language-core/-/language-core-1.8.27.tgz",
- "integrity": "sha512-L8Kc27VdQserNaCUNiSFdDl9LWT24ly8Hpwf1ECy3aFb9m6bDhBGQYOujDm21N7EW3moKIOKEanQwe1q5BK+mA==",
+ "node_modules/@vue/compiler-vue2": {
+ "version": "2.7.16",
+ "resolved": "https://registry.npmmirror.com/@vue/compiler-vue2/-/compiler-vue2-2.7.16.tgz",
+ "integrity": "sha512-qYC3Psj9S/mfu9uVi5WvNZIzq+xnXMhOwbTFKKDD7b1lhpnn71jXSFdTQ+WsIEk0ONCd7VV2IMm7ONl6tbQ86A==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@volar/language-core": "~1.11.1",
- "@volar/source-map": "~1.11.1",
- "@vue/compiler-dom": "^3.3.0",
- "@vue/shared": "^3.3.0",
- "computeds": "^0.0.1",
+ "de-indent": "^1.0.2",
+ "he": "^1.2.0"
+ }
+ },
+ "node_modules/@vue/language-core": {
+ "version": "2.2.12",
+ "resolved": "https://registry.npmmirror.com/@vue/language-core/-/language-core-2.2.12.tgz",
+ "integrity": "sha512-IsGljWbKGU1MZpBPN+BvPAdr55YPkj2nB/TBNGNC32Vy2qLG25DYu/NBN2vNtZqdRbTRjaoYrahLrToim2NanA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@volar/language-core": "2.4.15",
+ "@vue/compiler-dom": "^3.5.0",
+ "@vue/compiler-vue2": "^2.7.16",
+ "@vue/shared": "^3.5.0",
+ "alien-signals": "^1.0.3",
"minimatch": "^9.0.3",
- "muggle-string": "^0.3.1",
- "path-browserify": "^1.0.1",
- "vue-template-compiler": "^2.7.14"
+ "muggle-string": "^0.4.1",
+ "path-browserify": "^1.0.1"
},
"peerDependencies": {
"typescript": "*"
@@ -1374,6 +1382,13 @@
"integrity": "sha512-w7SR0A5zyRByL9XUkCfdLs7t9XOHUyJ67qPGQjOou3p6GvBeBW+AVjUUmlxtZ4PIYaRvE+1LmK44O4uajlZwcg==",
"license": "MIT"
},
+ "node_modules/alien-signals": {
+ "version": "1.0.13",
+ "resolved": "https://registry.npmmirror.com/alien-signals/-/alien-signals-1.0.13.tgz",
+ "integrity": "sha512-OGj9yyTnJEttvzhTUWuscOvtqxq5vrhF7vL9oS0xJ2mK0ItPYP1/y+vCFebfxoEyAz0++1AIwJ5CMr+Fk3nDmg==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/any-promise": {
"version": "1.3.0",
"resolved": "https://registry.npmmirror.com/any-promise/-/any-promise-1.3.0.tgz",
@@ -1616,13 +1631,6 @@
"node": ">= 6"
}
},
- "node_modules/computeds": {
- "version": "0.0.1",
- "resolved": "https://registry.npmmirror.com/computeds/-/computeds-0.0.1.tgz",
- "integrity": "sha512-7CEBgcMjVmitjYo5q8JTJVra6X5mQ20uTThdK+0kR7UEaDrAWEQcRiBtWJzga4eRpP6afNwwLsX2SET2JhVB1Q==",
- "dev": true,
- "license": "MIT"
- },
"node_modules/cssesc": {
"version": "3.0.0",
"resolved": "https://registry.npmmirror.com/cssesc/-/cssesc-3.0.0.tgz",
@@ -2033,9 +2041,9 @@
}
},
"node_modules/muggle-string": {
- "version": "0.3.1",
- "resolved": "https://registry.npmmirror.com/muggle-string/-/muggle-string-0.3.1.tgz",
- "integrity": "sha512-ckmWDJjphvd/FvZawgygcUeQCxzvohjFO5RxTjj4eq8kw359gFF3E1brjfI+viLMxss5JrHTDRHZvu2/tuy0Qg==",
+ "version": "0.4.1",
+ "resolved": "https://registry.npmmirror.com/muggle-string/-/muggle-string-0.4.1.tgz",
+ "integrity": "sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==",
"dev": true,
"license": "MIT"
},
@@ -2881,19 +2889,6 @@
"url": "https://paulmillr.com/funding/"
}
},
- "node_modules/semver": {
- "version": "7.7.4",
- "resolved": "https://registry.npmmirror.com/semver/-/semver-7.7.4.tgz",
- "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==",
- "dev": true,
- "license": "ISC",
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
"node_modules/source-map-js": {
"version": "1.2.1",
"resolved": "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.2.1.tgz",
@@ -3235,6 +3230,13 @@
}
}
},
+ "node_modules/vscode-uri": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmmirror.com/vscode-uri/-/vscode-uri-3.1.0.tgz",
+ "integrity": "sha512-/BpdSx+yCQGnCvecbyXdxHDkuk55/G3xwnC0GqY4gmQ3j+A+g8kzzgB4Nk/SINjqn6+waqw3EgbVF2QKExkRxQ==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/vue": {
"version": "3.5.29",
"resolved": "https://registry.npmmirror.com/vue/-/vue-3.5.29.tgz",
@@ -3257,33 +3259,21 @@
}
}
},
- "node_modules/vue-template-compiler": {
- "version": "2.7.16",
- "resolved": "https://registry.npmmirror.com/vue-template-compiler/-/vue-template-compiler-2.7.16.tgz",
- "integrity": "sha512-AYbUWAJHLGGQM7+cNTELw+KsOG9nl2CnSv467WobS5Cv9uk3wFcnr1Etsz2sEIHEZvw1U+o9mRlEO6QbZvUPGQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "de-indent": "^1.0.2",
- "he": "^1.2.0"
- }
- },
"node_modules/vue-tsc": {
- "version": "1.8.27",
- "resolved": "https://registry.npmmirror.com/vue-tsc/-/vue-tsc-1.8.27.tgz",
- "integrity": "sha512-WesKCAZCRAbmmhuGl3+VrdWItEvfoFIPXOvUJkjULi+x+6G/Dy69yO3TBRJDr9eUlmsNAwVmxsNZxvHKzbkKdg==",
+ "version": "2.2.12",
+ "resolved": "https://registry.npmmirror.com/vue-tsc/-/vue-tsc-2.2.12.tgz",
+ "integrity": "sha512-P7OP77b2h/Pmk+lZdJ0YWs+5tJ6J2+uOQPo7tlBnY44QqQSPYvS0qVT4wqDJgwrZaLe47etJLLQRFia71GYITw==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@volar/typescript": "~1.11.1",
- "@vue/language-core": "1.8.27",
- "semver": "^7.5.4"
+ "@volar/typescript": "2.4.15",
+ "@vue/language-core": "2.2.12"
},
"bin": {
"vue-tsc": "bin/vue-tsc.js"
},
"peerDependencies": {
- "typescript": "*"
+ "typescript": ">=5.0.0"
}
}
}
diff --git a/webui/package.json b/webui/package.json
index ca8dd9e..eee3637 100644
--- a/webui/package.json
+++ b/webui/package.json
@@ -1 +1 @@
-{"name":"egm-webui","version":"0.1.0","type":"module","scripts":{"dev":"vite","build":"vue-tsc && vite build","preview":"vite preview"},"dependencies":{"@quasar/extras":"^1.17.0","@quasar/vite-plugin":"^1.10.0","quasar":"^2.14.0","vue":"^3.4.0"},"devDependencies":{"@vitejs/plugin-vue":"^5.0.0","autoprefixer":"^10.4.0","postcss":"^8.4.0","sass-embedded":"^1.97.3","tailwindcss":"^3.4.0","typescript":"^5.3.0","vite":"^5.0.0","vue-tsc":"^1.8.0"}}
\ No newline at end of file
+{"name":"egm-webui","version":"0.1.0","type":"module","scripts":{"dev":"vite","build":"vue-tsc && vite build","preview":"vite preview"},"dependencies":{"@quasar/extras":"^1.17.0","@quasar/vite-plugin":"^1.10.0","quasar":"^2.14.0","vue":"^3.4.0"},"devDependencies":{"@vitejs/plugin-vue":"^5.0.0","autoprefixer":"^10.4.0","postcss":"^8.4.0","sass-embedded":"^1.97.3","tailwindcss":"^3.4.0","typescript":"^5.3.0","vite":"^5.0.0","vue-tsc":"^2.0.0"}}
\ No newline at end of file
diff --git a/webui/src/components/ParameterForm.vue b/webui/src/components/ParameterForm.vue
index ff58fee..2584720 100644
--- a/webui/src/components/ParameterForm.vue
+++ b/webui/src/components/ParameterForm.vue
@@ -135,7 +135,7 @@
导、地线挂点垂直坐标 (m)