I Sant Andreu – Weathercloud
Barcelona
°C
- m/s
- hPa
- m
Direcció del vent
Direcció mitjana del vent
Distribució del vent
Velocitat mitjana del vent
Temperatura (°C)
Humitat (%)
Pressió atmosfèrica (hPa)
Velocitat del vent (m/s)
Pluja (mm)
var minSamples = 12;
var dayName = ["0 dia","0 dies"]; var evolutionLoaded = false;
var units = { temp:'°C', bar:'hPa', wspd:'m/s', rain:'mm' };
var standardRows = function(data){ var rows = [['ts','data1','data2','data3']]; var cell;
for(var date in data){ cell = [+date, null, null, null]; for(var variable in data[date]){ if(data[date][variable]['samples'] != null && data[date][variable]['samples'] > minSamples){
if(data[date][variable]['stats']['min'] != null) cell[1] = (data[date][variable]['stats']['min']).toFixed(1);
if(data[date][variable]['stats']['sum'] != null) cell[2] = (data[date][variable]['stats']['sum']/data[date][variable]['samples']).toFixed(1);
if(data[date][variable]['stats']['max'] != null) cell[3] = (data[date][variable]['stats']['max']).toFixed(1);
} } rows.push(cell); } return rows; }
var _zeros = { bar:1, rain:1};
var variables = { temp:{ id:101, chart:{}, unit: {data1: units.temp , data2: units.temp, data3: units.temp}, range:{ min: null, max: null }, padding:{top: 5, bottom: 5}, colors:{ data1: '#D97171', data2: '#BB0000', data3: '#8C0000'}, types:{ data1: 'spline', data2: 'spline', data3: 'spline'}, names:{ data1:"Mín", data2:"Mitjana", data3:"Màx"}, stats:function(data){ $('#stats-101-min').html((data['min']).toFixed(1)+' '+units.temp); $('#stats-101-mean').html((data['sum']/data['samples']).toFixed(1)+' '+units.temp); $('#stats-101-max').html((data['max']).toFixed(1)+' '+units.temp); }, rows:standardRows }, hum:{ id:201, chart:{}, unit: {data1: '%' , data2: '%', data3: '%'}, range:{ min:0, max:100 }, padding:{top: 5, bottom: 5}, colors:{ data1: '#85C9DD', data2: '#49AFCD', data3: '#368399'}, types:{ data1: 'spline', data2:'spline', data3: 'spline'}, names:{ data1:"Mín", data2:"Mitjana", data3:"Màx"}, stats:function(data){ $('#stats-201-min').html((data['min']).toFixed(0)+' %'); $('#stats-201-mean').html((data['sum']/data['samples']).toFixed(0)+' %'); $('#stats-201-max').html((data['max']).toFixed(0)+' %'); }, rows:standardRows }, bar:{ id:701, chart:{}, unit: {data1: units.bar , data2: units.bar, data3: units.bar}, range:{ min:null, max:null }, padding:{top: 20, bottom: 20}, colors:{ data1: '#A4A4BB', data2: '#777799', data3: '#595972'}, types:{ data1: 'spline', data2:'spline', data3: 'spline'}, names:{ data1:"Mín", data2:"Mitjana", data3:"Màx"}, stats:function(data){ $('#stats-701-min').html((data['min']).toFixed(_zeros.bar)+' '+units.bar); $('#stats-701-mean').html((data['sum']/data['samples']).toFixed(_zeros.bar)+' '+units.bar); $('#stats-701-max').html((data['max']).toFixed(_zeros.bar)+' '+units.bar); }, rows:function(data){ var rows = [['ts','data1','data2','data3']]; var cell;
for(var date in data){ cell = [+date, null, null, null]; for(var variable in data[date]){ if(data[date][variable]['samples'] != null && data[date][variable]['samples'] > minSamples){
if(data[date][variable]['stats']['min'] != null) cell[1] = (data[date][variable]['stats']['min']).toFixed(_zeros.bar);
if(data[date][variable]['stats']['sum'] != null) cell[2] = (data[date][variable]['stats']['sum']/data[date][variable]['samples']).toFixed(_zeros.bar);
if(data[date][variable]['stats']['max'] != null) cell[3] = (data[date][variable]['stats']['max']).toFixed(_zeros.bar);
} } rows.push(cell); } return rows; } }, wspd:{ id:541, chart:{}, unit: {data1: units.wspd , data2: units.wspd, data3: units.wspd}, range:{ min:0, max:null }, padding:{top: 10, bottom: 5}, colors:{ data1: '#55AFD1', data2: '#0088BB', data3: '#00668C'}, types:{ data1: 'spline', data2:'spline', data3: 'spline'}, names:{ data1:"Mín", data2:"Mitjana", data3:"Màx"}, stats:function(data){ $('#stats-541-min').html((data['min']).toFixed(1)+' '+units.wspd); $('#stats-541-mean').html((data['sum']/data['samples']).toFixed(1)+' '+units.wspd); $('#stats-541-max').html((data['max']).toFixed(1)+' '+units.wspd); }, rows:standardRows }, rain:{ id:801, chart:{}, unit: {data1: units.rain}, range:{ min:0, max:null }, padding:{top: 10, bottom: 0}, colors:{ data1: '#49AFCD'}, types:{ data1: 'bar'}, names:{ data1:"Total"}, stats:function(data){ var drought = (data['drought']/24/6).toFixed(0); var droughtString;
if(drought == 1) droughtString = dayName[0].replace("0",drought); else if(drought > 30) droughtString = dayName[1].replace("0",'>30'); else droughtString = dayName[1].replace("0",drought);
$('#stats-801-drought').html(droughtString); $('#stats-801-total').html((data['total']).toFixed(_zeros.rain)+' '+units.rain); $('#stats-801-max').html((data.max.value).toFixed(_zeros.rain)+' '+units.rain); }, rows:function(data){ var rows = [['ts','data1']]; var cell;
for(var date in data){ cell = [+date, null]; for(var variable in data[date]){ if(data[date][variable]['samples'] != null && data[date][variable]['samples'] > minSamples){ if(data[date][variable]['stats']['total'] != null) cell[1] = (data[date][variable]['stats']['total']).toFixed(_zeros.rain); } } rows.push(cell); } return rows; } }, solarrad:{ id:1001, chart:{}, unit: {data1: 'W/m²' , data2: 'W/m²', data3: 'W/m²', data4: 'h'}, range:{ min:0, max:null }, padding:{top: 10, bottom: 0}, colors:{ data1: '#DF8B66', data2: '#D0511A', data3: '#9C3C13', data4: '#FFD331'}, types:{ data1: 'spline', data2:'spline', data3: 'spline', data4: 'bar'}, names:{ data1:"Mitjana (24 h)", data2:"Mitjana", data3:"Màx", data4:"Hores"}, stats:function(data){ $('#stats-1001-mean24').html((data['sum']/data['samples']).toFixed(1)+' W/m²'); $('#stats-1001-mean').html((data['sum']/data['partial']).toFixed(1)+' W/m²'); $('#stats-1001-max').html((data['max']).toFixed(1)+' W/m²'); $('#stats-1001-hours').html((data['hours']).toFixed(1)+' h'); $('#solarrad_graph_container').css('display',''); }, rows:function(data){ var rows = [['ts','data1','data2','data3','data4']]; var cell;
for(var date in data){ cell = [+date, null, null, null, null]; for(var variable in data[date]){ if(data[date][variable]['samples'] != null && data[date][variable]['samples'] > minSamples){
if(data[date][variable]['stats']['sum'] != null) cell[1] = (data[date][variable]['stats']['sum']/data[date][variable]['samples']).toFixed(1);
if(data[date][variable]['stats']['sum'] != null && data[date][variable]['stats']['partial'] > 0) cell[2] = (data[date][variable]['stats']['sum']/data[date][variable]['stats']['partial']).toFixed(1);
if(data[date][variable]['stats']['max'] != null) cell[3] = (data[date][variable]['stats']['max']).toFixed(1);
if(data[date][variable]['stats']['hours'] != null) cell[4] = (data[date][variable]['stats']['hours']).toFixed(1); } } rows.push(cell); } return rows; } }, uvi:{ id:1101, chart:{}, unit: {data1: '' , data2: '', data3: ''}, range:{ min:0, max:16 }, padding:{top: 10, bottom: 0}, colors:{ data1: '#9C85DA', data2: '#6B49C8', data3: '#503696'}, types:{ data1: 'spline', data2:'spline', data3: 'spline'}, names:{ data1:"Mitjana (24 h)", data2:"Mitjana", data3:"Màx"}, stats:function(data){ $('#stats-1101-mean24').html((data['sum']/data['samples']).toFixed(1)); $('#stats-1101-mean').html((data['sum']/data['partial']).toFixed(1)); $('#stats-1101-max').html((data['max']).toFixed(1)); $('#uvi_graph_container').css('display',''); }, rows:function(data){ var rows = [['ts','data1','data2','data3']]; var cell;
for(var date in data){ cell = [+date, null, null, null]; for(var variable in data[date]){ if(data[date][variable]['samples'] != null && data[date][variable]['samples'] > minSamples){
if(data[date][variable]['stats']['sum'] != null) cell[1] = (data[date][variable]['stats']['sum']/data[date][variable]['samples']).toFixed(1);
if(data[date][variable]['stats']['sum'] != null && data[date][variable]['stats']['partial'] != 0) cell[2] = (data[date][variable]['stats']['sum']/data[date][variable]['stats']['partial']).toFixed(1);
if(data[date][variable]['stats']['max'] != null) cell[3] = (data[date][variable]['stats']['max']).toFixed(1); } } rows.push(cell); } return rows; } } };
var _loader = 0;
var _evolution = function(url){ NProgress.start(); for(var variable in variables){ (function(currentVar){ $.ajax({ data:{d:"1518637467", t:currentVar.id}, dataType:'json', type: 'POST', url: url, beforeSend: function(){ }, success:function (data) { try{ currentVar.stats(data.data.summary); evolutionLoaded = true; currentVar.chart.flush(); currentVar.chart.load({unload: true, rows: currentVar.rows(data.data.values)}); _loader++; if(_loader > 5) NProgress.done(); }catch(err){
} } });})(variables[variable]); } };
var chart = function (variable) {
return c3.generate({ bindto: '#ev'+variable.id, transition: {duration: 0}, spline:{ interpolation: { type: 'monotone' }, }, size: { height: 260 }, padding: { top:10, left:40, right:0 }, point: { show: true, r: 1, focus: { expand: { r: 4 }}}, grid: { y: { show: true } }, data: { types: variable.types, x: 'ts', rows: [], axes: {data4: 'y2'}, colors: variable.colors, names: variable.names }, axis: { x: { type: 'timeseries', tick: { culling: false, format: function (e,d){ var currentDate = moment.utc(e*1000); return currentDate.format('D'); }} }, y: { min:variable.range.min, max:variable.range.max, padding: variable.padding }, y2:{ show: false } }, tooltip: { format: { title: function (e) { return moment.utc(e*1000).format('ll'); }, value: function (e, ratio, id, index) { return e+' '+variable.unit[id]; } } }, legend: { position: 'bottom', } }); };
$('document').ready(function(){ for(variable in variables){ variables[variable].chart = chart(variables[variable]); } evolution = function (){ if(!evolutionLoaded){ _evolution('/device/evolution'); } } });