Como a implementação atual do componente de campo de filtro carece de alguns recursos que foram solicitados no passado, mas são realmente difíceis de corrigir no estado atual, estamos brincando com a ideia de criar uma segunda versão do campo de filtro. Quando iniciamos a primeira implementação do campo de filtro, muitos requisitos foram adicionados após a implementação inicial, o que dificultou muito o atendimento de todos eles.
Com esta versão queremos criar a lista de requisitos antecipadamente para melhor atender a expectativa do consumidor de bibliotecas.
Por favor, envolva-se e adicione a esta discussão, pois queremos ser especialmente minuciosos para evitar um cenário semelhante novamente.
Deve ser fácil definir quais filtros estão disponíveis, informar o tipo de filtro, seus filhos e validadores. Na implementação v1, isso é feito por meio de um objeto de configuração e da fonte de dados .
Esse é um recurso importante para carregar mais dados com base na entrada dos usuários. Isso pode variar de uma palavra especial filtrada em uma situação de preenchimento automático ou o caminho usado para um filtro especial. Deve ser possível estender os filtros atualmente disponíveis, bem como carregar a próxima etapa do filtro. (Refere-se ao nº 868)
Um filtro selecionado consiste em uma chave, um valor e possivelmente alguns metadados que refletirão o estado das tags.
Conforme descrito em #1113, há um requisito para personalizar as propriedades key
exibidas e possíveis value
que são mostradas dentro de cada tag individual.
Na implementação v1 os filtros só podem ser configurados por referência aos elementos que foram passados no topo da fonte de dados, o que parece bastante tedioso. (Refere-se ao nº 473)
Deve ser fácil alterar o estado dos filtros atualmente definidos para editable
/ disabled
/ read-only
. A implementação atual agora exige que o consumidor obtenha os filtros definidos no momento e encontre a instância que deseja manipular e adicione as alterações lá (refere-se a #848).
Deve ser possível para o usuário voltar para um filtro já definido e editar seu valor.
Uma solicitação recorrente é adicionar conectores lógicos, ou seja, NOT
, AND
e OR
à lista de tags.
Obrigado @subarroca por mencionar isso.
Como uma extensão para os conectores lógicos entre as tags, @petrabrunner também mencionou que as tags conectadas logicamente devem ser agrupadas entre parênteses.
Alguns filtros devem ser removidos da lista de filtros disponíveis, caso o filtro já tenha sido selecionado uma vez pelo usuário.
Os filtros devem ser encaixáveis, para fornecer ao usuário um caminho simples para filtrar o par de valor-chave real. Isso se reflete bastante bem no comportamento da v1.
Isso permitirá que o usuário selecione um único valor dos filtros fornecidos. Isso pode ser aninhado até que o último filtro seja selecionado, ou seja, escolher uma cidade dá ao usuário as seguintes opções de filtro: País > Estado > Região > Cidade
Esses conjuntos podem ter uma opção distinta, ou seja, se um dos conjuntos distintos for escolhido, não será possível selecionar outro do mesmo conjunto. Portanto, o conjunto não deve mais ser exibido como uma opção.
Alguns filtros devem _apenas_ poder conter um texto livre, definido pelo usuário. A implementação atual oferece a opção de fornecer um texto. Não há indicação do que acontece como o texto é filtrado. Pode ser uma ideia adicionar alguns modos a esse tipo de filtro, ou seja, startWith
, contains
, exactMatch
. Isso poderia dar ao consumidor um pouco mais de controle sobre a filtragem.
Na implementação v1 o intervalo permite que o usuário escolha um ou dois valores e um destes operadores: greater than
, less than
, equals
ou range
(filtrado valor deve estar entre o primeiro e o segundo valor fornecido).
Deve ser possível fornecer valores padrão para cada campo, que é preenchido no intervalo.
Já houve pedidos para estender o intervalo para permitir operadores Maior que igual e menor que igual também. Além disso, em um modo de operador de intervalo, também deve haver a opção de cada valor ter greater/less
ou greater/less than
.
O intervalo também pode ser considerado uma extensão.
Deve ser possível para um consumidor adicionar uma seleção múltipla (semelhante à seção _selecionar de uma tag_), mas não ter uma única seleção, mas uma configuração de seleção múltipla. Como @danielkaneider mencionou, isso está em simulações iniciais do campo de filtro e se parece muito com uma lista de caixas de seleção em uma sobreposição. (Edição de referência nº 1206)
Na minha opinião isso seria algo que também poderia ser considerado como uma extensão.
Isso também é altamente considerado para ser construído como uma extensão. Alguns casos de uso abrangem seleções de intervalo, que não seguem a lógica de intervalo numérico (ou seja, intervalos de número de versão levantados em #78 por @bmrozinski)
Deve ser possível para o consumidor fornecer facilmente sua própria versão de um filtro e personalizar a sobreposição de acordo com suas necessidades. O que deve ser considerado é criar uma interface entre o campo de filtro e a extensão, para que uma comunicação sólida entre a extensão e o campo de filtro possa acontecer.
Isso abriria muitas possibilidades para os consumidores melhorarem o campo do filtro e ajustá-lo às suas necessidades.
Atualmente considerado feito por meio de uma extensão (primeira ou terceira parte):
Cada filtro enviado deve poder ser validado contra funções validadoras passadas. Na implementação v1, isso só era possível para o tipo free-text
.
Quando o usuário estiver preenchendo ou selecionando um filtro, os filtros disponíveis devem ser exibidos e filtrados com base na entrada do usuário. A implementação da v1 já possui esse comportamento e gostaríamos de mantê-lo.
Com base em https://github.com/dynatrace-oss/barista/issues/951#issuecomment -631519841 deve ser investigado se uma integração com o Angular Forms será viável (os valores dos campos de filtro podem ser bastante complexos). Mas isso é definitivamente algo para analisar.
parece ótimo caras. já tínhamos alguns requisitos em andamento sobre os quais queríamos entrar em contato com você. Eu vejo que eles já estão cobertos aqui
Pediram-nos para incluir AND, OR e NOT.
Também estados desabilitados, que você já está considerando
As primeiras simulações tinham uma seleção múltipla visualizada. Em vez de apenas obter uma lista de sugestões e selecionar uma, você obteria aquelas com caixas de seleção na frente; para que você possa selecionar vários deles. É uma versão mais simples do filtro AND e melhor do que inserir o mesmo filtro (por exemplo, país) várias vezes
Pediram-nos para incluir AND, OR e NOT.
Obrigado @subarroca por trazer isso à tona, adicionei isso à lista original de requisitos.
As primeiras simulações tinham uma seleção múltipla visualizada. Em vez de apenas obter uma lista de sugestões e selecionar uma, você obteria aquelas com caixas de seleção na frente;
Obrigado @danielkaneider por trazer isso à tona. Eu adicionei isso à lista original de requisitos.
Para alguns filtros pode haver uma grande quantidade de sugestões, por exemplo, tags. Seria bom limitá-los a N sugestões e exibir "Comece a digitar para ver mais" que seria buscado de forma assíncrona quando o usuário estiver digitando - tipo de pesquisa do lado do servidor.
Talvez valha a pena adicionar #78 aos requisitos.
Também estou contando com a implementação nº 78 no Filterfield v2. Os filtros de intervalo seriam perfeitos para casos de uso relacionados à filtragem de número de versão (por exemplo, 1.194.0).
Também estou contando com a implementação nº 78 no Filterfield v2.
Absolutamente. Já adicionei à lista. Embora eu considere que muitos deles são realmente construídos como uma extensão (ou seja, não fornecidos pela própria biblioteca barista), é bom ter todos esses casos de uso para extensões presentes também, para definirmos a interface entre o filtro- campo v2 e uma extensão personalizada melhor.
Temos exatamente o caso de uso que @Argeath descreveu, com muitas tags para filtragem na visualização de novos problemas. Queremos apenas retornar um subconjunto de tags do servidor, correspondendo à consulta que o usuário inseriu no campo de filtro. E podemos até ter que limitar esses resultados correspondentes, pois pode haver muitos. Portanto, uma maneira de indicar resultados "truncados" também seria bom.
Oi, ótimo ver que você planeja dar uma repaginada no filterfield ;)
o caso de uso que temos é um pouco complexo, e não sei se as sugestões acima já o cobrem completamente. Adoraríamos poder encadear termos de filtro com conectores lógicos (AND, OR,...)
fe:
mostrar tudo para (criador=usuário E gravidade=alta) OU (criador=usuário E gravidade=baixa)
sempre nos referimos a ele como "a maneira como o jira permite filtrar problemas".
Eu já vi as "seleções múltiplas para um tipo de filtro" e as instruções AND/OR - mas será possível definir termos de filtro com colchetes (ou qualquer outra maneira) e combiná-los com operadores lógicos?
@petrabrunner Infelizmente, não acho que este seja um caso de uso para o campo de filtro em particular, pois isso se assemelha cada vez mais a um padrão de linguagem de consulta. Com certeza também existem casos de uso para o seu tipo de consulta, mas eu tentaria não misturar a funcionalidade de linguagem de consulta com o campo de filtro.
O exemplo dado por você pode parecer funcionar em um contexto de campo de filtro, mas se você se referir a _como o jira permite filtrar problemas_, isso pode ficar mais complexo muito rapidamente.
TBH, mesmo os operadores lógicos no campo de filtro provavelmente são um trecho para isso. Atualmente estou tentando descobrir o que as pessoas esperariam do campo de filtros, se tudo aqui será construído ou mesmo viável é provavelmente uma discussão para mais tarde.
Vou adicionar agrupamento lógico à lista acima, mas esteja ciente de que isso pode estar muito abaixo na lista de prioridades.
@tomheller thx pela resposta - tbh. Eu já esperava isso - pois a lógica seria bastante extensa - mas imaginei que, se eu não falar sobre nosso caso de uso, você não sabe disso;)
Também precisaríamos do recurso de carregar dados para preenchimentos automáticos como parciais. Por exemplo, carregue as primeiras 100 opções e ao procurar uma opção carregue as filtradas do servidor.
O PR para a implementação atual pode ser visto aqui: https://github.com/dynatrace-oss/barista/pull/1021
Olá a todos, também temos algumas petições, classificadas de mais a menos prioritárias:
Obrigado!
Seria muito legal dar suporte a formas angulares nos campos de filtro ;), então fica mais fácil de gerenciar do ponto de vista do consumidor. Talvez expor um FilterFormControl para isso ajude
interface FilterFormControl {
field: string;
value: FilterValue // any basically
operator?: 'AND' | 'OR' | 'NOT'
...
}
```html
label="Filtrar por"
aria-label="Filtrar por controle de formulário"
clearAllLabel="Limpar tudo"
```ts
// comes from a saved config
initFilters = [{
field: 'foo',
value: 'bar'
}];
form: FormGroup({
filter: new FormControl(initFilters)
});
Oi,
Será bom ter esse recurso também:
Categoria padrão: quando o usuário começa a dar gorjeta, esta tecla é selecionada. Ao fazer isso, o usuário pode pular a etapa de selecionar a chave. Nas imagens a seguir você pode ver um exemplo disso, sendo 'Nome' a categoria padrão para filtrar:
Olá, equipe! Eu tenho outra petição também, esta seria a definição:
getTagsForFilterKey(chave: string) | DtFilterFieldTag[] | Retorna um array de DtFilterFieldTag com todas as correspondências onde a chave do DtFilterFieldTag
contém o parâmetro key
-- | -- | --
TL;DR: Uma nova versão da atual função getTagForFilter
, para melhor atender às nossas necessidades.
Conforme discutido com Markus Heimbach, ele propôs adicionar a possibilidade de que, se você digitar inicialmente e todas as opções forem filtradas, ainda poderá enviar este texto como uma entrada de texto livre.
Em outras palavras, um texto livre além do preenchimento automático para o nível raiz.
Conforme discutido com Markus Heimbach, ele propôs adicionar a possibilidade de que, se você digitar inicialmente e todas as opções forem filtradas, ainda poderá enviar este texto como uma entrada de texto livre.
Em outras palavras, um texto livre além do preenchimento automático para o nível raiz.
Mas acho que é basicamente isso que @SaraDavilaMendez já mencionou com https://github.com/dynatrace-oss/barista/issues/951#issuecomment -686365435
Conforme discutido com Markus Heimbach, ele propôs adicionar a possibilidade de que, se você digitar inicialmente e todas as opções forem filtradas, ainda poderá enviar este texto como uma entrada de texto livre.
Em outras palavras, um texto livre além do preenchimento automático para o nível raiz.Mas acho que é basicamente isso que @SaraDavilaMendez já mencionou com #951 (comentário)
Obrigada. Faltou este comentário.
Olá!
Recebemos alguns comentários sobre outro aspecto que poderia ser melhorado, ou seja, como o filtro lida com a entrada de texto médio/longo.
Atualmente, o widget apresenta uma "janela" de entrada de cerca de 24 a 25 caracteres, o que dificulta um pouco a revisão do texto inserido ou copiado e colado.
O widget, por exemplo, pode expandir e usar o espaço livre do lado direito, especialmente em telas grandes.
A caixa azul destaca o tamanho da caixa de entrada, o texto de exemplo é: _este é um texto moderadamente longo_
Movido para APM-266067
Comentários muito úteis
Olá!
Recebemos alguns comentários sobre outro aspecto que poderia ser melhorado, ou seja, como o filtro lida com a entrada de texto médio/longo.
Atualmente, o widget apresenta uma "janela" de entrada de cerca de 24 a 25 caracteres, o que dificulta um pouco a revisão do texto inserido ou copiado e colado.
O widget, por exemplo, pode expandir e usar o espaço livre do lado direito, especialmente em telas grandes.
A caixa azul destaca o tamanho da caixa de entrada, o texto de exemplo é: _este é um texto moderadamente longo_