2022-10-25 01:36:31 +08:00
|
|
|
<!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">
|
2022-11-20 00:19:56 +08:00
|
|
|
<title>L014-1 相关物质</title>
|
2022-10-25 01:36:31 +08:00
|
|
|
<link rel="stylesheet" href="./github.css">
|
|
|
|
|
<link rel="stylesheet" href="./theme.css">
|
|
|
|
|
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
|
2023-01-07 00:28:14 +08:00
|
|
|
<script type="module">
|
|
|
|
|
import { Decimal } from "./modules/decimal.mjs"
|
|
|
|
|
|
2022-11-20 00:19:56 +08:00
|
|
|
let decimal = Decimal.set({
|
2022-10-25 01:36:31 +08:00
|
|
|
rounding: Decimal.ROUND_HALF_EVEN,
|
|
|
|
|
precision: 12
|
|
|
|
|
})
|
2022-11-20 00:19:56 +08:00
|
|
|
|
2023-01-07 00:28:14 +08:00
|
|
|
// 舍入模式:四舍六入五成双
|
|
|
|
|
const ROUNDING = Decimal.ROUND_HALF_EVEN
|
|
|
|
|
// 计算精度
|
|
|
|
|
const PRECISION = 3
|
|
|
|
|
|
|
|
|
|
// debug 开关
|
|
|
|
|
const DEBUG = false
|
2022-10-25 01:36:31 +08:00
|
|
|
|
2023-01-07 00:28:14 +08:00
|
|
|
// 2.2-Dimer 最大值
|
|
|
|
|
const DIMER_MAX = 2.5
|
|
|
|
|
// 2-乙酰噻吩 最大值
|
|
|
|
|
const AT_MAX = 1.0
|
|
|
|
|
// 总杂 最大值
|
|
|
|
|
const TOTAL_IMPURITIES_MAX = 4
|
|
|
|
|
// 纯度 最小值
|
|
|
|
|
const PURTY_MIN = 96
|
2022-10-25 01:36:31 +08:00
|
|
|
|
2023-01-07 00:28:14 +08:00
|
|
|
// 2.2-Dimer 的 RRF
|
|
|
|
|
const DIMER_RRF = 1.34
|
|
|
|
|
// 2-乙酰噻吩 的 RRF
|
|
|
|
|
const AT_RRF = 2.06
|
2022-11-20 00:19:56 +08:00
|
|
|
|
2023-01-07 00:28:14 +08:00
|
|
|
const msg = `
|
|
|
|
|
<b>相关参数:</b><br>
|
|
|
|
|
2.2-Dimer 的 RRF: ${DIMER_RRF}<br>
|
|
|
|
|
2-乙酰噻吩的 RRF: ${AT_RRF}<br>
|
|
|
|
|
<br>
|
|
|
|
|
<b>质量标准:</b><br>
|
|
|
|
|
2.2-Dimer ≤ ${DIMER_MAX}% <br>
|
|
|
|
|
2-乙酰噻吩 ≤ ${AT_MAX.toFixed(1)}% <br>
|
|
|
|
|
杂质总量 ≤ ${TOTAL_IMPURITIES_MAX}% <br>
|
|
|
|
|
纯度 ≥ ${PURTY_MIN}% <br>
|
|
|
|
|
`
|
|
|
|
|
|
|
|
|
|
$(document).ready(() => {
|
2022-11-20 00:19:56 +08:00
|
|
|
if (DEBUG) {
|
|
|
|
|
$("#one-dimer").val(247427)
|
|
|
|
|
$("#one-at").val(65863)
|
|
|
|
|
$("#one-014-1").val(11511879)
|
|
|
|
|
$("#one-all").val(11888859)
|
|
|
|
|
|
|
|
|
|
$("#two-dimer").val(249299)
|
|
|
|
|
$("#two-at").val(66682)
|
|
|
|
|
$("#two-014-1").val(11563139)
|
|
|
|
|
$("#two-all").val(11943432)
|
|
|
|
|
}
|
2022-10-25 01:36:31 +08:00
|
|
|
|
2023-01-07 00:28:14 +08:00
|
|
|
$("#msgbox").html(msg)
|
2022-11-20 00:19:56 +08:00
|
|
|
|
2022-10-25 01:36:31 +08:00
|
|
|
$("#new_page").click(() => window.open(window.location.href, '_BLANK'))
|
2022-11-20 00:19:56 +08:00
|
|
|
|
|
|
|
|
$("#clear").click(() => {
|
|
|
|
|
$("#one-dimer").val("")
|
|
|
|
|
$("#one-at").val("")
|
|
|
|
|
$("#one-014-1").val("")
|
|
|
|
|
$("#one-all").val("")
|
|
|
|
|
$("#two-dimer").val("")
|
|
|
|
|
$("#two-at").val("")
|
|
|
|
|
$("#two-014-1").val("")
|
|
|
|
|
$("#two-all").val("")
|
2023-01-07 00:28:14 +08:00
|
|
|
$("#msgbox").html(msg)
|
|
|
|
|
$("#table").hide()
|
2022-11-20 00:19:56 +08:00
|
|
|
})
|
|
|
|
|
|
2022-10-25 01:36:31 +08:00
|
|
|
$("#ok").click(() => {
|
|
|
|
|
let one_dimer = $("#one-dimer").val()
|
|
|
|
|
let two_dimer = $("#two-dimer").val()
|
2023-01-07 00:28:14 +08:00
|
|
|
let one_014_1 = $("#one-014-1").val()
|
2022-10-25 01:36:31 +08:00
|
|
|
let two_014_1 = $("#two-014-1").val()
|
2023-01-07 00:28:14 +08:00
|
|
|
let one_at = $("#one-at").val()
|
|
|
|
|
let two_at = $("#two-at").val()
|
|
|
|
|
let one_all = $("#one-all").val()
|
2022-10-25 01:36:31 +08:00
|
|
|
let two_all = $("#two-all").val()
|
|
|
|
|
|
2023-01-07 00:28:14 +08:00
|
|
|
let one_dimer_ = func_dimer(one_dimer, one_all).toFixed(PRECISION, ROUNDING)
|
|
|
|
|
let one_at_ = func_at(one_at, one_all).toFixed(PRECISION, ROUNDING)
|
|
|
|
|
let one_impurities = func_impurities(one_dimer, one_at, one_014_1, one_all).toFixed(PRECISION, ROUNDING)
|
|
|
|
|
let one_purity = func_purity(one_impurities).toFixed(PRECISION, ROUNDING)
|
2022-10-25 01:36:31 +08:00
|
|
|
|
2023-01-07 00:28:14 +08:00
|
|
|
let two_dimer_ = func_dimer(two_dimer, two_all).toFixed(PRECISION, ROUNDING)
|
|
|
|
|
let two_at_ = func_at(two_at, two_all).toFixed(PRECISION, ROUNDING)
|
|
|
|
|
let two_impurities = func_impurities(two_dimer, two_at, two_014_1, two_all).toFixed(PRECISION, ROUNDING)
|
|
|
|
|
let two_purity = func_purity(two_impurities).toFixed(PRECISION, ROUNDING)
|
|
|
|
|
|
|
|
|
|
let average_dimer = averageFixed(average(one_dimer_, two_dimer_))
|
|
|
|
|
let average_at = averageFixed(average(one_at_, two_at_))
|
|
|
|
|
let average_impurities = averageFixed(average(one_impurities, two_impurities))
|
|
|
|
|
let average_purity = averageFixed(average(one_purity, two_purity))
|
|
|
|
|
|
|
|
|
|
let data = {
|
|
|
|
|
"one": {
|
|
|
|
|
"dimer": format(one_dimer_, DIMER_MAX),
|
|
|
|
|
"at": format(one_at_, AT_MAX),
|
|
|
|
|
"impurities": format(one_impurities, TOTAL_IMPURITIES_MAX),
|
|
|
|
|
"purity": format(one_purity, 100, PURTY_MIN,)
|
|
|
|
|
},
|
|
|
|
|
"two": {
|
|
|
|
|
"dimer": format(two_dimer_, DIMER_MAX),
|
|
|
|
|
"at": format(two_at_, AT_MAX),
|
|
|
|
|
"impurities": format(two_impurities, TOTAL_IMPURITIES_MAX),
|
|
|
|
|
"purity": format(two_purity, 100, PURTY_MIN)
|
|
|
|
|
},
|
|
|
|
|
"average": {
|
|
|
|
|
"dimer": format(average_dimer, DIMER_MAX),
|
|
|
|
|
"at": format(average_at, AT_MAX),
|
|
|
|
|
"impurities": format(average_impurities, TOTAL_IMPURITIES_MAX),
|
|
|
|
|
"purity": format(average_purity, 100, PURTY_MIN)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
generateTable(data)
|
2022-10-25 01:36:31 +08:00
|
|
|
})
|
|
|
|
|
|
2023-01-07 00:28:14 +08:00
|
|
|
})
|
2022-10-25 01:36:31 +08:00
|
|
|
|
2023-01-07 00:28:14 +08:00
|
|
|
function func_dimer(dimer, all) {
|
|
|
|
|
if (dimer == '' || all == '') return 0
|
|
|
|
|
// dimer% = [dimer / (all * RRF)] * 100
|
|
|
|
|
let x = decimal.mul(all, DIMER_RRF)
|
|
|
|
|
let y = decimal.div(dimer, x)
|
|
|
|
|
return decimal.mul(y, 100)
|
|
|
|
|
}
|
2022-10-25 01:36:31 +08:00
|
|
|
|
2023-01-07 00:28:14 +08:00
|
|
|
function func_at(at, all) {
|
|
|
|
|
if (at == '' || all == '') return 0
|
|
|
|
|
// at% = [at / (all * RRF)] * 100
|
|
|
|
|
let x = decimal.mul(all, AT_RRF)
|
|
|
|
|
let y = decimal.div(at, x)
|
|
|
|
|
return decimal.mul(y, 100)
|
|
|
|
|
}
|
2022-10-25 01:36:31 +08:00
|
|
|
|
2023-01-07 00:28:14 +08:00
|
|
|
function func_impurities(dimer, at, l014_1, all) {
|
|
|
|
|
if (dimer == '' || at == '' || l014_1 == '' || all == '') return 0
|
|
|
|
|
// x = all - dimer - at - l014_1
|
|
|
|
|
// y = (x / all) * 100
|
|
|
|
|
// impurities% = y + dimer% + at%
|
|
|
|
|
let x = decimal.sub(all, dimer).sub(at).sub(l014_1)
|
|
|
|
|
let y = decimal.div(x, all).mul(100)
|
|
|
|
|
let z = decimal.add(y, func_dimer(dimer, all)).add(func_at(at, all))
|
|
|
|
|
return z
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function func_purity(total_impurities) {
|
|
|
|
|
if (total_impurities == '') return 0
|
2022-10-25 01:36:31 +08:00
|
|
|
// purty% = 100 - impurities%
|
2023-01-07 00:28:14 +08:00
|
|
|
return decimal.sub(100, total_impurities)
|
|
|
|
|
}
|
2022-10-25 01:36:31 +08:00
|
|
|
|
2023-01-07 00:28:14 +08:00
|
|
|
function average(a, b) {
|
|
|
|
|
return decimal.add(a, b).div(2)
|
|
|
|
|
}
|
2022-10-25 01:36:31 +08:00
|
|
|
|
2023-01-07 00:28:14 +08:00
|
|
|
function format(value, max, min = 0) {
|
|
|
|
|
if (value == 0) {
|
|
|
|
|
return 'ND' // means 'Not Detected'
|
2022-10-25 01:36:31 +08:00
|
|
|
}
|
2023-01-07 00:28:14 +08:00
|
|
|
|
|
|
|
|
if (value > max || value < min) {
|
|
|
|
|
return `<span style='color: red;'>${value}</span>`
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return value
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 对平均值进行舍入
|
|
|
|
|
function averageFixed(value) {
|
|
|
|
|
// 大于等于 1 时只保留一位小数,否则保留两位
|
|
|
|
|
return value.toFixed(value >= 1 ? 1 : 2, ROUNDING)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function generateTable(data) {
|
|
|
|
|
$("#table").show()
|
|
|
|
|
|
|
|
|
|
$("#Dimer>#one").html(data.one.dimer)
|
|
|
|
|
$("#2-AT>#one").html(data.one.at)
|
|
|
|
|
$("#impurities>#one").html(data.one.impurities)
|
|
|
|
|
$("#purity>#one").html(data.one.purity)
|
|
|
|
|
|
|
|
|
|
$("#Dimer>#two").html(data.two.dimer)
|
|
|
|
|
$("#2-AT>#two").html(data.two.at)
|
|
|
|
|
$("#impurities>#two").html(data.two.impurities)
|
|
|
|
|
$("#purity>#two").html(data.two.purity)
|
|
|
|
|
|
|
|
|
|
$("#Dimer>#average").html(data.average.dimer)
|
|
|
|
|
$("#2-AT>#average").html(data.average.at)
|
|
|
|
|
$("#impurities>#average").html(data.average.impurities)
|
|
|
|
|
$("#purity>#average").html(data.average.purity)
|
|
|
|
|
}
|
|
|
|
|
|
2022-10-25 01:36:31 +08:00
|
|
|
</script>
|
|
|
|
|
</head>
|
|
|
|
|
|
|
|
|
|
<body>
|
2022-11-20 00:19:56 +08:00
|
|
|
<h3>L014-1 相关物质</h3>
|
2022-10-25 01:36:31 +08:00
|
|
|
<div class="one">
|
|
|
|
|
第一组<br>
|
|
|
|
|
<input type="number" name="one-dimer" id="one-dimer" inputmode="numeric" placeholder="2.2-Dimer 峰面积">
|
|
|
|
|
<input type="number" name="one-at" id="one-at" inputmode="numeric" placeholder="2-乙酰噻吩峰面积">
|
|
|
|
|
<input type="number" name="one-014-1" id="one-014-1" inputmode="numeric" placeholder="L014-1 峰面积">
|
|
|
|
|
<input type="number" name="one-all" id="one-all" inputmode="numeric" placeholder="总峰面积">
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<br>
|
|
|
|
|
<div class="two">
|
|
|
|
|
第二组<br>
|
|
|
|
|
<input type="number" name="two-dimer" id="two-dimer" inputmode="numeric" placeholder="2.2-Dimer 峰面积">
|
|
|
|
|
<input type="number" name="two-at" id="two-at" inputmode="numeric" placeholder="2-乙酰噻吩峰面积">
|
|
|
|
|
<input type="number" name="two-014-1" id="two-014-1" inputmode="numeric" placeholder="L014-1 峰面积">
|
|
|
|
|
<input type="number" name="two-all" id="two-all" inputmode="numeric" placeholder="总峰面积">
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<br>
|
|
|
|
|
<div class="buttons">
|
|
|
|
|
<button id="new_page">新开标签页</button>
|
|
|
|
|
<button id="clear">清除内容</button>
|
|
|
|
|
<button id="ok">计算</button>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<br>
|
2023-01-07 00:28:14 +08:00
|
|
|
<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="Dimer">
|
|
|
|
|
<th scope="row">2.2-Dimer</th>
|
|
|
|
|
<td id="one"></td>
|
|
|
|
|
<td id="two"></td>
|
|
|
|
|
<td id="average"></td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr id="2-AT">
|
|
|
|
|
<th scope="row">2-乙酰噻吩</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>
|
|
|
|
|
<tr id="purity">
|
|
|
|
|
<th scope="row">纯度</th>
|
|
|
|
|
<td id="one"></td>
|
|
|
|
|
<td id="two"></td>
|
|
|
|
|
<td id="average"></td>
|
|
|
|
|
</tr>
|
|
|
|
|
</table>
|
2022-10-25 01:36:31 +08:00
|
|
|
<div id="msgbox"></div>
|
|
|
|
|
</body>
|
|
|
|
|
|
|
|
|
|
</html>
|