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
|
<html>
<head>
<title>Console</title>
<script src="lib/d3-v2.6.1/d3.js" type="text/javascript"></script>
<script src="lib/d3-v2.6.1/d3.time.js" type="text/javascript"></script>
<script src="src/d3.plot.js" type="text/javascript"></script>
<style>
path {
stroke: steelblue;
stroke-width: 2;
fill: none;
}
line {
stroke: black;
}
div.popup {
position: absolute;
border: 2px solid gray;
background-color: #fefefe;
}
div.popup .plot {
margin: 5px;
}
#log {
height: 300px;
overflow-y: scroll;
}
</style>
</head>
<body>
<div id="image">
</div>
<div id="log">
</div>
<script>
var mapping = {
"heizkesselWert" : "heizkreisregler10.betriebsdatenRegler1.kesselTemperatur",
"tempkollektorWert" : "heizkreisregler9.solarDaten.tempKollektor",
"boilerWert" : "feuerungsautomat1.betriebsdatenRegler1.boilerTemperatur"
};
function process(data) {
for (var i in data) {
var row = data[i];
var caption = "[" + d3.format("02d")(row.timestamp) + "] " + row.name + " Value: " + row.value_real + " - " + row.value_string;
d3.select("#log").insert("div", "div").text(caption);
for (var mapping_element_id in mapping) {
var mapping_sensor_name = mapping[mapping_element_id];
if (row.name == mapping_sensor_name) {
d3.select(document.getElementById(mapping_element_id))
.text(""+row.value_real);
}
}
}
}
function reload(time_stop) {
d3.json("../stream/" + time_stop, function(resp) {
if (resp == null) return;
process(resp.data);
reload(resp.time_stop);
});
}
d3.xml("draw.svg", "image/svg+xml", function(xml) {
// Write SVG Data into the DOM
d3.select("#image")[0][0].appendChild(xml.documentElement);
// Create Popup
for (var mapping_element_id in mapping) {
d3.select(document.getElementById(mapping_element_id))
.on("click", function() {
var elem = d3.select( this );
var sensor_name = mapping[elem.attr("id")];
var popup = d3.select("body")
.append("div")
.classed("popup", true)
.style("top", d3.event.clientY-5)
.style("left", d3.event.clientX-5)
.on("click", function() {
d3.select(this).remove();
});
popup.append("div")
.text(sensor_name);
var startdate = (new Date().getTime()/1000) - 7*60*60*24
var enddate = (new Date().getTime()/1000)
var plot = d3.plot(popup);
d3.json("../sensor/"+sensor_name+"/" + startdate + "/" + enddate, function(resp) {
var data = resp.data.map(function(d) {
return [new Date(d[0]), d[1]];
})
plot.draw(data);
});
});
}
d3.json("../all_values", function(resp) {
process(resp.data);
reload(resp.time_stop);
});
});
</script>
</body>
</html>
|