toji 1.2.0 → 1.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/example/koji_making.ipynb +42 -8
- data/example/moromi.ipynb +21 -21
- data/example/schedule.ipynb +393 -0
- data/example/shubo.ipynb +43 -7
- data/example/three_step_mashing_recipe.rb +7 -5
- data/lib/toji/brew/base.rb +41 -8
- data/lib/toji/brew/graph/progress.rb +4 -7
- data/lib/toji/brew/state.rb +0 -12
- data/lib/toji/recipe/ingredient/koji/actual.rb +9 -0
- data/lib/toji/recipe/ingredient/koji/base.rb +9 -0
- data/lib/toji/recipe/ingredient/koji/expected.rb +4 -9
- data/lib/toji/recipe/ingredient/rice/actual.rb +10 -1
- data/lib/toji/recipe/ingredient/rice/base.rb +9 -0
- data/lib/toji/recipe/ingredient/rice/expected.rb +2 -7
- data/lib/toji/recipe/ingredient.rb +0 -1
- data/lib/toji/recipe/step.rb +39 -4
- data/lib/toji/recipe/three_step_mashing.rb +201 -26
- data/lib/toji/recipe.rb +0 -1
- data/lib/toji/schedule/calendar.rb +115 -0
- data/lib/toji/schedule/date_column.rb +30 -0
- data/lib/toji/schedule/date_interval_enumerator.rb +45 -0
- data/lib/toji/schedule/date_row.rb +29 -0
- data/lib/toji/schedule/product.rb +80 -0
- data/lib/toji/schedule/product_event.rb +44 -0
- data/lib/toji/schedule.rb +11 -0
- data/lib/toji/version.rb +1 -1
- data/lib/toji.rb +1 -0
- metadata +10 -4
- data/lib/toji/recipe/ingredient/lactic_acid.rb +0 -21
- data/lib/toji/recipe/lactic_acid_rate.rb +0 -17
@@ -0,0 +1,393 @@
|
|
1
|
+
{
|
2
|
+
"cells": [
|
3
|
+
{
|
4
|
+
"cell_type": "code",
|
5
|
+
"execution_count": 14,
|
6
|
+
"metadata": {
|
7
|
+
"scrolled": false
|
8
|
+
},
|
9
|
+
"outputs": [
|
10
|
+
{
|
11
|
+
"name": "stdout",
|
12
|
+
"output_type": "stream",
|
13
|
+
"text": [
|
14
|
+
"仕1 姫野国夫による酒母省略仕込\n"
|
15
|
+
]
|
16
|
+
},
|
17
|
+
{
|
18
|
+
"data": {
|
19
|
+
"text/html": [
|
20
|
+
"\n",
|
21
|
+
" <script>\n",
|
22
|
+
" requirejs.config({paths: { 'plotly': ['https://cdn.plot.ly/plotly-latest.min'] }})\n",
|
23
|
+
" </script>\n",
|
24
|
+
"\n",
|
25
|
+
"\n",
|
26
|
+
"<div id=\"5a9e6dfb-3187-4f4e-9260-3fc16b3a69cf\" style=\"height: 100%; width: 100%;\"></div>\n",
|
27
|
+
"\n",
|
28
|
+
"<script>\n",
|
29
|
+
" require(['plotly'], function(Plotly) { \n",
|
30
|
+
"Plotly.newPlot(\n",
|
31
|
+
" '5a9e6dfb-3187-4f4e-9260-3fc16b3a69cf',\n",
|
32
|
+
" [{\"type\":\"table\",\"header\":{\"values\":[\"\",\"moto\",\"soe\",\"naka\",\"tome\",\"yodan\",\"total\"]},\"cells\":{\"values\":[[\"rice_total\",\"rice\",\"koji\",\"alcohol\",\"water\",\"lactic_acid\"],[35.0,\"\",35.0,\"\",123.0,0.8],[65.0,65.0,\"\",\"\",\"\",\"\"],[200.0,150.0,50.0,\"\",200.0,\"\"],[300.0,245.0,55.0,\"\",400.0,\"\"],[\"\",\"\",\"\",\"\",128.0,\"\"],[600.0,460.0,140.0,\"\",851.0,0.8]]}}],\n",
|
33
|
+
" {\"height\":350},\n",
|
34
|
+
" {\"linkText\":\"Export to plot.ly\",\"showLink\":true}\n",
|
35
|
+
")\n",
|
36
|
+
"\n",
|
37
|
+
"window.addEventListener('resize', function() {\n",
|
38
|
+
" Plotly.Plots.resize(document.getElementById('5a9e6dfb-3187-4f4e-9260-3fc16b3a69cf'))\n",
|
39
|
+
"})\n",
|
40
|
+
" }) \n",
|
41
|
+
"</script>"
|
42
|
+
],
|
43
|
+
"text/plain": [
|
44
|
+
"#<Plotly::Offline::HTML:0x00007fc70588de10 @id=\"5a9e6dfb-3187-4f4e-9260-3fc16b3a69cf\", @data=[{:type=>:table, :header=>{:values=>[\"\", :moto, :soe, :naka, :tome, :yodan, :total]}, :cells=>{:values=>[[:rice_total, :rice, :koji, :alcohol, :water, :lactic_acid], [35.0, \"\", 35.0, \"\", 123.0, 0.8], [65.0, 65.0, \"\", \"\", \"\", \"\"], [200.0, 150.0, 50.0, \"\", 200.0, \"\"], [300.0, 245.0, 55.0, \"\", 400.0, \"\"], [\"\", \"\", \"\", \"\", 128.0, \"\"], [600.0, 460.0, 140.0, \"\", 851.0, 0.8]]}}], @layout={:height=>350}, @config={:linkText=>\"Export to plot.ly\", :showLink=>true}, @embedded=true>"
|
45
|
+
]
|
46
|
+
},
|
47
|
+
"metadata": {},
|
48
|
+
"output_type": "display_data"
|
49
|
+
},
|
50
|
+
{
|
51
|
+
"name": "stdout",
|
52
|
+
"output_type": "stream",
|
53
|
+
"text": [
|
54
|
+
"仕2 姫野国夫による酒母省略仕込\n"
|
55
|
+
]
|
56
|
+
},
|
57
|
+
{
|
58
|
+
"data": {
|
59
|
+
"text/html": [
|
60
|
+
"\n",
|
61
|
+
" <script>\n",
|
62
|
+
" requirejs.config({paths: { 'plotly': ['https://cdn.plot.ly/plotly-latest.min'] }})\n",
|
63
|
+
" </script>\n",
|
64
|
+
"\n",
|
65
|
+
"\n",
|
66
|
+
"<div id=\"0308f2b7-303f-482a-8f10-eeeadc1f7603\" style=\"height: 100%; width: 100%;\"></div>\n",
|
67
|
+
"\n",
|
68
|
+
"<script>\n",
|
69
|
+
" require(['plotly'], function(Plotly) { \n",
|
70
|
+
"Plotly.newPlot(\n",
|
71
|
+
" '0308f2b7-303f-482a-8f10-eeeadc1f7603',\n",
|
72
|
+
" [{\"type\":\"table\",\"header\":{\"values\":[\"\",\"moto\",\"soe\",\"naka\",\"tome\",\"yodan\",\"total\"]},\"cells\":{\"values\":[[\"rice_total\",\"rice\",\"koji\",\"alcohol\",\"water\",\"lactic_acid\"],[32.0,\"\",32.0,\"\",112.0,0.733],[60.0,60.0,\"\",\"\",\"\",\"\"],[184.0,138.0,46.0,\"\",183.0,\"\"],[275.0,225.0,50.0,\"\",367.0,\"\"],[\"\",\"\",\"\",\"\",117.0,\"\"],[551.0,423.0,128.0,\"\",779.0,0.733]]}}],\n",
|
73
|
+
" {\"height\":350},\n",
|
74
|
+
" {\"linkText\":\"Export to plot.ly\",\"showLink\":true}\n",
|
75
|
+
")\n",
|
76
|
+
"\n",
|
77
|
+
"window.addEventListener('resize', function() {\n",
|
78
|
+
" Plotly.Plots.resize(document.getElementById('0308f2b7-303f-482a-8f10-eeeadc1f7603'))\n",
|
79
|
+
"})\n",
|
80
|
+
" }) \n",
|
81
|
+
"</script>"
|
82
|
+
],
|
83
|
+
"text/plain": [
|
84
|
+
"#<Plotly::Offline::HTML:0x00007fc707200168 @id=\"0308f2b7-303f-482a-8f10-eeeadc1f7603\", @data=[{:type=>:table, :header=>{:values=>[\"\", :moto, :soe, :naka, :tome, :yodan, :total]}, :cells=>{:values=>[[:rice_total, :rice, :koji, :alcohol, :water, :lactic_acid], [32.0, \"\", 32.0, \"\", 112.0, 0.733], [60.0, 60.0, \"\", \"\", \"\", \"\"], [184.0, 138.0, 46.0, \"\", 183.0, \"\"], [275.0, 225.0, 50.0, \"\", 367.0, \"\"], [\"\", \"\", \"\", \"\", 117.0, \"\"], [551.0, 423.0, 128.0, \"\", 779.0, 0.733]]}}], @layout={:height=>350}, @config={:linkText=>\"Export to plot.ly\", :showLink=>true}, @embedded=true>"
|
85
|
+
]
|
86
|
+
},
|
87
|
+
"metadata": {},
|
88
|
+
"output_type": "display_data"
|
89
|
+
},
|
90
|
+
{
|
91
|
+
"name": "stdout",
|
92
|
+
"output_type": "stream",
|
93
|
+
"text": [
|
94
|
+
"仕3 灘における仕込配合\n"
|
95
|
+
]
|
96
|
+
},
|
97
|
+
{
|
98
|
+
"data": {
|
99
|
+
"text/html": [
|
100
|
+
"\n",
|
101
|
+
" <script>\n",
|
102
|
+
" requirejs.config({paths: { 'plotly': ['https://cdn.plot.ly/plotly-latest.min'] }})\n",
|
103
|
+
" </script>\n",
|
104
|
+
"\n",
|
105
|
+
"\n",
|
106
|
+
"<div id=\"f872bad5-0679-45af-9f76-3331f95adc07\" style=\"height: 100%; width: 100%;\"></div>\n",
|
107
|
+
"\n",
|
108
|
+
"<script>\n",
|
109
|
+
" require(['plotly'], function(Plotly) { \n",
|
110
|
+
"Plotly.newPlot(\n",
|
111
|
+
" 'f872bad5-0679-45af-9f76-3331f95adc07',\n",
|
112
|
+
" [{\"type\":\"table\",\"header\":{\"values\":[\"\",\"moto\",\"soe\",\"naka\",\"tome\",\"alcohol\",\"total\"]},\"cells\":{\"values\":[[\"rice_total\",\"rice\",\"koji\",\"alcohol\",\"water\",\"lactic_acid\"],[63.0,42.0,21.0,\"\",77.0,0.524],[143.0,98.0,45.0,\"\",122.0,\"\"],[254.0,190.0,64.0,\"\",302.0,\"\"],[440.0,366.0,74.0,\"\",599.0,\"\"],[\"\",\"\",\"\",405.0,\"\",\"\"],[900.0,696.0,204.0,405.0,1100.0,0.524]]}}],\n",
|
113
|
+
" {\"height\":350},\n",
|
114
|
+
" {\"linkText\":\"Export to plot.ly\",\"showLink\":true}\n",
|
115
|
+
")\n",
|
116
|
+
"\n",
|
117
|
+
"window.addEventListener('resize', function() {\n",
|
118
|
+
" Plotly.Plots.resize(document.getElementById('f872bad5-0679-45af-9f76-3331f95adc07'))\n",
|
119
|
+
"})\n",
|
120
|
+
" }) \n",
|
121
|
+
"</script>"
|
122
|
+
],
|
123
|
+
"text/plain": [
|
124
|
+
"#<Plotly::Offline::HTML:0x00007fc7062b1b30 @id=\"f872bad5-0679-45af-9f76-3331f95adc07\", @data=[{:type=>:table, :header=>{:values=>[\"\", :moto, :soe, :naka, :tome, :alcohol, :total]}, :cells=>{:values=>[[:rice_total, :rice, :koji, :alcohol, :water, :lactic_acid], [63.0, 42.0, 21.0, \"\", 77.0, 0.524], [143.0, 98.0, 45.0, \"\", 122.0, \"\"], [254.0, 190.0, 64.0, \"\", 302.0, \"\"], [440.0, 366.0, 74.0, \"\", 599.0, \"\"], [\"\", \"\", \"\", 405.0, \"\", \"\"], [900.0, 696.0, 204.0, 405.0, 1100.0, 0.524]]}}], @layout={:height=>350}, @config={:linkText=>\"Export to plot.ly\", :showLink=>true}, @embedded=true>"
|
125
|
+
]
|
126
|
+
},
|
127
|
+
"metadata": {},
|
128
|
+
"output_type": "display_data"
|
129
|
+
},
|
130
|
+
{
|
131
|
+
"name": "stdout",
|
132
|
+
"output_type": "stream",
|
133
|
+
"text": [
|
134
|
+
"仕4 酒造教本による標準型仕込配合\n"
|
135
|
+
]
|
136
|
+
},
|
137
|
+
{
|
138
|
+
"data": {
|
139
|
+
"text/html": [
|
140
|
+
"\n",
|
141
|
+
" <script>\n",
|
142
|
+
" requirejs.config({paths: { 'plotly': ['https://cdn.plot.ly/plotly-latest.min'] }})\n",
|
143
|
+
" </script>\n",
|
144
|
+
"\n",
|
145
|
+
"\n",
|
146
|
+
"<div id=\"ae43fbf3-29db-4b76-96bc-e9b88d4071d6\" style=\"height: 100%; width: 100%;\"></div>\n",
|
147
|
+
"\n",
|
148
|
+
"<script>\n",
|
149
|
+
" require(['plotly'], function(Plotly) { \n",
|
150
|
+
"Plotly.newPlot(\n",
|
151
|
+
" 'ae43fbf3-29db-4b76-96bc-e9b88d4071d6',\n",
|
152
|
+
" [{\"type\":\"table\",\"header\":{\"values\":[\"\",\"moto\",\"soe\",\"naka\",\"tome\",\"yodan\",\"total\"]},\"cells\":{\"values\":[[\"rice_total\",\"rice\",\"koji\",\"alcohol\",\"water\",\"lactic_acid\"],[59.0,41.0,18.0,\"\",63.0,0.432],[126.0,90.0,36.0,\"\",117.0,\"\"],[248.0,194.0,54.0,\"\",297.0,\"\"],[396.0,324.0,72.0,\"\",567.0,\"\"],[72.0,72.0,\"\",\"\",108.0,\"\"],[901.0,721.0,180.0,\"\",1152.0,0.432]]}}],\n",
|
153
|
+
" {\"height\":350},\n",
|
154
|
+
" {\"linkText\":\"Export to plot.ly\",\"showLink\":true}\n",
|
155
|
+
")\n",
|
156
|
+
"\n",
|
157
|
+
"window.addEventListener('resize', function() {\n",
|
158
|
+
" Plotly.Plots.resize(document.getElementById('ae43fbf3-29db-4b76-96bc-e9b88d4071d6'))\n",
|
159
|
+
"})\n",
|
160
|
+
" }) \n",
|
161
|
+
"</script>"
|
162
|
+
],
|
163
|
+
"text/plain": [
|
164
|
+
"#<Plotly::Offline::HTML:0x00007fc7062d84b0 @id=\"ae43fbf3-29db-4b76-96bc-e9b88d4071d6\", @data=[{:type=>:table, :header=>{:values=>[\"\", :moto, :soe, :naka, :tome, :yodan, :total]}, :cells=>{:values=>[[:rice_total, :rice, :koji, :alcohol, :water, :lactic_acid], [59.0, 41.0, 18.0, \"\", 63.0, 0.432], [126.0, 90.0, 36.0, \"\", 117.0, \"\"], [248.0, 194.0, 54.0, \"\", 297.0, \"\"], [396.0, 324.0, 72.0, \"\", 567.0, \"\"], [72.0, 72.0, \"\", \"\", 108.0, \"\"], [901.0, 721.0, 180.0, \"\", 1152.0, 0.432]]}}], @layout={:height=>350}, @config={:linkText=>\"Export to plot.ly\", :showLink=>true}, @embedded=true>"
|
165
|
+
]
|
166
|
+
},
|
167
|
+
"metadata": {},
|
168
|
+
"output_type": "display_data"
|
169
|
+
},
|
170
|
+
{
|
171
|
+
"name": "stdout",
|
172
|
+
"output_type": "stream",
|
173
|
+
"text": [
|
174
|
+
"仕5 灘における仕込配合\n"
|
175
|
+
]
|
176
|
+
},
|
177
|
+
{
|
178
|
+
"data": {
|
179
|
+
"text/html": [
|
180
|
+
"\n",
|
181
|
+
" <script>\n",
|
182
|
+
" requirejs.config({paths: { 'plotly': ['https://cdn.plot.ly/plotly-latest.min'] }})\n",
|
183
|
+
" </script>\n",
|
184
|
+
"\n",
|
185
|
+
"\n",
|
186
|
+
"<div id=\"67acea3c-a414-46e6-9c4d-e7c1e1d455d5\" style=\"height: 100%; width: 100%;\"></div>\n",
|
187
|
+
"\n",
|
188
|
+
"<script>\n",
|
189
|
+
" require(['plotly'], function(Plotly) { \n",
|
190
|
+
"Plotly.newPlot(\n",
|
191
|
+
" '67acea3c-a414-46e6-9c4d-e7c1e1d455d5',\n",
|
192
|
+
" [{\"type\":\"table\",\"header\":{\"values\":[\"\",\"moto\",\"soe\",\"naka\",\"tome\",\"alcohol\",\"total\"]},\"cells\":{\"values\":[[\"rice_total\",\"rice\",\"koji\",\"alcohol\",\"water\",\"lactic_acid\"],[63.0,42.0,21.0,\"\",77.0,0.524],[143.0,98.0,45.0,\"\",122.0,\"\"],[254.0,190.0,64.0,\"\",302.0,\"\"],[440.0,366.0,74.0,\"\",599.0,\"\"],[\"\",\"\",\"\",405.0,\"\",\"\"],[900.0,696.0,204.0,405.0,1100.0,0.524]]}}],\n",
|
193
|
+
" {\"height\":350},\n",
|
194
|
+
" {\"linkText\":\"Export to plot.ly\",\"showLink\":true}\n",
|
195
|
+
")\n",
|
196
|
+
"\n",
|
197
|
+
"window.addEventListener('resize', function() {\n",
|
198
|
+
" Plotly.Plots.resize(document.getElementById('67acea3c-a414-46e6-9c4d-e7c1e1d455d5'))\n",
|
199
|
+
"})\n",
|
200
|
+
" }) \n",
|
201
|
+
"</script>"
|
202
|
+
],
|
203
|
+
"text/plain": [
|
204
|
+
"#<Plotly::Offline::HTML:0x00007fc70599d968 @id=\"67acea3c-a414-46e6-9c4d-e7c1e1d455d5\", @data=[{:type=>:table, :header=>{:values=>[\"\", :moto, :soe, :naka, :tome, :alcohol, :total]}, :cells=>{:values=>[[:rice_total, :rice, :koji, :alcohol, :water, :lactic_acid], [63.0, 42.0, 21.0, \"\", 77.0, 0.524], [143.0, 98.0, 45.0, \"\", 122.0, \"\"], [254.0, 190.0, 64.0, \"\", 302.0, \"\"], [440.0, 366.0, 74.0, \"\", 599.0, \"\"], [\"\", \"\", \"\", 405.0, \"\", \"\"], [900.0, 696.0, 204.0, 405.0, 1100.0, 0.524]]}}], @layout={:height=>350}, @config={:linkText=>\"Export to plot.ly\", :showLink=>true}, @embedded=true>"
|
205
|
+
]
|
206
|
+
},
|
207
|
+
"metadata": {},
|
208
|
+
"output_type": "display_data"
|
209
|
+
},
|
210
|
+
{
|
211
|
+
"name": "stdout",
|
212
|
+
"output_type": "stream",
|
213
|
+
"text": [
|
214
|
+
"仕6 酒造教本による標準型仕込配合\n"
|
215
|
+
]
|
216
|
+
},
|
217
|
+
{
|
218
|
+
"data": {
|
219
|
+
"text/html": [
|
220
|
+
"\n",
|
221
|
+
" <script>\n",
|
222
|
+
" requirejs.config({paths: { 'plotly': ['https://cdn.plot.ly/plotly-latest.min'] }})\n",
|
223
|
+
" </script>\n",
|
224
|
+
"\n",
|
225
|
+
"\n",
|
226
|
+
"<div id=\"747c9db9-b26c-41bf-bf32-23b3df827411\" style=\"height: 100%; width: 100%;\"></div>\n",
|
227
|
+
"\n",
|
228
|
+
"<script>\n",
|
229
|
+
" require(['plotly'], function(Plotly) { \n",
|
230
|
+
"Plotly.newPlot(\n",
|
231
|
+
" '747c9db9-b26c-41bf-bf32-23b3df827411',\n",
|
232
|
+
" [{\"type\":\"table\",\"header\":{\"values\":[\"\",\"moto\",\"soe\",\"naka\",\"tome\",\"yodan\",\"total\"]},\"cells\":{\"values\":[[\"rice_total\",\"rice\",\"koji\",\"alcohol\",\"water\",\"lactic_acid\"],[59.0,41.0,18.0,\"\",63.0,0.432],[126.0,90.0,36.0,\"\",117.0,\"\"],[248.0,194.0,54.0,\"\",297.0,\"\"],[396.0,324.0,72.0,\"\",567.0,\"\"],[72.0,72.0,\"\",\"\",108.0,\"\"],[901.0,721.0,180.0,\"\",1152.0,0.432]]}}],\n",
|
233
|
+
" {\"height\":350},\n",
|
234
|
+
" {\"linkText\":\"Export to plot.ly\",\"showLink\":true}\n",
|
235
|
+
")\n",
|
236
|
+
"\n",
|
237
|
+
"window.addEventListener('resize', function() {\n",
|
238
|
+
" Plotly.Plots.resize(document.getElementById('747c9db9-b26c-41bf-bf32-23b3df827411'))\n",
|
239
|
+
"})\n",
|
240
|
+
" }) \n",
|
241
|
+
"</script>"
|
242
|
+
],
|
243
|
+
"text/plain": [
|
244
|
+
"#<Plotly::Offline::HTML:0x00007fc705a390e8 @id=\"747c9db9-b26c-41bf-bf32-23b3df827411\", @data=[{:type=>:table, :header=>{:values=>[\"\", :moto, :soe, :naka, :tome, :yodan, :total]}, :cells=>{:values=>[[:rice_total, :rice, :koji, :alcohol, :water, :lactic_acid], [59.0, 41.0, 18.0, \"\", 63.0, 0.432], [126.0, 90.0, 36.0, \"\", 117.0, \"\"], [248.0, 194.0, 54.0, \"\", 297.0, \"\"], [396.0, 324.0, 72.0, \"\", 567.0, \"\"], [72.0, 72.0, \"\", \"\", 108.0, \"\"], [901.0, 721.0, 180.0, \"\", 1152.0, 0.432]]}}], @layout={:height=>350}, @config={:linkText=>\"Export to plot.ly\", :showLink=>true}, @embedded=true>"
|
245
|
+
]
|
246
|
+
},
|
247
|
+
"metadata": {},
|
248
|
+
"output_type": "display_data"
|
249
|
+
},
|
250
|
+
{
|
251
|
+
"data": {
|
252
|
+
"text/html": [
|
253
|
+
"\n",
|
254
|
+
" <script>\n",
|
255
|
+
" requirejs.config({paths: { 'plotly': ['https://cdn.plot.ly/plotly-latest.min'] }})\n",
|
256
|
+
" </script>\n",
|
257
|
+
"\n",
|
258
|
+
"\n",
|
259
|
+
"<div id=\"8ea1cb5a-9840-4791-9fae-8d64678093ec\" style=\"height: 100%; width: 100%;\"></div>\n",
|
260
|
+
"\n",
|
261
|
+
"<script>\n",
|
262
|
+
" require(['plotly'], function(Plotly) { \n",
|
263
|
+
"Plotly.newPlot(\n",
|
264
|
+
" '8ea1cb5a-9840-4791-9fae-8d64678093ec',\n",
|
265
|
+
" [{\"type\":\"table\",\"header\":{\"values\":[\"date\",\"moto_koji\",\"moromi_koji\",\"moto\",\"soe\",\"naka\",\"tome\",\"4dan\"]},\"cells\":{\"values\":[[\"02/20\",\"02/21\",\"02/22\",\"02/23\",\"02/24\",\"02/25\",\"02/26\",\"02/27\",\"02/28\",\"02/29\",\"03/01\",\"03/02\",\"03/03\",\"03/04\",\"03/05\",\"03/06\",\"03/07\",\"03/08\",\"03/09\",\"03/10\",\"03/11\",\"03/12\",\"03/13\",\"03/14\",\"03/15\",\"03/16\",\"03/17\",\"03/18\",\"03/19\",\"03/20\",\"03/21\",\"03/22\"],[\"仕3: 21\\u003cbr\\u003e仕4: 18\",\"\",\"\",\"\",\"\",\"\",\"\",\"仕5: 21\\u003cbr\\u003e仕6: 18\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[\"\",\"\",\"\",\"\",\"仕1: 140\",\"\",\"\",\"仕2: 128\",\"\",\"\",\"\",\"仕3: 183\",\"\",\"\",\"仕4: 162\",\"\",\"\",\"\",\"仕5: 183\",\"\",\"\",\"仕6: 162\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[\"\",\"\",\"\",\"\",\"\",\"仕3: 42\\u003cbr\\u003e仕4: 41\",\"\",\"\",\"\",\"\",\"仕1: 0\",\"\",\"仕2: 0\\u003cbr\\u003e仕5: 42\\u003cbr\\u003e仕6: 41\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"仕1: 65\",\"\",\"仕2: 60\",\"\",\"\",\"\",\"\",\"仕3: 98\",\"\",\"仕4: 90\",\"\",\"\",\"\",\"\",\"仕5: 98\",\"\",\"仕6: 90\",\"\",\"\",\"\",\"\"],[\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"仕1: 150\",\"\",\"\",\"仕2: 138\",\"\",\"\",\"\",\"仕3: 190\",\"\",\"仕4: 194\",\"\",\"\",\"\",\"\",\"仕5: 190\",\"\",\"仕6: 194\",\"\",\"\"],[\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"仕1: 245\",\"\",\"\",\"仕2: 225\",\"\",\"\",\"\",\"仕3: 366\",\"\",\"仕4: 324\",\"\",\"\",\"\",\"\",\"仕5: 366\",\"\",\"仕6: 324\",\"\"],[\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"仕4: 72\",\"\",\"\",\"\",\"\",\"\",\"\",\"仕6: 72\"]]}}],\n",
|
266
|
+
" {\"height\":1000},\n",
|
267
|
+
" {\"linkText\":\"Export to plot.ly\",\"showLink\":true}\n",
|
268
|
+
")\n",
|
269
|
+
"\n",
|
270
|
+
"window.addEventListener('resize', function() {\n",
|
271
|
+
" Plotly.Plots.resize(document.getElementById('8ea1cb5a-9840-4791-9fae-8d64678093ec'))\n",
|
272
|
+
"})\n",
|
273
|
+
" }) \n",
|
274
|
+
"</script>"
|
275
|
+
],
|
276
|
+
"text/plain": [
|
277
|
+
"#<Plotly::Offline::HTML:0x00007fc7072675c0 @id=\"8ea1cb5a-9840-4791-9fae-8d64678093ec\", @data=[{:type=>:table, :header=>{:values=>[:date, :moto_koji, :moromi_koji, :moto, :soe, :naka, :tome, \"4dan\"]}, :cells=>{:values=>[[\"02/20\", \"02/21\", \"02/22\", \"02/23\", \"02/24\", \"02/25\", \"02/26\", \"02/27\", \"02/28\", \"02/29\", \"03/01\", \"03/02\", \"03/03\", \"03/04\", \"03/05\", \"03/06\", \"03/07\", \"03/08\", \"03/09\", \"03/10\", \"03/11\", \"03/12\", \"03/13\", \"03/14\", \"03/15\", \"03/16\", \"03/17\", \"03/18\", \"03/19\", \"03/20\", \"03/21\", \"03/22\"], [\"仕3: 21<br>仕4: 18\", \"\", \"\", \"\", \"\", \"\", \"\", \"仕5: 21<br>仕6: 18\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\"], [\"\", \"\", \"\", \"\", \"仕1: 140\", \"\", \"\", \"仕2: 128\", \"\", \"\", \"\", \"仕3: 183\", \"\", \"\", \"仕4: 162\", \"\", \"\", \"\", \"仕5: 183\", \"\", \"\", \"仕6: 162\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\"], [\"\", \"\", \"\", \"\", \"\", \"仕3: 42<br>仕4: 41\", \"\", \"\", \"\", \"\", \"仕1: 0\", \"\", \"仕2: 0<br>仕5: 42<br>仕6: 41\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\"], [\"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"仕1: 65\", \"\", \"仕2: 60\", \"\", \"\", \"\", \"\", \"仕3: 98\", \"\", \"仕4: 90\", \"\", \"\", \"\", \"\", \"仕5: 98\", \"\", \"仕6: 90\", \"\", \"\", \"\", \"\"], [\"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"仕1: 150\", \"\", \"\", \"仕2: 138\", \"\", \"\", \"\", \"仕3: 190\", \"\", \"仕4: 194\", \"\", \"\", \"\", \"\", \"仕5: 190\", \"\", \"仕6: 194\", \"\", \"\"], [\"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"仕1: 245\", \"\", \"\", \"仕2: 225\", \"\", \"\", \"\", \"仕3: 366\", \"\", \"仕4: 324\", \"\", \"\", \"\", \"\", \"仕5: 366\", \"\", \"仕6: 324\", \"\"], [\"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"仕4: 72\", \"\", \"\", \"\", \"\", \"\", \"\", \"仕6: 72\"]]}}], @layout={:height=>1000}, @config={:linkText=>\"Export to plot.ly\", :showLink=>true}, @embedded=true>"
|
278
|
+
]
|
279
|
+
},
|
280
|
+
"metadata": {},
|
281
|
+
"output_type": "display_data"
|
282
|
+
},
|
283
|
+
{
|
284
|
+
"data": {
|
285
|
+
"text/plain": [
|
286
|
+
"#<CZTop::Socket::PUB:0x7fc708450a80 last_endpoint=\"tcp://127.0.0.1:52925\">"
|
287
|
+
]
|
288
|
+
},
|
289
|
+
"execution_count": 14,
|
290
|
+
"metadata": {},
|
291
|
+
"output_type": "execute_result"
|
292
|
+
}
|
293
|
+
],
|
294
|
+
"source": [
|
295
|
+
"$LOAD_PATH << File.dirname(__FILE__) + \"/../lib\"\n",
|
296
|
+
"require 'toji'\n",
|
297
|
+
"require 'rbplotly'\n",
|
298
|
+
"\n",
|
299
|
+
"cal = Toji::Schedule::Calendar.new\n",
|
300
|
+
".add(Toji::Schedule::Product.create(\n",
|
301
|
+
" name: \"仕1\",\n",
|
302
|
+
" description: \"姫野国夫による酒母省略仕込\",\n",
|
303
|
+
" recipe: :simple_sokujo_himeno,\n",
|
304
|
+
" scale: 600,\n",
|
305
|
+
" round: 0,\n",
|
306
|
+
" koji_dates: Time.mktime(2020, 2, 24),\n",
|
307
|
+
" rice_dates: Time.mktime(2020, 3, 1),\n",
|
308
|
+
" moto_days: 1,\n",
|
309
|
+
" odori_days: 1\n",
|
310
|
+
"))\n",
|
311
|
+
".add(Toji::Schedule::Product.create(\n",
|
312
|
+
" name: \"仕2\",\n",
|
313
|
+
" description: \"姫野国夫による酒母省略仕込\",\n",
|
314
|
+
" recipe: :simple_sokujo_himeno,\n",
|
315
|
+
" scale: 550,\n",
|
316
|
+
" round: 0,\n",
|
317
|
+
" koji_dates: Time.mktime(2020, 2, 27),\n",
|
318
|
+
" rice_dates: Time.mktime(2020, 3, 3)\n",
|
319
|
+
"))\n",
|
320
|
+
".add(Toji::Schedule::Product.create(\n",
|
321
|
+
" name: \"仕3\",\n",
|
322
|
+
" description: \"灘における仕込配合\",\n",
|
323
|
+
" recipe: :sokujo_nada,\n",
|
324
|
+
" scale: 900,\n",
|
325
|
+
" round: 0,\n",
|
326
|
+
" koji_dates: [Time.mktime(2020, 2, 20), Time.mktime(2020, 3, 2)],\n",
|
327
|
+
" rice_dates: [Time.mktime(2020, 2, 25), Time.mktime(2020, 3, 9)]\n",
|
328
|
+
"))\n",
|
329
|
+
".add(Toji::Schedule::Product.create(\n",
|
330
|
+
" name: \"仕4\",\n",
|
331
|
+
" description: \"酒造教本による標準型仕込配合\",\n",
|
332
|
+
" recipe: :sokujo_textbook,\n",
|
333
|
+
" scale: 900,\n",
|
334
|
+
" round: 0,\n",
|
335
|
+
" koji_dates: [Time.mktime(2020, 2, 20), Time.mktime(2020, 3, 5)],\n",
|
336
|
+
" rice_dates: [Time.mktime(2020, 2, 25), Time.mktime(2020, 3, 11)]\n",
|
337
|
+
"))\n",
|
338
|
+
".add(Toji::Schedule::Product.create(\n",
|
339
|
+
" name: \"仕5\",\n",
|
340
|
+
" description: \"灘における仕込配合\",\n",
|
341
|
+
" recipe: :sokujo_nada,\n",
|
342
|
+
" scale: 900,\n",
|
343
|
+
" round: 0,\n",
|
344
|
+
" koji_dates: [Time.mktime(2020, 2, 27), Time.mktime(2020, 3, 9)],\n",
|
345
|
+
" rice_dates: [Time.mktime(2020, 3, 3), Time.mktime(2020, 3, 16)]\n",
|
346
|
+
"))\n",
|
347
|
+
".add(Toji::Schedule::Product.create(\n",
|
348
|
+
" name: \"仕6\",\n",
|
349
|
+
" description: \"酒造教本による標準型仕込配合\",\n",
|
350
|
+
" recipe: :sokujo_textbook,\n",
|
351
|
+
" scale: 900,\n",
|
352
|
+
" round: 0,\n",
|
353
|
+
" koji_dates: [Time.mktime(2020, 2, 27), Time.mktime(2020, 3, 12)],\n",
|
354
|
+
" rice_dates: [Time.mktime(2020, 3, 3), Time.mktime(2020, 3, 18)]\n",
|
355
|
+
"))\n",
|
356
|
+
"\n",
|
357
|
+
"cal.products.each {|product|\n",
|
358
|
+
" puts \"%s %s\" % [product.name, product.description]\n",
|
359
|
+
" \n",
|
360
|
+
" product.recipe.table.tap {|t|\n",
|
361
|
+
" t.layout.height = 350\n",
|
362
|
+
" }.show\n",
|
363
|
+
"}\n",
|
364
|
+
"\n",
|
365
|
+
"cal.table.tap {|t|\n",
|
366
|
+
" t.layout.height = 1000\n",
|
367
|
+
"}.show"
|
368
|
+
]
|
369
|
+
},
|
370
|
+
{
|
371
|
+
"cell_type": "code",
|
372
|
+
"execution_count": null,
|
373
|
+
"metadata": {},
|
374
|
+
"outputs": [],
|
375
|
+
"source": []
|
376
|
+
}
|
377
|
+
],
|
378
|
+
"metadata": {
|
379
|
+
"kernelspec": {
|
380
|
+
"display_name": "Ruby 2.7.0",
|
381
|
+
"language": "ruby",
|
382
|
+
"name": "ruby"
|
383
|
+
},
|
384
|
+
"language_info": {
|
385
|
+
"file_extension": ".rb",
|
386
|
+
"mimetype": "application/x-ruby",
|
387
|
+
"name": "ruby",
|
388
|
+
"version": "2.6.3"
|
389
|
+
}
|
390
|
+
},
|
391
|
+
"nbformat": 4,
|
392
|
+
"nbformat_minor": 2
|
393
|
+
}
|
data/example/shubo.ipynb
CHANGED
@@ -14,25 +14,58 @@
|
|
14
14
|
" </script>\n",
|
15
15
|
"\n",
|
16
16
|
"\n",
|
17
|
-
"<div id=\"
|
17
|
+
"<div id=\"120dbd7c-f08f-43be-ac74-d8fc2700d1f1\" style=\"height: 100%; width: 100%;\"></div>\n",
|
18
18
|
"\n",
|
19
19
|
"<script>\n",
|
20
20
|
" require(['plotly'], function(Plotly) { \n",
|
21
21
|
"Plotly.newPlot(\n",
|
22
|
-
" '
|
23
|
-
" [{\"x\":[0,3600,86400,172800,172801,259200,259201,345600,345601,432000,518400,604800,691200,777600,864000,950400,1036800,1123200],\"y\":[12.0,20.0,14.0,8.0,11.0,10.0,13.0,12.0,15.0,14.0,20.0,20.0,20.0,20.0,15.0,12.0,10.0,9.0],\"text\":[\"01/01 09:00\",\"01/01 10:00\",\"01/02 09:00\",\"01/03 09:00\",\"01/03 09:00\",\"01/04 09:00\",\"01/04 09:00\",\"01/05 09:00\",\"01/05 09:00\",\"01/06 09:00\",\"01/07 09:00\",\"01/08 09:00\",\"01/09 09:00\",\"01/10 09:00\",\"01/11 09:00\",\"01/12 09:00\",\"01/13 09:00\",\"01/14 09:00\"],\"name\":\"temps\",\"line\":{\"shape\":\"linear\"}},{\"x\":[
|
22
|
+
" '120dbd7c-f08f-43be-ac74-d8fc2700d1f1',\n",
|
23
|
+
" [{\"x\":[0,3600,86400,172800,172801,259200,259201,345600,345601,432000,518400,604800,691200,777600,864000,950400,1036800,1123200],\"y\":[12.0,20.0,14.0,8.0,11.0,10.0,13.0,12.0,15.0,14.0,20.0,20.0,20.0,20.0,15.0,12.0,10.0,9.0],\"text\":[\"01/01 09:00\",\"01/01 10:00\",\"01/02 09:00\",\"01/03 09:00\",\"01/03 09:00\",\"01/04 09:00\",\"01/04 09:00\",\"01/05 09:00\",\"01/05 09:00\",\"01/06 09:00\",\"01/07 09:00\",\"01/08 09:00\",\"01/09 09:00\",\"01/10 09:00\",\"01/11 09:00\",\"01/12 09:00\",\"01/13 09:00\",\"01/14 09:00\"],\"name\":\"temps\",\"line\":{\"shape\":\"linear\"}},{\"x\":[86400,172800,259200,345600,432000,518400,604800,691200,777600,864000,950400,1036800,1123200],\"y\":[15.0,16.0,16.5,17.0,17.0,17.0,14.0,12.0,9.0,8.0,7.0,6.0,5.0],\"text\":[\"01/02 09:00\",\"01/03 09:00\",\"01/04 09:00\",\"01/05 09:00\",\"01/06 09:00\",\"01/07 09:00\",\"01/08 09:00\",\"01/09 09:00\",\"01/10 09:00\",\"01/11 09:00\",\"01/12 09:00\",\"01/13 09:00\",\"01/14 09:00\"],\"name\":\"baume\",\"line\":{\"shape\":\"linear\"}},{\"x\":[0,3600,86400,172800,259200,345600,432000,518400,604800,691200,777600,864000,950400,1036800,1123200],\"y\":[13.0,13.0,13.0,13.0,13.5,13.5,14.0,14.5,15.5,16.0,16.0,16.5,17.0,17.5,17.5],\"text\":[\"01/01 09:00\",\"01/01 10:00\",\"01/02 09:00\",\"01/03 09:00\",\"01/04 09:00\",\"01/05 09:00\",\"01/06 09:00\",\"01/07 09:00\",\"01/08 09:00\",\"01/09 09:00\",\"01/10 09:00\",\"01/11 09:00\",\"01/12 09:00\",\"01/13 09:00\",\"01/14 09:00\"],\"name\":\"acid\",\"line\":{\"shape\":\"linear\"}}],\n",
|
24
24
|
" {\"xaxis\":{\"dtick\":86400,\"tickvals\":[0,86400,172800,259200,345600,432000,518400,604800,691200,777600,864000,950400,1036800,1123200],\"ticktext\":[1,2,3,4,5,6,7,8,9,10,11,12,13,14]},\"annotations\":[{\"x\":0,\"y\":12.0,\"xref\":\"x\",\"yref\":\"y\",\"text\":\"mizukoji\",\"showarrow\":true,\"arrowhead\":1,\"ax\":0,\"ay\":-40},{\"x\":3600,\"y\":20.0,\"xref\":\"x\",\"yref\":\"y\",\"text\":\"shikomi\",\"showarrow\":true,\"arrowhead\":1,\"ax\":0,\"ay\":-40},{\"x\":86400,\"y\":14.0,\"xref\":\"x\",\"yref\":\"y\",\"text\":\"utase\",\"showarrow\":true,\"arrowhead\":1,\"ax\":0,\"ay\":-40},{\"x\":777600,\"y\":20.0,\"xref\":\"x\",\"yref\":\"y\",\"text\":\"wake\",\"showarrow\":true,\"arrowhead\":1,\"ax\":0,\"ay\":-40}]},\n",
|
25
25
|
" {\"linkText\":\"Export to plot.ly\",\"showLink\":true}\n",
|
26
26
|
")\n",
|
27
27
|
"\n",
|
28
28
|
"window.addEventListener('resize', function() {\n",
|
29
|
-
" Plotly.Plots.resize(document.getElementById('
|
29
|
+
" Plotly.Plots.resize(document.getElementById('120dbd7c-f08f-43be-ac74-d8fc2700d1f1'))\n",
|
30
30
|
"})\n",
|
31
31
|
" }) \n",
|
32
32
|
"</script>"
|
33
33
|
],
|
34
34
|
"text/plain": [
|
35
|
-
"#<Plotly::Offline::HTML:
|
35
|
+
"#<Plotly::Offline::HTML:0x00007fc676d59eb0 @id=\"120dbd7c-f08f-43be-ac74-d8fc2700d1f1\", @data=[{:x=>[0, 3600, 86400, 172800, 172801, 259200, 259201, 345600, 345601, 432000, 518400, 604800, 691200, 777600, 864000, 950400, 1036800, 1123200], :y=>[12.0, 20.0, 14.0, 8.0, 11.0, 10.0, 13.0, 12.0, 15.0, 14.0, 20.0, 20.0, 20.0, 20.0, 15.0, 12.0, 10.0, 9.0], :text=>[\"01/01 09:00\", \"01/01 10:00\", \"01/02 09:00\", \"01/03 09:00\", \"01/03 09:00\", \"01/04 09:00\", \"01/04 09:00\", \"01/05 09:00\", \"01/05 09:00\", \"01/06 09:00\", \"01/07 09:00\", \"01/08 09:00\", \"01/09 09:00\", \"01/10 09:00\", \"01/11 09:00\", \"01/12 09:00\", \"01/13 09:00\", \"01/14 09:00\"], :name=>:temps, :line=>{:shape=>:linear}}, {:x=>[86400, 172800, 259200, 345600, 432000, 518400, 604800, 691200, 777600, 864000, 950400, 1036800, 1123200], :y=>[15.0, 16.0, 16.5, 17.0, 17.0, 17.0, 14.0, 12.0, 9.0, 8.0, 7.0, 6.0, 5.0], :text=>[\"01/02 09:00\", \"01/03 09:00\", \"01/04 09:00\", \"01/05 09:00\", \"01/06 09:00\", \"01/07 09:00\", \"01/08 09:00\", \"01/09 09:00\", \"01/10 09:00\", \"01/11 09:00\", \"01/12 09:00\", \"01/13 09:00\", \"01/14 09:00\"], :name=>:baume, :line=>{:shape=>:linear}}, {:x=>[0, 3600, 86400, 172800, 259200, 345600, 432000, 518400, 604800, 691200, 777600, 864000, 950400, 1036800, 1123200], :y=>[13.0, 13.0, 13.0, 13.0, 13.5, 13.5, 14.0, 14.5, 15.5, 16.0, 16.0, 16.5, 17.0, 17.5, 17.5], :text=>[\"01/01 09:00\", \"01/01 10:00\", \"01/02 09:00\", \"01/03 09:00\", \"01/04 09:00\", \"01/05 09:00\", \"01/06 09:00\", \"01/07 09:00\", \"01/08 09:00\", \"01/09 09:00\", \"01/10 09:00\", \"01/11 09:00\", \"01/12 09:00\", \"01/13 09:00\", \"01/14 09:00\"], :name=>:acid, :line=>{:shape=>:linear}}], @layout={:xaxis=>{:dtick=>86400, :tickvals=>[0, 86400, 172800, 259200, 345600, 432000, 518400, 604800, 691200, 777600, 864000, 950400, 1036800, 1123200], :ticktext=>[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]}, :annotations=>[{:x=>0, :y=>12.0, :xref=>\"x\", :yref=>\"y\", :text=>:mizukoji, :showarrow=>true, :arrowhead=>1, :ax=>0, :ay=>-40}, {:x=>3600, :y=>20.0, :xref=>\"x\", :yref=>\"y\", :text=>:shikomi, :showarrow=>true, :arrowhead=>1, :ax=>0, :ay=>-40}, {:x=>86400, :y=>14.0, :xref=>\"x\", :yref=>\"y\", :text=>:utase, :showarrow=>true, :arrowhead=>1, :ax=>0, :ay=>-40}, {:x=>777600, :y=>20.0, :xref=>\"x\", :yref=>\"y\", :text=>:wake, :showarrow=>true, :arrowhead=>1, :ax=>0, :ay=>-40}]}, @config={:linkText=>\"Export to plot.ly\", :showLink=>true}, @embedded=true>"
|
36
|
+
]
|
37
|
+
},
|
38
|
+
"metadata": {},
|
39
|
+
"output_type": "display_data"
|
40
|
+
},
|
41
|
+
{
|
42
|
+
"data": {
|
43
|
+
"text/html": [
|
44
|
+
"\n",
|
45
|
+
" <script>\n",
|
46
|
+
" requirejs.config({paths: { 'plotly': ['https://cdn.plot.ly/plotly-latest.min'] }})\n",
|
47
|
+
" </script>\n",
|
48
|
+
"\n",
|
49
|
+
"\n",
|
50
|
+
"<div id=\"85ea79c8-0447-4380-8a81-d88a05c82225\" style=\"height: 100%; width: 100%;\"></div>\n",
|
51
|
+
"\n",
|
52
|
+
"<script>\n",
|
53
|
+
" require(['plotly'], function(Plotly) { \n",
|
54
|
+
"Plotly.newPlot(\n",
|
55
|
+
" '85ea79c8-0447-4380-8a81-d88a05c82225',\n",
|
56
|
+
" [{\"type\":\"table\",\"header\":{\"values\":[\"day_label\",\"display_time\",\"mark\",\"temps\",\"display_baume\",\"acid\",\"warmings\"]},\"cells\":{\"values\":[[1,1,2,3,4,5,6,7,8,9,10,11,12,13,14],[\"01/01 09:00\",\"01/01 10:00\",\"01/02 09:00\",\"01/03 09:00\",\"01/04 09:00\",\"01/05 09:00\",\"01/06 09:00\",\"01/07 09:00\",\"01/08 09:00\",\"01/09 09:00\",\"01/10 09:00\",\"01/11 09:00\",\"01/12 09:00\",\"01/13 09:00\",\"01/14 09:00\"],[\"mizukoji\",\"shikomi\",\"utase\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"wake\",\"\",\"\",\"\",\"\"],[\"12.0\",\"20.0\",\"14.0\",\"8.0, 11.0\",\"10.0, 13.0\",\"12.0, 15.0\",\"14.0\",\"20.0\",\"20.0\",\"20.0\",\"20.0\",\"15.0\",\"12.0\",\"10.0\",\"9.0\"],[\"\",\"\",15.0,16.0,16.5,17.0,17.0,17.0,14.0,12.0,9.0,8.0,7.0,6.0,5.0],[13.0,13.0,13.0,13.0,13.5,13.5,14.0,14.5,15.5,16.0,16.0,16.5,17.0,17.5,17.5],[\"\",\"\",\"\",\"daki, anka, mat\",\"daki, anka, mat\",\"daki, anka, mat\",\"daki, anka, mat\",\"daki, anka, mat\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"]]}}],\n",
|
57
|
+
" {\"height\":650},\n",
|
58
|
+
" {\"linkText\":\"Export to plot.ly\",\"showLink\":true}\n",
|
59
|
+
")\n",
|
60
|
+
"\n",
|
61
|
+
"window.addEventListener('resize', function() {\n",
|
62
|
+
" Plotly.Plots.resize(document.getElementById('85ea79c8-0447-4380-8a81-d88a05c82225'))\n",
|
63
|
+
"})\n",
|
64
|
+
" }) \n",
|
65
|
+
"</script>"
|
66
|
+
],
|
67
|
+
"text/plain": [
|
68
|
+
"#<Plotly::Offline::HTML:0x00007fc675970e58 @id=\"85ea79c8-0447-4380-8a81-d88a05c82225\", @data=[{:type=>:table, :header=>{:values=>[:day_label, :display_time, :mark, :temps, :display_baume, :acid, :warmings]}, :cells=>{:values=>[[1, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14], [\"01/01 09:00\", \"01/01 10:00\", \"01/02 09:00\", \"01/03 09:00\", \"01/04 09:00\", \"01/05 09:00\", \"01/06 09:00\", \"01/07 09:00\", \"01/08 09:00\", \"01/09 09:00\", \"01/10 09:00\", \"01/11 09:00\", \"01/12 09:00\", \"01/13 09:00\", \"01/14 09:00\"], [:mizukoji, :shikomi, :utase, \"\", \"\", \"\", \"\", \"\", \"\", \"\", :wake, \"\", \"\", \"\", \"\"], [\"12.0\", \"20.0\", \"14.0\", \"8.0, 11.0\", \"10.0, 13.0\", \"12.0, 15.0\", \"14.0\", \"20.0\", \"20.0\", \"20.0\", \"20.0\", \"15.0\", \"12.0\", \"10.0\", \"9.0\"], [\"\", \"\", 15.0, 16.0, 16.5, 17.0, 17.0, 17.0, 14.0, 12.0, 9.0, 8.0, 7.0, 6.0, 5.0], [13.0, 13.0, 13.0, 13.0, 13.5, 13.5, 14.0, 14.5, 15.5, 16.0, 16.0, 16.5, 17.0, 17.5, 17.5], [\"\", \"\", \"\", \"daki, anka, mat\", \"daki, anka, mat\", \"daki, anka, mat\", \"daki, anka, mat\", \"daki, anka, mat\", \"\", \"\", \"\", \"\", \"\", \"\", \"\"]]}}], @layout={:height=>650}, @config={:linkText=>\"Export to plot.ly\", :showLink=>true}, @embedded=true>"
|
36
69
|
]
|
37
70
|
},
|
38
71
|
"metadata": {},
|
@@ -41,7 +74,7 @@
|
|
41
74
|
{
|
42
75
|
"data": {
|
43
76
|
"text/plain": [
|
44
|
-
"#<CZTop::Socket::PUB:
|
77
|
+
"#<CZTop::Socket::PUB:0x7fc679ab2330 last_endpoint=\"tcp://127.0.0.1:55975\">"
|
45
78
|
]
|
46
79
|
},
|
47
80
|
"execution_count": 1,
|
@@ -55,7 +88,10 @@
|
|
55
88
|
"require 'rbplotly'\n",
|
56
89
|
"\n",
|
57
90
|
"shubo = Toji::Brew::Shubo.template\n",
|
58
|
-
"shubo.progress.plot.show"
|
91
|
+
"shubo.progress.plot.show\n",
|
92
|
+
"shubo.progress.table.tap {|t|\n",
|
93
|
+
" t.layout.height = 650\n",
|
94
|
+
"}.show"
|
59
95
|
]
|
60
96
|
},
|
61
97
|
{
|
@@ -1,15 +1,17 @@
|
|
1
1
|
require 'toji'
|
2
2
|
require 'terminal-table'
|
3
3
|
|
4
|
-
|
4
|
+
STEP_NAMES = ["酒母", "初添", "仲添", "留添"].freeze
|
5
|
+
|
6
|
+
recipe = Toji::Recipe::ThreeStepMashing::TEMPLATES[:sokujo_nada].scale(900)
|
5
7
|
|
6
8
|
table = Terminal::Table.new do |t|
|
7
|
-
t << [""] +
|
9
|
+
t << [""] + STEP_NAMES
|
8
10
|
t << :separator
|
9
11
|
t << ["[原料]"]
|
10
12
|
t << ["酵母(g)", recipe.yeast.yeast&.round(2)]
|
11
13
|
t << ["酵母吸水", recipe.yeast.water&.round(2)]
|
12
|
-
t << ["乳酸(ml)"
|
14
|
+
t << ["乳酸(ml)"] + recipe.steps.map(&:lactic_acid).map{|v| v&.round(6)}
|
13
15
|
t << ["掛米(g)"] + recipe.steps.map(&:rice).map(&:raw).map{|v| v&.round(2)}
|
14
16
|
t << ["麹米(g)"] + recipe.steps.map(&:koji).map(&:raw).map{|v| v&.round(2)}
|
15
17
|
t << ["汲水(ml)"] + recipe.steps.map(&:water).map{|v| v&.round(2)}
|
@@ -31,7 +33,7 @@ puts
|
|
31
33
|
|
32
34
|
puts "掛米"
|
33
35
|
table = Terminal::Table.new do |t|
|
34
|
-
t << ["工程", "原料"] +
|
36
|
+
t << ["工程", "原料"] + STEP_NAMES
|
35
37
|
t << :separator
|
36
38
|
t << ["洗米・浸漬", "白米(g)"] + recipe.steps.map(&:rice).map(&:raw).map{|v| v&.round(2)}
|
37
39
|
t << ["", "吸水増加量(ml)"] + recipe.steps.map(&:rice).map(&:soaking_water).map{|v| v&.round(2)}
|
@@ -46,7 +48,7 @@ puts
|
|
46
48
|
|
47
49
|
puts "麹"
|
48
50
|
table = Terminal::Table.new do |t|
|
49
|
-
t << ["工程", "原料"] +
|
51
|
+
t << ["工程", "原料"] + STEP_NAMES
|
50
52
|
t << :separator
|
51
53
|
t << ["洗米・浸漬", "白米(g)"] + recipe.steps.map(&:koji).map(&:raw).map{|v| v&.round(2)}
|
52
54
|
t << ["", "吸水増加量(ml)"] + recipe.steps.map(&:koji).map(&:soaking_water).map{|v| v&.round(2)}
|