summaryrefslogtreecommitdiff
path: root/ebus/webapp/static/console.html
blob: 054d5d4ecec95e57477b5233a590c004e677851b (plain)
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
<html>
<head>
    <script src="lib/d3-v2.6.1/d3.js"></script>
    <style>
        path {
            stroke: steelblue;
            stroke-width: 2;
            fill: none;
        }

        line {
            stroke: black;
        }
        div.popup {
            position: absolute;
            border: 2px solid gray;
            background-color: yellow;
        }
        #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 timeToString(timestamp) {
        var f = d3.format("02d");
        var d = new Date();
        return f(d.getHours()) + ":" + f(d.getMinutes()) + ":" + f(d.getSeconds());
    }
    function log(data) {
        for (var i in data) {
                var row = data[i];
                var caption = "[" + timeToString(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("#" + mapping_element_id).text("" + row.value_real);
                    }
                }
            }
    }

    function reload(time_stop) {
        d3.json("../stream/" + time_stop, function(resp) {
            log(resp.data);
            reload(resp.time_stop);
        });
    }

    d3.xml("draw.svg", "image/svg+xml", function(xml) {
        // Put SVG Data into the DOM
        d3.select("#image")[0][0].appendChild(xml.documentElement);
        // Create Popup
        for (var mapping_element_id in mapping) {
            d3.select("#" + 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 w = 550, h = 200, margin = 20;
                var plot = popup.append("svg:svg")
                            .attr("width", w)
                            .attr("height", h);

                var startdate = (new Date().getTime()/1000) - 1*60*60*24
                var enddate = (new Date().getTime()/1000)
                d3.json("../sensor/"+sensor_name+"/" + startdate + "/" + enddate, function(resp) {
                    var y = d3.scale.linear()
                        .domain([0, d3.max(resp.data, function(d){return d[1];})])
                        .range([0+margin, h-margin]);
                    var x = d3.scale.linear()
                        .domain([0, resp.data.length])
                        .range([0+margin, w-margin]);

                    var g = plot.append("svg:g")
                            .attr("transform", "translate(0, "+h+")");

                    var line = d3.svg.line()
                                .x(function(d,i){return x(i); })
                                .y(function(d) {return -1 * y(d[1]);});

                    g.append("svg:path")
                        .attr("d", line(resp.data));
                });
            });
        }

        d3.json("../all_values", function(resp) {
            log(resp.data);

            d3.json("../stream", function(resp) {
                log(resp.data);
                reload(resp.time_stop);
            });
        });
    });
</script>
</body>
</html>