Files
qctool/views/L414-5KR-impurities.html
2023-01-14 22:55:33 +08:00

287 lines
11 KiB
HTML

<!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, maximum-scale=1.0, user-scalable=no">
<title>L414-5KR 相关物质</title>
<link rel="stylesheet" href="../statics/github.css">
<link rel="stylesheet" href="../statics/theme.css">
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<script type="module">
import { Decimal } from "../statics/modules/decimal.mjs"
// debug 开关
const DEBUG = false
// 校正因子
const F_L414_3 = 0.80
const F_L414_5_IM = 1.48
// 计算精度
const PRECISION = 3
// 操规允许的最大值
const MAX_L414_3 = 0.3
const MAX_L414_5_IM = 1.0
const MAX_TOTAL_IMPURITIES = 2.0
const MIN_PURITY = 98.0
let tips_params = `
<b>相关参数:</b><br>
&nbsp;&nbsp; L414-3 的校正因子: ${F_L414_3.toFixed(2)}<br>
&nbsp;&nbsp; L414-5-IM 的校正因子: ${F_L414_5_IM}<br>
`
let tips_standard = `
<b>质量标准:</b><br>
&nbsp;&nbsp; L414-3 &le; ${MAX_L414_3}% <br>
&nbsp;&nbsp; L414-401 &le; 0.2% <br>
&nbsp;&nbsp; L414-5-IM &le; ${MAX_L414_5_IM.toFixed(1)}% <br>
&nbsp;&nbsp; 最大单杂 &le; 0.50% <br>
&nbsp;&nbsp; 杂质总量 &le; ${MAX_TOTAL_IMPURITIES}% <br>
&nbsp;&nbsp; 纯度 &ge; ${MIN_PURITY}% <br>
`
// 默认的消息提示
let tips = `
${tips_params}
<br>
${tips_standard}
`
let decimal = Decimal.set({
rounding: Decimal.ROUND_HALF_EVEN,
precision: 12
})
$(document).ready(() => {
let one_all = $("#one-all")
let one_414_3 = $("#one-414-3")
let one_414_5_im = $("#one-414-5-im")
let one_414_5 = $("#one-414-5")
let two_all = $("#two-all")
let two_414_3 = $("#two-414-3")
let two_414_5_im = $("#two-414-5-im")
let two_414_5 = $("#two-414-5")
if (DEBUG) {
one_414_3.val(1762)
one_414_5_im.val(2614)
one_414_5.val(24001626)
one_all.val(24075340)
two_414_3.val(2175)
two_414_5_im.val(3319)
two_414_5.val(24320630)
two_all.val(24409434)
}
$("#msgbox").html(tips)
$("#new_page").click(() => window.open(window.location.href, "_BLANK"))
$("#clear").click(() => {
one_all.val("")
two_all.val("")
one_414_3.val("")
two_414_3.val("")
one_414_5_im.val("")
two_414_5_im.val("")
one_414_5.val("")
two_414_5.val("")
$("#msgbox").empty()
$("#msgbox").html(tips)
$("#table").hide()
})
$("#ok").click(() => {
let one_414_3_cf = correctionFactor(one_414_3.val(), one_all.val(), F_L414_3)
let one_414_5_im_cf = correctionFactor(one_414_5_im.val(), one_all.val(), F_L414_5_IM)
let two_414_3_cf = correctionFactor(two_414_3.val(), two_all.val(), F_L414_3)
let two_414_5_im_cf = correctionFactor(two_414_5_im.val(), two_all.val(), F_L414_5_IM)
let one_total_impurities = totalImpurities(
one_all.val(), one_414_5.val(),
one_414_3.val(), one_414_3_cf,
one_414_5_im.val(), one_414_5_im_cf
)
let two_total_impurities = totalImpurities(
two_all.val(), two_414_5.val(),
two_414_3.val(), two_414_3_cf,
two_414_5_im.val(), two_414_5_im_cf
)
let one_purity = decimal.sub(100, one_total_impurities).toFixed(PRECISION)
let two_purity = decimal.sub(100, two_total_impurities).toFixed(PRECISION)
let data = {
"one": {
"L414_3": format(one_414_3_cf, MAX_L414_3),
"L414_5_IM": format(one_414_5_im_cf, MAX_L414_5_IM),
"impurities": format(one_total_impurities, MAX_TOTAL_IMPURITIES),
"purity": format(one_purity, MIN_PURITY, true)
},
"two": {
"L414_3": format(two_414_3_cf, MAX_L414_3),
"L414_5_IM": format(two_414_5_im_cf, MAX_L414_5_IM),
"impurities": format(two_total_impurities, MAX_TOTAL_IMPURITIES),
"purity": format(two_purity, MIN_PURITY, true)
},
"average": {
"L414_3": format(average(one_414_3_cf, two_414_3_cf), MAX_L414_3),
"L414_5_IM": format(average(one_414_5_im_cf, two_414_5_im_cf), MAX_L414_5_IM),
"impurities": format(average(one_total_impurities, two_total_impurities), MAX_TOTAL_IMPURITIES),
"purity": format(average(one_purity, two_purity, 1), MIN_PURITY, true)
}
}
$("#table").show()
generateTable(data)
$("#msgbox").html(`
<br>
<b>注意:</b><br>
&nbsp;&nbsp; 结果表格中,标注 / 的仅用于占行,具体结果需查看色谱图峰表。<br>
<br>
${tips}
`)
})
})
/**
* 将结果输出到表格中
*/
function generateTable(data) {
$("#L414-3>#one").html(data.one.L414_3)
$("#L414-5-IM>#one").html(data.one.L414_5_IM)
$("#impurities>#one").html(data.one.impurities)
$("#purity>#one").html(data.one.purity)
$("#L414-3>#two").html(data.two.L414_3)
$("#L414-5-IM>#two").html(data.two.L414_5_IM)
$("#impurities>#two").html(data.two.impurities)
$("#purity>#two").html(data.two.purity)
$("#L414-3>#average").html(data.average.L414_3)
$("#L414-5-IM>#average").html(data.average.L414_5_IM)
$("#impurities>#average").html(data.average.impurities)
$("#purity>#average").html(data.average.purity)
}
/**
* 代入校正因子进行计算
*/
function correctionFactor(pa, paa, f) {
if (pa == '' || paa == '' || f == '') return 0
return decimal.div(pa, paa).mul(f).mul(100).toFixed(PRECISION, Decimal.ROUND_HALF_EVEN)
}
/**
* 计算杂质总量
*/
function totalImpurities(paa, l414_5, l414_3, l414_3_rrf, l414_5_im, l414_5_im_rrf) {
if (paa == '' || l414_5 == '' || l414_3 == '' || l414_3_rrf == '' ||
l414_5_im == '' || l414_5_im_rrf == '') return 0
// X = All - (L414-5) - (L414-3) - (L414-5-IM) / All * 100
// R = X + (%L414-3) + (%L414-5-IM)
let a = decimal.sub(paa, l414_5).sub(l414_3).sub(l414_5_im)
let b = decimal.div(a, paa).mul(100)
let r = decimal.add(b, l414_3_rrf).add(l414_5_im_rrf)
return r.toFixed(PRECISION, Decimal.ROUND_HALF_EVEN)
}
function format(value, max, morethen = false) {
let red_value = `<span style='color: red;'>${value}</span>`
if (value == 0) return "ND"
if (value < 0) return red_value
if (!morethen && value >= max) return red_value
if (morethen && value <= max) return red_value
return `${value}`
}
/**
* 求两个数的平均值
*/
function average(a, b, fd = (PRECISION - 1)) {
return decimal.add(a, b).div(2).toFixed(fd)
}
</script>
</head>
<body>
<h3>L414-5KR 相关物质</h3>
<div class="one">
第一组<br>
<input type="number" name="one-414-3" id="one-414-3" , placeholder="L414-3 峰面积" inputmode="numeric">
<input type="number" name="one-414-5-im" id="one-414-5-im" , placeholder="L414-5-IM 峰面积" inputmode="numeric">
<input type="number" name="one-414-5" id="one-414-5" , placeholder="L414-5 峰面积" inputmode="numeric">
<input type="number" name="one-all" id="one-all" placeholder="总峰面积" inputmode="numeric">
</div>
<br>
<div class="two">
第二组<br>
<input type="number" name="two-414-3" id="two-414-3" , placeholder="L414-3 峰面积" inputmode="numeric">
<input type="number" name="two-414-5-im" id="two-414-5-im" , placeholder="L414-5-IM 峰面积" inputmode="numeric">
<input type="number" name="two-414-5" id="two-414-5" , placeholder="L414-5 峰面积" inputmode="numeric">
<input type="number" name="two-all" id="two-all" placeholder="总峰面积" inputmode="numeric">
</div>
<br>
<div class="buttons">
<button id="new_page">新开标签页</button>
<button id="clear">清除内容</button>
<button id="ok">计算</button>
</div>
<br>
<table id="table" style="font-size: small; width: 100%; text-align: center; display: none;">
<caption>计算结果</caption>
<tr>
<th scope="col">/</th>
<th scope="col">第一组(%)</th>
<th scope="col">第二组(%)</th>
<th scope="col">平均值(%)</th>
</tr>
<tr id="L414-3">
<th scope="row">L414-3</th>
<td id="one"></td>
<td id="two"></td>
<td id="average"></td>
</tr>
<tr id="L414-4">
<th scope="row">L414-401</th>
<td id="one">/</td>
<td id="two">/</td>
<td id="average">/</td>
</tr>
<tr id="L414-5-IM">
<th scope="row">L414-5-IM</th>
<td id="one"></td>
<td id="two"></td>
<td id="average"></td>
</tr>
<tr id="purity">
<th scope="row">纯度</th>
<td id="one"></td>
<td id="two"></td>
<td id="average"></td>
</tr>
<tr id="max_impurities">
<th scope="row">最大单杂</th>
<td id="one">/</td>
<td id="two">/</td>
<td id="average">/</td>
</tr>
<tr id="impurities">
<th scope="row">杂质总量</th>
<td id="one"></td>
<td id="two"></td>
<td id="average"></td>
</tr>
</table>
<div id="msgbox"></div>
</body>
</html>