diff --git a/lib/services/data_service/data_service_traction.dart b/lib/services/data_service/data_service_traction.dart index 2830782..d8631ba 100644 --- a/lib/services/data_service/data_service_traction.dart +++ b/lib/services/data_service/data_service_traction.dart @@ -32,7 +32,7 @@ extension DataServiceTraction on DataService { payload['class'] = locoClass; } if (locoNumber != null && locoNumber.isNotEmpty) { - payload['number'] = locoNumber; + payload['number'] = _withLikeWildcards(locoNumber); } if (filters != null) { filters.forEach((key, value) { @@ -67,6 +67,14 @@ extension DataServiceTraction on DataService { } + String _withLikeWildcards(String rawValue) { + final value = rawValue.trim(); + if (value.isEmpty) return value; + final hasLeadingWildcard = value.startsWith('%'); + final hasTrailingWildcard = value.endsWith('%'); + return '${hasLeadingWildcard ? '' : '%'}$value${hasTrailingWildcard ? '' : '%'}'; + } + Future> fetchLocoTimeline( int locoId, { bool includeAllPending = false,