po-angular
po-angular copied to clipboard
po-page-dynamic-search: initValue não funciona com mais de 1 item
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:
- Defina um campo poPageDynamicSearchFilters no poPageDynamicSearch.
- O campo deve estar configurado com optionsMulti, optionsService e initValue.
- Preencha o initValue com uma lista, contendo mais de 1 item.
- Na interface, clique em Busca avançada.
- 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.
Que comportamento você esperava ver?
Quando configurado um campo com multiselect e options service, funcionar com mais de 1 item no initValue.
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
Bom dia @flaviosrc!
Estamos analisando o cenário reportado logo lhe daremos um retorno!
Atenciosamente
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
@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
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 URLhttps://po-sample-api.herokuapp.com/v1/heroes?name=Robert%20Bruce%20Banner,Steve%20Rogers
e não retorna nada:.
- Quando é apenas um herói:
hero: ['Robert Bruce Banner']
é gerado a seguinte URLhttps://po-sample-api.herokuapp.com/v1/heroes?name=Robert%20Bruce%20Banner
e retorna o herói:
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.
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.
Agradeço pela ajuda, pessoal!
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.
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.
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.