JS¶
Nosso Javascript também é simples. Veja só:
widget.js
Widget.register('previsao-meteorologica', {
container : $('.widget'),
load : function()
{
var createInfo = function(config, data, mini)
{
var now = (new Date).getHours();
var isNight = (now >= 18) || (now <= 5);
var html = '';
if(mini)
{
html = '<div class="infos mini clearfix">\
<div class="left">\
<div class="status mini ' + data.icon + (isNight ? ' night' : '') + '"></div>\
</div>\
<div class="left p-l-20">\
<div class="clearfix">\
<p class="left temperature">' + data.temperature.max + 'º</p>\
<p class="left temperature min">' + data.temperature.min + 'º</p>\
</div>\
<time>' + data.date + '</time>\
</div>\
</div>';
}
else
{
html = '<div class="infos clearfix">\
<div>\
<p class="city text-shadow">Agora em ' + config.name + '</p>\
<p class="description text-shadow">' + data.status + '</p>\
<div class="status ' + data.icon + (isNight ? ' night' : '') + '"></div>\
</div>\
<div class="p-l-30">\
<p class="temperature text-shadow">' + data.temperature.max + 'º</p>\
<p class="temperature text-shadow min">' + data.temperature.min + 'º</p>\
</div>\
</div>';
}
return $(html);
};
var sidebar = this.container.find('aside'), i = -1, info;
while(++i < this.data.weather.length)
{
info = createInfo(this.config, this.data.weather[i], i > 0);
if(i == 0)
sidebar.prev().append(info);
else
sidebar.append(info);
}
},
animate : function()
{
var self = this;
setTimeout(function(){
self.container.addClass('animate-1');
}, 500);
setTimeout(function(){
self.container.addClass('animate-2');
}, (this.container.data('interval') / 2) * 1000);
},
start : function()
{
this.data = this.container.data('widget-data');
this.config = this.container.data('widget-config');
this.load();
this.animate();
},
stop : function()
{
this.container.find('.infos').remove();
this.container.find('[style]').attr('style', '');
}
});
Content.on('ready', function(){
Widget.play('previsao-meteorologica');
});
Em primeiro lugar nós registramos o widget:
Exemplo
Widget.register('previsao-meteorologica', {
// ...
});
O registro é feito através do método Widget.register()
passando dois
argumentos: o nome do widget e um objeto com suas definições. Um widget válido
deve ter no mínimo dois métodos: start()
e stop()
.
Método | Descrição |
---|---|
start() |
Chamado para iniciar o processamento do widget. Este é o ponto de entrada para o seu código. |
stop() |
Chamado quando a execução do widget é finalizada. Pode ser usado para limpar referências e objetos. |
Portanto, a estrutura mínima para um widget deve ser:
Exemplo
Widget.register('meu-widget', {
start : function()
{
// início da execução
},
stop : function()
{
// fim da execução
}
});
No caso do nosso widget, nós definimos mais dois métodos: load()
, usado
para carregar os dados e montar a interface; e animate()
, usado para
disparar as animações CSS. Como são métodos arbitrários nós não entraremos nos
detalhes.
Prosseguindo, no final do arquivo existe o seguinte código:
widget.js
Content.on('ready', function(){
Widget.play('previsao-meteorologica');
});
Aqui nós aguardamos pelo evento
ready
para então iniciar o
processamento do widget.
Note que é necessário passar o nome do widget para o método
Widget.play()
, que por sua vez recupera a instância do widget e chama o
método start()
que nós definimos.
Dica
Os objetos Widget
e Content
fazem parte da
biblioteca da plataforma DSME, e sempre estarão
disponíveis no momento em que o seu script for executado.
Próximo passo¶
Em se tratando de Javascript, isso é tudo o que você precisa fazer para ter um widget funcionando. Na próxima página você verá com mais detalhes como recuperar os dados do widget.