Tutorial do Wix Blocks: criar um widget de contagem regressiva
O que você recebe no template
- Um widget de contagem regressiva. Você precisa completar o seu design e codificar suas funções e propriedades.
- Um widget de registro que você precisa completar e adicionar ao seu widget de contagem regressiva.
- Algumas utilidades públicas que você pode usar para implementar a funcionalidade do seu widget.
- Um código de back-end que você pode usar para implementar as funções da sua notificação por email.
Etapa 1 | Complete o design do seu widget
- Abra o template.
- Clique em Countdown (Contagem regressiva) em Widgets e design.
- Clique em Elementos na barra superior.
- Selecione Texto. Arraste e solte uma caixa de Título de 48px no seu widget.
- Clique em Editar texto e altere o texto para SS.
- Altere a cor do texto para branco e centralize o texto usando o Inspetor .
- Selecione a caixa de texto e mova-a para o quadrado da grade acima da etiqueta Seconds (Segundos) usando .
- Redimensione-a usando .
Etapa 2 | Adicione e defina as propriedades de API do seu widget
- endDate: define a data de término quando a contagem regressiva chega a zero. Usando essa propriedade, os criadores de site podem alterar a data de término para que o widget seja personalizado para seu site.
- emailId: determina a mensagem de email que será enviada aos usuários quando eles se inscreverem para receber uma notificação.
Dê um ID aos elementos do widget
- Clique na caixa de texto.
- Dê um ID à caixa de texto no painel Propriedades e eventos . Neste exemplo, o ID é
secondsTxt
. Observe que os outros elementos já receberam IDs.
Defina as propriedades "endDate" e "emailId"
- Clique em Adicionar nova propriedade no painel API .
- Insira o nome da propriedade,
endDate
. - Selecione o tipo de propriedade, neste caso, Data e horário (a data é exibida no formato mm/dd/aaaa).
- Selecione um valor padrão (o criador de site poderá alterá-lo quando instalar seu widget nos editores).
- Passe o mouse sobre Propriedades e clique no ícone que aparece.
- Crie outra propriedade para o email acionado e chame-a de
emailId
. Essa é uma propriedade de tipo Texto sem valor padrão.
Etapa 3 | Adicione código para fazer seu widget funcionar
Importe suas utilidades
- Clique no menu Público e back-end .
- Selecione dateUtils.js em Público. Isso abre o arquivo no painel de código.
Altere o código para considerar sua nova função
Crie uma função, updateTime()
, para que seu widget de contagem regressiva atualize a contagem. Sua nova função deve ficar assim:
1$widget.onPropsChanged(function () {
2});
3 function updateTime() {
4 const {days, hours, minutes, seconds} = getRemainingTime (new Date($widget.props.endDate));
5 $w('#daysTxt').text = days.toString();
6 $w('#hoursTxt').text = hours.toString();
7 $w('#minutesTxt').text = minutes.toString();
8 $w('#secondsTxt').text = seconds.toString();
9 }
Você também precisa definir um intervalo para a frequência com que o widget atualiza o tempo restante.
Para fazer isso, adicione o seguinte código na sua função onReady()
. Isso atualiza o widget a cada segundo.
1$w.onReady(function () {
2 updateTime();
3 if (wixWindow.viewMode !== "Editor") {
4 setInterval(updateTime, 1000);
5 }
6});
Visualize seu widget e teste suas propriedades de API
- Clique em Executar. Seu widget deve fazer a contagem regressiva a cada segundo até a data de término.
- Clique em Testar propriedades de API. Um painel aparece com o valor padrão que você definiu anteriormente.
- Altere a data para verificar se o widget responde e faz a contagem regressiva para a nova data.
Etapa 4 | Crie e codifique um painel personalizado
Crie um painel personalizado
- Clique na aba Painéis na barra superior.
- Clique em Criar painel.
- Dê um nome ao painel. Neste exemplo temos "Minhas configurações".
- Clique em Criar painel.
- Clique em + Adicionar elemento.
- Selecione Entrada de texto. Isso será para a data de término.
- Clique em Propriedades e eventos . Dê um ID à entrada de texto
endDateInput
. - Selecione o elemento de texto e clique em Configurações.
- Adicione o nome "Data de término" no campo Título do campo.
- Exclua o texto no campo Texto padrão.
- Defina o texto da variante para "Data de término".
- Adicione um separador de elemento.
- Clique em Configurações. Adicione um título no campo Título da seção. Neste exemplo, "Email acionado".
- Adicione outra Entrada de texto. Dê à entrada de texto um ID -
emailIdInput
. - Selecione o elemento de texto e clique em Configurações.
- Adicione o nome "ID do email" no campo Título do campo.
- Exclua o texto no campo Texto padrão.
- Defina o texto da variante como "ID do email".
Adicione código ao seu painel personalizado
Para permitir que os elementos do painel interajam com seu widget e executem ações no editor, você pode usar o módulo wix-widget
do Velo no seu código.
Para usar a API do widget, importe wixWidget
do módulo wix-widget
.
Insira o seguinte código antes da sua função onReady()
.
1import wixWidget from 'wix-widget';
Seu widget deve ser atualizado quando os valores mudarem, portanto você precisa registrar um evento onChange
. Você também precisa adicionar async
na sua função onReady ()
, pois você usará algumas funções assíncronas.
Sua função onReady()
deve ficar assim:
1$w.onReady(async function () {
2 const { endDate, emailId } = await wixWidget.getProps();
3 $w('#endDateInput').value = endDate;
4 $w('#emailIdInput').value = emailId;
5
6 $w('#endDateInput').onChange(e => {
7 wixWidget.setProps({ endDate: e.target.value });
8 });
9
10 $w('#emailIdInput').onChange(e => {
11 wixWidget.setProps({ emailId: e.target.value });
12 });
13});
Etapa 5 | Configure seu widget
Adicione seu painel personalizado à barra de ação flutuante do widget
- Clique em Configuração na barra superior.
- Selecione seu widget de contagem regressiva. Uma barra de ação flutuante aparece.
- Clique em Configurações.
- Clique em Configurações do botão de ação. O painel Configurações da ação principal é exibido.
- Selecione My Settings (Minhas configurações) na lista dropdown para selecionar seu painel personalizado.
Etapa 6 | Adicione um segundo widget (interno) e implemente a lógica de registro
Adicione seu widget de registro ao widget de contagem regressiva
- Na aba Design, selecione seu widget de contagem regressiva.
- Clique em Mais opções e selecione Adicionar widget.
- Selecione Registration. Seu widget interno aparece no meio do seu widget de contagem regressiva.
- Arraste e estique o widget interno para que ele caiba na seção inferior do widget de contagem regressiva.
- Altere seu ID para
registration
em Propriedades e eventos .
Implemente a lógica de registro no código do widget principal
Você implementará o código para o registro do usuário no widget principal (contagem regressiva), usando a utilidade pré-instalada, contactUtils.js
. Ela usa a API wix-crm
para conectar seu contato à sua coleção.
Esse código direciona as informações para sua coleção. Ele usa a utilidade que você usará mais tarde ao criar uma coleção. Você pode ver getSubscriptionsCollectionName()
no código.
- Crie uma nova função async.
- Chame-a de
onSubmit
. Ela usa a utilidade de criação de contato.
Seu código deve ficar assim:
1 async function onSubmit({ email }) {
2 const contact = await createContact(email);
3 wixData.insert(getSubscriptionsCollectionName(), {
4 endDate: new Date($widget.props.endDate),
5 emailId: $widget.props.emailId,
6 contactId: contact.contactId
7 });
8 }
9
Registre para o evento onSubmit
No seu onReady()
, após a função updateTime()
, adicione o seguinte código:
1$w('#registration').onSubmit(onSubmit);
Etapa 7 | Crie seu aplicativo e dê um namespace para ele
Sua primeira compilação
- Clique em Criar.
- Insira um namespace para seu aplicativo e clique em Próximo.
- Selecione Versão principal e clique em Compilar.
- Você recebe uma mensagem informando que a versão 1.0 foi compilada. Clique em Entendi para continuar trabalhando no seu aplicativo.
Etapa 8 | Adicione uma coleção ao seu widget
O template tem um recurso pré-instalado chamado getSubscriptionsCollectionName()
, em collectionUtils.js em Público e back-end. Ele constrói o nome completo da coleção para que você não precise adicionar o namespace completo do seu aplicativo sempre que se referir a ele no código.
Configure a utilidade da sua coleção
- Clique em collectionUtils.js em Público e back-end.
- Adicione o namespace do seu aplicativo.
1
2const NAMESPACE = '@mywixaccount/my-app-namespace';
3
4export function getSubscriptionsCollectionName() {
5 return `${NAMESPACE}/subscriptions`;
6}
Crie sua coleção
- Clique em Bancos de dados
- Clique em + Criar coleção
- Dê um nome significativo à sua coleção. Neste exemplo, Subscriptions (Assinaturas).
- Clique em Criar.
Adicione campos à sua coleção
- Clique em para adicionar um campo à sua coleção.
- Selecione Data no dropdown Tipo de campo.
- Insira endDate no campo Nome do campo. Esta é a data até a qual as pessoas podem se registrar.
- Clique em Salvar.
- Agora adicione um campo do tipo Texto e chame-o de emailId para o email acionado.
- Adicione outro campo do tipo Texto e chame-o de contactId. Isso armazenará as informações de contato dos usuários registrados.
- Agora crie um campo do tipo booleano e chame-o de notified (notificado). Isso garante que os assinantes sejam notificados apenas uma vez.
Defina permissões para sua coleção
- Clique em Mais opções para sua coleção no menu Bancos de dados.
- Selecione Permissões e privacidade.
- Selecione o menu dropdown Pode adicionar conteúdo.
- Selecione Qualquer um.
- Clique em Salvar.
Etapa 9 | Instale seu aplicativo em um site no Editor Wix
- Depois de criar seu aplicativo, abra seu site.
- Clique em Aplicativos .
- Clique em Aplicativos personalizados. Uma lista de todos os seus aplicativos é exibida.
- Selecione seu aplicativo na lista Aplicativos disponíveis.
- Clique em Instalar aplicativo.
- Clique em Elementos .
- Selecione Meus widgets.
- Clique duas vezes no seu widget para adicioná-lo ao site.
Defina um ID de email
- Abra Painel de controle no menu Site na barra superior.
- Vá para Emails acionados em Ferramentas de desenvolvedor.
- Clique em Começar.
- Insira um assunto.
- Crie o design do email usando as ferramentas do Editor.
- Clique em Salvar e publicar.
- Adicione os dados do remetente, o De (nome) e Responder para e clique em Salvar.
- Clique em Ok.
- Clique em Salvar e publicar novamente. Você recebe um código de identificação gerado que vincula ao email que você criou para que seja enviado para qualquer pessoa que se registrar.
- Insira esse código em seu painel personalizado no campo ID do email.
Use código de back-end no Editor Wix para notificar assinantes
Chame sua função de notificação
- Clique em Adicionar módulo web em Back-end em Público e Back-end no Editor Wix.
- Nomeie-o como
backend.jsw
. - Importe a função de back-end na seção de código do seu site em backend.jsw.
Seu código deve ficar assim:
1import { notify } 'myWixId/my-application-name-backend';
Agora crie uma função de exportação invokeNotify
em backend.jsw na seção de código do seu site.
Seu código deve ficar assim:
1export function invokeNotify() {
2 return notify ();
3}
- Clique em Adicionar em Back-end
- Clique em Adicionar tarefas agendadas. Adicione o seguinte código em jobs.config na seção de código do seu site. Neste exemplo, a função de notificação é chamada 10 minutos após a hora, a cada hora.
1{
2 "jobs": [{
3 "functionLocation": "/backend.jsw",
4 "functionName": "invokeNotify",
5 "description": "",
6 "executionConfig": {
7 "cronExpression": "10 * * * *"
8 }
9 }]
10}
Etapa 10 | Teste seu aplicativo
- Publique seu site
- Registre-se para receber uma notificação por email.
- Volte ao editor e verifique sua coleção.
- Você pode ver que há um novo assinante. Quando o email de notificação for enviado, você também verá uma marca de seleção no campo de notificação.