Uso de opções comuns de JavaScript em um script para aprimorar uma história

Objective

After completing this lesson, you will be able to aprimore uma história usando opções comuns de JavaScript.

Usar um menu suspenso dinâmico para aprimorar uma história

Cenário empresarial: você foi solicitado a ampliar uma história existente com uma lista de opções para filtrar a tabela Quantidade da ordem por categoria de produto.

Para isso, você adicionará o seguinte código à história usando a ação onIntitialization:

Code Snippet
123456
var ProductABCratingList = TBL_Quantity.getDataSource().getMembers("0D_NW_PRID__0D_NW_PRCAT"); for (var i=0; i<ProductABCratingList.length; i++){ if (ProductABCratingList[i].id !== ""){ DD_Product_ABC_rating.addItem(ProductABCratingList[i].displayId, ProductABCratingList[i].description); } }

Você também adicionará o seguinte código ao drop-down utilizando a ação onSelect:

Code Snippet
1
TBL_Quantity.getDataSource().setDimensionFilter("0D_NW_PRID__0D_NW_PRCAT", DD_Product_ABC_rating.getSelectedKey());

Este vídeo curto orientará você sobre a história final e a criação de script necessárias.

Simular as etapas

O exercício prático abaixo simula estar no modo avançado no SAP Analytics Cloud e orienta você na adição do script necessário para criar a história final mostrada no vídeo de demonstração.

Fluxo de tarefa: neste exercício prático, você irá:

  • Adicionar a lista de opções à história
  • Adicionar scripting à ação onIntitialization
  • Adicionar scripting à ação onSelect
  • Testar o scripting na história

Variáveis de script local

Em scripts, você pode "armazenar" um valor em uma variável. Existem dois tipos de variáveis: variáveis locais e globais. Abordaremos os globais mais adiante no curso. Variáveis de script local podem ser criadas usando o comando var. Elas só são válidas dentro do script em que estão atribuídas. Quando o script é totalmente processado, a variável perde seu valor.

Variáveis de script local

var <NameOfVariable> = <ValueOfVariable>;

Código que mostra exemplos de variáveis de script.

Tenha em mente:

  • Você deve atribuir um valor na instrução var
  • O valor atribuído define o tipo de dados da variável

Seja qual for o tipo de variável que você criar, você deve dar um nome como identificador, como counter, selectedCountry, myList. Os desenvolvedores normalmente usam convenções de nomes específicas para facilitar a leitura do código para todos. Se você estiver interessado em saber mais sobre este tópico, consulte o seguinte documento e alinhe-se a uma definição consistente com seus colegas desenvolvedores de histórias: Devopedia - Convenções de nomes

Operadores Single, Double e Triple Equals (===)

Individual igual a (=) são operadores de atribuição. Você usa os mesmos para atribuir um valor a uma variável.

Exemplo de script no editor de scripts que usa um único igual para atribuir um valor a uma variável.

Triplo igual a (===) são operadores de comparação. Se você utilizar triplo igual, os valores e os tipos são comparados.

Exemplo de script no editor de scripts que usa igual a triplo na linha dois.

Duplo igual a (==) são operadores de comparação. Com duplo igual, os valores são comparados, mas os tipos não. O SAP Analytics Cloud não suporta conversão automática de tipo; portanto, não use valores duplos em nenhum script.

Exemplo de scripting que inclui duplo igual e o erro que é produzido no editor de scripts. Não use dois valores iguais.

Escrevendo no console

Uma técnica muito comum para controlar valores variáveis ou processamento de scripts é fazer uso do console do navegador. Você pode escrever texto ou valores de variável no console usando o comando console.log();.

Exemplo de uso da guia Console nas Ferramentas do desenvolvedor. Script do SAP Analytics Cloud na parte superior esquerda, guia Console na parte inferior direita.

Para acessar o console a partir do navegador, você precisa abrir as Ferramentas do desenvolvedor na barra de ferramentas do navegador e alternar para a guia Console.

Instruções e loops de execução condicional

Instruções If Then Else

Code Snippet
123456
if (condition) { // this block will be executed if condition is true } else { // this block will be executed if condition is false }
Padrões de comparação típicos:Operadores lógicos:
===(igual)&&(e)
!==(diferente de)||(ou)
<(menor que)!(não)
<=(menor que ou igual a)  
>(maior que)  
>=(maior que ou igual a)  

Alternar instruções

Code Snippet
12345678910111213
var selectedCountry = Dropdown1.getSelectedText(); switch (selectedCountry) { case "Germany": // code that is relevant for Germany break; case "USA": // code that is relevant for USA break; default: // code that is relevant for all other countries }

Você pode utilizar a instrução switch para selecionar uma de várias seções de código. A expressão (no nosso caso selectedCountry) é comparada com os valores de cada caso. Se corresponder, a seção de código associada é executada. Para interromper a continuação do processamento da instrução switch, você utiliza a instrução break para sair do comutador.

Se você não utilizar uma quebra, todas as linhas seguintes serão processadas. Isso inclui todas as instruções case a seguir, independentemente de seu valor.

Loops: para

para (statement1; instrução 2; instrução 3) { Nova linha: // linhas de código a serem executadas. Nova linha: }

No exemplo acima, você pode ver três instruções. Eles correspondem ao seguinte:

  • Instrução 1: declara a variável para o iterador de loop
  • Instrução 2: é a condição que é verificada antes de as linhas de código serem executadas
  • Instrução 3: é a modificação do iterador de loop que é executado cada vez que as linhas de código incluídas foram executadas

Por exemplo, você deseja registrar em log todas as hierarquias da fonte de dados para o console com o para que você escreva o seguinte script:

Code Snippet
123456
var Hierarchies = TBL_Quantity.getDataSource().getHierarchies("0D_NW_PRID"); for (var j=0; j<Hierarchies.length; j++){ console.log(Hierarchies[j].id +" - " + Hierarchies[j].description); }

As instruções usadas no script estão destacadas abaixo.

O código acima com as declarações destacadas. A instrução 1 é var j=0. A instrução 2 é j<Hierarchies.length. A instrução 3 é j++.)
  • Declaração 1: var j=0
  • Declaração 2: j<Hierarchies.length
  • Declaração 3: j++

For Os loops são amplamente utilizados, por exemplo, eles são usados para fazer loop sobre as entradas de uma matriz que você verá em um exercício mais tarde no curso.

Loops: enquanto

While loops são semelhantes a for loops, mas com menos instruções.

Code Snippet
1234
while (condition) { // this block will be executed if condition is true }

Por exemplo, você deseja registrar em log todas as hierarquias da fonte de dados para o console com enquanto, portanto, você escreve o seguinte script:

Code Snippet
12345678
var Hierarchies = TBL_Quantity.getDataSource().getHierarchies("0D_NW_PRID"); var x = 0; while (x < Hierarchies.length) { console.log(Hierarchies[x].id +" - " + Hierarchies[x].description); x++; }

Não se esqueça de alterar a variável usada na condição!

Aprimorar uma história com execução condicional

Cenário empresarial: sua equipe efetua uma solicitação para modificar o modo como a história é exibida quando é aberta. Eles desejam ver somente o bloco KPI na inicialização e, em seguida, quando clicam em um dos blocos, a faixa de guias é exibida juntamente com a guia que corresponde ao bloco selecionado.

Este vídeo curto orientará você sobre a história final e a criação de script necessárias.

Simular as etapas

O exercício prático abaixo simula estar no modo avançado no SAP Analytics Cloud e orienta você na adição do script necessário para criar a história final mostrada no vídeo de demonstração.

Fluxo de tarefa: neste exercício prático, você irá:

  • Certifique-se de que o controle de abas esteja definido como oculto na inicialização
  • Defina o código para os gráficos Imposto e Quantidade do pedido
  • Testar o scripting na história

Arrays em um script

Trabalhar com matrizes é essencial em muitas situações. Algumas APIs de comando retornam uma matriz e você deve saber como lidar com elas.

Nesta lição, apresentamos o conceito de matrizes como elas podem ser retornadas em APIs para que seja importante que você entenda o que elas são. No entanto, na próxima lição, você aplicará seus conhecimentos quando concluir um exercício contendo matrizes, bem como conceitos como variáveis globais de script e funções de script.

Uma matriz é algo como uma lista de itens. Quando você trabalha com eles no script, normalmente:

  • Acessar um único elemento pela sua posição (também chamado de "índice") na lista
  • Faça um loop em toda a lista e processe cada elemento um após o outro
Exemplo de uma matriz em um evento getResultsSet em um script.

As matrizes são identificadas por [ ] como mostrado no exemplo anterior acima e podem ser:

  1. Impresso no console
    Code Snippet
    123
    var resultset = Table_1.getDataSource().getResultSet(); console.log(resultset);
  2. Acessado com loop
    Code Snippet
    12345
    var resultset = Table_1.getDataSource().getResultSet(); for (var x=0; x<resultset.length; x++){ console.log(resultset[x]["@MeasureDimension"].rawValue); }
  3. Acessado com índice
    Code Snippet
    123
    var resultset = Table_1.getDataSource().getResultSet(); console.log(resultset[1]);

Nota

Como muitas linguagens de programação, o primeiro elemento em uma matriz tem o índice 0.

Em algumas situações de scripting, pode ser útil criar uma variável que pode armazenar mais de uma entrada. Por exemplo, você deseja armazenar uma lista de widgets que devem ser processados ou uma lista de medidas que devem ser usadas a partir do script.

Situação de scriptingVariável
Criar matriz vaziavar myList = ArrayUtils.create(Type.string);
Criar matriz preenchidavar myList = ["Hello", "World", "Example"]
Adicionar elementomyList.push("Hello world");
Remover último elementomyList.pop();
Ler número de entradasmyList.length;

Gerar valores dinâmicos em widgets de navegação genéricos

No vídeo Aprimoramento de widgets de navegação genéricos com scripting, foram introduzidas as etapas para ampliar widgets de navegação genéricos:

  1. Defina os itens para o widget no painel Gerador. Ele pode ser definido de três formas diferentes:
    1. Manualmente, utilizando direct input
    2. Dinamicamente, usando scripting
    3. Dinamicamente, usando a vinculação de propriedades
  2. Defina a ação que deve ser executada no script onSelect do widget

Nessa lição, você definiu manualmente os itens para o widget usando entrada direta. Nesta lição, veremos como definir dinamicamente os itens usando scripting.

O código a seguir é um exemplo de scripting que pode ser usado para preencher dinamicamente a lista de opções:

Code Snippet
12345
var countries = Table_1.getDataSource().getMembers("0D_NW_BP__0D_NW_CNTRY"); for (var x = 0; x < countries.length; x++ ) { var country = countries[x]; Dropdown_1.addItem(country.id, country.description); }
Exemplo de código para definir dinamicamente os itens usados no scripting. Valores do SAP Analytics Cloud na parte superior e no script a seguir mostrando country.id e country.description.

Como exemplo típico do uso de matrizes no script, usaremos o exemplo de escrever todos os membros de uma dimensão em uma lista suspensa. Você tem que pensar no evento certo no qual adicionar o código. O Page_1.onInitialization() pode ser um bom lugar, no entanto, dependendo da frequência com que os membros podem mudar, pode ser útil adicioná-lo ao evento onResultChanged do widget de origem.

Matriz de widgets

A API Application.getWidgets(); pode retornar uma matriz de widgets descritos pelas opções de pesquisa de widget. Como exemplo, você pode criar uma matriz de todos os gráficos em sua história com um nome que comece com "CH_Tile". A API também pode criar uma matriz de outros widgets, por exemplo, Botão, Imagem, etc.

Código para matriz de widgets

O código usado para retornar uma matriz de todos os gráficos em sua história com um nome que começa com "CH_Tile":

Code Snippet
123
var tilecharts = Application.getWidgets({type:WidgetType.Chart, searchPattern:"CH_Tile"}); console.log (tilecharts);
A matriz e o log de console associado (à direita)

Para entender o conteúdo e a estrutura de uma matriz, você pode enviá-lo para o Log de console e analisar seu conteúdo lá.