Criando um widget: estrutura e configuração¶
Download do widget deste exemplo
Se você quiser pular toda a explicação abaixo e colocar a mão na massa, pode fazer o download do widget que nós criaremos neste tutorial.
Neste passo-a-passo nós mostraremos como construir um widget que exiba a previsão meteorológica de uma localidade, passando por todas as etapas até a execução do widget no DSME Player.
Estrutura do widget¶
Nosso widget contará com a estrutura de arquivos mostrada abaixo:
Estrutura do widget
previsao-meteorologica/
|_ css/
|_ font/
|_ js/
|_ media/
|_ index.html
|_ preview.png
|_ widget.json
De todos estes arquivos e diretórios, os únicos obrigatórios para o
funcionamento do widget são index.html
, widget.json
e preview.png
. Nesta
página nós falaremos sobre o widget.json
.
Configurando o widget.json
¶
Vamos em primeiro lugar criar o arquivo widget.json
, que é o arquivo que
define as principais propriedades do widget. Mas vamos por partes.
widget.json
{
"title" : "Previsão Meteorológica",
"name" : "previsao-meteorologica",
"description" : "Informações atualizadas sobre o clima para uma determinada localidade",
"author" : "DSME <https://dsme.tv>",
"version" : "1.0.0"
}
O bloco acima é o mínimo que um widget tem que ter para poder ser registrado na plataforma DSME. Nele nós definimos:
"title"
: o título do nosso widget, que no caso é Previsão Meteorológica;"name"
: o identificador único, que no caso é previsao-meteorologica;"description"
: uma breve descrição;"author"
: o author do widget;"version"
: a versão do nosso widget.
Dica
Você pode conferir todos os parâmetros disponíveis na página do widget.json.
No entanto, esta configuração define um widget estático, isto é, que não é atualizado dinamicamente. E não é isto que nós queremos. Nós estamos criando um widget que exibe informações sobre o clima, e este tipo de informação tem que ser atualizada constantemente.
Para que o nosso widget passe a ser dinâmico, nós precisamos configurar a
propriedade update
.
widget.json
{
"title" : "Previsão Meteorológica",
"name" : "previsao-meteorologica",
"description" : "Informações atualizadas sobre o clima para uma determinada localidade",
"author" : "DSME <https://dsme.tv>",
"version" : "1.0.0",
"update" : {
"interval" : 6,
"module" : "weather"
}
}
Agora sim. Com a configuração acima o nosso widget será atualizado a cada 6 horas, recebendo a informação meteorológica do módulo weather.
Mas está faltando um detalhe importante: para usar o módulo weather
nós
precisamos informar de qual lugar nós queremos ver a previsão meteorológica.
Para isto é preciso definir um parâmetro de usuário,
que neste caso é o parâmetro local
.
widget.json
{
"title" : "Previsão Meteorológica",
"name" : "previsao-meteorologica",
"description" : "Informações atualizadas sobre o clima para uma determinada localidade",
"author" : "DSME <https://dsme.tv>",
"version" : "1.0.0",
"update" : {
"interval" : 6,
"module" : "weather"
},
"params" : [
{
"name" : "local",
"field" : {
"type" : "text",
"label" : "Local",
"required" : true,
"placeholder" : "Cidade ou coordenadas lat/long",
"helperText" : "Você pode informar o nome de uma cidade, como Brasília ou Rio de Janeiro, ou uma coordenada geográfica, como -15.799989, -47.884510"
}
}
]
}
O que nós acabamos de fazer foi definir um parâmetro de usuário chamado
local
. Este parâmetro será renderizado como um campo de texto no DSME Manager
para que o usuário informe de que local ele quer ver a previsão meteorológica.
Ele pode informar o nome de uma cidade, o código de um aeroporto ou uma
coordenada geográfica.
Acontece que este parâmetro de usuário, além de renderizar um campo de texto,
também cria uma variável com o mesmo nome, {local}
. E é aí que a mágica
acontece: o módulo weather
recebe esta variável e a partir daí pode consultar
a informação solicitada.
Mas além de passar o local para o módulo weather
, nós precisamos exibir
na tela do DSME Player um nome amigável para este mesmo local, para que as
pessoas saibam de que lugar é aquela previsão climática que elas estão vendo.
Para isto nós precisamos de outro campo:
widget.json
{
"title" : "Previsão Meteorológica",
"name" : "previsao-meteorologica",
"description" : "Informações atualizadas sobre o clima para uma determinada localidade",
"author" : "DSME <https://dsme.tv>",
"version" : "1.0.0",
"update" : {
"interval" : 6,
"module" : "weather"
},
"params" : [
{
"name" : "local",
"field" : {
"type" : "text",
"label" : "Local",
"required" : true,
"placeholder" : "Cidade ou coordenadas lat/long",
"helperText" : "Você pode informar o nome de uma cidade, como Brasília ou Rio de Janeiro, ou uma coordenada geográfica, como -15.799989, -47.884510"
}
},
{
"name" : "name",
"field" : {
"type" : "text",
"label" : "Nome de exibição",
"required" : true,
"placeholder" : "Brasília",
"helperText" : "Nome que será exibido na tela do player"
}
}
]
}
Este segundo parâmetro de usuário vai disponibilizar uma variável chamada
{name}
, que não será passada para o módulo weather
. Ao invés disto, nós a
usaremos no nosso front-end um pouco mais a frente.
Próximo passo¶
Agora que nós já especificamos de onde e como receber a informação que precisamos, vamos criar o front-end para apresentá-la.