+ L414-5KR 相关物质修改提示信息

+ 目录结构调整
This commit is contained in:
2023-01-14 22:48:02 +08:00
parent e1e206d066
commit b0521ece6b
19 changed files with 77 additions and 4992 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

415
statics/github.css Normal file
View File

@@ -0,0 +1,415 @@
:root {
--side-bar-bg-color: #fafafa;
--control-text-color: #777;
}
@include-when-export url(https://fonts.loli.net/css?family=Open+Sans:400italic,700italic,700,400&subset=latin,latin-ext);
/* open-sans-regular - latin-ext */
@font-face {
font-family: 'Open Sans';
font-style: normal;
font-weight: normal;
src: local('Open Sans Regular'), local('OpenSans-Regular'), url('./fonts/open-sans-v29-latin-ext-regular.woff2') format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD, U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* open-sans-italic - latin-ext */
@font-face {
font-family: 'Open Sans';
font-style: italic;
font-weight: normal;
src: local('Open Sans Italic'), local('OpenSans-Italic'), url('./fonts/open-sans-v29-latin-ext-italic.woff2') format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD, U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* open-sans-700 - latin-ext */
@font-face {
font-family: 'Open Sans';
font-style: normal;
font-weight: bold;
src: local('Open Sans Bold'), local('OpenSans-Bold'), url('./fonts/open-sans-v29-latin-ext-700.woff2') format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD, U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* open-sans-700italic - latin-ext */
@font-face {
font-family: 'Open Sans';
font-style: italic;
font-weight: bold;
src: local('Open Sans Bold Italic'), local('OpenSans-BoldItalic'), url('./fonts/open-sans-v29-latin-ext-700italic.woff2') format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD, U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
html {
font-size: 16px;
-webkit-font-smoothing: antialiased;
}
body {
font-family: "Open Sans","Clear Sans", "Helvetica Neue", Helvetica, Arial, 'Segoe UI Emoji', sans-serif;
color: rgb(51, 51, 51);
line-height: 1.6;
}
#write {
max-width: 860px;
margin: 0 auto;
padding: 30px;
padding-bottom: 100px;
}
@media only screen and (min-width: 1400px) {
#write {
max-width: 1024px;
}
}
@media only screen and (min-width: 1800px) {
#write {
max-width: 1200px;
}
}
#write > ul:first-child,
#write > ol:first-child{
margin-top: 30px;
}
a {
color: #4183C4;
}
h1,
h2,
h3,
h4,
h5,
h6 {
position: relative;
margin-top: 1rem;
margin-bottom: 1rem;
font-weight: bold;
line-height: 1.4;
cursor: text;
}
h1:hover a.anchor,
h2:hover a.anchor,
h3:hover a.anchor,
h4:hover a.anchor,
h5:hover a.anchor,
h6:hover a.anchor {
text-decoration: none;
}
h1 tt,
h1 code {
font-size: inherit;
}
h2 tt,
h2 code {
font-size: inherit;
}
h3 tt,
h3 code {
font-size: inherit;
}
h4 tt,
h4 code {
font-size: inherit;
}
h5 tt,
h5 code {
font-size: inherit;
}
h6 tt,
h6 code {
font-size: inherit;
}
h1 {
font-size: 2.25em;
line-height: 1.2;
border-bottom: 1px solid #eee;
}
h2 {
font-size: 1.75em;
line-height: 1.225;
border-bottom: 1px solid #eee;
}
/*@media print {
.typora-export h1,
.typora-export h2 {
border-bottom: none;
padding-bottom: initial;
}
.typora-export h1::after,
.typora-export h2::after {
content: "";
display: block;
height: 100px;
margin-top: -96px;
border-top: 1px solid #eee;
}
}*/
h3 {
font-size: 1.5em;
line-height: 1.43;
}
h4 {
font-size: 1.25em;
}
h5 {
font-size: 1em;
}
h6 {
font-size: 1em;
color: #777;
}
p,
blockquote,
ul,
ol,
dl,
table{
margin: 0.8em 0;
}
li>ol,
li>ul {
margin: 0 0;
}
hr {
height: 2px;
padding: 0;
margin: 16px 0;
background-color: #e7e7e7;
border: 0 none;
overflow: hidden;
box-sizing: content-box;
}
li p.first {
display: inline-block;
}
ul,
ol {
padding-left: 30px;
}
ul:first-child,
ol:first-child {
margin-top: 0;
}
ul:last-child,
ol:last-child {
margin-bottom: 0;
}
blockquote {
border-left: 4px solid #dfe2e5;
padding: 0 15px;
color: #777777;
}
blockquote blockquote {
padding-right: 0;
}
table {
padding: 0;
word-break: initial;
}
table tr {
border: 1px solid #dfe2e5;
margin: 0;
padding: 0;
}
table tr:nth-child(2n),
thead {
background-color: #f8f8f8;
}
table th {
font-weight: bold;
border: 1px solid #dfe2e5;
border-bottom: 0;
margin: 0;
padding: 6px 13px;
}
table td {
border: 1px solid #dfe2e5;
margin: 0;
padding: 6px 13px;
}
table th:first-child,
table td:first-child {
margin-top: 0;
}
table th:last-child,
table td:last-child {
margin-bottom: 0;
}
.CodeMirror-lines {
padding-left: 4px;
}
.code-tooltip {
box-shadow: 0 1px 1px 0 rgba(0,28,36,.3);
border-top: 1px solid #eef2f2;
}
.md-fences,
code,
tt {
border: 1px solid #e7eaed;
background-color: #f8f8f8;
border-radius: 3px;
padding: 0;
padding: 2px 4px 0px 4px;
font-size: 0.9em;
}
code {
background-color: #f3f4f4;
padding: 0 2px 0 2px;
}
.md-fences {
margin-bottom: 15px;
margin-top: 15px;
padding-top: 8px;
padding-bottom: 6px;
}
.md-task-list-item > input {
margin-left: -1.3em;
}
@media print {
html {
font-size: 13px;
}
table,
pre {
page-break-inside: avoid;
}
pre {
word-wrap: break-word;
}
}
.md-fences {
background-color: #f8f8f8;
}
#write pre.md-meta-block {
padding: 1rem;
font-size: 85%;
line-height: 1.45;
background-color: #f7f7f7;
border: 0;
border-radius: 3px;
color: #777777;
margin-top: 0 !important;
}
.mathjax-block>.code-tooltip {
bottom: .375rem;
}
.md-mathjax-midline {
background: #fafafa;
}
#write>h3.md-focus:before{
left: -1.5625rem;
top: .375rem;
}
#write>h4.md-focus:before{
left: -1.5625rem;
top: .285714286rem;
}
#write>h5.md-focus:before{
left: -1.5625rem;
top: .285714286rem;
}
#write>h6.md-focus:before{
left: -1.5625rem;
top: .285714286rem;
}
.md-image>.md-meta {
/*border: 1px solid #ddd;*/
border-radius: 3px;
padding: 2px 0px 0px 4px;
font-size: 0.9em;
color: inherit;
}
.md-tag {
color: #a7a7a7;
opacity: 1;
}
.md-toc {
margin-top:20px;
padding-bottom:20px;
}
.sidebar-tabs {
border-bottom: none;
}
#typora-quick-open {
border: 1px solid #ddd;
background-color: #f8f8f8;
}
#typora-quick-open-item {
background-color: #FAFAFA;
border-color: #FEFEFE #e5e5e5 #e5e5e5 #eee;
border-style: solid;
border-width: 1px;
}
/** focus mode */
.on-focus-mode blockquote {
border-left-color: rgba(85, 85, 85, 0.12);
}
header, .context-menu, .megamenu-content, footer{
font-family: "Segoe UI", "Arial", sans-serif;
}
.file-node-content:hover .file-node-icon,
.file-node-content:hover .file-node-open-state{
visibility: visible;
}
.mac-seamless-mode #typora-sidebar {
background-color: #fafafa;
background-color: var(--side-bar-bg-color);
}
.md-lang {
color: #b4654d;
}
/*.html-for-mac {
--item-hover-bg-color: #E6F0FE;
}*/
#md-notification .btn {
border: 0;
}
.dropdown-menu .divider {
border-color: #e5e5e5;
opacity: 0.4;
}
.ty-preferences .window-content {
background-color: #fafafa;
}
.ty-preferences .nav-group-item.active {
color: white;
background: #999;
}
.menu-item-container a.menu-style-btn {
background-color: #f5f8fa;
background-image: linear-gradient( 180deg , hsla(0, 0%, 100%, 0.8), hsla(0, 0%, 100%, 0));
}

1
statics/modules/dayjs.min.js vendored Normal file

File diff suppressed because one or more lines are too long

4898
statics/modules/decimal.mjs Normal file

File diff suppressed because it is too large Load Diff

225
statics/modules/tools.js Normal file
View File

@@ -0,0 +1,225 @@
import Decimal from './decimal.mjs'
class IO {
/**
* 传入一个组名,返回一个 IO 对象,后续仅对该组内的数据进行读写
* @param {string} scope 组名
*/
constructor(scope) {
this.scope = scope
}
/**
* 读取一条数据
* @param {string} id 数据的唯一标识符
* @returns 该标识符所代表的数据
*/
read(id) {
let key = `${this.scope}/${id}`
return localStorage.getItem(key)
}
/**
* 写入一条数据
* @param {string} id 数据的唯一标识符
* @param {*} data 该标识符所代表的数据
*/
write(id, data) {
let key = `${this.scope}/${id}`
localStorage.setItem(key, data)
}
/**
* 删除一条数据
* @param {string} id 数据的唯一标识符
*/
remove(id) {
let key = `${this.scope}/${id}`
localStorage.removeItem(key)
}
/**
* 列出已存储的所有数据的唯一标识符
* @returns 当前组内所存储的所有数据的唯一标识符
*/
listKeys() {
let keys = []
for (const key in localStorage) {
if (Object.hasOwnProperty.call(localStorage, key) &&
key.startsWith(this.scope)) {
let i = key.indexOf('/') + 1
keys.push(key.slice(i))
}
}
return keys
}
/**
* 确定是否需要收集 value
* @param {*} value 当前值
* @param {boolean} collectEmptyValue 是否收集空值
* @returns
*/
#checkValue = (value, collectEmptyValue) => {
return collectEmptyValue || !(value === null || value === undefined || value == '')
}
/**
* 检查 input 类型,若不是用户输入的内容(如 button 等),则不收集该 input 的数据
* @param {*} type input 类型
* @returns 是否需要收集该 input 的数据
*/
#checkType = (type) => {
let allows = [
// 已列出所有的 input 类型,将不收集数据的类型注释掉即可
// 'button',
'checkbox',
'color',
'date',
'datetime-local',
'email',
// 'file',
// 'hidden',
// 'image',
'month',
'number',
// 'password',
'radio',
'range',
// 'reset',
'search',
// 'submit',
'tel',
'text',
'time',
'url',
'week'
]
return allows.indexOf(type) != -1
}
/**
* 从 input 控件收集用户填入的数据
* @param {HTMLCollection | HTMLInputElement} inputs 需要收集数据的 input 标签
* @param {boolean} collectEmptyValue 是否需要收集空值
* @returns 收集的数据
*/
collectData(inputs, collectEmptyValue = true) {
if (inputs.length == 0) return
let result = {
timestamp: Date.now()
}
let safeKey = (key) => {
return key.replaceAll('-', '_')
}
for (let input of inputs) {
if (this.#checkType(input.type)) {
// 需要分类型进行收集数据
switch (input.type) {
case 'checkbox':
result[safeKey(input.name)] = input.checked
break
case 'radio':
if (input.checked) {
result[safeKey(input.name)] = input.value
}
break
default:
if (this.#checkValue(input.value, collectEmptyValue)) {
result[safeKey(input.name)] = input.value
}
break
}
}
}
return result
}
/**
* 将 data 中的值自动填入到对应的 input 中
* @param {Object} data 需要填入的数据
* @param {HTMLCollection | HTMLInputElement} inputs 需要填入数据到哪些 input
*/
exportData(data, inputs) {
let reSafeKey = (key) => {
return key.replaceAll('-', '_')
}
for (let item in data) {
for (let input of inputs) {
if (reSafeKey(input.name) == item) {
switch (input.type) {
case 'checkbox':
input.checked = data[item]
break
case 'radio':
if (input.value == data[item]) input.checked = true
break
default:
input.value = data[item]
break
}
}
}
}
}
}
class Formula {
static AVERAGE(...array) {
let sum = new Decimal(0)
array.forEach((item) => sum = sum.plus(item))
return sum.dividedBy(array.length)
}
// 计算相对标准偏差
// Markdown 公式:$RSD = \frac{SD}{\overline{x}}*100\%$
// @see Formula.STDEV()
static RSD(...array) {
let stdev = this.STDEV(...array)
let average = () => {
let sum = new Decimal(0)
array.forEach(value => sum = sum.plus(new Decimal(value)))
return sum.dividedBy(array.length)
}
let rsd = stdev.dividedBy(average()).times(100)
return rsd.toPrecision(5)
}
// 计算标准偏差
// Markdown 公式:$SD = \sqrt{\frac{\sum_{i=1}^{n}(x_i - \overline{x})^2}{n-1}}$
static STDEV(...array) {
// 计算所有数值的和
let sum = new Decimal(0)
array.forEach(value => sum = sum.plus(new Decimal(value)))
// 计算所有数值的平均值
let average = sum.dividedBy(array.length)
// 计算 ((每个数值减去平均值)的二次方)的和,即公式中分子的结果
let sumEach = new Decimal(0)
array.forEach(value => {
let v = new Decimal(value)
let temp = v.minus(average).toPower(2)
sumEach = sumEach.plus(temp)
})
// 以上结果除以 n-1 并开根号即得
let x = sumEach.dividedBy(array.length - 1).squareRoot()
return x
}
}
class Deviation {
static AbsoluteDeviation(num, nums) {
// TODO: implement this method
}
}
export { IO, Formula, Deviation }

114
statics/theme.css Normal file
View File

@@ -0,0 +1,114 @@
body {
height: 100%;
font-size: 16px;
/* 禁止选择文本 */
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
a {
outline: none;
text-decoration: none;
color: cornflowerblue;
}
.item {
height: 32px;
text-align: left;
line-height: 32px;
margin-top: 5px;
padding-left: 10px;
background-color: #f5f5f5;
border: 1px solid #323232;
border-left-width: 5px;
}
.item:active {
height: 32px;
text-align: left;
line-height: 32px;
margin-top: 5px;
padding-left: 10px;
background-color: #ffffff;
border: 1px solid #583fe9;
border-left-width: 5px;
}
.buttons {
text-align: center;
}
input {
width: 97%;
height: 32px;
margin-top: 5px;
line-height: 32px;
outline: none;
display: inline-block;
}
button {
height: 32px;
width: 96px;
margin-top: 6px;
margin-left: 3px;
text-align: center;
background-color: #f6f8fa;
color: #24292f;
border: 1px solid;
border-radius: 6px;
border-color: rgba(27, 31, 36, 0.15);
}
table {
width: 90%;
border-collapse: collapse;
border-spacing: 0;
}
td,
th {
padding: 0;
}
.pure-table {
border-collapse: collapse;
border-spacing: 0;
empty-cells: show;
border: 1px solid #cbcbcb;
}
.pure-table caption {
color: #000;
font: italic 85%/1 arial, sans-serif;
padding: 1em 0;
text-align: center;
}
.pure-table td,
.pure-table th {
border-left: 1px solid #cbcbcb;
border-width: 0 0 0 1px;
font-size: inherit;
margin: 0;
overflow: visible;
padding: .5em 1em;
}
.pure-table thead {
background-color: #e0e0e0;
color: #000;
text-align: left;
vertical-align: bottom;
}
.pure-table td {
background-color: transparent;
}
.pure-table-odd td {
background-color: #f2f2f2;
}