Search filters allow search everything

This commit is contained in:
Juan Gilsanz Polo 2022-10-03 22:53:35 +02:00
parent 511f86e336
commit 86b35a1f2e
5 changed files with 21 additions and 46 deletions

View file

@ -156,5 +156,6 @@
"all": "All",
"filtered": "Filtered",
"checkAppLogs": "Check app logs",
"refresh": "Refresh"
"refresh": "Refresh",
"search": "Search"
}

View file

@ -156,5 +156,6 @@
"all": "Todas",
"filtered": "Filtrada",
"checkAppLogs": "Comprueba los logs de la app",
"refresh": "Actualizar"
"refresh": "Actualizar",
"search": "Buscar"
}

View file

@ -7,7 +7,7 @@ class LogsProvider with ChangeNotifier {
DateTime? _logsOlderThan;
String _selectedResultStatus = 'all';
String? _searchIpDomain;
String? _searchText;
int _logsQuantity = 100;
int _offset = 0;
@ -28,8 +28,8 @@ class LogsProvider with ChangeNotifier {
return _selectedResultStatus;
}
String? get searchIpDomain {
return _searchIpDomain;
String? get searchText {
return _searchText;
}
int get logsQuantity {
@ -60,7 +60,7 @@ class LogsProvider with ChangeNotifier {
_logsOlderThan = null;
_offset = 0;
_selectedResultStatus = 'all';
_searchIpDomain = null;
_searchText = null;
notifyListeners();
}
@ -77,8 +77,8 @@ class LogsProvider with ChangeNotifier {
_selectedResultStatus = value;
notifyListeners();
}
void setSearchIpDomain(String? value) {
_searchIpDomain = value;
void setSearchText(String? value) {
_searchText = value;
notifyListeners();
}
}

View file

@ -27,7 +27,7 @@ class LogsAppBar extends StatelessWidget with PreferredSizeWidget {
if (logsProvider.logsOlderThan != null) {
number++;
}
if (logsProvider.searchIpDomain != null) {
if (logsProvider.searchText != null) {
number++;
}
if (logsProvider.selectedResultStatus != 'all') {

View file

@ -37,12 +37,11 @@ class LogsFiltersModalWidget extends StatefulWidget {
}
class _LogsFiltersModalWidgetState extends State<LogsFiltersModalWidget> {
TextEditingController addressController = TextEditingController();
String? addressFieldError;
TextEditingController searchController = TextEditingController();
@override
void initState() {
addressController.text = widget.logsProvider.searchIpDomain ?? '';
searchController.text = widget.logsProvider.searchText ?? '';
super.initState();
}
@ -94,8 +93,7 @@ class _LogsFiltersModalWidgetState extends State<LogsFiltersModalWidget> {
void resetFilters() async {
setState(() {
addressController.text = '';
addressFieldError = null;
searchController.text = '';
});
logsProvider.setLoadStatus(0);
@ -128,29 +126,6 @@ class _LogsFiltersModalWidgetState extends State<LogsFiltersModalWidget> {
);
}
void validateAddress(String? value) {
if (value != null && value != '') {
RegExp ipAddress = RegExp(r'^((25[0-5]|(2[0-4]|1\d|[1-9]|)\d)(\.(?!$)|$)){4}$');
RegExp domain = RegExp(r'^((?!-))(xn--)?[a-z0-9][a-z0-9-_]{0,61}[a-z0-9]{0,1}\.(xn--)?([a-z0-9\-]{1,61}|[a-z0-9-]{1,30}\.[a-z]{2,})$');
if (ipAddress.hasMatch(value) == true || domain.hasMatch(value) == true) {
setState(() {
addressFieldError = null;
});
logsProvider.setSearchIpDomain(addressController.text);
}
else {
setState(() {
addressFieldError = AppLocalizations.of(context)!.invalidIpDomain;
});
}
}
else {
setState(() {
addressFieldError = AppLocalizations.of(context)!.ipDomainNotEmpty;
});
}
}
void filterLogs() async {
Navigator.pop(context);
@ -163,7 +138,7 @@ class _LogsFiltersModalWidgetState extends State<LogsFiltersModalWidget> {
count: logsProvider.logsQuantity,
olderThan: logsProvider.logsOlderThan,
responseStatus: logsProvider.selectedResultStatus,
search: logsProvider.searchIpDomain,
search: logsProvider.searchText,
);
if (result['result'] == 'success') {
logsProvider.setLogsData(result['data']);
@ -216,17 +191,16 @@ class _LogsFiltersModalWidgetState extends State<LogsFiltersModalWidget> {
SizedBox(
width: MediaQuery.of(context).size.width - 108,
child: TextFormField(
controller: addressController,
onChanged: validateAddress,
controller: searchController,
onChanged: (value) => logsProvider.setSearchText(value),
decoration: InputDecoration(
prefixIcon: const Icon(Icons.link_rounded),
errorText: addressFieldError,
prefixIcon: const Icon(Icons.search_rounded),
border: const OutlineInputBorder(
borderRadius: BorderRadius.all(
Radius.circular(10)
)
),
labelText: AppLocalizations.of(context)!.ipDomain,
labelText: AppLocalizations.of(context)!.search,
),
),
),
@ -234,10 +208,9 @@ class _LogsFiltersModalWidgetState extends State<LogsFiltersModalWidget> {
IconButton(
onPressed: () {
setState(() {
addressController.text = '';
addressFieldError = null;
searchController.text = '';
});
logsProvider.setSearchIpDomain(null);
logsProvider.setSearchText(null);
},
icon: const Icon(Icons.clear)
)