-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsample5_both-mouse-and-human.html
132 lines (122 loc) · 5.68 KB
/
sample5_both-mouse-and-human.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
<!DOCTYPE html>
<html lang="ja">
<!--
Copyright (C) 2020 浦 公統
Released under the MIT license.
see https://opensource.org/licenses/MIT/
-->
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width">
<title>ヒト等価用量計算・逆計算</title>
<style>
table, th, td
{
border: solid 2px;
}
</style>
<script src="./lib/anyCalculatorFramework.js"></script>
<script src="./lib/formatDecimal.js"></script>
<script src="./lib/MathWrapper.js"></script>
<script>
/**
* 初期化
*/
function init()
{
// このHTMLは1個の画面に2つの計算機アプリを表示します。
// 1つ目の計算機アプリの設定
// 入力項目
// 項目名, 入力項目ID, 単位 (省略時は空), 初期値 (省略時は空), 省略可否フラグ (省略時は false)
// 入力項目IDは1個の計算機アプリ内で同じものを重複して使うことはできません
var inputs = [
new itemInput( 'マウス体重', 'mouseWeight', 'g', 19.0 ),
new itemInput( 'ヒト体重', 'humanWeight', 'kg', 63.6 ),
new itemInput( 'マウス用量', 'mouseDosage', 'mg/kg' )
];
// 出力項目
// 項目名, 出力項目ID, 単位 (省略時は空), 小数点以下桁数 (数値ではなく、文字列を出力する場合は -1) (省略時は 3)
// 出力項目IDは1個の計算機アプリ内で同じものを重複して使うことはできません
var outputs = [
new itemOutput( 'ヒト用量', 'humanDosage', 'mg/kg' ),
new itemOutput( '標準成人用量', 'adultDosage', 'mg' )
];
// 計算機アプリのインスタンス生成
// 計算機アプリのID, 入力項目, 出力項目, 計算ボタンのキャプション, 計算コールバック関数, 入力エラーコールバック関数, テキストサイズ (省略時は4)
new anyCalculator( 'mouseToHuman', inputs, outputs, 'ヒト用量計算', calcHumanDosage, onError );
// 2つ目の計算機アプリの設定
// 入力項目
// 項目名, 入力項目ID, 単位 (省略時は空), 初期値 (省略時は空), 省略可否フラグ (省略時は false)
// 入力項目IDは1個の計算機アプリ内で同じものを重複して使うことはできません
inputs = [
new itemInput( 'マウス体重', 'mouseWeight', 'g', 19.0 ),
new itemInput( 'ヒト体重', 'humanWeight', 'kg', 63.6 ),
new itemInput( '標準ヒト用量', 'humanDosage', 'mg' )
];
// 出力項目
// 項目名, 出力項目ID, 単位 (省略時は空), 小数点以下桁数 (数値ではなく、文字列を出力する場合は -1) (省略時は 3)
// 出力項目IDは1個の計算機アプリ内で同じものを重複して使うことはできません
outputs = [
new itemOutput( 'マウス用量', 'mouseDosagePerWeight', 'mg/kg' ),
new itemOutput( '1匹当たり用量', 'mouseDosagePerBody', 'mg' )
];
// 計算機アプリのインスタンス生成
// 計算機アプリのID, 入力項目, 出力項目, 計算ボタンのキャプション, 計算コールバック関数, 入力エラーコールバック関数, テキストサイズ (省略時は4)
new anyCalculator( 'humanToMouse', inputs, outputs, 'マウス用量計算', calcMouseDosage, onError );
}
/**
* 計算コールバック関数 1
* ヒト等価用量を計算する
* @param inputs 入力項目
* @param outputs 出力項目
* @note inputs[ '項目名' ] に入力数値が入る (数値が入力されてない項目には NaN が入る)
* outputs[ '項目名' ] に計算結果を入れて関数を終了すること
*/
function calcHumanDosage( inputs, outputs )
{
outputs[ 'humanDosage' ] = inputs[ 'mouseDosage' ]
* cbrt( inputs[ 'mouseWeight' ] / 1000.0 / inputs[ 'humanWeight' ] );
outputs[ 'adultDosage' ] = inputs[ 'mouseDosage' ]
* cbrt( inputs[ 'mouseWeight' ] / 1000.0 * inputs[ 'humanWeight' ] * inputs[ 'humanWeight' ] );
}
/**
* 計算コールバック関数 2
* マウス用量を計算する
* @param inputs 入力項目
* @param outputs 出力項目
* @note inputs[ '項目名' ] に入力数値が入る (数値が入力されてない項目には NaN が入る)
* outputs[ '項目名' ] に計算結果を入れて関数を終了すること
*/
function calcMouseDosage( inputs, outputs )
{
humanDosage_PerKg = inputs[ 'humanDosage' ] / inputs[ 'humanWeight' ];
mouse_kg = inputs[ 'mouseWeight' ] / 1000.0;
outputs[ 'mouseDosagePerWeight' ] = humanDosage_PerKg * cbrt( inputs[ 'humanWeight' ] / mouse_kg );
outputs[ 'mouseDosagePerBody' ] = humanDosage_PerKg * cbrt( inputs[ 'humanWeight' ] * mouse_kg * mouse_kg );
}
/**
* 入力エラーコールバック関数
* @param item 入力エラー項目の itemInput オブジェクト
* item.title 項目名
* item.id ID
* item.unit 単位
* item.initValue 初期値
* item.element input 要素
*/
function onError( item )
{
alert( item.title + 'に数値を入力してください' );
item.element.focus();
}
</script>
</head>
<body onload="init();">
<!-- 計算機アプリはこれらの table に表示されます --->
<!-- id を複数使えば、1個のHTML上にいくらでも計算機アプリを配置できます -->
<!-- この table の id と、1つ目の new anyCalculator() の第1引数に、1つ目の計算機アプリのIDを指定します -->
<table id="mouseToHuman"></table>
<br>
<!-- この table の id と、2つ目の new anyCalculator() の第1引数に、2つ目の計算機アプリのIDを指定します -->
<table id="humanToMouse"></table>
</body>
</html>