Skip to content

Padroniza filtros e paginação da seleção de inputs no CRC e TSM (#559)#618

Open
jandsonrj wants to merge 2 commits into
mainfrom
559-standardize-product-list-filters
Open

Padroniza filtros e paginação da seleção de inputs no CRC e TSM (#559)#618
jandsonrj wants to merge 2 commits into
mainfrom
559-standardize-product-list-filters

Conversation

@jandsonrj
Copy link
Copy Markdown
Member

Padroniza a etapa de seleção de catálogos de redshift nos dois pipelines
(CRC e TSM) e corrige a paginação que estava 100% no front no CRC.

CRC (/specz_catalogs)

  • Habilita a busca por nome (campo Search) que já existia comentada
  • Paginação passa a ser server-side, usando o getProductsSpecz que o TSM
    já usa (params page, page_size, search, ordering). Antes o
    componente chamava getAllProductsSpecz e baixava a lista inteira de
    uma vez, o que travava conforme a base cresce
  • Seleção múltipla agora persiste entre páginas (keepNonExistentRowsSelected)
  • pageSize default 25, opções 10/25/50

TSM (/training_set_maker)

  • Adicionado o botão FILTERS por coluna, mesmo do CRC
  • pageSize default sobe de 10 pra 25, opções 10/25/50

Service

  • Removida getAllProductsSpecz (sem uso depois da migração)

Backend

Nenhuma mudança. O endpoint /api/products-specz/ já aceitava page,
page_size, search e ordering — só faltava o CRC usar.

Como testar

  1. docker compose up -d
  2. Abrir http://localhost/specz_catalogs:
    • DevTools → Network: a primeira chamada deve ser
      /api/products-specz/?page=1&page_size=25&ordering=-created_at
      (não baixa tudo de uma vez)
    • Trocar de página dispara page=2
    • Digitar no Search dispara search=... depois de ~600ms (debounce)
    • Botão FILTERS abre filtros por coluna
    • Selecionar um item na página 1, ir pra página 2 e voltar: a seleção
      continua marcada
  3. Abrir http://localhost/training_set_maker:
    • Botão FILTERS agora aparece
    • Listagem continua com radio (seleção única) e busca funcionando

Notas

  • O GridToolbarFilterButton filtra apenas as linhas já carregadas na
    página atual (limitação nativa do MUI DataGrid com paginação server-side).
    Pra busca em toda a base, usar o campo Search.
  • Mantidas as diferenças semânticas de seleção: CRC continua com checkbox
    (múltipla) e TSM com radio (única).

@jandsonrj jandsonrj self-assigned this May 19, 2026
@jandsonrj jandsonrj linked an issue May 19, 2026 that may be closed by this pull request
2 tasks
Copy link
Copy Markdown
Member

@crisingulani crisingulani left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A paginação não esta funcionando. A requisição é feita corretamente no backend, o backend retorna o conteúdo correto, porém o frontend não renderiza. Sempre mantém a primeira página.

@jandsonrj jandsonrj moved this to 👀 In review in Software May 20, 2026
The page-reset effect depended on the "filters" object directly. Since
"filters" is recreated on every render (default empty object, or a new
object from the parent), the effect ran on every render and called
setPage(0), forcing the grid back to page 1 whenever the user navigated.
The request for the next page was issued and the backend responded
correctly, but the UI snapped back to the first page.

Use a serialized key (JSON.stringify) as the effect dependency so it only
runs when the search query or filter values actually change.
@jandsonrj
Copy link
Copy Markdown
Member Author

A paginação não esta funcionando. A requisição é feita corretamente no backend, o backend retorna o conteúdo correto, porém o frontend não renderiza. Sempre mantém a primeira página.

Valeu pelo apontamento! Achei o bug: o useEffect que reseta a página dependia
do objeto filters (recriado a cada render), então forçava setPage(0) em todo
render e prendia na primeira página. Corrigido com uma chave serializada como
dependência. Testei a paginação localmente e ficou ok. Pode testar de novo 🙏 (commit ba65058)

@jandsonrj jandsonrj requested a review from crisingulani May 20, 2026 22:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: 👀 In review

Development

Successfully merging this pull request may close these issues.

standardize product list filters

2 participants