SAPUI5 para manequins parte 2: Um exercício completo passo a passo


Introdução e Recapitulação


Na postagem do blog anterior , começamos a projetar nosso aplicativo renderizando uma tabela com algum Parceiro de Negócios. Aprendemos o que é o protocolo OData, como ler um manifesto XML do OData, como vincular dados a uma tabela e como personalizar o layout das colunas com base em diferentes resoluções de tela.


O que será coberto neste exercício


Com a Parte 2 desta série de postagens do blog, aprenderemos como interagir com os dados em nossas Tabelas e Lista. Vamos aprender como filtrar e classificar dados de maneira inteligente.


  • Crie JSONModel para manipular dados locais
  • Defina um sizeLimit padrão para nosso JSONModel
  • FilterBar : controle da interface do usuário que exibe filtros de maneira amigável para preencher valores para uma consulta
  • Use fragmentos XML para criar um diálogo de configurações de exibição para manipular dados de classificação e grupo
  • Filtrar e classificar dados
  • Adicione uma barra de ferramentas Informações à nossa tabela para exibir informações úteis

Vamos codificar


Barra de filtro


A primeira coisa que queremos fazer é permitir que os usuários filtrem a lista de Parceiros de Negócios exibida em nossa tabela. Na maioria das vezes, temos dados realmente grandes (nosso conjunto de Parceiros de Negócios é composto por 13880 registros) configurados para exibição e o usuário deseja filtrar todos esses registros com base em algumas informações úteis.


Regra geral: não exiba entrada de filtro para informações que não são exibidas em sua tabela / lista

Para fazer isso, você precisa adicionar uma FilterBar acima da sua tabela. Esse controle de interface do usuário está disponível apenas no SAPUI5 e não no OpenUI5.


O FilterBar permite agrupar o filtro de maneira ordenada. Esse controle de interface do usuário é sempre usado com um Gerenciador de variantes que não abordarei neste momento.



Adicione quatro filtros diferentes:


  • ID: entrada que filtrará o atributo BusinessPartnerID
  • Nome: Entrada que filtrará o atributo CompanyName
  • Rua: Entrada que será
  • País: selecione ( JSON da lista de códigos de países ) para filtrar o atributo Endereço / País

Depois de adicionar essas entradas à FilterBar, o que você precisa fazer é vincular os eventos "search" e "clear". O primeiro será acionado quando o usuário iniciar uma pesquisa, o segundo quando você precisar limpar todos os filtros e iniciar uma pesquisa em branco.


Os filtros devem ser exclusivos um do outro. Se o usuário adicionou "SAP" no nome da empresa e "IT" no código do país, sua tabela deve filtrar uma consulta como


Dê-me todo o parceiro de negócios com um nome que contenha "SAP" e com um código de país igual a "DE"

JSONModel


Já dissemos que no SAPUI5 você precisa de diferentes tipos de modelos:


  • ODataModel v2: implementação de modelo baseada no protocolo OData (versão 2). É usado quando você precisa interagir com um serviço OData.
  • JSONModel : implementação de modelo para dados JSON. É usado principalmente para manipular dados locais / temporários

Para nosso exercício, sugiro que você crie um JSONModel para armazenar dados de filtro e outro para armazenar códigos de países. Quando você cria um arquivo JSON local dentro da pasta do modelo, é possível importá-los facilmente do _manifest.json_ que manipulará toda a lógica para pré-carregar as informações quando o aplicativo for iniciado.


Filtro


novo sap.ui.model.Filter (vFilterInfo, vOperator?, vValue1?, vValue2?)


O Filter é uma ferramenta poderosa, que permite misturar filtros diferentes para criar consultas OData complexas que serão traduzidas em SQL no lado de back-end.


  1. O primeiro parâmetro é o nome da coluna que você deseja filtrar. Você também pode especificar uma coluna de uma propriedade expandida como "Endereço / Rua"
  2. O segundo parâmetro é a operação que você gostaria de aplicar ao seu filtro. Você pode encontrar todas as operações possíveis na documentação do FilterOperator .
  3. O terceiro e o quarto parâmetro são valores de consulta inseridos pelo usuário e nos quais você deseja filtrar.

O segundo construtor do filtro permite misturar filtros para criar grupos de filtro AND e OR.


novo sap.ui.model.Filter (aFilters, bAnd)


Depois de criar seu filtro final, você pode aplicá-lo à ligação da tabela.


Classificar e agrupar


Um usuário sempre deseja também classificar / agrupar registros com base em uma coluna específica e funciona mais ou menos como o Filtro.


novo sap.ui.model.Sorter (sPath, bDescending?, vGroup?, fnComparator?)


  1. O primeiro parâmetro (como para Filter) é o atributo OData no qual você deseja classificar
  2. O segundo parâmetro (booleano) classifica os dados de maneira decrescente ou ascendente
  3. O terceiro parâmetro pode ser um booleano (se você deseja reagrupar dados) ou uma função (explicarei isso em um momento).
  4. O último parâmetro é opcional e permite que você faça uma classificação personalizada local (não no OData) com base no resultado da função

O parâmetro vGroup é importante porque permite especificar uma maneira personalizada de reagrupar itens. Você só precisa implementar uma função personalizada que retorne um objeto JavaScript com uma chave e um valor de texto dentro.


  • A chave será usada pelo SAPUI5 para entender se o registro já está contido em um grupo com o mesmo valor de chave
  • O texto é usado pelo SAPUI5 para criar a interface do usuário para mostrar o nome do grupo

Essa função é particularmente importante quando você deseja reagrupar itens para valores especiais, como datas. Cada data do JavaScript é diferente porque lida com dados em milissegundos. Nesse caso, você pode formatar a data para mostrar apenas ano-mês-dia e os itens serão agrupados corretamente para a data.


Tente agrupar apenas o atributo "CreatedAt" sem uma função personalizada e veja o que acontece;)


Classificação e agrupamento: UI / UX


A melhor maneira de permitir que um usuário classifique e agrupe dados em sua tabela / lista é usar o ViewSettingsDialog .



É muito fácil definir e configurar e oferece muito controle. O ViewSettingsDialog é incorporado dentro de um Fragmento e é exibido como um Diálogo / Popover.


Normalmente, quando você deseja exibir uma caixa de diálogo como essa, basta criar sua definição de fragmento em um arquivo (como ViewSettingDialog.fragment.xml) e carregado quando o usuário clica no botão acima da tabela.


Quando estamos falando sobre fragmentos, precisamos prestar muita atenção em duas coisas:


  • Reutilização de recursos
  • Dependência do ciclo de vida

Ambos permitem que você não desperdice recursos e não crie vazamentos de memória (e você realmente não quer lidar com eles!)


Então:


  1. Crie um novo sap.ui.xmlfragment somente quando necessário (quando a variável que contém a referência não for nula ou destruída), caso contrário, apenas reutilize-a e abra a caixa de diálogo
  2. Lembre-se de destruir a caixa de diálogo quando necessário, como quando a caixa de diálogo for fechada, se você estiver usando a mesma variável para fragmentos diferentes ou no evento de saída do controlador

Barra de informações


A InfoToolbar é uma barra de ferramentas manipulada pelo ListBase (classe estendida pela Tabela) e geralmente é exibida abaixo do cabeçalho (dentro da agregação da infoToolbar). É muito útil quando você deseja mostrar algumas informações que precisam ser destacadas.


No nosso caso, quando o usuário realizar uma pesquisa, exibiremos o registro de data e hora mais recente da pesquisa e quantos registros foram filtrados no total.


Conclusão e o que vem a seguir na Parte 3?


Se você quiser fazer o checkout do resultado final, pode ir diretamente para o ramo step_2 do nosso Projeto GitHub .


Na próxima parte do exercício, apresentaremos o conceito de layout SplitApp e Master-Detail para melhor começar a ler alguma nova documentação;)

Source: https://habr.com/ru/post/pt437036/


All Articles