Fixed filtering issues

This commit is contained in:
Juan Gilsanz Polo 2023-02-04 21:11:39 +01:00
parent cffdd6244e
commit 7e1dbc2388

View file

@ -97,18 +97,18 @@ class _LogsWidgetState extends State<LogsWidget> {
if (loadingMore != null && loadingMore == true && widget.logsProvider.logsData != null) { if (loadingMore != null && loadingMore == true && widget.logsProvider.logsData != null) {
LogsData newLogsData = result['data']; LogsData newLogsData = result['data'];
newLogsData.data = [...widget.logsProvider.logsData!.data, ...result['data'].data]; newLogsData.data = [...widget.logsProvider.logsData!.data, ...result['data'].data];
if (widget.logsProvider.selectedClients != null) { if (widget.logsProvider.appliedFilters.clients != null) {
newLogsData.data = newLogsData.data.where( newLogsData.data = newLogsData.data.where(
(item) => widget.logsProvider.selectedClients!.contains(item.clientInfo!.name) (item) => widget.logsProvider.appliedFilters.clients!.contains(item.client)
).toList(); ).toList();
} }
widget.logsProvider.setLogsData(newLogsData); widget.logsProvider.setLogsData(newLogsData);
} }
else { else {
LogsData newLogsData = result['data']; LogsData newLogsData = result['data'];
if (widget.logsProvider.selectedClients != null) { if (widget.logsProvider.appliedFilters.clients != null) {
newLogsData.data = newLogsData.data.where( newLogsData.data = newLogsData.data.where(
(item) => widget.logsProvider.selectedClients!.contains(item.clientInfo!.name) (item) => widget.logsProvider.appliedFilters.clients!.contains(item.client)
).toList(); ).toList();
} }
widget.logsProvider.setLogsData(newLogsData); widget.logsProvider.setLogsData(newLogsData);
@ -402,7 +402,7 @@ class _LogsWidgetState extends State<LogsWidget> {
), ),
const SizedBox(width: 5), const SizedBox(width: 5),
], ],
bottom: logsProvider.appliedFilters.searchText != null || logsProvider.appliedFilters.selectedResultStatus != 'all' bottom: logsProvider.appliedFilters.searchText != null || logsProvider.appliedFilters.selectedResultStatus != 'all' || logsProvider.appliedFilters.clients != null
? PreferredSize( ? PreferredSize(
preferredSize: const Size(double.maxFinite, 50), preferredSize: const Size(double.maxFinite, 50),
child: Container( child: Container(
@ -424,33 +424,26 @@ class _LogsWidgetState extends State<LogsWidget> {
if (logsProvider.appliedFilters.searchText != null) ...[ if (logsProvider.appliedFilters.searchText != null) ...[
const SizedBox(width: 15), const SizedBox(width: 15),
Chip( Chip(
avatar: Icon( avatar: const Icon(
Icons.search, Icons.search,
size: 24,
color: Theme.of(context).colorScheme.primary,
), ),
label: Row( label: Row(
children: [ children: [
Text( Text(
logsProvider.appliedFilters.searchText!, logsProvider.appliedFilters.searchText!,
style: const TextStyle(
fontSize: 14,
fontWeight: FontWeight.w500
),
), ),
], ],
), ),
deleteIcon: Icon( deleteIcon: const Icon(
Icons.cancel_rounded, Icons.clear,
size: 18, size: 18,
color: Theme.of(context).colorScheme.onSurfaceVariant
), ),
onDeleted: () { onDeleted: () {
logsProvider.setAppliedFilters( logsProvider.setAppliedFilters(
AppliedFiters( AppliedFiters(
selectedResultStatus: logsProvider.appliedFilters.selectedResultStatus, selectedResultStatus: logsProvider.appliedFilters.selectedResultStatus,
searchText: null, searchText: null,
clients: null clients: logsProvider.appliedFilters.clients
) )
); );
logsProvider.setSearchText(null); logsProvider.setSearchText(null);
@ -459,45 +452,31 @@ class _LogsWidgetState extends State<LogsWidget> {
searchText: '' searchText: ''
); );
}, },
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(8),
side: BorderSide(
color: Theme.of(context).colorScheme.onSurfaceVariant
)
),
backgroundColor: Theme.of(context).dialogBackgroundColor,
), ),
], ],
if (logsProvider.appliedFilters.selectedResultStatus != 'all') ...[ if (logsProvider.appliedFilters.selectedResultStatus != 'all') ...[
const SizedBox(width: 15), const SizedBox(width: 15),
Chip( Chip(
avatar: Icon( avatar: const Icon(
Icons.shield_rounded, Icons.shield_rounded,
size: 24,
color: Theme.of(context).colorScheme.primary,
), ),
label: Row( label: Row(
children: [ children: [
Text( Text(
translatedString[logsProvider.appliedFilters.selectedResultStatus]!, translatedString[logsProvider.appliedFilters.selectedResultStatus]!,
style: const TextStyle(
fontSize: 14,
fontWeight: FontWeight.w500
),
), ),
], ],
), ),
deleteIcon: Icon( deleteIcon: const Icon(
Icons.cancel_rounded, Icons.clear,
size: 18, size: 18,
color: Theme.of(context).colorScheme.onSurfaceVariant
), ),
onDeleted: () { onDeleted: () {
logsProvider.setAppliedFilters( logsProvider.setAppliedFilters(
AppliedFiters( AppliedFiters(
selectedResultStatus: 'all', selectedResultStatus: 'all',
searchText: logsProvider.appliedFilters.searchText, searchText: logsProvider.appliedFilters.searchText,
clients: null clients: logsProvider.appliedFilters.clients
) )
); );
logsProvider.setSelectedResultStatus('all'); logsProvider.setSelectedResultStatus('all');
@ -506,13 +485,41 @@ class _LogsWidgetState extends State<LogsWidget> {
responseStatus: 'all' responseStatus: 'all'
); );
}, },
shape: RoundedRectangleBorder( ),
borderRadius: BorderRadius.circular(8), ],
side: BorderSide( if (logsProvider.appliedFilters.clients != null) ...[
color: Theme.of(context).colorScheme.onSurfaceVariant const SizedBox(width: 15),
) Chip(
avatar: const Icon(
Icons.smartphone_rounded,
), ),
backgroundColor: Theme.of(context).dialogBackgroundColor, label: Row(
children: [
Text(
logsProvider.appliedFilters.clients!.length == 1
? logsProvider.appliedFilters.clients![0]
: "${logsProvider.appliedFilters.clients!.length} ${AppLocalizations.of(context)!.clients}",
),
],
),
deleteIcon: const Icon(
Icons.clear,
size: 18,
),
onDeleted: () {
logsProvider.setAppliedFilters(
AppliedFiters(
selectedResultStatus: logsProvider.appliedFilters.selectedResultStatus,
searchText: logsProvider.appliedFilters.searchText,
clients: null
)
);
logsProvider.setSelectedClients(null);
fetchLogs(
inOffset: 0,
responseStatus: logsProvider.appliedFilters.selectedResultStatus
);
},
), ),
], ],
const SizedBox(width: 15), const SizedBox(width: 15),