Files
qctool/lod.html

291 lines
10 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html lang="zh_CN">
<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, maximum-scale=1.0, user-scalable=no">
<title>干燥失重</title>
<link rel="stylesheet" href="./github.css">
<link rel="stylesheet" href="./theme.css">
<script src="./decimal.js"></script>
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<script>
var debug = false;
var localStorageSupport = storageAvailable("localStorage");
var tip = `
<br>
操作过程:
<br>
空瓶 -> 干燥3小时 -> 冷却称重 -> 干燥1小时 -> 冷却称重(1) -> 加样(2) -> 干燥3小时 -> 冷却称重 -> 干燥1小时 -> 冷却称重(3)
<br>
<br>
记录保存功能使用方法:
<br>
保存:输入样品批号,点击保存,此时第一组及第二组输入框内的数据将被存储。
<br>
恢复:输入或选择样品批号,点击恢复,此时将读取对应数据并自动填入输入框。
<br>
删除:输入或选择样品批号,点击删除,此时将从已存储的数据中删除对应数据。
<br>
若保存、恢复、删除按钮均未显示,则表明您的浏览器不支持此功能。
`;
var decimal = Decimal.set(
{
rounding: Decimal.ROUND_HALF_EVEN,
precision: 12
}
);
$(document).ready(function () {
var input_m0l = document.getElementById("m0l");
var input_m1l = document.getElementById("m1l");
var input_m3l = document.getElementById("m3l");
var input_m0r = document.getElementById("m0r");
var input_m1r = document.getElementById("m1r");
var input_m3r = document.getElementById("m3r");
$(".msgbox").append(tip)
if (!localStorageSupport) {
$("#remove").hide();
$("#restore").hide();
$("#save").hide();
$("#lod-name").removeAttr("list");
}
if (localStorageSupport) {
loadSavedContentsList();
}
$("#ok").click(function () {
var m0l = input_m0l.value;
var m1l = input_m1l.value;
var m3l = input_m3l.value;
var m0r = input_m0r.value;
var m1r = input_m1r.value;
var m3r = input_m3r.value;
var lod1 = lod(m0l, m1l, m3l)
var lod2 = lod(m0r, m1r, m3r)
var average = decimal.add(lod1, lod2).div(2).toString();
// 结果小于0时使用红色字体
lod1 = (lod1 < 0) ? "<span style='color: red;'>" + lod1 + "</span>" : lod1;
lod2 = (lod2 < 0) ? "<span style='color: red;'>" + lod2 + "</span>" : lod2;
average = (average < 0) ? "<span style='color: red;'>" + average + "</span>" : average;
var msg = "<br>" +
"第一组干燥失重 = " + lod1 + "<br>" +
"第二组干燥失重 = " + lod2 + "<br>" +
"两组干燥失重平均值 = " + average + "<br>";
if (m0l != '' && m1l != '') {
msg += "第一组恒重后空瓶+样 = " + decimal.add(m0l, m1l).toString() + "<br>";
}
if (m0r != '' && m1r != '') {
msg += "第二组恒重后空瓶+样 = " + decimal.add(m0r, m1r).toString() + "<br>";
}
message(msg);
});
$("#clear").click(function () {
if (!window.confirm("所填写的数据(不包括批号)将被清空,确定?")) {
return;
}
input_m0l.value = "";
input_m1l.value = "";
input_m3l.value = "";
input_m0r.value = "";
input_m1r.value = "";
input_m3r.value = "";
message(tip);
});
$("#new_page").click(function () {
window.open(window.location.href, "_blank");
});
$("#save").click(() => {
let id = $("#lod-name").val();
if (id.length == 0) {
confirm("请输入或选择样品批号!");
return;
}
// save data to localStorage
let m0l = input_m0l.value;
let m1l = input_m1l.value;
let m3l = input_m3l.value;
let m0r = input_m0r.value;
let m1r = input_m1r.value;
let m3r = input_m3r.value;
let lod = {
"m0l": m0l,
"m1l": m1l,
"m3l": m3l,
"m0r": m0r,
"m1r": m1r,
"m3r": m3r
};
localStorage.setItem(id, JSON.stringify(lod));
loadSavedContentsList();
});
$("#restore").click(() => {
let id = $("#lod-name").val();
if (id.length == 0) {
confirm("请输入或选择样品批号!");
return;
}
let lod = JSON.parse(localStorage.getItem(id));
input_m0l.value = lod.m0l;
input_m1l.value = lod.m1l;
input_m3l.value = lod.m3l;
input_m0r.value = lod.m0r;
input_m1r.value = lod.m1r;
input_m3r.value = lod.m3r;
});
$("#remove").click(() => {
let id = $("#lod-name").val();
if (id.length == 0) {
confirm("请输入或选择样品批号!");
return;
}
if (confirm("确认删除 " + id + " 的数据?")) {
localStorage.removeItem(id);
loadSavedContentsList();
$("#lod-name").val("");
}
});
if (debug) {
document.getElementById("m0l").value = 18.34625;
document.getElementById("m1l").value = 1.04213;
document.getElementById("m3l").value = 19.38511;
}
});
function loadSavedContentsList() {
// load data from localStorage to input.
let keys = [];
$("#keys").empty();
for (let i = 0; i < localStorage.length; i++) {
keys.push(localStorage.key(i));
}
keys.forEach(key => {
let option = document.createElement("option");
option.innerText = key;
$("#keys").append(option);
});
}
// check storage available
function storageAvailable(type) {
let storage;
try {
storage = window[type];
const x = '__storage_test__';
storage.setItem(x, x);
storage.removeItem(x);
return true;
}
catch (e) {
return e instanceof DOMException && (
// everything except Firefox
e.code === 22 ||
// Firefox
e.code === 1014 ||
// test name field too, because code might not be present
// everything except Firefox
e.name === 'QuotaExceededError' ||
// Firefox
e.name === 'NS_ERROR_DOM_QUOTA_REACHED') &&
// acknowledge QuotaExceededError only if there's something already stored
(storage && storage.length !== 0);
}
}
function message(msg) {
$(".msgbox").empty();
$(".msgbox").append(msg);
}
/**
* 计算干燥失重
* @param m0 恒重后空瓶重
* @param m1 样品重
* @param m3 干燥恒重后带样品重
* @return 干燥失重(%
*/
function lod(m0, m1, m3) {
if (checkNull(m0, m1, m3)) {
return "0";
}
var a = new Decimal(m0);
var b = new Decimal(m1);
var c = new Decimal(m3);
// a + b - c / b
var d = decimal.add(a, b).minus(c);
var e = d.div(b).mul(100);
return e.toString();
}
function checkNull(m0, m1, m3) {
return m0 == '' || m1 == '' || m3 == '';
}
</script>
</head>
<body>
<h3>干燥失重</h3>
<input type="text" name="lod-name" id="lod-name" list="keys" placeholder="样品批号"><br><br>
<div class="one-team">
第一组<br>
<input type="number" name="m0l" id="m0l" class="one-input m0" placeholder="恒重后空瓶重(1)" inputmode="decimal"><br>
<input type="number" name="m1l" id="m1l" class="one-input m1" placeholder="样品重(2)" inputmode="decimal"><br>
<input type="number" name="m3l" id="m3l" class="one-input m3" placeholder="干燥恒重后带样品重(3)"
inputmode="decimal"><br>
<br>
</div>
<div class="two-team">
第二组<br>
<input type="number" name="m0r" id="m0r" class="two-input m0" placeholder="恒重后空瓶重(1)" inputmode="decimal"><br>
<input type="number" name="m1r" id="m1r" class="two-input m1" placeholder="样品重(2)" inputmode="decimal"><br>
<input type="number" name="m3r" id="m3r" class="two-input m3" placeholder="干燥恒重后带样品重(3)"
inputmode="decimal"><br>
<br>
</div>
<div class="buttons">
<button id="new_page">新开标签页</button>
<button id="clear">清除内容</button>
<button id="ok">计算</button><br>
<button id="remove">删除</button>
<button id="restore">恢复</button>
<button id="save">保存</button>
</div>
<div class="msgbox"></div>
<datalist id="keys"></datalist>
</body>
</html>