Controlar a visibilidade dos elementos de IU

Para controlar a visibilidade dos elementos da IU de usuários específicos, utilize a propriedade visible. É possível ocultar os widgets se eles não forem relevantes, ou se os usuários não conseguirem utilizá-los. Por exemplo, o botão Salvar para salvar alterações em um registro só é necessário em uma página depois que o usuário muda algum registro. Se um determinado usuário não tiver permissão para acessar uma página, oculte o link dela.

Principais conceitos:

  • A propriedade visible tem um valor booleano (verdadeiro = visível, falso = oculto). É possível vinculá-lo ou usar um script para determinar se o usuário atende aos requisitos de visibilidade de um widget.
  • Chame uma função de script de servidor usando um script de cliente quando a condição de visibilidade depender de outro script de servidor ou de informações de um serviço de terceiros.
  • Quando um widget contém outros, a configuração no widget pai se aplica aos filhos. Por exemplo, se você tem um widget de formulário com um título, campos de entrada e um botão Enviar, é possível ocultar componentes individuais ou o formulário inteiro.

Usar um script para controlar a visibilidade do widget

  1. Escreva um script de cliente que determina se o usuário pode acessar o widget e retorna um valor booleano. Por exemplo, o modelo Aprovação de viagens tem o script de cliente Utilitário. Ele inclui três funções para testar se o usuário tem um papel específico:

    /**
         * Determines whether the user has specified role.
         * @param {string} roleName - name of the role to check.
         * @return {boolean} true if user has the role.
         */
        function hasRole(roleName) {
          return (app.user.roles.indexOf(roleName) > -1);
        }
    
        /**
         * Determines whether the user is admin.
         * @return {boolean} true if user is an admin.
         */
        function isAdmin() {
          return hasRole('Admins');
        }
    
        /**
         * Determines whether the user is approver.
         * @return {boolean} true if user is an approver.
         */
        function isApprover() {
          return hasRole('Approvers');
        }
        

    Com a função hasRole(roleName), você consegue uma lista dos papéis atribuídos ao usuário atual e procura um papel especificado. Por exemplo, se um script de cliente chama isAdmin(), ele procura o papel Administradores. Se esse papel estiver presente, ele terá um valor de índice de 0 ou mais, e a expressão de retorno será avaliada como verdadeira.

  2. Selecione o widget em que você quer definir a visibilidade. Lembre-se de que os widgets abaixo dele na hierarquia herdam a visibilidade do widget pai.

  3. No Editor de propriedades, clique em Exibir.

  4. Clique no menu suspenso visível e selecione vinculação.

  5. Na caixa de diálogo de vinculação, digite uma expressão que chame o script de cliente. Por exemplo, para mostrar o widget se o usuário tiver o papel Administradores ou Aprovadores, digite o seguinte:

    isAdmin()||isApprover()
        

Usar uma vinculação para controlar a visibilidade do widget

  1. Selecione o widget em que você quer definir a visibilidade. Lembre-se de que os widgets abaixo dele na hierarquia herdam a visibilidade do widget pai.
  2. No Editor de propriedades, clique em Exibir.
  3. Clique no menu suspenso visível e selecione vinculação.
  4. Na caixa de diálogo da vinculação, escreva uma expressão de vinculação. Por exemplo, para fornecer acesso aos usuários que tenham o papel Gerentes:

    @user.role.Managers
        

Usar números e strings em vinculações como valores booleanos

Vincule a propriedade visible a um campo que tenha um valor de Número ou String, exceto de Data. O App Maker fará a conversão automática dele em um valor booleano. As conversões de números e casos especiais (indefinido, nulo e NaN) são iguais às de tipo do JavaScript (em inglês). Já as conversões de strings não são iguais.

Tipo de campo Verdadeiro (visível) Falso (oculto) Igual ao JavaScript?
Booleano Valor: a caixa está selecionada Valor: a caixa não está selecionada sim
Número
  • 1, 1.0
  • Todos os outros valores não listados em Falso, por exemplo, 2, 208,1, -7, Infinity, -Infinity
0, -0, 0.0, -0.0 sim
String "true", "True", "TRUE" (qualquer caso)
  • "false", "False", "FALSE" (qualquer caso)
  • Todos os outros valores não listados em Verdadeiro, por exemplo, "funcionário" ou "administrador".
não