Passo 6: Gerar Triggers

Neste passo, iremos mostrar como é gerado o trigger que viu como registado.

Os triggers podem ser gerados em qualquer altura por um componente. Normalmente, é gerado por uma interação do utilizador, como clicar num botão ou selecionar uma linha numa tabela. No entanto, um componente pode gerar o trigger com base em qualquer critério como, por exemplo, quando os dados são alterados devido a uma chamada REST.

Para este exemplo, quando clicar na imagem, será criado um trigger que é transmitido pelo valor atual da propriedade whoAreYou.

Reveja o ficheiro render.js e consulte o objeto SampleComponentViewModel.

Para gerar um trigger:

  1. Reveja a função no objeto SampleComponentViewModel que chama o Sites SDK para a criação do trigger.

    self.raiseTrigger = function (triggerName) {
      SitesSDK.publish(SitesSDK.MESSAGE_TYPES.TRIGGER_ACTIONS, {
        'triggerName': triggerName, 
        'triggerPayload': { 
            'payloadData': 'some data here'
        }
      });
    };
  2. Agora irá precisar de algo na interface do utilizador para chamar a função para gerar o trigger. Reveja o ficheiro render.js e atualize o objeto sampleComponentTemplate para ter esta entrada:

         '<div data-bind="attr: {style: imageStyle, \'data-layout\': alignImage()}, click: imageClicked">' +

No objeto SampleComponentViewModel, existe a função de JavaScript que é chamada quando se clica na imagem. Esta função chama o Sites SDK indicando-lhe que deve desencadear todas as ações definidas para o trigger "imageClicked", que é o valor transmitido da associação click no passo 2. É transmitido também através de um triggerPayload que tem um único campo:payloadData e é transmitido através de um valor estático 'some data here'. Estes valores imageClicked e whoAreYou correspondem aos existentes no ficheiro appinfo.json onde o trigger está registado (no passo anterior).

No código de exemplo, o trigger é gerado por uma associação de dados da associação click e é transmitido no trigger denominado imageClicked. Existem atualmente três apresentações do componente <scs-image> baseado na disposição escolhida pelo utilizador. Para garantir que o trigger é gerado para cada uma das disposições, edite o ficheiro render.js para efetuar as alterações seguintes.

  • Gere triggers a partir de disposições diferentes. Encontre as suas entradas deste código:

    '<div data-bind="attr: {style: imageStyle, \'data-layout\': alignImage()}">' +

    Altere o código para o seguinte:

    '<div data-bind="attr: {style: imageStyle, \'data-layout\': alignImage()}, click: imageClicked">' +
  • Especifique o payload para ser transmitido aos triggers. Altere este código:

        self.raiseTrigger = function (triggerName) {
          SitesSDK.publish(SitesSDK.MESSAGE_TYPES.TRIGGER_ACTIONS, {
            'triggerName': triggerName,
            'triggerPayload': {
              'payloadData': 'some data here'
            }
          });
        };

    Utilize este código como alternativa:

        self.raiseTrigger = function (triggerName) {
          SitesSDK.publish(SitesSDK.MESSAGE_TYPES.TRIGGER_ACTIONS, {
            'triggerName': triggerName,
            'triggerPayload': {
              'payloadData': self.imageBannerText() // pass banner text as payload
            }
          });
        };
  • Sincronize ou carregue o ficheiro render.js para o servidor da instância do Oracle Content Management.

Agora que já reviu o código necessário, pode ligar o trigger para que o seu componente customizado o gere quando clicar no botão.

Verificar os Resultados para o Passo 6

Deverá agora conseguir registar uma ação para executar com o seu trigger e também executar uma ação quando trigger for gerado:

  1. Renove a sua página no site para que o Criador de Sites possa escolher alterações para o componente.

  2. Apresente a página no modo de edição.

  3. Arraste e largue o seu componente na página.

  4. Abra o painel Definições com o seu componente.

  5. Selecione o separador Ligação na parte superior do painel Definições.

  6. Selecione Ações do Trigger como o Tipo de Ligação.

  7. Clique no trigger imageClicked que viu como registado.

  8. Na caixa de diálogo, arraste a ação Mostrar Alerta a partir da secção Ações da Página.

  9. No campo Mensagem, selecione o valor payloadData, que é o payload que introduziu quando registou o trigger.

  10. Feche o painel Definições e mude o Criador de Sites para o modo de pré-visualização.

  11. Clique na imagem no componente.

    Aparecerá um alerta a mostrar no message defined uma vez que não especificou o valor imageBannerText.

  12. Apresente a página no modo de edição e volte a abrir o painel Definições para o componente.

  13. Clique em Definições Customizadas e introduza o Local de Trabalho.

  14. Feche o painel Definições e mude a página para o modo de pré-visualização.

  15. Clique na imagem no componente.

    Deverá mostrar agora o payload Workplace atualizado, que é invocado a partir da alteração que efetuou na associação click.

Pode executar qualquer número de ações quando um trigger é gerado.

Nota:

Não existe nenhuma ordem predefinida quanto ao momento de execução de uma ação. Cada ação será chamada pela ordem em que é listada, mas não se aguarda pela respetiva conclusão antes de chamar a ação seguinte. Se uma ação efetuar uma chamada assíncrona, poderá não ser concluída antes de a ação seguinte ser executada.

Avance para Passo 7: Registar Ações.