po-angular icon indicating copy to clipboard operation
po-angular copied to clipboard

po-page-dynamic-search: initValue não funciona com mais de 1 item

Open flaviosrc opened this issue 2 years ago • 7 comments

Reprodução

Utilize StackBlitz (https://stackblitz.com/edit/po-ui-w2zuyz?file=src/app/app.service.ts) para reproduzir o bug relatado na issue.

Passos para reproduzir:

  1. Defina um campo poPageDynamicSearchFilters no poPageDynamicSearch.
  2. O campo deve estar configurado com optionsMulti, optionsService e initValue.
  3. Preencha o initValue com uma lista, contendo mais de 1 item.
  4. Na interface, clique em Busca avançada.
  5. O campo não é preenchido com os valores definidos anteriormente.

Exemplo do campo:

{
      property: 'hero',
      label: 'Hero name',
      optionsMulti: true,
      optionsService: 'https://po-sample-api.herokuapp.com/v1/heroes',
      initValue: ['Robert Bruce Banner', 'Steve Rogers']
}

Qual o comportamento atual?

Quando configurado um campo com multiselect e options service, o initValue não funciona com mais de 1 item.

image image

Que comportamento você esperava ver?

Quando configurado um campo com multiselect e options service, funcionar com mais de 1 item no initValue.

image image

No exemplo de código, aplico um método para salvar no localStorage do navegador, os filtros selecionados pelo usuário. Se o usuário selecionar apenas um item e recarregar a página, no evento onLoad normalmente é restabelecido os filtros anteriores na propriedade initValue de cada filtro. Quando o usuário seleciona mais de um item e recarrega a página, os itens da tabela continuam filtrados, os disclaimers continuam listados, porém ao clicar em Busca avançada, o campo em questão fica vazio.

Ambiente

  • PO UI: 14.0.0
  • Angular: 14.0.7
  • Browser(s):
    • [X] Chrome
    • [ ] Firefox
    • [ ] Edge
    • [ ] Safari
    • [ ] IE 11
    • [ ] Outros
  • Operating System:
    • [ ] Windows
    • [ ] macOS
    • [ ] Ubuntu
    • [X] Outros

flaviosrc avatar Aug 17 '22 21:08 flaviosrc

Bom dia @flaviosrc!

Estamos analisando o cenário reportado logo lhe daremos um retorno!

Atenciosamente

gabrielibarbosa avatar Aug 19 '22 13:08 gabrielibarbosa

Olá @flaviosrc e @gabrielibarbosa,

Eu fiz um exemplo mais simples e atualizei o StaclBlitz para 14.2.1 e funcionou. https://stackblitz.com/edit/po-ui-jwcs2a?file=src/app/app.component.ts image

wsteixeira avatar Aug 19 '22 14:08 wsteixeira

@wsteixeira O problema ocorre quando usado o optionsService ao invés do options. https://stackblitz.com/edit/po-ui-ccqd7w?file=src/app/app.component.ts

image

flaviosrc avatar Aug 19 '22 15:08 flaviosrc

Olá @gabrielibarbosa e @flaviosrc,

O problema está na requisição enviada para o backend:

  • Quando é solicitado dois heróis hero: ['Robert Bruce Banner', 'Steve Rogers'] é gerado a seguinte URL https://po-sample-api.herokuapp.com/v1/heroes?name=Robert%20Bruce%20Banner,Steve%20Rogers e não retorna nada: image.
  • Quando é apenas um herói: hero: ['Robert Bruce Banner'] é gerado a seguinte URL https://po-sample-api.herokuapp.com/v1/heroes?name=Robert%20Bruce%20Banner e retorna o herói: image

wsteixeira avatar Aug 19 '22 22:08 wsteixeira

Bom dia @wsteixeira, sendo assim, acho que o problema então está resolvido. Na documentação do Page Dynamic Search, é tratado sobre isso com a propriedade advancedFilters. image

Fiz outro exemplo de implementação usando PoComboFilter (https://stackblitz.com/edit/po-ui-rp66ur?file=src/app/hero-combo.service.ts), que funcionou perfeitamente, com exeção para um detalhe, implementando a interface PoComboFilter padrão, tive um erro no console (na imagem abaixo), onde exige o método getObjectsByValues, que é implementado pela interface PoMultiselectFilter, se implementando esse método no PoComboFilter, tudo funciona sem problemas. image

Agradeço pela ajuda, pessoal!

flaviosrc avatar Aug 21 '22 22:08 flaviosrc

Olá @flaviosrc e @gabrielibarbosa,

Creio que o problema seja mesmo na API do PO-UI , eu ajustei novamente o exemplo https://stackblitz.com/edit/po-ui-igcamd?file=src/app/app.component.ts e fiz um novo teste em uma API que eu desenvolvi para teste mesmo e funcionou conforme esperado.

image

wsteixeira avatar Aug 21 '22 22:08 wsteixeira

Olá @wsteixeira e @flaviosrc!

Agradeço a interação de vocês, ficamos muito felizes quando a comunidade interage!

Sobre o problema relatado, irei criar uma issue para nosso backlog de desenvolvimento para que possamos corrigir o erro da nossa API que vocês apontaram na aqui.

gabrielibarbosa avatar Aug 23 '22 12:08 gabrielibarbosa

Como visto que o problema não é um bug no componente e sim um ajuste necessário na nossa api de exemplo que fica em outro repositório vou encerrar esta issue.

alinelariguet avatar Sep 30 '22 20:09 alinelariguet