refactor: improve filtering logic for employee time records in registro-pontos page
- Enhanced the filtering mechanism to apply location and status filters more effectively, ensuring only relevant records are displayed. - Added checks to exclude records without location information when filters are active, improving data accuracy. - Implemented a final filtering step to ensure only groups with valid records are shown, enhancing user experience in reviewing time records.
This commit is contained in:
@@ -251,6 +251,8 @@
|
|||||||
});
|
});
|
||||||
|
|
||||||
// Filtrar registros com base nos filtros avançados
|
// Filtrar registros com base nos filtros avançados
|
||||||
|
// Nota: Os filtros de data e funcionário são aplicados no backend através de registrosParams
|
||||||
|
// Os filtros de status e localização são aplicados aqui no frontend
|
||||||
const registrosFiltrados = $derived.by(() => {
|
const registrosFiltrados = $derived.by(() => {
|
||||||
if (!registros || registros.length === 0) return [];
|
if (!registros || registros.length === 0) return [];
|
||||||
|
|
||||||
@@ -268,6 +270,10 @@
|
|||||||
// Filtro de localização (Dentro/Fora do Raio)
|
// Filtro de localização (Dentro/Fora do Raio)
|
||||||
if (localizacaoFiltro !== 'todos') {
|
if (localizacaoFiltro !== 'todos') {
|
||||||
resultado = resultado.filter(r => {
|
resultado = resultado.filter(r => {
|
||||||
|
// Se não houver informação de localização, excluir do resultado quando filtro está ativo
|
||||||
|
if (r.dentroRaioPermitido === undefined || r.dentroRaioPermitido === null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
if (localizacaoFiltro === 'dentro') return r.dentroRaioPermitido === true;
|
if (localizacaoFiltro === 'dentro') return r.dentroRaioPermitido === true;
|
||||||
if (localizacaoFiltro === 'fora') return r.dentroRaioPermitido === false;
|
if (localizacaoFiltro === 'fora') return r.dentroRaioPermitido === false;
|
||||||
return true;
|
return true;
|
||||||
@@ -432,7 +438,17 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return resultado;
|
// Filtrar grupos que não têm registros após aplicar os filtros
|
||||||
|
// Isso garante que apenas funcionários com registros que passam pelos filtros sejam exibidos
|
||||||
|
const resultadoFiltrado = resultado.filter(grupo => {
|
||||||
|
// Verificar se o grupo tem pelo menos um registro em alguma data
|
||||||
|
const temRegistros = Object.values(grupo.registrosPorData).some(
|
||||||
|
grupoData => grupoData.registros && grupoData.registros.length > 0
|
||||||
|
);
|
||||||
|
return temRegistros;
|
||||||
|
});
|
||||||
|
|
||||||
|
return resultadoFiltrado;
|
||||||
});
|
});
|
||||||
|
|
||||||
// Query para banco de horas de cada funcionário
|
// Query para banco de horas de cada funcionário
|
||||||
|
|||||||
Reference in New Issue
Block a user