+ 常用操作规程更名为操作规程

+ 首页功能列表增加高度以防止误触
+ 添加设置页面
+ 删除 L014-1 与 L414-5KR 相关物质计算页面
This commit is contained in:
2023-04-19 03:59:52 +08:00
parent d45bd30dd7
commit 47c81f9efb
7 changed files with 284 additions and 592 deletions

194
views/settings.html Normal file
View File

@@ -0,0 +1,194 @@
<!DOCTYPE html>
<html lang="zh-cmn-Hans">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Settings</title>
<script src="../statics/modules/jquery.min.js"></script>
<link rel="stylesheet" href="../statics/github.css">
<link rel="stylesheet" href="../statics/theme.css">
<style>
* {
padding: 0;
margin: 0;
}
textarea {
width: 85vw;
height: 70vh;
padding: 2vw;
margin: 3vw;
font-size: medium;
line-height: 1.2;
border: 1px solid #cbcbcb;
border-radius: 5px;
}
</style>
<script type="module">
import { IO } from "../statics/modules/tools.js"
const io = new IO("settings")
$(() => {
const textarea = $("#textarea")
// 写入默认设置
if (readSettings().length == 0) {
writeDefaultSettings(() => {
$("#refresh").click()
})
}
$("#reset").click(() => {
if (confirm("确定要恢复默认设置吗?\n该选项将会覆盖当前已保存的设置")) {
writeDefaultSettings(() => {
$("#refresh").click()
})
}
})
$("#go_index").click(() => {
window.location.href = "../index.html"
})
$("#refresh").click(() => {
let settings = readSettingsWithComments()
let string = ""
settings.forEach(item => {
string = string.concat(item).concat("\n")
})
textarea.val(string)
})
$("#refresh").click()
$("#save").click(() => {
let text = $("#textarea").val()
let settings = text.split("\n")
writeSettings(settings)
})
})
function readSettingsWithComments() {
let texts = []
texts.push("# 以井号开头的行是注释,注释将被忽略。")
texts.push("# 一行仅可填写一个设置,以键值对 (key=value) 的形式出现。")
texts.push("# 等号左边为设置的唯一标识,右边为该设置的值")
texts.push("# 若值有多个,使用英文逗号分隔 (e.g. key=value1,value2)")
texts.push("# 等号和用于分隔多个值的英文逗号左右两边不得有空格")
texts.push("")
for (const setting of readSettings()) {
let comment = io.read(`${setting.key}.desc`)
texts.push(`# ${comment}`)
texts.push(`${setting.key}=${setting.value}`)
texts.push("")
}
return texts
}
function readSettings() {
let settings = []
for (const iterator of io.listKeys().sort()) {
if (!iterator.endsWith(".desc")) {
settings.push({
key: iterator,
value: io.read(iterator)
})
}
}
return settings
}
function writeSettings(settings) {
if (settings.length == 0) {
return
}
io.listKeys().forEach(key => {
if (!key.endsWith(".desc")) {
io.remove(key)
}
})
settings.forEach(item => {
if (item.startsWith("#")) {
return
}
let key = item.split('=')[0]
let value = item.split('=')[1]
if (key != item && key != '') {
io.write(key, value)
}
})
}
function writeDefaultSettings(action) {
io.listKeys().forEach(key => {
io.remove(key)
})
$.getJSON("../statics/settings.json", (settings) => {
for (const iterator of settings) {
io.write(iterator.id, iterator.default)
io.write(`${iterator.id}.desc`, iterator.description)
}
action()
})
}
function createItem(data) {
let div = document.createElement("div")
div.setAttribute("class", "setting_item")
let span = document.createElement("span")
let span_title = document.createElement("span")
let span_description = document.createElement("span")
span_title.setAttribute("class", "title")
span_description.setAttribute("class", "description")
span_description.innerHTML = data.description
span.appendChild(span_title)
span.appendChild(document.createElement("br"))
span.appendChild(span_description)
div.appendChild(span)
switch (data.type) {
case 'boolean':
span_title.innerHTML = `${data.title} (${data.default ? "ON" : "OFF"})`
let button = document.createElement("button")
button.innerText = data.default ? "OFF" : "ON"
button.setAttribute("id", data.id)
div.appendChild(button)
break
case 'number':
span_title.innerHTML = `${data.title} (${data.default})`
let input = document.createElement("input")
input.setAttribute("type", "number")
input.setAttribute("value", data.default)
input.setAttribute("id", data.id)
div.appendChild(input)
break
default:
break
}
return div
}
</script>
</head>
<body>
<textarea id="textarea" wrap="off" autocomplete="off"></textarea>
<br>
<div id="buttons" style="text-align: center;">
<button id="reset">恢复默认设置</button>
<button id="go_index">回到首页</button>
<button id="refresh">刷新</button>
<button id="save">保存</button>
</div>
<div id="msg"></div>
</body>
</html>