From a449e39853dcd8cf7e7a6fd710291128d88ef793 Mon Sep 17 00:00:00 2001 From: Wesley Moore Date: Sun, 26 Sep 2010 17:18:34 +1000 Subject: [PATCH] Get the weather page layed out respectably --- content/screen.sass | 33 ++++++++++--- content/weather.html | 17 +++++-- output/js/weather.js | 107 +++++++++++++++++++++++++++++++++++++------ 3 files changed, 133 insertions(+), 24 deletions(-) diff --git a/content/screen.sass b/content/screen.sass index ddc3f78..c6e2bfe 100644 --- a/content/screen.sass +++ b/content/screen.sass @@ -419,11 +419,32 @@ table // Weather -body.weather .current - line-height: 24px +body.weather - .temperature - font-family: "Helvetica Neue", Helvetica, "Liberation Sans", "Bitstream Vera Sans", Tahoma, Geneva, Arial, sans-serif - font-weight: 200 - font-size: 36px + #current > .temperature + //margin-left: 1em + + .temperature + font-family: "Helvetica Neue", Helvetica, "Liberation Sans", "Bitstream Vera Sans", Tahoma, Geneva, Arial, sans-serif + font-weight: 200 + + .current + font-size: 36px + figure.forecast + margin: 0 1em 1em 0 + width: 48px + float: left + + .chart + clear: both + + .canvas + width: 100% + height: 320px + + small + display: block + font-size: smaller + margin-top: 1em + color: #999 diff --git a/content/weather.html b/content/weather.html index 458c473..1d75d3c 100644 --- a/content/weather.html +++ b/content/weather.html @@ -1,8 +1,15 @@ +

Temperature

+
Loading Loading
-

Temperature

- -
+
+ + + --> +
+
-

Rainfall

-
+ + +Forecast icons by LavAna \ No newline at end of file diff --git a/output/js/weather.js b/output/js/weather.js index e81399b..63a60db 100644 --- a/output/js/weather.js +++ b/output/js/weather.js @@ -1,12 +1,73 @@ function render_current(o) { - return '
\n\ - ' + (Mojo.escape(Mojo.normalize(o.forecast))) + '\n\ - ' + (Mojo.escape(Mojo.normalize(o.temperature_out))) + '°C\n\ + return '
\n\ +
\n\ + ' + (Mojo.escape(Mojo.normalize(o, \n\ +
Forecast
\n\ +
\n\ + \n\ +
\n\ +
' + (Mojo.escape(Mojo.normalize(o, "temperature"))) + '°C
\n\ +
\n\ + Minimum ' + (Mojo.escape(Mojo.normalize(o, "min_temp"))) + '°C at\n\ + \n\ + Maximum ' + (Mojo.escape(Mojo.normalize(o, "max_temp"))) + '°C at\n\ + \n\ +
\n\ +
\n\
'; }; // {"wind_angle":270,"rel_humidity_in":51,"rain_1h":0,"temperature_out":9.9,"forecast":"Sunny","rain_24h":0,"dewpoint":7.11,"wind_chill":9.9,"temperature_in":20.8,"rel_humidity_out":83,"tendency":"Rising","wind_speed":0,"rel_pressure":970.7,"rain_total":1.55,"datetime":"2010-09-20 11:30:13","wind_direction":"W"} +// forecaset is Rainy, Cloudy or Sunny + +// Return a string of a number padded with leading zeros +function padNumber(n, count) { + if(count === undefined) count = 2; + + var string = n.toString(); + var padding = []; + for(var i = count - string.length; i > 0; i--) { + padding.push('0'); + } + return padding.join('') + string; +} + +function isoString(date) { + // YYYY-MM-DDTHH:MM:SS + if(!date) return ''; + + return [ + [ + date.getUTCFullYear(), + padNumber(date.getUTCMonth() + 1), + padNumber(date.getUTCDate()) + ].join('-'), + 'T', + [ + padNumber(date.getUTCHours()), + padNumber(date.getUTCMinutes()), + padNumber(date.getUTCSeconds()) + ].join(':') + ].join('') +} + +function datetimeString(date) { + var months = ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec']; + return [ + date.getUTCDate(), + months[date.getUTCMonth()], + timeString(date) + ].join(' ') +} + +function timeString(date) { + return [ + padNumber(date.getUTCHours()), + padNumber(date.getUTCMinutes()) + ].join(':') +} + jQuery(function() { jQuery.getJSON("/weather.json", function(data, status) { var count = data.history.length; @@ -15,18 +76,39 @@ jQuery(function() { } // Populate the current conditions - var current_div = render_current(data.current); + var current = { + temperature: data.current.temperature_out, + timestamp: function() { + var d = new Date(data.current.timestamp); + return datetimeString(d); + }, + min_temp: data.current.min.temperature, + min_date: new Date(data.current.min.timestamp), + min_datetime: function() { + return isoString(this.min_date) + }, + minDateString: function() { + return timeString(current.min_date) + }, + max_temp: data.current.max.temperature, + max_date: new Date(data.current.max.timestamp), + max_datetime: function() { + return isoString(this.max_date) + }, + maxDateString: function() { + return timeString(current.max_date) + }, + forecast: data.current.forecast + }; + + var current_div = render_current(current); $('.loading').replaceWith(current_div) // Populate the charts - $('.temperature.chart').each(function() { + $('.temperature.chart .canvas').each(function() { var self = this; var options = { - // series: { - // lines: { show: true }, - // points: { show: true } - // } xaxis: { mode: "time" } @@ -34,7 +116,7 @@ jQuery(function() { jQuery.plot(self, data.history, options); - + /* $("#year").click(function () { $.plot(self, data.history, { xaxis: { @@ -43,7 +125,7 @@ jQuery(function() { // min: (new Date("1990/01/01")).getTime(), // max: (new Date()).getTime() } - + }); }); @@ -66,8 +148,7 @@ jQuery(function() { } }); }); - + */ }); - }); });