From 68e4b5f3d14196f1833eea0f6f1ddf26c484cda6 Mon Sep 17 00:00:00 2001 From: Sven Carstensen Date: Tue, 5 Mar 2024 14:48:14 +0100 Subject: [PATCH] Erweiterungen --- lib/content_views/tour_details_page.dart | 4 +- lib/model/job.dart | 2 +- lib/model/job.g.dart | 150 +++++++---------------- lib/model/job_tour.dart | 2 +- lib/model/job_tour.g.dart | 120 +++--------------- lib/model/tour_task.dart | 2 +- lib/model/tour_task.g.dart | 137 ++++----------------- lib/popups/accept_jobs_popup.dart | 8 +- 8 files changed, 85 insertions(+), 340 deletions(-) diff --git a/lib/content_views/tour_details_page.dart b/lib/content_views/tour_details_page.dart index 7e138f0..a8da2bc 100644 --- a/lib/content_views/tour_details_page.dart +++ b/lib/content_views/tour_details_page.dart @@ -63,9 +63,7 @@ class _TourDetailsPageState extends State { var remark = ""; if (widget.tour.rem.isNotEmpty) { - for (var remRow in widget.tour.rem) { - remark += "$remRow\n"; - } + remark += "$widget.tour.rem\n"; } else { remark = "* Keine Bemerkung vorhanden *"; } diff --git a/lib/model/job.dart b/lib/model/job.dart index 1c45697..511f5c4 100644 --- a/lib/model/job.dart +++ b/lib/model/job.dart @@ -36,7 +36,7 @@ class Job { @JsonKey(name: 'vht_id') late int vhtId; @JsonKey(name: 'rem') - late List rem; + late String rem; @JsonKey(name: 'tours') late List tours; diff --git a/lib/model/job.g.dart b/lib/model/job.g.dart index 176282f..9f6d1e7 100644 --- a/lib/model/job.g.dart +++ b/lib/model/job.g.dart @@ -40,7 +40,7 @@ const JobSchema = CollectionSchema( r'rem': PropertySchema( id: 4, name: r'rem', - type: IsarType.stringList, + type: IsarType.string, ), r'state': PropertySchema( id: 5, @@ -97,12 +97,6 @@ int _jobEstimateSize( } bytesCount += 3 + object.ordertime.length * 3; bytesCount += 3 + object.rem.length * 3; - { - for (var i = 0; i < object.rem.length; i++) { - final value = object.rem[i]; - bytesCount += value.length * 3; - } - } bytesCount += 3 + object.tours.length * 3; { final offsets = allOffsets[JobTour]!; @@ -125,7 +119,7 @@ void _jobSerialize( writer.writeBool(offsets[1], object.global); writer.writeLong(offsets[2], object.offsWarn); writer.writeString(offsets[3], object.ordertime); - writer.writeStringList(offsets[4], object.rem); + writer.writeString(offsets[4], object.rem); writer.writeLong(offsets[5], object.state); writer.writeObjectList( offsets[6], @@ -149,7 +143,7 @@ Job _jobDeserialize( object.id = id; object.offsWarn = reader.readLong(offsets[2]); object.ordertime = reader.readString(offsets[3]); - object.rem = reader.readStringList(offsets[4]) ?? []; + object.rem = reader.readString(offsets[4]); object.state = reader.readLong(offsets[5]); object.tours = reader.readObjectList( offsets[6], @@ -179,7 +173,7 @@ P _jobDeserializeProp

( case 3: return (reader.readString(offset)) as P; case 4: - return (reader.readStringList(offset) ?? []) as P; + return (reader.readString(offset)) as P; case 5: return (reader.readLong(offset)) as P; case 6: @@ -672,7 +666,7 @@ extension JobQueryFilter on QueryBuilder { }); } - QueryBuilder remElementEqualTo( + QueryBuilder remEqualTo( String value, { bool caseSensitive = true, }) { @@ -685,7 +679,7 @@ extension JobQueryFilter on QueryBuilder { }); } - QueryBuilder remElementGreaterThan( + QueryBuilder remGreaterThan( String value, { bool include = false, bool caseSensitive = true, @@ -700,7 +694,7 @@ extension JobQueryFilter on QueryBuilder { }); } - QueryBuilder remElementLessThan( + QueryBuilder remLessThan( String value, { bool include = false, bool caseSensitive = true, @@ -715,7 +709,7 @@ extension JobQueryFilter on QueryBuilder { }); } - QueryBuilder remElementBetween( + QueryBuilder remBetween( String lower, String upper, { bool includeLower = true, @@ -734,7 +728,7 @@ extension JobQueryFilter on QueryBuilder { }); } - QueryBuilder remElementStartsWith( + QueryBuilder remStartsWith( String value, { bool caseSensitive = true, }) { @@ -747,7 +741,7 @@ extension JobQueryFilter on QueryBuilder { }); } - QueryBuilder remElementEndsWith( + QueryBuilder remEndsWith( String value, { bool caseSensitive = true, }) { @@ -760,7 +754,7 @@ extension JobQueryFilter on QueryBuilder { }); } - QueryBuilder remElementContains(String value, + QueryBuilder remContains(String value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { return query.addFilterCondition(FilterCondition.contains( @@ -771,8 +765,7 @@ extension JobQueryFilter on QueryBuilder { }); } - QueryBuilder remElementMatches( - String pattern, + QueryBuilder remMatches(String pattern, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { return query.addFilterCondition(FilterCondition.matches( @@ -783,7 +776,7 @@ extension JobQueryFilter on QueryBuilder { }); } - QueryBuilder remElementIsEmpty() { + QueryBuilder remIsEmpty() { return QueryBuilder.apply(this, (query) { return query.addFilterCondition(FilterCondition.equalTo( property: r'rem', @@ -792,7 +785,7 @@ extension JobQueryFilter on QueryBuilder { }); } - QueryBuilder remElementIsNotEmpty() { + QueryBuilder remIsNotEmpty() { return QueryBuilder.apply(this, (query) { return query.addFilterCondition(FilterCondition.greaterThan( property: r'rem', @@ -801,89 +794,6 @@ extension JobQueryFilter on QueryBuilder { }); } - QueryBuilder remLengthEqualTo(int length) { - return QueryBuilder.apply(this, (query) { - return query.listLength( - r'rem', - length, - true, - length, - true, - ); - }); - } - - QueryBuilder remIsEmpty() { - return QueryBuilder.apply(this, (query) { - return query.listLength( - r'rem', - 0, - true, - 0, - true, - ); - }); - } - - QueryBuilder remIsNotEmpty() { - return QueryBuilder.apply(this, (query) { - return query.listLength( - r'rem', - 0, - false, - 999999, - true, - ); - }); - } - - QueryBuilder remLengthLessThan( - int length, { - bool include = false, - }) { - return QueryBuilder.apply(this, (query) { - return query.listLength( - r'rem', - 0, - true, - length, - include, - ); - }); - } - - QueryBuilder remLengthGreaterThan( - int length, { - bool include = false, - }) { - return QueryBuilder.apply(this, (query) { - return query.listLength( - r'rem', - length, - include, - 999999, - true, - ); - }); - } - - QueryBuilder remLengthBetween( - int lower, - int upper, { - bool includeLower = true, - bool includeUpper = true, - }) { - return QueryBuilder.apply(this, (query) { - return query.listLength( - r'rem', - lower, - includeLower, - upper, - includeUpper, - ); - }); - } - QueryBuilder stateEqualTo(int value) { return QueryBuilder.apply(this, (query) { return query.addFilterCondition(FilterCondition.equalTo( @@ -1260,6 +1170,18 @@ extension JobQuerySortBy on QueryBuilder { }); } + QueryBuilder sortByRem() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'rem', Sort.asc); + }); + } + + QueryBuilder sortByRemDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'rem', Sort.desc); + }); + } + QueryBuilder sortByState() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'state', Sort.asc); @@ -1358,6 +1280,18 @@ extension JobQuerySortThenBy on QueryBuilder { }); } + QueryBuilder thenByRem() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'rem', Sort.asc); + }); + } + + QueryBuilder thenByRemDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'rem', Sort.desc); + }); + } + QueryBuilder thenByState() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'state', Sort.asc); @@ -1422,9 +1356,9 @@ extension JobQueryWhereDistinct on QueryBuilder { }); } - QueryBuilder distinctByRem() { + QueryBuilder distinctByRem({bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addDistinctBy(r'rem'); + return query.addDistinctBy(r'rem', caseSensitive: caseSensitive); }); } @@ -1478,7 +1412,7 @@ extension JobQueryProperty on QueryBuilder { }); } - QueryBuilder, QQueryOperations> remProperty() { + QueryBuilder remProperty() { return QueryBuilder.apply(this, (query) { return query.addPropertyName(r'rem'); }); @@ -1533,7 +1467,7 @@ Job _$JobFromJson(Map json) => Job() ..offsWarn = json['offs_warn'] as int ..global = json['global'] as bool ..vhtId = json['vht_id'] as int - ..rem = (json['rem'] as List).map((e) => e as String).toList() + ..rem = json['rem'] as String ..tours = (json['tours'] as List) .map((e) => JobTour.fromJson(e as Map)) .toList(); diff --git a/lib/model/job_tour.dart b/lib/model/job_tour.dart index 8bf8e00..349059b 100644 --- a/lib/model/job_tour.dart +++ b/lib/model/job_tour.dart @@ -19,7 +19,7 @@ class JobTour { late String city; late String com; late TourPosition? pos; - late List rem; + late String rem; late List tasks; JobTour(); diff --git a/lib/model/job_tour.g.dart b/lib/model/job_tour.g.dart index cf299a9..87a88ac 100644 --- a/lib/model/job_tour.g.dart +++ b/lib/model/job_tour.g.dart @@ -57,7 +57,7 @@ const JobTourSchema = Schema( r'rem': PropertySchema( id: 8, name: r'rem', - type: IsarType.stringList, + type: IsarType.string, ), r'sort': PropertySchema( id: 9, @@ -108,12 +108,6 @@ int _jobTourEstimateSize( } } bytesCount += 3 + object.rem.length * 3; - { - for (var i = 0; i < object.rem.length; i++) { - final value = object.rem[i]; - bytesCount += value.length * 3; - } - } bytesCount += 3 + object.street.length * 3; bytesCount += 3 + object.tasks.length * 3; { @@ -145,7 +139,7 @@ void _jobTourSerialize( TourPositionSchema.serialize, object.pos, ); - writer.writeStringList(offsets[8], object.rem); + writer.writeString(offsets[8], object.rem); writer.writeLong(offsets[9], object.sort); writer.writeLong(offsets[10], object.state); writer.writeString(offsets[11], object.street); @@ -176,7 +170,7 @@ JobTour _jobTourDeserialize( TourPositionSchema.deserialize, allOffsets, ); - object.rem = reader.readStringList(offsets[8]) ?? []; + object.rem = reader.readString(offsets[8]); object.sort = reader.readLong(offsets[9]); object.state = reader.readLong(offsets[10]); object.street = reader.readString(offsets[11]); @@ -218,7 +212,7 @@ P _jobTourDeserializeProp

( allOffsets, )) as P; case 8: - return (reader.readStringList(offset) ?? []) as P; + return (reader.readString(offset)) as P; case 9: return (reader.readLong(offset)) as P; case 10: @@ -1088,7 +1082,7 @@ extension JobTourQueryFilter }); } - QueryBuilder remElementEqualTo( + QueryBuilder remEqualTo( String value, { bool caseSensitive = true, }) { @@ -1101,7 +1095,7 @@ extension JobTourQueryFilter }); } - QueryBuilder remElementGreaterThan( + QueryBuilder remGreaterThan( String value, { bool include = false, bool caseSensitive = true, @@ -1116,7 +1110,7 @@ extension JobTourQueryFilter }); } - QueryBuilder remElementLessThan( + QueryBuilder remLessThan( String value, { bool include = false, bool caseSensitive = true, @@ -1131,7 +1125,7 @@ extension JobTourQueryFilter }); } - QueryBuilder remElementBetween( + QueryBuilder remBetween( String lower, String upper, { bool includeLower = true, @@ -1150,7 +1144,7 @@ extension JobTourQueryFilter }); } - QueryBuilder remElementStartsWith( + QueryBuilder remStartsWith( String value, { bool caseSensitive = true, }) { @@ -1163,7 +1157,7 @@ extension JobTourQueryFilter }); } - QueryBuilder remElementEndsWith( + QueryBuilder remEndsWith( String value, { bool caseSensitive = true, }) { @@ -1176,7 +1170,7 @@ extension JobTourQueryFilter }); } - QueryBuilder remElementContains( + QueryBuilder remContains( String value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { @@ -1188,7 +1182,7 @@ extension JobTourQueryFilter }); } - QueryBuilder remElementMatches( + QueryBuilder remMatches( String pattern, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { @@ -1200,7 +1194,7 @@ extension JobTourQueryFilter }); } - QueryBuilder remElementIsEmpty() { + QueryBuilder remIsEmpty() { return QueryBuilder.apply(this, (query) { return query.addFilterCondition(FilterCondition.equalTo( property: r'rem', @@ -1209,7 +1203,7 @@ extension JobTourQueryFilter }); } - QueryBuilder remElementIsNotEmpty() { + QueryBuilder remIsNotEmpty() { return QueryBuilder.apply(this, (query) { return query.addFilterCondition(FilterCondition.greaterThan( property: r'rem', @@ -1218,90 +1212,6 @@ extension JobTourQueryFilter }); } - QueryBuilder remLengthEqualTo( - int length) { - return QueryBuilder.apply(this, (query) { - return query.listLength( - r'rem', - length, - true, - length, - true, - ); - }); - } - - QueryBuilder remIsEmpty() { - return QueryBuilder.apply(this, (query) { - return query.listLength( - r'rem', - 0, - true, - 0, - true, - ); - }); - } - - QueryBuilder remIsNotEmpty() { - return QueryBuilder.apply(this, (query) { - return query.listLength( - r'rem', - 0, - false, - 999999, - true, - ); - }); - } - - QueryBuilder remLengthLessThan( - int length, { - bool include = false, - }) { - return QueryBuilder.apply(this, (query) { - return query.listLength( - r'rem', - 0, - true, - length, - include, - ); - }); - } - - QueryBuilder remLengthGreaterThan( - int length, { - bool include = false, - }) { - return QueryBuilder.apply(this, (query) { - return query.listLength( - r'rem', - length, - include, - 999999, - true, - ); - }); - } - - QueryBuilder remLengthBetween( - int lower, - int upper, { - bool includeLower = true, - bool includeUpper = true, - }) { - return QueryBuilder.apply(this, (query) { - return query.listLength( - r'rem', - lower, - includeLower, - upper, - includeUpper, - ); - }); - } - QueryBuilder sortEqualTo(int value) { return QueryBuilder.apply(this, (query) { return query.addFilterCondition(FilterCondition.equalTo( @@ -1657,7 +1567,7 @@ JobTour _$JobTourFromJson(Map json) => JobTour() ..pos = json['pos'] == null ? null : TourPosition.fromJson(json['pos'] as Map) - ..rem = (json['rem'] as List).map((e) => e as String).toList() + ..rem = json['rem'] as String ..tasks = (json['tasks'] as List) .map((e) => TourTask.fromJson(e as Map)) .toList(); diff --git a/lib/model/tour_task.dart b/lib/model/tour_task.dart index e0d69b5..f5ffc91 100644 --- a/lib/model/tour_task.dart +++ b/lib/model/tour_task.dart @@ -20,7 +20,7 @@ class TourTask { late int? maxLen; late bool? rt; late bool? track; - late List? txt; + late String? txt; @JsonKey(name: 'task_arrival') late int? taskArrival; @JsonKey(name: 'task_fin_work') diff --git a/lib/model/tour_task.g.dart b/lib/model/tour_task.g.dart index aea8d19..600195a 100644 --- a/lib/model/tour_task.g.dart +++ b/lib/model/tour_task.g.dart @@ -77,7 +77,7 @@ const TourTaskSchema = Schema( r'txt': PropertySchema( id: 12, name: r'txt', - type: IsarType.stringList, + type: IsarType.string, ), r'type': PropertySchema( id: 13, @@ -113,15 +113,9 @@ int _tourTaskEstimateSize( } bytesCount += 3 + object.topic.length * 3; { - final list = object.txt; - if (list != null) { - bytesCount += 3 + list.length * 3; - { - for (var i = 0; i < list.length; i++) { - final value = list[i]; - bytesCount += value.length * 3; - } - } + final value = object.txt; + if (value != null) { + bytesCount += 3 + value.length * 3; } } return bytesCount; @@ -150,7 +144,7 @@ void _tourTaskSerialize( writer.writeLong(offsets[9], object.taskFinWork); writer.writeString(offsets[10], object.topic); writer.writeBool(offsets[11], object.track); - writer.writeStringList(offsets[12], object.txt); + writer.writeString(offsets[12], object.txt); writer.writeLong(offsets[13], object.type); } @@ -178,7 +172,7 @@ TourTask _tourTaskDeserialize( object.taskFinWork = reader.readLongOrNull(offsets[9]); object.topic = reader.readString(offsets[10]); object.track = reader.readBoolOrNull(offsets[11]); - object.txt = reader.readStringList(offsets[12]); + object.txt = reader.readStringOrNull(offsets[12]); object.type = reader.readLong(offsets[13]); return object; } @@ -220,7 +214,7 @@ P _tourTaskDeserializeProp

( case 11: return (reader.readBoolOrNull(offset)) as P; case 12: - return (reader.readStringList(offset)) as P; + return (reader.readStringOrNull(offset)) as P; case 13: return (reader.readLong(offset)) as P; default: @@ -983,8 +977,8 @@ extension TourTaskQueryFilter }); } - QueryBuilder txtElementEqualTo( - String value, { + QueryBuilder txtEqualTo( + String? value, { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { @@ -996,8 +990,8 @@ extension TourTaskQueryFilter }); } - QueryBuilder txtElementGreaterThan( - String value, { + QueryBuilder txtGreaterThan( + String? value, { bool include = false, bool caseSensitive = true, }) { @@ -1011,8 +1005,8 @@ extension TourTaskQueryFilter }); } - QueryBuilder txtElementLessThan( - String value, { + QueryBuilder txtLessThan( + String? value, { bool include = false, bool caseSensitive = true, }) { @@ -1026,9 +1020,9 @@ extension TourTaskQueryFilter }); } - QueryBuilder txtElementBetween( - String lower, - String upper, { + QueryBuilder txtBetween( + String? lower, + String? upper, { bool includeLower = true, bool includeUpper = true, bool caseSensitive = true, @@ -1045,7 +1039,7 @@ extension TourTaskQueryFilter }); } - QueryBuilder txtElementStartsWith( + QueryBuilder txtStartsWith( String value, { bool caseSensitive = true, }) { @@ -1058,7 +1052,7 @@ extension TourTaskQueryFilter }); } - QueryBuilder txtElementEndsWith( + QueryBuilder txtEndsWith( String value, { bool caseSensitive = true, }) { @@ -1071,7 +1065,7 @@ extension TourTaskQueryFilter }); } - QueryBuilder txtElementContains( + QueryBuilder txtContains( String value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { @@ -1083,7 +1077,7 @@ extension TourTaskQueryFilter }); } - QueryBuilder txtElementMatches( + QueryBuilder txtMatches( String pattern, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { @@ -1095,7 +1089,7 @@ extension TourTaskQueryFilter }); } - QueryBuilder txtElementIsEmpty() { + QueryBuilder txtIsEmpty() { return QueryBuilder.apply(this, (query) { return query.addFilterCondition(FilterCondition.equalTo( property: r'txt', @@ -1104,8 +1098,7 @@ extension TourTaskQueryFilter }); } - QueryBuilder - txtElementIsNotEmpty() { + QueryBuilder txtIsNotEmpty() { return QueryBuilder.apply(this, (query) { return query.addFilterCondition(FilterCondition.greaterThan( property: r'txt', @@ -1114,90 +1107,6 @@ extension TourTaskQueryFilter }); } - QueryBuilder txtLengthEqualTo( - int length) { - return QueryBuilder.apply(this, (query) { - return query.listLength( - r'txt', - length, - true, - length, - true, - ); - }); - } - - QueryBuilder txtIsEmpty() { - return QueryBuilder.apply(this, (query) { - return query.listLength( - r'txt', - 0, - true, - 0, - true, - ); - }); - } - - QueryBuilder txtIsNotEmpty() { - return QueryBuilder.apply(this, (query) { - return query.listLength( - r'txt', - 0, - false, - 999999, - true, - ); - }); - } - - QueryBuilder txtLengthLessThan( - int length, { - bool include = false, - }) { - return QueryBuilder.apply(this, (query) { - return query.listLength( - r'txt', - 0, - true, - length, - include, - ); - }); - } - - QueryBuilder txtLengthGreaterThan( - int length, { - bool include = false, - }) { - return QueryBuilder.apply(this, (query) { - return query.listLength( - r'txt', - length, - include, - 999999, - true, - ); - }); - } - - QueryBuilder txtLengthBetween( - int lower, - int upper, { - bool includeLower = true, - bool includeUpper = true, - }) { - return QueryBuilder.apply(this, (query) { - return query.listLength( - r'txt', - lower, - includeLower, - upper, - includeUpper, - ); - }); - } - QueryBuilder typeEqualTo( int value) { return QueryBuilder.apply(this, (query) { @@ -1557,7 +1466,7 @@ TourTask _$TourTaskFromJson(Map json) => TourTask() ..maxLen = json['max_len'] as int? ..rt = json['rt'] as bool? ..track = json['track'] as bool? - ..txt = (json['txt'] as List?)?.map((e) => e as String).toList() + ..txt = json['txt'] as String? ..taskArrival = json['task_arrival'] as int? ..taskFinWork = json['task_fin_work'] as int? ..entries = (json['entries'] as List?) diff --git a/lib/popups/accept_jobs_popup.dart b/lib/popups/accept_jobs_popup.dart index 9082612..f89584b 100644 --- a/lib/popups/accept_jobs_popup.dart +++ b/lib/popups/accept_jobs_popup.dart @@ -39,12 +39,6 @@ Future showAcceptJobsPopup(BuildContext context, List jobs) async { itemBuilder: (_, i) { var job = jobsSet.toList()[i]; - String remarkString = ''; - for (var remark in job.rem) { - remarkString += '$remark\n'; - } - remarkString = remarkString.trim(); - return ExpandableNotifier( child: ListTile( contentPadding: const EdgeInsets.symmetric(horizontal: 8, vertical: 8), @@ -127,7 +121,7 @@ Future showAcceptJobsPopup(BuildContext context, List jobs) async { ), child: Padding( padding: const EdgeInsets.all(8.0), - child: Text(remarkString), + child: Text(job.rem), ), ), ],