Fix logs filtering by client

This commit is contained in:
Juan Gilsanz Polo 2024-01-30 00:43:57 +01:00
parent aed2500fa4
commit 16f1d4664c
4 changed files with 16 additions and 18 deletions

View file

@ -1,7 +1,7 @@
class AppliedFiters { class AppliedFiters {
String selectedResultStatus = 'all'; String selectedResultStatus = 'all';
String? searchText; String? searchText;
List<String>? clients; List<String> clients;
AppliedFiters({ AppliedFiters({
required this.selectedResultStatus, required this.selectedResultStatus,

View file

@ -30,7 +30,7 @@ class LogsProvider with ChangeNotifier {
AppliedFiters _appliedFilters = AppliedFiters( AppliedFiters _appliedFilters = AppliedFiters(
selectedResultStatus: 'all', selectedResultStatus: 'all',
searchText: null, searchText: null,
clients: null clients: []
); );
LoadStatus get loadStatus { LoadStatus get loadStatus {
@ -177,18 +177,18 @@ class LogsProvider with ChangeNotifier {
if (loadingMore != null && loadingMore == true && logsData != null) { if (loadingMore != null && loadingMore == true && logsData != null) {
LogsData newLogsData = result.content; LogsData newLogsData = result.content;
newLogsData.data = [...logsData!.data, ...(result.content as LogsData).data]; newLogsData.data = [...logsData!.data, ...(result.content as LogsData).data];
if (appliedFilters.clients != null) { if (appliedFilters.clients.isNotEmpty) {
newLogsData.data = newLogsData.data.where( newLogsData.data = newLogsData.data.where(
(item) => appliedFilters.clients!.contains(item.client) (item) => appliedFilters.clients.contains(item.client)
).toList(); ).toList();
} }
_logsData = newLogsData; _logsData = newLogsData;
} }
else { else {
LogsData newLogsData = result.content; LogsData newLogsData = result.content;
if (appliedFilters.clients != null) { if (appliedFilters.clients.isNotEmpty) {
newLogsData.data = newLogsData.data.where( newLogsData.data = newLogsData.data.where(
(item) => appliedFilters.clients!.contains(item.client) (item) => appliedFilters.clients.contains(item.client)
).toList(); ).toList();
} }
_logsData = newLogsData; _logsData = newLogsData;
@ -217,7 +217,7 @@ class LogsProvider with ChangeNotifier {
_appliedFilters = AppliedFiters( _appliedFilters = AppliedFiters(
selectedResultStatus: 'all', selectedResultStatus: 'all',
searchText: null, searchText: null,
clients: null clients: []
); );
if (result.successful == true) { if (result.successful == true) {
@ -254,9 +254,9 @@ class LogsProvider with ChangeNotifier {
if (result.successful == true) { if (result.successful == true) {
LogsData newLogsData = result.content as LogsData; LogsData newLogsData = result.content as LogsData;
if (appliedFilters.clients != null) { if (appliedFilters.clients.isNotEmpty) {
newLogsData.data = newLogsData.data.where( newLogsData.data = newLogsData.data.where(
(item) => appliedFilters.clients!.contains(item.client) (item) => appliedFilters.clients.contains(item.client)
).toList(); ).toList();
} }
_logsData = newLogsData; _logsData = newLogsData;

View file

@ -51,7 +51,7 @@ class TopItemsLists extends StatelessWidget {
AppliedFiters( AppliedFiters(
selectedResultStatus: 'all', selectedResultStatus: 'all',
searchText: value, searchText: value,
clients: null clients: []
) )
); );
appConfigProvider.setSelectedScreen(2); appConfigProvider.setSelectedScreen(2);

View file

@ -70,8 +70,6 @@ class LogsListAppBar extends StatelessWidget {
forceElevated: innerBoxIsScrolled, forceElevated: innerBoxIsScrolled,
surfaceTintColor: isDesktop(width) ? Colors.transparent : null, surfaceTintColor: isDesktop(width) ? Colors.transparent : null,
title: Text(AppLocalizations.of(context)!.logs), title: Text(AppLocalizations.of(context)!.logs),
expandedHeight: logsProvider.appliedFilters.searchText != null || logsProvider.appliedFilters.selectedResultStatus != 'all' || logsProvider.appliedFilters.clients != null
? 170 : null,
actions: [ actions: [
if (!(Platform.isAndroid || Platform.isIOS)) IconButton( if (!(Platform.isAndroid || Platform.isIOS)) IconButton(
onPressed: () => logsProvider.fetchLogs(inOffset: 0), onPressed: () => logsProvider.fetchLogs(inOffset: 0),
@ -87,7 +85,7 @@ class LogsListAppBar extends StatelessWidget {
: const SizedBox(), : const SizedBox(),
const SizedBox(width: 5), const SizedBox(width: 5),
], ],
bottom: logsProvider.appliedFilters.searchText != null || logsProvider.appliedFilters.selectedResultStatus != 'all' || logsProvider.appliedFilters.clients != null bottom: logsProvider.appliedFilters.searchText != null || logsProvider.appliedFilters.selectedResultStatus != 'all' || logsProvider.appliedFilters.clients.isNotEmpty
? PreferredSize( ? PreferredSize(
preferredSize: const Size(double.maxFinite, 70), preferredSize: const Size(double.maxFinite, 70),
child: Container( child: Container(
@ -172,7 +170,7 @@ class LogsListAppBar extends StatelessWidget {
}, },
), ),
], ],
if (logsProvider.appliedFilters.clients != null) ...[ if (logsProvider.appliedFilters.clients.isNotEmpty) ...[
const SizedBox(width: 15), const SizedBox(width: 15),
Chip( Chip(
avatar: const Icon( avatar: const Icon(
@ -181,9 +179,9 @@ class LogsListAppBar extends StatelessWidget {
label: Row( label: Row(
children: [ children: [
Text( Text(
logsProvider.appliedFilters.clients!.length == 1 logsProvider.appliedFilters.clients.length == 1
? logsProvider.appliedFilters.clients![0] ? logsProvider.appliedFilters.clients[0]
: "${logsProvider.appliedFilters.clients!.length} ${AppLocalizations.of(context)!.clients}", : "${logsProvider.appliedFilters.clients.length} ${AppLocalizations.of(context)!.clients}",
), ),
], ],
), ),
@ -196,7 +194,7 @@ class LogsListAppBar extends StatelessWidget {
AppliedFiters( AppliedFiters(
selectedResultStatus: logsProvider.appliedFilters.selectedResultStatus, selectedResultStatus: logsProvider.appliedFilters.selectedResultStatus,
searchText: logsProvider.appliedFilters.searchText, searchText: logsProvider.appliedFilters.searchText,
clients: null clients: []
) )
); );
logsProvider.setSelectedClients(null); logsProvider.setSelectedClients(null);