137 refreshIntervalId = setInterval(function(){ |
148 refreshIntervalId = setInterval(function(){ |
138 dataAdapter.dataBind(); |
149 dataAdapter.dataBind(); |
139 }, 30000); |
150 }, 30000); |
140 |
151 |
141 } else if (estr.indexOf("fermenter-", 0) == 0) { |
152 } else if (estr.indexOf("fermenter-", 0) == 0) { |
142 var uuid = estr.substr(10); |
153 // Load and show a fermenter. |
143 $("#ContentPanel").html("<div style='margin: 10px;'>" + uuid + "</div>"); |
154 // The parameter is: fermenter-36d4d030-4d62-4f2f-a96b-472e643687f7 |
|
155 var gaugeoptions = { |
|
156 min: -5, max: 35, width: 275, height: 275, |
|
157 ranges: [{ startValue: -5, endValue: 0, style: { fill: '#3399FF', stroke: '#3399FF' }, endWidth: 10, startWidth: 10 }, |
|
158 { startValue: 0, endValue: 16, style: { fill: '#00CC33', stroke: '#00CC33' }, endWidth: 10, startWidth: 10 }, |
|
159 { startValue: 16, endValue: 24, style: { fill: '#FCA76A', stroke: '#FCA76A' }, endWidth: 10, startWidth: 10 }, |
|
160 { startValue: 24, endValue: 35, style: { fill: '#FC6A6A', stroke: '#FC6A6A' }, endWidth: 10, startWidth: 10 }], |
|
161 ticksMinor: { interval: 1, size: '5%' }, |
|
162 ticksMajor: { interval: 5, size: '9%' }, |
|
163 labels: { interval: 5 }, |
|
164 style: { fill: '#eeeeee', stroke: '#666666' }, |
|
165 value: 0, |
|
166 colorScheme: 'scheme05', |
|
167 animationDuration: 1200 |
|
168 }; |
|
169 var gaugeSmalloptions = { |
|
170 min: -20, max: 25, width: 150, height: 150, |
|
171 ranges: [{ startValue: -20, endValue: 0, startWidth: 5, endWidth: 5, style: { fill: '#3399FF', stroke: '#3399FF' }}, |
|
172 { startValue: 0, endValue: 25, startWidth: 5, endWidth: 5, style: { fill: '#FC6A6A', stroke: '#FC6A6A' }}], |
|
173 ticksMinor: { interval: 1, size: '5%' }, |
|
174 ticksMajor: { interval: 5, size: '9%' }, |
|
175 labels: { interval: 5 }, |
|
176 style: { fill: '#eeeeee', stroke: '#666666' }, |
|
177 value: 0, |
|
178 colorScheme: 'scheme05', |
|
179 animationDuration: 1200, |
|
180 caption: { value: 'Chiller', position: 'bottom', offset: [0, 10] } |
|
181 }; |
|
182 $("#fermentor_thermometers").show(); |
|
183 $("#gaugeContainer_air").show(); |
|
184 $("#gaugeContainer_air").jqxGauge( gaugeoptions ); |
|
185 $("#gaugeContainer_air").jqxGauge( { caption: { value: 'Air', position: 'bottom', offset: [0, 10] }} ); |
|
186 $("#gaugeContainer_beer").show(); |
|
187 $("#gaugeContainer_beer").jqxGauge( gaugeoptions ); |
|
188 $("#gaugeContainer_beer").jqxGauge( { caption: { value: 'Beer', position: 'bottom', offset: [0, 10] }} ); |
|
189 $("#gaugeContainer_chiller").show(); |
|
190 $("#gaugeContainer_chiller").jqxGauge( gaugeSmalloptions ); |
|
191 var uuid = estr.substr(10); |
|
192 var url = "getfermenter.php?uuid='" + uuid + "'"; |
|
193 var source = { |
|
194 datatype: "json", |
|
195 datafields: [ |
|
196 { name: 'record', type: 'int' }, |
|
197 { name: 'uuid', type: 'string' }, |
|
198 { name: 'alias', type: 'string' }, |
|
199 { name: 'node', type: 'string' }, |
|
200 { name: 'online', type: 'bool' }, |
|
201 { name: 'beercode', type: 'string' }, |
|
202 { name: 'beername', type: 'string' }, |
|
203 { name: 'air_address', type: 'string' }, |
|
204 { name: 'air_state', type: 'string' }, |
|
205 { name: 'air_temperature', type: 'float' }, |
|
206 { name: 'beer_address', type: 'string' }, |
|
207 { name: 'beer_state', type: 'string' }, |
|
208 { name: 'beer_temperature', type: 'float' }, |
|
209 { name: 'chiller_address', type: 'string' }, |
|
210 { name: 'chiller_state', type: 'string' }, |
|
211 { name: 'chiller_temperature', type: 'float' }, |
|
212 { name: 'heater_address', type: 'string' }, |
|
213 { name: 'heater_state', type: 'int' }, |
|
214 { name: 'heater_usage', type: 'int' }, |
|
215 { name: 'cooler_address', type: 'string' }, |
|
216 { name: 'cooler_state', type: 'int' }, |
|
217 { name: 'cooler_usage', type: 'int' }, |
|
218 { name: 'fan_address', type: 'string' }, |
|
219 { name: 'fan_state', type: 'int' }, |
|
220 { name: 'fan_usage', type: 'int' }, |
|
221 { name: 'light_address', type: 'string' }, |
|
222 { name: 'light_state', type: 'int' }, |
|
223 { name: 'light_usage', type: 'int' }, |
|
224 { name: 'door_address', type: 'string' }, |
|
225 { name: 'door_state', type: 'int' }, |
|
226 { name: 'psu_address', type: 'string' }, |
|
227 { name: 'psu_state', type: 'int' }, |
|
228 { name: 'mode', type: 'string' }, |
|
229 { name: 'alarm', type: 'int' }, |
|
230 { name: 'setpoint_high', type: 'float' }, |
|
231 { name: 'setpoint_low', type: 'float' }, |
|
232 { name: 'profile_uuid', type: 'string' }, |
|
233 { name: 'profile_name', type: 'string' }, |
|
234 { name: 'profile_state', type: 'string' }, |
|
235 { name: 'profile_precent', type: 'int' }, |
|
236 { name: 'profile_inittemp_high', type: 'float' }, |
|
237 { name: 'profile_inittemp_low', type: 'float' }, |
|
238 { name: 'profile_steps', type: 'string' }, |
|
239 { name: 'stage', type: 'string' } |
|
240 ], |
|
241 id: 'record', |
|
242 url: url |
|
243 }; |
|
244 var dataAdapter = new $.jqx.dataAdapter(source, { |
|
245 loadComplete: function (records) { |
|
246 var record = dataAdapter.records[0]; |
|
247 var oline = (record.online) ? "On-line" : "Off-line"; |
|
248 var html = "<div id='fermenter_table'>"; |
|
249 html += "<table style='width: 100%; padding: 10px;'>"; |
|
250 html += "<tr><th colspan=2>Klimaatkast overzicht</th></tr>"; |
|
251 html += "<tr><td>Uuid</td><td>" + record.uuid + "</td></tr>"; |
|
252 html += "<tr><td>Systeem</td><td>" + record.node + "/" + record.alias + " " + oline + "</td></tr>"; |
|
253 html += "<tr><td>Bier</td><td>" + record.beercode + " - " + record.beername + "</td></tr>"; |
|
254 html += "<tr><td>Werking</td><td>" + record.mode + "</td></tr>"; |
|
255 html += "<tr><td>Fase</td><td>" + record.stage + "</td></tr>" |
|
256 html += "</<table>"; |
|
257 html += "</div>"; |
|
258 $("#ContentPanel").html(html); |
|
259 $('#gaugeContainer_air').jqxGauge({ value: record.air_temperature }); |
|
260 if (record.online && (record.air_state == "OK")) { |
|
261 $("#gaugeContainer_air").jqxGauge({ disabled: false }); |
|
262 } else { |
|
263 $("#gaugeContainer_air").jqxGauge({ disabled: true }); |
|
264 } |
|
265 $('#gaugeContainer_beer').jqxGauge({ value: record.beer_temperature }); |
|
266 if (record.online && (record.beer_state == "OK")) { |
|
267 $("#gaugeContainer_beer").jqxGauge({ disabled: false }); |
|
268 } else { |
|
269 $("#gaugeContainer_beer").jqxGauge({ disabled: true }); |
|
270 } |
|
271 $("#gaugeContainer_chiller").jqxGauge({ value: record.chiller_temperature }); |
|
272 if (record.online && (record.chiller_state == "OK")) { |
|
273 $("#gaugeContainer_chiller").jqxGauge({ disabled: false }); |
|
274 } else { |
|
275 $("#gaugeContainer_chiller").jqxGauge({ disabled: true }); |
|
276 } |
|
277 } |
|
278 }); |
|
279 // Get the data immediatly and then at regular intervals to refresh. |
|
280 dataAdapter.dataBind(); |
|
281 refreshIntervalId = setInterval(function(){ |
|
282 dataAdapter.dataBind(); |
|
283 }, 10000); |
|
284 |
144 } else if (event.args.element.id == "Nodes") { |
285 } else if (event.args.element.id == "Nodes") { |
145 $("#ContentPanel").html("<div></div"); |
286 $("#ContentPanel").html("<div></div"); |
146 } else { |
287 } else { |
147 $("#ContentPanel").html("<div style='margin: 10px;'>" + event.args.element.id + "</div>"); |
288 $("#ContentPanel").html("<div style='margin: 10px;'>" + event.args.element.id + "</div>"); |
148 } |
289 } |