fix windrose and other tarting
[dweather.git] / templates / index.html.ep
index d54833ddb60467769593123512d9736da5c81ea7..2dd444fe94f7404d6aa13e8ce7febd4385a9188d 100644 (file)
@@ -21,9 +21,9 @@
                <script>
                var ws;
                var daychart;
-               var daychart_days = 5;
+               var daychart_days = <%= $main::histdays %>;
                var windrose;
-               var windrose_mins = 10;
+               var windrose_mins = <%= $main::windmins %>;
                var windspeed;
                var winddir;
 
                                                if ("h" in js) {
                                                        fill_daychart(js, daychart_days);
                                                }
-                                               if ("r" in js) {
-//                                                     if (js.t > lastt + 15) {
-                                                               if ("Wind" in js.r) {
-                                                                       lastwind = js.r.Wind;
-                                                               } else {
-                                                                       js.r.Wind = lastwind;
-                                                               }
-                                                               if ("Dir" in js.r) {
-                                                                       lastdir = js.r.dir;
-                                                               } else {
-                                                                       js.r.Dir = lastdir;
-                                                               }
-                                                               lastt = js.t;
-                                                               fill_windrose(js, windrose_mins * (60 / 2.5));
-//                                                     }
-                                                       fill_windspeed(js);
-                                                       fill_winddir(js);
+                                               if ("r" in js || "m" in js) {
+                                                       var rr;
+                                                       rr = js.r || js.m;
+                                                       if (!("Dir" in rr)) 
+                                                               rr.Dir = lastdir;
+                                                       if (!("Wind" in rr))
+                                                               rr.Wind = lastwind;
+                                                       fill_windrose(rr, windrose_mins * $updatespermin);
+                                                       fill_windspeed(rr);
+                                                       fill_winddir(rr);
+                                                       lastwind = rr.Wind;
+                                                       lastdir = rr.Dir;
                                                }
                                        }
                                };
                                        floating: true,
                                        backgroundColor: (Highcharts.theme && Highcharts.theme.legendBackgroundColor) || '#FFFFFF'
                                },
+                               exporting: {
+                                       buttons: {
+                                               contextButton: {
+                                                       enabled: false
+                                               }
+                                       }
+                               }, 
                                series: [{
                                        name: 'Rainfall',
                                        type: 'column',
                                        yAxis: 1,
+                                       labels: {
+//                                             enabled: true,
+//                                             format: '{point.y:.1f}', // one decimal
+//                                             rotation: -90,
+                                               overflow: 'justify'
+                                       },
                                        data: [ 
                                            <% $s = "";
                                                   for (@main::last5daysh) { 
                                                      my $r = $main::json->decode($_);
-                                                     $s .=  "[" . $r->{t}*1000 . "," . $r->{h}->{Rain_1h} . "]," if $r;
+                                                     $s .=  "[" . $r->{t}*1000 . "," . $r->{h}->{Rain_1h} . "]," if $r && exists $r->{t} && exists $r->{h}->{Rain_1h};
                                                   }
                                                   chop $s if length $s; 
                                                %><%= $s %>
                                                <% $s = "";
                                                   for (@main::last5daysh) { 
                                                      my $r = $main::json->decode($_);
-                                                     $s .=  "[" . $r->{t}*1000 . "," . $r->{h}->{Pressure} . "]," if $r;
+                                                     $s .=  "[" . $r->{t}*1000 . "," . $r->{h}->{Pressure} . "]," if $r && exists $r->{t} && exists $r->{h}->{Pressure};
                                                   }
                                                   chop $s if length $s; 
                                                %><%= $s %>
                                                <% $s = "";
                                                   for (@main::last5daysh) { 
                                                      my $r = $main::json->decode($_);
-                                                     $s .=  "[" . $r->{t}*1000 . "," . $r->{h}->{Temp_Out} . "]," if $r;
+                                                     $s .=  "[" . $r->{t}*1000 . "," . $r->{h}->{Temp_Out} . "]," if $r && exists $r->{t} && exists $r->{h}->{Temp_Out};
                                                   }
                                                   chop $s if length $s; 
                                                %><%= $s %>
                                                groupPadding: 0
                                        }
                                },
+                               exporting: {
+                                       buttons: {
+                                               contextButton: {
+                                                       enabled: false
+                                               }
+                                       }
+                               }, 
 
                                series: [ {
                                        type: 'scatter',
                                                          if ($r) {
                                                                  $r->{r}->{Dir} ||= $d;
                                                                  $r->{r}->{Wind} ||= $w;
-                                                                 $s .=  "[" . $r->{r}->{Dir} . "," . main::nearest(0.1, $r->{r}->{Wind}*2.23694) . "]," if $r;
+                                                                 $s .=  "[" . $r->{r}->{Dir} . "," . main::nearest(0.1, $r->{r}->{Wind}*2.23694) . "],";
                                                                  $d = $r->{r}->{Dir};
                                                                  $w = $r->{r}->{Wind};
                                                          }
                                                color: '#DF5353' // red
                                        }]
                                },
+                               exporting: {
+                                       buttons: {
+                                               contextButton: {
+                                                       enabled: false
+                                               }
+                                       }
+                               }, 
 
                                series: [{
                                        name: 'Speed',
 
                                pane: {
                                        startAngle: 0,
-                                       endAngle: 359,
+                                       endAngle: 360,
                                        background: [{
                                                backgroundColor: {
                                                        linearGradient: { x1: 0, y1: 0, x2: 0, y2: 1 },
                                // the value axis
                                yAxis: {
                                        min: 0,
-                                       max: 360,
+                                       max: 359,
 
                                        minorTickInterval: 'auto',
                                        minorTickWidth: 1,
                                                text:  '° deg'
                                        },
                                },
+                               exporting: {
+                                       buttons: {
+                                               contextButton: {
+                                                       enabled: false
+                                               }
+                                       }
+                               }, 
 
                                series: [{
                                        name: 'Direction',
 
                var conv = 2.23694;
 
-               function fill_windrose(js, points) {
+               function fill_windrose(rr, points) {
                        var p = windrose.series[0].data.length > points;
-                       var rr = js.r;
-                       windrose.series[0].addPoint([rr.Dir, Math.round(rr.Wind*conv)], true, p);
+                       var v = [rr.Dir, (rr.Wind*conv)];
+                       windrose.series[0].addPoint(v, true, p);
                }
 
-               function fill_windspeed(js) {
-                       var rr = js.r;
+               function fill_windspeed(rr) {
                        var point = windspeed.series[0].points[0];
                        point.update(Math.round(rr.Wind*conv));
                }
 
-               function fill_winddir(js) {
-                       var rr = js.r;
+               function fill_winddir(rr) {
                        var point = winddir.series[0].points[0];
                        point.update(rr.Dir);
                }