diff --git a/netatmo-module/main.js b/netatmo-module/main.js index 8228678..362ce64 100644 --- a/netatmo-module/main.js +++ b/netatmo-module/main.js @@ -1,9 +1,13 @@ var netatmo = { id: 'netatmo', lang: config.lang || 'nl', - params: config && config.netatmo && config.netatmo.params || "access_token=", + location: '.netatmo', + params: "access_token=", access_token: null, - refresh_token: config && config.netatmo && config.netatmo.refresh_token, + refreshToken: config && config.netatmo && config.netatmo.refresh_token, + refreshInterval: config && config.netatmo && config.netatmo.refreshInterval || 1, + hideLoadTimer: config && config.netatmo && config.netatmo.hideLoadTimer, + fadeInterval: 1000, translate:{ sensorType: { 'CO2': 'wi-na', @@ -20,11 +24,17 @@ var netatmo = { auth_endpoint: 'oauth2/token', data_endpoint: 'api/getstationsdata' }, - location: '.netatmo', - fadeInterval: config.weather.fadeInterval || 1000, init: function(){ - netatmo.load.data(); - + netatmo.loader = $('#netatmo-module .loadTimer .loader')[0]; + netatmo.border = $('#netatmo-module .loadTimer .border')[0]; + netatmo.α = 0; + netatmo.t = netatmo.refreshInterval * 60 * 1000 / 360; + if(netatmo.hideLoadTimer){ + $(".loadTimer").hide(); + } + // run timer + netatmo.update.load(); + // add string format method if (!String.prototype.format) { String.prototype.format = function() { var args = arguments; @@ -37,38 +47,64 @@ var netatmo = { }; } }, + update: { + load: function(){ + return Q.fcall( + netatmo.load.token, netatmo.render.error + ).then( + netatmo.load.data, netatmo.render.error + ).then( + netatmo.render.all + ).then( + netatmo.update.wait + );//.done(); + }, + wait: function(){ + netatmo.α++; + netatmo.α %= 360; + var r = ( netatmo.α * Math.PI / 180 ) + , x = Math.sin( r ) * 125 + , y = Math.cos( r ) * - 125 + , mid = ( netatmo.α > 180 ) ? 1 : 0 + , anim = 'M 0 0 v -125 A 125 125 1 ' + + mid + ' 1 ' + + x + ' ' + + y + ' z'; + netatmo.loader.setAttribute( 'd', anim ); + netatmo.border.setAttribute( 'd', anim ); + if(r === 0){ + // refresh data + netatmo.update.load(); + }else{ + // wait further + setTimeout(netatmo.update.wait, netatmo.t); + } + } + }, load: { - data: function(){ - Q.fcall(function(){ - // call for token - return Q( - $.ajax({ - type: 'POST', - url: netatmo.api.base + netatmo.api.auth_endpoint, - data: 'grant_type=refresh_token' - +'&refresh_token='+netatmo.refresh_token - +'&client_id='+config.netatmo.client_id - +'&client_secret='+config.netatmo.client_secret - }) - ); - }, function(reason){ - console.log("error " +reason); - }).then(function(data){ - // call for station data - console.log("Done: "+data); - netatmo.refresh_token = data.refresh_token; - netatmo.access_token = data.access_token; - return Q( - $.ajax({ - url: netatmo.api.base + netatmo.api.data_endpoint, - data: netatmo.params + netatmo.access_token - }) - ); - }, function(reason){ - console.log("error " +reason); - }).then(function(data){ - netatmo.render.all(data); - }).done(); + token: function(){ + return Q( + $.ajax({ + type: 'POST', + url: netatmo.api.base + netatmo.api.auth_endpoint, + data: 'grant_type=refresh_token' + +'&refresh_token='+netatmo.refreshToken + +'&client_id='+config.netatmo.client_id + +'&client_secret='+config.netatmo.client_secret + }) + ); + }, + data: function(data){ + // call for station data + console.log("Netatmo-Module: token loaded "+data.access_token); + netatmo.refreshToken = data.refresh_token; + netatmo.accessToken = data.access_token; + return Q( + $.ajax({ + url: netatmo.api.base + netatmo.api.data_endpoint, + data: netatmo.params + netatmo.accessToken + }) + ); } }, html:{ @@ -76,12 +112,12 @@ var netatmo = { module: '