From 98581c9a391f3ea6cdaf7d92a3bd102d72aa8076 Mon Sep 17 00:00:00 2001 From: Sven Carstensen Date: Wed, 14 Feb 2024 11:21:22 +0100 Subject: [PATCH] Erweiterungen --- lib/content_views/approach_area_page.dart | 182 ++- lib/content_views/main_page.dart | 2 +- lib/main.dart | 2 + lib/model/ranking.dart | 56 + lib/model/ranking.g.dart | 1303 +++++++++++++++++ lib/popups/tasks_popups/zip_popup.dart | 53 + .../fin_tour_message.g.dart | 967 ------------ lib/protocoll_messages/zip_message.dart | 120 ++ lib/protocoll_messages/zip_message.g.dart | 1077 ++++++++++++++ lib/tools/constants.dart | 3 +- lib/tools/messages/ranking_updated.dart | 5 + lib/tools/mqtt_core.dart | 16 +- lib/tools/util.dart | 2 +- 13 files changed, 2792 insertions(+), 996 deletions(-) create mode 100644 lib/model/ranking.dart create mode 100644 lib/model/ranking.g.dart create mode 100644 lib/popups/tasks_popups/zip_popup.dart create mode 100644 lib/protocoll_messages/zip_message.dart create mode 100644 lib/protocoll_messages/zip_message.g.dart create mode 100644 lib/tools/messages/ranking_updated.dart diff --git a/lib/content_views/approach_area_page.dart b/lib/content_views/approach_area_page.dart index 6afc6e4..d5dec0e 100644 --- a/lib/content_views/approach_area_page.dart +++ b/lib/content_views/approach_area_page.dart @@ -1,9 +1,20 @@ import 'package:flutter/material.dart'; +import 'package:isar/isar.dart'; import 'package:stadtbote/content_views/utils/content_view_widget.dart'; import 'package:stadtbote/content_views/utils/header_info.dart'; +import 'package:stadtbote/model/ranking.dart'; +import 'package:stadtbote/popups/tasks_popups/zip_popup.dart'; +import 'package:stadtbote/protocoll_messages/zip_message.dart'; +import 'package:stadtbote/tools/mqtt_core.dart'; +import '../main.dart'; import '../tools/util.dart'; +enum ModeEnum { + set, + request +} + class ApproachAreaPage extends ContentViewWidget { const ApproachAreaPage({super.key}); @@ -14,7 +25,7 @@ class ApproachAreaPage extends ContentViewWidget { Future getHeaderInfo(BuildContext context) async { return HeaderInfo( titleWidget: const Text( - 'Angenommene Aufträge', + 'Anfahrtsbereich', style: TextStyle( color: Colors.white, fontSize: 20.0, @@ -30,14 +41,14 @@ class ApproachAreaPage extends ContentViewWidget { } class _ApproachAreaPageState extends State { - //late List _jobs; + late Ranking? _ranking; late bool _initCompleted = false; @override void initState() { Future.delayed(const Duration(seconds: 0), () async { - //_jobs = await MyApp.isarInstance.jobs.filter().stateEqualTo(1).findAll(); + _ranking = await MyApp.isarInstance.rankings.where().findFirst(); _initCompleted = true; @@ -53,25 +64,158 @@ class _ApproachAreaPageState extends State { return Util.getWaitWidget(context); } - return const SingleChildScrollView( - scrollDirection: Axis.vertical, - child: SingleChildScrollView( - scrollDirection: Axis.horizontal, - child: Row( - children: [ - SizedBox(width: 80, child: Text('Row 1')), - SizedBox(width: 80, child: Text('Row 2')), - SizedBox(width: 80, child: Text('Row 3')), - SizedBox(width: 80, child: Text('Row 4')), - SizedBox(width: 80, child: Text('Row 5')), - SizedBox(width: 80, child: Text('Row 6')), - ], + return Padding( + padding: const EdgeInsets.all(8.0), + child: InteractiveViewer( + alignment: Alignment.topCenter, + child: SingleChildScrollView( + scrollDirection: Axis.vertical, + child: SingleChildScrollView( + scrollDirection: Axis.horizontal, + child: Column(crossAxisAlignment: CrossAxisAlignment.start, children: _fillColumns()), + ), ), ), ); } - /*void _clicked(Job job) { - MessageService().publish(Constants.messageTopicPushContentView, arguments: TourListPage(job: job)); - }*/ + List _fillColumns() { + List columns = []; + + if (_ranking != null) { + for (int i = 0; i < _ranking!.ranks.length; i++) { + var rank = _ranking!.ranks[i]; + + List entries = []; + entries.add( + GestureDetector( + onTap: ()=> { + if (i == 0) { + showZipPopup(context, 'ACHTUNG: Wenn Sie Ihre PLZ ändern, verlieren Sie Ihr Ranking!\n', 'Freimelden', (zip) => {_sendZip(rank, zip, ModeEnum.set)}), + } else { + showZipPopup(context, 'ACHTUNG: Wenn Sie Ihre PLZ ändern, verlieren Sie Ihr Ranking!\n', 'OK', (zip) => {_sendZip(rank, zip, ModeEnum.request)}), + } + }, + child: Container( + padding: const EdgeInsets.all(4), + margin: const EdgeInsets.all(2), + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(10), + color: i == 0 ? Colors.lightGreen : Colors.white, + border: Border.all( + color: Colors.grey, + width: 0.5, + ), + ), + width: 85, + height: 60, + child: Column(children: [ + Text( + rank.zip, + style: const TextStyle(fontSize: 20), + ), + Text( + rank.area, + ) + ] + ) + ), + ), + ); + + for (int j = 0; j < rank.vehicles.length; j++) { + var vehicle = rank.vehicles[j]; + + var imageFilename = vehicle.self == true ? "assets/mein_${mapVehicleTypeToImageName(vehicle.type)}" : "assets/${mapVehicleTypeToImageName(vehicle.type)}"; + entries.add(Container( + padding: const EdgeInsets.all(4), + margin: const EdgeInsets.all(2), + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(10), + color: Colors.white, + border: Border.all( + color: Colors.grey, + width: 0.5, + ), + ), + width: 80, + height: 60, + child: Column( + children: [ + Image.asset(imageFilename, width: 30, height: 30), + const SizedBox(width: 10), + Text( + mapVehicleTypeToText(vehicle.type) + ), + ], + ), + )); + } + + columns.add(Align( + alignment: Alignment.topLeft, + child: Row( + mainAxisAlignment: MainAxisAlignment.start, + children: entries, + ), + )); + } + } + + return columns; + } + + _sendZip(Rank rank, String zip, ModeEnum mode) { + var zipMessage = ZipMessage(); + + if (mode == ModeEnum.set) { + var position = MyApp.currentPosition; + + zipMessage.setPos = ZipSetPos(); + zipMessage.setPos!.zip = zip; + + if (position != null) { + zipMessage.setPos!.track = ZipTrack(); + zipMessage.setPos!.track.time = DateTime.now().toIso8601String(); + zipMessage.setPos!.track.pos = ZipTrackPos(); + zipMessage.setPos!.track.pos!.lat = position.latitude; + zipMessage.setPos!.track.pos!.long = position.longitude; + zipMessage.setPos!.track.pos!.acc = position.accuracy.toInt(); + } + } else { + zipMessage.reqZip = ZipReqZip(); + zipMessage.reqZip!.id = rank.id; + zipMessage.reqZip!.zip = zip; + } + + MqttCore.instance.publishPayloadMessage("rank", zipMessage.toJson()); + } } + +/* +private void SendMessage(int columnNumber, string zipNumber) + { + var payloadObject = new JObject(); + + if (columnNumber == 0) + { + var setPosObject = new JObject(); + payloadObject.Add(new JProperty("set_pos", setPosObject)); + + setPosObject.Add(new JProperty("zip", zipNumber)); + setPosObject.Add(new JProperty("track", CreateTrackObject())); + } + else + { + var regZipObject = new JObject(); + payloadObject.Add(new JProperty("reg_zip", regZipObject)); + + regZipObject.Add(new JProperty("id", columnNumber)); + regZipObject.Add(new JProperty("zip", zipNumber)); + } + + var json = payloadObject.ToString(); + + App.Core.SendJsonMessageAsync("rank", payloadObject); + } + */ diff --git a/lib/content_views/main_page.dart b/lib/content_views/main_page.dart index 94bbe2e..f285467 100644 --- a/lib/content_views/main_page.dart +++ b/lib/content_views/main_page.dart @@ -259,7 +259,7 @@ class _MainPageState extends State { widget.sidValueNotifier.value = sessionStatusInfoUpdateMessage.status.sid; }); - MessageService().subscribe(Constants.messageTopicStatusInfoUpdate, this, (statusInfoUpdateMessage) { + MessageService().subscribe(Constants.messageTopicStatusInfoUpdated, this, (statusInfoUpdateMessage) { _updateHeader(); }); diff --git a/lib/main.dart b/lib/main.dart index 06e0652..dac7b65 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -6,6 +6,7 @@ import 'package:isar/isar.dart'; import 'package:path_provider/path_provider.dart'; import 'package:stadtbote/messages/PopContentViewMessage.dart'; import 'package:stadtbote/model/message.dart'; +import 'package:stadtbote/model/ranking.dart'; import 'package:stadtbote/model/status.dart'; import 'package:stadtbote/model/task_info.dart'; import 'package:stadtbote/popups/accept_jobs_popup.dart'; @@ -33,6 +34,7 @@ Future main() async { JobSchema, TaskInfoSchema, MessageSchema, + RankingSchema ], directory: dir.path); runZonedGuarded(() {}, (error, stackTrace) { diff --git a/lib/model/ranking.dart b/lib/model/ranking.dart new file mode 100644 index 0000000..c278171 --- /dev/null +++ b/lib/model/ranking.dart @@ -0,0 +1,56 @@ +import 'package:isar/isar.dart'; +import 'package:json_annotation/json_annotation.dart'; + +part 'ranking.g.dart'; + +@collection +@JsonSerializable() +class Ranking { + @JsonKey(name: 'id', defaultValue: 0) + late Id id = 0; + + late List ranks; + + Ranking(); + + factory Ranking.fromJson(Map json) => _$RankingFromJson(json); + + Map toJson() => _$RankingToJson(this); +} + +@embedded +@JsonSerializable() +class Rank { + late int id; + + late String zip; + + late String area; + + late String time; + + late List vehicles; + + Rank(); + + factory Rank.fromJson(Map json) => _$RankFromJson(json); + + Map toJson() => _$RankToJson(this); +} + +@embedded +@JsonSerializable() +class Vehicle { + late int id; + + late int type; + + @JsonKey(name: 'self', defaultValue: false) + late bool? self; + + Vehicle(); + + factory Vehicle.fromJson(Map json) => _$VehicleFromJson(json); + + Map toJson() => _$VehicleToJson(this); +} diff --git a/lib/model/ranking.g.dart b/lib/model/ranking.g.dart new file mode 100644 index 0000000..f64bc10 --- /dev/null +++ b/lib/model/ranking.g.dart @@ -0,0 +1,1303 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'ranking.dart'; + +// ************************************************************************** +// IsarCollectionGenerator +// ************************************************************************** + +// coverage:ignore-file +// ignore_for_file: duplicate_ignore, non_constant_identifier_names, constant_identifier_names, invalid_use_of_protected_member, unnecessary_cast, prefer_const_constructors, lines_longer_than_80_chars, require_trailing_commas, inference_failure_on_function_invocation, unnecessary_parenthesis, unnecessary_raw_strings, unnecessary_null_checks, join_return_with_assignment, prefer_final_locals, avoid_js_rounded_ints, avoid_positional_boolean_parameters, always_specify_types + +extension GetRankingCollection on Isar { + IsarCollection get rankings => this.collection(); +} + +const RankingSchema = CollectionSchema( + name: r'Ranking', + id: 923686411839286896, + properties: { + r'ranks': PropertySchema( + id: 0, + name: r'ranks', + type: IsarType.objectList, + target: r'Rank', + ) + }, + estimateSize: _rankingEstimateSize, + serialize: _rankingSerialize, + deserialize: _rankingDeserialize, + deserializeProp: _rankingDeserializeProp, + idName: r'id', + indexes: {}, + links: {}, + embeddedSchemas: {r'Rank': RankSchema, r'Vehicle': VehicleSchema}, + getId: _rankingGetId, + getLinks: _rankingGetLinks, + attach: _rankingAttach, + version: '3.1.0+1', +); + +int _rankingEstimateSize( + Ranking object, + List offsets, + Map> allOffsets, +) { + var bytesCount = offsets.last; + bytesCount += 3 + object.ranks.length * 3; + { + final offsets = allOffsets[Rank]!; + for (var i = 0; i < object.ranks.length; i++) { + final value = object.ranks[i]; + bytesCount += RankSchema.estimateSize(value, offsets, allOffsets); + } + } + return bytesCount; +} + +void _rankingSerialize( + Ranking object, + IsarWriter writer, + List offsets, + Map> allOffsets, +) { + writer.writeObjectList( + offsets[0], + allOffsets, + RankSchema.serialize, + object.ranks, + ); +} + +Ranking _rankingDeserialize( + Id id, + IsarReader reader, + List offsets, + Map> allOffsets, +) { + final object = Ranking(); + object.id = id; + object.ranks = reader.readObjectList( + offsets[0], + RankSchema.deserialize, + allOffsets, + Rank(), + ) ?? + []; + return object; +} + +P _rankingDeserializeProp

( + IsarReader reader, + int propertyId, + int offset, + Map> allOffsets, +) { + switch (propertyId) { + case 0: + return (reader.readObjectList( + offset, + RankSchema.deserialize, + allOffsets, + Rank(), + ) ?? + []) as P; + default: + throw IsarError('Unknown property with id $propertyId'); + } +} + +Id _rankingGetId(Ranking object) { + return object.id; +} + +List> _rankingGetLinks(Ranking object) { + return []; +} + +void _rankingAttach(IsarCollection col, Id id, Ranking object) { + object.id = id; +} + +extension RankingQueryWhereSort on QueryBuilder { + QueryBuilder anyId() { + return QueryBuilder.apply(this, (query) { + return query.addWhereClause(const IdWhereClause.any()); + }); + } +} + +extension RankingQueryWhere on QueryBuilder { + QueryBuilder idEqualTo(Id id) { + return QueryBuilder.apply(this, (query) { + return query.addWhereClause(IdWhereClause.between( + lower: id, + upper: id, + )); + }); + } + + QueryBuilder idNotEqualTo(Id id) { + return QueryBuilder.apply(this, (query) { + if (query.whereSort == Sort.asc) { + return query + .addWhereClause( + IdWhereClause.lessThan(upper: id, includeUpper: false), + ) + .addWhereClause( + IdWhereClause.greaterThan(lower: id, includeLower: false), + ); + } else { + return query + .addWhereClause( + IdWhereClause.greaterThan(lower: id, includeLower: false), + ) + .addWhereClause( + IdWhereClause.lessThan(upper: id, includeUpper: false), + ); + } + }); + } + + QueryBuilder idGreaterThan(Id id, + {bool include = false}) { + return QueryBuilder.apply(this, (query) { + return query.addWhereClause( + IdWhereClause.greaterThan(lower: id, includeLower: include), + ); + }); + } + + QueryBuilder idLessThan(Id id, + {bool include = false}) { + return QueryBuilder.apply(this, (query) { + return query.addWhereClause( + IdWhereClause.lessThan(upper: id, includeUpper: include), + ); + }); + } + + QueryBuilder idBetween( + Id lowerId, + Id upperId, { + bool includeLower = true, + bool includeUpper = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addWhereClause(IdWhereClause.between( + lower: lowerId, + includeLower: includeLower, + upper: upperId, + includeUpper: includeUpper, + )); + }); + } +} + +extension RankingQueryFilter + on QueryBuilder { + QueryBuilder idEqualTo(Id value) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.equalTo( + property: r'id', + value: value, + )); + }); + } + + QueryBuilder idGreaterThan( + Id value, { + bool include = false, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.greaterThan( + include: include, + property: r'id', + value: value, + )); + }); + } + + QueryBuilder idLessThan( + Id value, { + bool include = false, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.lessThan( + include: include, + property: r'id', + value: value, + )); + }); + } + + QueryBuilder idBetween( + Id lower, + Id upper, { + bool includeLower = true, + bool includeUpper = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.between( + property: r'id', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + )); + }); + } + + QueryBuilder ranksLengthEqualTo( + int length) { + return QueryBuilder.apply(this, (query) { + return query.listLength( + r'ranks', + length, + true, + length, + true, + ); + }); + } + + QueryBuilder ranksIsEmpty() { + return QueryBuilder.apply(this, (query) { + return query.listLength( + r'ranks', + 0, + true, + 0, + true, + ); + }); + } + + QueryBuilder ranksIsNotEmpty() { + return QueryBuilder.apply(this, (query) { + return query.listLength( + r'ranks', + 0, + false, + 999999, + true, + ); + }); + } + + QueryBuilder ranksLengthLessThan( + int length, { + bool include = false, + }) { + return QueryBuilder.apply(this, (query) { + return query.listLength( + r'ranks', + 0, + true, + length, + include, + ); + }); + } + + QueryBuilder ranksLengthGreaterThan( + int length, { + bool include = false, + }) { + return QueryBuilder.apply(this, (query) { + return query.listLength( + r'ranks', + length, + include, + 999999, + true, + ); + }); + } + + QueryBuilder ranksLengthBetween( + int lower, + int upper, { + bool includeLower = true, + bool includeUpper = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.listLength( + r'ranks', + lower, + includeLower, + upper, + includeUpper, + ); + }); + } +} + +extension RankingQueryObject + on QueryBuilder { + QueryBuilder ranksElement( + FilterQuery q) { + return QueryBuilder.apply(this, (query) { + return query.object(q, r'ranks'); + }); + } +} + +extension RankingQueryLinks + on QueryBuilder {} + +extension RankingQuerySortBy on QueryBuilder {} + +extension RankingQuerySortThenBy + on QueryBuilder { + QueryBuilder thenById() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'id', Sort.asc); + }); + } + + QueryBuilder thenByIdDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'id', Sort.desc); + }); + } +} + +extension RankingQueryWhereDistinct + on QueryBuilder {} + +extension RankingQueryProperty + on QueryBuilder { + QueryBuilder idProperty() { + return QueryBuilder.apply(this, (query) { + return query.addPropertyName(r'id'); + }); + } + + QueryBuilder, QQueryOperations> ranksProperty() { + return QueryBuilder.apply(this, (query) { + return query.addPropertyName(r'ranks'); + }); + } +} + +// ************************************************************************** +// IsarEmbeddedGenerator +// ************************************************************************** + +// coverage:ignore-file +// ignore_for_file: duplicate_ignore, non_constant_identifier_names, constant_identifier_names, invalid_use_of_protected_member, unnecessary_cast, prefer_const_constructors, lines_longer_than_80_chars, require_trailing_commas, inference_failure_on_function_invocation, unnecessary_parenthesis, unnecessary_raw_strings, unnecessary_null_checks, join_return_with_assignment, prefer_final_locals, avoid_js_rounded_ints, avoid_positional_boolean_parameters, always_specify_types + +const RankSchema = Schema( + name: r'Rank', + id: 4990427334210593033, + properties: { + r'area': PropertySchema( + id: 0, + name: r'area', + type: IsarType.string, + ), + r'id': PropertySchema( + id: 1, + name: r'id', + type: IsarType.long, + ), + r'time': PropertySchema( + id: 2, + name: r'time', + type: IsarType.string, + ), + r'vehicles': PropertySchema( + id: 3, + name: r'vehicles', + type: IsarType.objectList, + target: r'Vehicle', + ), + r'zip': PropertySchema( + id: 4, + name: r'zip', + type: IsarType.string, + ) + }, + estimateSize: _rankEstimateSize, + serialize: _rankSerialize, + deserialize: _rankDeserialize, + deserializeProp: _rankDeserializeProp, +); + +int _rankEstimateSize( + Rank object, + List offsets, + Map> allOffsets, +) { + var bytesCount = offsets.last; + bytesCount += 3 + object.area.length * 3; + bytesCount += 3 + object.time.length * 3; + bytesCount += 3 + object.vehicles.length * 3; + { + final offsets = allOffsets[Vehicle]!; + for (var i = 0; i < object.vehicles.length; i++) { + final value = object.vehicles[i]; + bytesCount += VehicleSchema.estimateSize(value, offsets, allOffsets); + } + } + bytesCount += 3 + object.zip.length * 3; + return bytesCount; +} + +void _rankSerialize( + Rank object, + IsarWriter writer, + List offsets, + Map> allOffsets, +) { + writer.writeString(offsets[0], object.area); + writer.writeLong(offsets[1], object.id); + writer.writeString(offsets[2], object.time); + writer.writeObjectList( + offsets[3], + allOffsets, + VehicleSchema.serialize, + object.vehicles, + ); + writer.writeString(offsets[4], object.zip); +} + +Rank _rankDeserialize( + Id id, + IsarReader reader, + List offsets, + Map> allOffsets, +) { + final object = Rank(); + object.area = reader.readString(offsets[0]); + object.id = reader.readLong(offsets[1]); + object.time = reader.readString(offsets[2]); + object.vehicles = reader.readObjectList( + offsets[3], + VehicleSchema.deserialize, + allOffsets, + Vehicle(), + ) ?? + []; + object.zip = reader.readString(offsets[4]); + return object; +} + +P _rankDeserializeProp

( + IsarReader reader, + int propertyId, + int offset, + Map> allOffsets, +) { + switch (propertyId) { + case 0: + return (reader.readString(offset)) as P; + case 1: + return (reader.readLong(offset)) as P; + case 2: + return (reader.readString(offset)) as P; + case 3: + return (reader.readObjectList( + offset, + VehicleSchema.deserialize, + allOffsets, + Vehicle(), + ) ?? + []) as P; + case 4: + return (reader.readString(offset)) as P; + default: + throw IsarError('Unknown property with id $propertyId'); + } +} + +extension RankQueryFilter on QueryBuilder { + QueryBuilder areaEqualTo( + String value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.equalTo( + property: r'area', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder areaGreaterThan( + String value, { + bool include = false, + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.greaterThan( + include: include, + property: r'area', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder areaLessThan( + String value, { + bool include = false, + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.lessThan( + include: include, + property: r'area', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder areaBetween( + String lower, + String upper, { + bool includeLower = true, + bool includeUpper = true, + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.between( + property: r'area', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder areaStartsWith( + String value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.startsWith( + property: r'area', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder areaEndsWith( + String value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.endsWith( + property: r'area', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder areaContains(String value, + {bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.contains( + property: r'area', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder areaMatches(String pattern, + {bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.matches( + property: r'area', + wildcard: pattern, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder areaIsEmpty() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.equalTo( + property: r'area', + value: '', + )); + }); + } + + QueryBuilder areaIsNotEmpty() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.greaterThan( + property: r'area', + value: '', + )); + }); + } + + QueryBuilder idEqualTo(int value) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.equalTo( + property: r'id', + value: value, + )); + }); + } + + QueryBuilder idGreaterThan( + int value, { + bool include = false, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.greaterThan( + include: include, + property: r'id', + value: value, + )); + }); + } + + QueryBuilder idLessThan( + int value, { + bool include = false, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.lessThan( + include: include, + property: r'id', + value: value, + )); + }); + } + + QueryBuilder idBetween( + int lower, + int upper, { + bool includeLower = true, + bool includeUpper = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.between( + property: r'id', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + )); + }); + } + + QueryBuilder timeEqualTo( + String value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.equalTo( + property: r'time', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder timeGreaterThan( + String value, { + bool include = false, + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.greaterThan( + include: include, + property: r'time', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder timeLessThan( + String value, { + bool include = false, + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.lessThan( + include: include, + property: r'time', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder timeBetween( + String lower, + String upper, { + bool includeLower = true, + bool includeUpper = true, + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.between( + property: r'time', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder timeStartsWith( + String value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.startsWith( + property: r'time', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder timeEndsWith( + String value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.endsWith( + property: r'time', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder timeContains(String value, + {bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.contains( + property: r'time', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder timeMatches(String pattern, + {bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.matches( + property: r'time', + wildcard: pattern, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder timeIsEmpty() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.equalTo( + property: r'time', + value: '', + )); + }); + } + + QueryBuilder timeIsNotEmpty() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.greaterThan( + property: r'time', + value: '', + )); + }); + } + + QueryBuilder vehiclesLengthEqualTo( + int length) { + return QueryBuilder.apply(this, (query) { + return query.listLength( + r'vehicles', + length, + true, + length, + true, + ); + }); + } + + QueryBuilder vehiclesIsEmpty() { + return QueryBuilder.apply(this, (query) { + return query.listLength( + r'vehicles', + 0, + true, + 0, + true, + ); + }); + } + + QueryBuilder vehiclesIsNotEmpty() { + return QueryBuilder.apply(this, (query) { + return query.listLength( + r'vehicles', + 0, + false, + 999999, + true, + ); + }); + } + + QueryBuilder vehiclesLengthLessThan( + int length, { + bool include = false, + }) { + return QueryBuilder.apply(this, (query) { + return query.listLength( + r'vehicles', + 0, + true, + length, + include, + ); + }); + } + + QueryBuilder vehiclesLengthGreaterThan( + int length, { + bool include = false, + }) { + return QueryBuilder.apply(this, (query) { + return query.listLength( + r'vehicles', + length, + include, + 999999, + true, + ); + }); + } + + QueryBuilder vehiclesLengthBetween( + int lower, + int upper, { + bool includeLower = true, + bool includeUpper = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.listLength( + r'vehicles', + lower, + includeLower, + upper, + includeUpper, + ); + }); + } + + QueryBuilder zipEqualTo( + String value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.equalTo( + property: r'zip', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder zipGreaterThan( + String value, { + bool include = false, + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.greaterThan( + include: include, + property: r'zip', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder zipLessThan( + String value, { + bool include = false, + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.lessThan( + include: include, + property: r'zip', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder zipBetween( + String lower, + String upper, { + bool includeLower = true, + bool includeUpper = true, + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.between( + property: r'zip', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder zipStartsWith( + String value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.startsWith( + property: r'zip', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder zipEndsWith( + String value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.endsWith( + property: r'zip', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder zipContains(String value, + {bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.contains( + property: r'zip', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder zipMatches(String pattern, + {bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.matches( + property: r'zip', + wildcard: pattern, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder zipIsEmpty() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.equalTo( + property: r'zip', + value: '', + )); + }); + } + + QueryBuilder zipIsNotEmpty() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.greaterThan( + property: r'zip', + value: '', + )); + }); + } +} + +extension RankQueryObject on QueryBuilder { + QueryBuilder vehiclesElement( + FilterQuery q) { + return QueryBuilder.apply(this, (query) { + return query.object(q, r'vehicles'); + }); + } +} + +// coverage:ignore-file +// ignore_for_file: duplicate_ignore, non_constant_identifier_names, constant_identifier_names, invalid_use_of_protected_member, unnecessary_cast, prefer_const_constructors, lines_longer_than_80_chars, require_trailing_commas, inference_failure_on_function_invocation, unnecessary_parenthesis, unnecessary_raw_strings, unnecessary_null_checks, join_return_with_assignment, prefer_final_locals, avoid_js_rounded_ints, avoid_positional_boolean_parameters, always_specify_types + +const VehicleSchema = Schema( + name: r'Vehicle', + id: -21624847921258799, + properties: { + r'id': PropertySchema( + id: 0, + name: r'id', + type: IsarType.long, + ), + r'self': PropertySchema( + id: 1, + name: r'self', + type: IsarType.bool, + ), + r'type': PropertySchema( + id: 2, + name: r'type', + type: IsarType.long, + ) + }, + estimateSize: _vehicleEstimateSize, + serialize: _vehicleSerialize, + deserialize: _vehicleDeserialize, + deserializeProp: _vehicleDeserializeProp, +); + +int _vehicleEstimateSize( + Vehicle object, + List offsets, + Map> allOffsets, +) { + var bytesCount = offsets.last; + return bytesCount; +} + +void _vehicleSerialize( + Vehicle object, + IsarWriter writer, + List offsets, + Map> allOffsets, +) { + writer.writeLong(offsets[0], object.id); + writer.writeBool(offsets[1], object.self); + writer.writeLong(offsets[2], object.type); +} + +Vehicle _vehicleDeserialize( + Id id, + IsarReader reader, + List offsets, + Map> allOffsets, +) { + final object = Vehicle(); + object.id = reader.readLong(offsets[0]); + object.self = reader.readBoolOrNull(offsets[1]); + object.type = reader.readLong(offsets[2]); + return object; +} + +P _vehicleDeserializeProp

( + IsarReader reader, + int propertyId, + int offset, + Map> allOffsets, +) { + switch (propertyId) { + case 0: + return (reader.readLong(offset)) as P; + case 1: + return (reader.readBoolOrNull(offset)) as P; + case 2: + return (reader.readLong(offset)) as P; + default: + throw IsarError('Unknown property with id $propertyId'); + } +} + +extension VehicleQueryFilter + on QueryBuilder { + QueryBuilder idEqualTo(int value) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.equalTo( + property: r'id', + value: value, + )); + }); + } + + QueryBuilder idGreaterThan( + int value, { + bool include = false, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.greaterThan( + include: include, + property: r'id', + value: value, + )); + }); + } + + QueryBuilder idLessThan( + int value, { + bool include = false, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.lessThan( + include: include, + property: r'id', + value: value, + )); + }); + } + + QueryBuilder idBetween( + int lower, + int upper, { + bool includeLower = true, + bool includeUpper = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.between( + property: r'id', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + )); + }); + } + + QueryBuilder selfIsNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(const FilterCondition.isNull( + property: r'self', + )); + }); + } + + QueryBuilder selfIsNotNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(const FilterCondition.isNotNull( + property: r'self', + )); + }); + } + + QueryBuilder selfEqualTo( + bool? value) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.equalTo( + property: r'self', + value: value, + )); + }); + } + + QueryBuilder typeEqualTo(int value) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.equalTo( + property: r'type', + value: value, + )); + }); + } + + QueryBuilder typeGreaterThan( + int value, { + bool include = false, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.greaterThan( + include: include, + property: r'type', + value: value, + )); + }); + } + + QueryBuilder typeLessThan( + int value, { + bool include = false, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.lessThan( + include: include, + property: r'type', + value: value, + )); + }); + } + + QueryBuilder typeBetween( + int lower, + int upper, { + bool includeLower = true, + bool includeUpper = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.between( + property: r'type', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + )); + }); + } +} + +extension VehicleQueryObject + on QueryBuilder {} + +// ************************************************************************** +// JsonSerializableGenerator +// ************************************************************************** + +Ranking _$RankingFromJson(Map json) => Ranking() + ..id = json['id'] as int? ?? 0 + ..ranks = (json['ranks'] as List) + .map((e) => Rank.fromJson(e as Map)) + .toList(); + +Map _$RankingToJson(Ranking instance) => { + 'id': instance.id, + 'ranks': instance.ranks, + }; + +Rank _$RankFromJson(Map json) => Rank() + ..id = json['id'] as int + ..zip = json['zip'] as String + ..area = json['area'] as String + ..time = json['time'] as String + ..vehicles = (json['vehicles'] as List) + .map((e) => Vehicle.fromJson(e as Map)) + .toList(); + +Map _$RankToJson(Rank instance) => { + 'id': instance.id, + 'zip': instance.zip, + 'area': instance.area, + 'time': instance.time, + 'vehicles': instance.vehicles, + }; + +Vehicle _$VehicleFromJson(Map json) => Vehicle() + ..id = json['id'] as int + ..type = json['type'] as int + ..self = json['self'] as bool? ?? false; + +Map _$VehicleToJson(Vehicle instance) => { + 'id': instance.id, + 'type': instance.type, + 'self': instance.self, + }; diff --git a/lib/popups/tasks_popups/zip_popup.dart b/lib/popups/tasks_popups/zip_popup.dart new file mode 100644 index 0000000..d43b924 --- /dev/null +++ b/lib/popups/tasks_popups/zip_popup.dart @@ -0,0 +1,53 @@ +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; +import 'package:stadtbote/model/task_info.dart'; +import 'package:stadtbote/tools/util.dart'; + +showZipPopup(BuildContext context, String text, String buttonText, Function(String) onFinished) async { + await showDialog( + context: context, + builder: (BuildContext context) { + return AlertDialog( + contentPadding: EdgeInsets.zero, + shadowColor: Colors.transparent, + backgroundColor: Colors.white, + content: StatefulBuilder(builder: (BuildContext context, StateSetter setState) { + TextEditingController textEditingController = TextEditingController(); + + return SizedBox( + key: GlobalKey(), + height: 280, + width: MediaQuery.of(context).size.width * 0.8, + child: Container( + height: 100, + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(10), + color: Colors.white, + border: Border.all( + color: Colors.grey, + width: 0.5, + ), + ), + child: Padding( + padding: const EdgeInsets.all(35.0), + child: Column( + children: [ + Text(text, style: TextStyle(fontWeight: FontWeight.bold)), + const SizedBox(height: 20), + Util.getDefaultTextField('Postleitzahl', + type: TextInputType.text, + formatter: [FilteringTextInputFormatter.singleLineFormatter], + controller: textEditingController, + autofocus: true), + const SizedBox(height: 20), + getDefaultButton(buttonText, () => { + Navigator.of(context).pop(), + + onFinished(textEditingController.text)}) + ], + ), + ), + )); + })); + }); +} diff --git a/lib/protocoll_messages/fin_tour_message.g.dart b/lib/protocoll_messages/fin_tour_message.g.dart index 47ac645..4e55c17 100644 --- a/lib/protocoll_messages/fin_tour_message.g.dart +++ b/lib/protocoll_messages/fin_tour_message.g.dart @@ -2,973 +2,6 @@ part of 'fin_tour_message.dart'; -// ************************************************************************** -// IsarEmbeddedGenerator -// ************************************************************************** - -// coverage:ignore-file -// ignore_for_file: duplicate_ignore, non_constant_identifier_names, constant_identifier_names, invalid_use_of_protected_member, unnecessary_cast, prefer_const_constructors, lines_longer_than_80_chars, require_trailing_commas, inference_failure_on_function_invocation, unnecessary_parenthesis, unnecessary_raw_strings, unnecessary_null_checks, join_return_with_assignment, prefer_final_locals, avoid_js_rounded_ints, avoid_positional_boolean_parameters, always_specify_types - -const FinTourTaskSchema = Schema( - name: r'FinTourTask', - id: 8687341112458224246, - properties: { - r'code': PropertySchema( - id: 0, - name: r'code', - type: IsarType.long, - ), - r'codes': PropertySchema( - id: 1, - name: r'codes', - type: IsarType.stringList, - ), - r'pos': PropertySchema( - id: 2, - name: r'pos', - type: IsarType.object, - target: r'FinTaskPos', - ), - r'sId': PropertySchema( - id: 3, - name: r'sId', - type: IsarType.long, - ), - r'sign': PropertySchema( - id: 4, - name: r'sign', - type: IsarType.string, - ), - r'time': PropertySchema( - id: 5, - name: r'time', - type: IsarType.string, - ), - r'val': PropertySchema( - id: 6, - name: r'val', - type: IsarType.string, - ) - }, - estimateSize: _finTourTaskEstimateSize, - serialize: _finTourTaskSerialize, - deserialize: _finTourTaskDeserialize, - deserializeProp: _finTourTaskDeserializeProp, -); - -int _finTourTaskEstimateSize( - FinTourTask object, - List offsets, - Map> allOffsets, -) { - var bytesCount = offsets.last; - { - final list = object.codes; - if (list != null) { - bytesCount += 3 + list.length * 3; - { - for (var i = 0; i < list.length; i++) { - final value = list[i]; - bytesCount += value.length * 3; - } - } - } - } - bytesCount += 3 + - FinTaskPosSchema.estimateSize( - object.pos, allOffsets[FinTaskPos]!, allOffsets); - { - final value = object.sign; - if (value != null) { - bytesCount += 3 + value.length * 3; - } - } - bytesCount += 3 + object.time.length * 3; - { - final value = object.val; - if (value != null) { - bytesCount += 3 + value.length * 3; - } - } - return bytesCount; -} - -void _finTourTaskSerialize( - FinTourTask object, - IsarWriter writer, - List offsets, - Map> allOffsets, -) { - writer.writeLong(offsets[0], object.code); - writer.writeStringList(offsets[1], object.codes); - writer.writeObject( - offsets[2], - allOffsets, - FinTaskPosSchema.serialize, - object.pos, - ); - writer.writeLong(offsets[3], object.sId); - writer.writeString(offsets[4], object.sign); - writer.writeString(offsets[5], object.time); - writer.writeString(offsets[6], object.val); -} - -FinTourTask _finTourTaskDeserialize( - Id id, - IsarReader reader, - List offsets, - Map> allOffsets, -) { - final object = FinTourTask(); - object.code = reader.readLongOrNull(offsets[0]); - object.codes = reader.readStringList(offsets[1]); - object.pos = reader.readObjectOrNull( - offsets[2], - FinTaskPosSchema.deserialize, - allOffsets, - ) ?? - FinTaskPos(); - object.sId = reader.readLong(offsets[3]); - object.sign = reader.readStringOrNull(offsets[4]); - object.time = reader.readString(offsets[5]); - object.val = reader.readStringOrNull(offsets[6]); - return object; -} - -P _finTourTaskDeserializeProp

( - IsarReader reader, - int propertyId, - int offset, - Map> allOffsets, -) { - switch (propertyId) { - case 0: - return (reader.readLongOrNull(offset)) as P; - case 1: - return (reader.readStringList(offset)) as P; - case 2: - return (reader.readObjectOrNull( - offset, - FinTaskPosSchema.deserialize, - allOffsets, - ) ?? - FinTaskPos()) as P; - case 3: - return (reader.readLong(offset)) as P; - case 4: - return (reader.readStringOrNull(offset)) as P; - case 5: - return (reader.readString(offset)) as P; - case 6: - return (reader.readStringOrNull(offset)) as P; - default: - throw IsarError('Unknown property with id $propertyId'); - } -} - -extension FinTourTaskQueryFilter - on QueryBuilder { - QueryBuilder codeIsNull() { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'code', - )); - }); - } - - QueryBuilder - codeIsNotNull() { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'code', - )); - }); - } - - QueryBuilder codeEqualTo( - int? value) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'code', - value: value, - )); - }); - } - - QueryBuilder codeGreaterThan( - int? value, { - bool include = false, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'code', - value: value, - )); - }); - } - - QueryBuilder codeLessThan( - int? value, { - bool include = false, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'code', - value: value, - )); - }); - } - - QueryBuilder codeBetween( - int? lower, - int? upper, { - bool includeLower = true, - bool includeUpper = true, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'code', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); - }); - } - - QueryBuilder codesIsNull() { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'codes', - )); - }); - } - - QueryBuilder - codesIsNotNull() { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'codes', - )); - }); - } - - QueryBuilder - codesElementEqualTo( - String value, { - bool caseSensitive = true, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'codes', - value: value, - caseSensitive: caseSensitive, - )); - }); - } - - QueryBuilder - codesElementGreaterThan( - String value, { - bool include = false, - bool caseSensitive = true, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'codes', - value: value, - caseSensitive: caseSensitive, - )); - }); - } - - QueryBuilder - codesElementLessThan( - String value, { - bool include = false, - bool caseSensitive = true, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'codes', - value: value, - caseSensitive: caseSensitive, - )); - }); - } - - QueryBuilder - codesElementBetween( - String lower, - String upper, { - bool includeLower = true, - bool includeUpper = true, - bool caseSensitive = true, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'codes', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - caseSensitive: caseSensitive, - )); - }); - } - - QueryBuilder - codesElementStartsWith( - String value, { - bool caseSensitive = true, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.startsWith( - property: r'codes', - value: value, - caseSensitive: caseSensitive, - )); - }); - } - - QueryBuilder - codesElementEndsWith( - String value, { - bool caseSensitive = true, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.endsWith( - property: r'codes', - value: value, - caseSensitive: caseSensitive, - )); - }); - } - - QueryBuilder - codesElementContains(String value, {bool caseSensitive = true}) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.contains( - property: r'codes', - value: value, - caseSensitive: caseSensitive, - )); - }); - } - - QueryBuilder - codesElementMatches(String pattern, {bool caseSensitive = true}) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.matches( - property: r'codes', - wildcard: pattern, - caseSensitive: caseSensitive, - )); - }); - } - - QueryBuilder - codesElementIsEmpty() { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'codes', - value: '', - )); - }); - } - - QueryBuilder - codesElementIsNotEmpty() { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - property: r'codes', - value: '', - )); - }); - } - - QueryBuilder - codesLengthEqualTo(int length) { - return QueryBuilder.apply(this, (query) { - return query.listLength( - r'codes', - length, - true, - length, - true, - ); - }); - } - - QueryBuilder codesIsEmpty() { - return QueryBuilder.apply(this, (query) { - return query.listLength( - r'codes', - 0, - true, - 0, - true, - ); - }); - } - - QueryBuilder - codesIsNotEmpty() { - return QueryBuilder.apply(this, (query) { - return query.listLength( - r'codes', - 0, - false, - 999999, - true, - ); - }); - } - - QueryBuilder - codesLengthLessThan( - int length, { - bool include = false, - }) { - return QueryBuilder.apply(this, (query) { - return query.listLength( - r'codes', - 0, - true, - length, - include, - ); - }); - } - - QueryBuilder - codesLengthGreaterThan( - int length, { - bool include = false, - }) { - return QueryBuilder.apply(this, (query) { - return query.listLength( - r'codes', - length, - include, - 999999, - true, - ); - }); - } - - QueryBuilder - codesLengthBetween( - int lower, - int upper, { - bool includeLower = true, - bool includeUpper = true, - }) { - return QueryBuilder.apply(this, (query) { - return query.listLength( - r'codes', - lower, - includeLower, - upper, - includeUpper, - ); - }); - } - - QueryBuilder sIdEqualTo( - int value) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'sId', - value: value, - )); - }); - } - - QueryBuilder sIdGreaterThan( - int value, { - bool include = false, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'sId', - value: value, - )); - }); - } - - QueryBuilder sIdLessThan( - int value, { - bool include = false, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'sId', - value: value, - )); - }); - } - - QueryBuilder sIdBetween( - int lower, - int upper, { - bool includeLower = true, - bool includeUpper = true, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'sId', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); - }); - } - - QueryBuilder signIsNull() { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'sign', - )); - }); - } - - QueryBuilder - signIsNotNull() { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'sign', - )); - }); - } - - QueryBuilder signEqualTo( - String? value, { - bool caseSensitive = true, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'sign', - value: value, - caseSensitive: caseSensitive, - )); - }); - } - - QueryBuilder signGreaterThan( - String? value, { - bool include = false, - bool caseSensitive = true, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'sign', - value: value, - caseSensitive: caseSensitive, - )); - }); - } - - QueryBuilder signLessThan( - String? value, { - bool include = false, - bool caseSensitive = true, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'sign', - value: value, - caseSensitive: caseSensitive, - )); - }); - } - - QueryBuilder signBetween( - String? lower, - String? upper, { - bool includeLower = true, - bool includeUpper = true, - bool caseSensitive = true, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'sign', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - caseSensitive: caseSensitive, - )); - }); - } - - QueryBuilder signStartsWith( - String value, { - bool caseSensitive = true, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.startsWith( - property: r'sign', - value: value, - caseSensitive: caseSensitive, - )); - }); - } - - QueryBuilder signEndsWith( - String value, { - bool caseSensitive = true, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.endsWith( - property: r'sign', - value: value, - caseSensitive: caseSensitive, - )); - }); - } - - QueryBuilder signContains( - String value, - {bool caseSensitive = true}) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.contains( - property: r'sign', - value: value, - caseSensitive: caseSensitive, - )); - }); - } - - QueryBuilder signMatches( - String pattern, - {bool caseSensitive = true}) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.matches( - property: r'sign', - wildcard: pattern, - caseSensitive: caseSensitive, - )); - }); - } - - QueryBuilder signIsEmpty() { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'sign', - value: '', - )); - }); - } - - QueryBuilder - signIsNotEmpty() { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - property: r'sign', - value: '', - )); - }); - } - - QueryBuilder timeEqualTo( - String value, { - bool caseSensitive = true, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'time', - value: value, - caseSensitive: caseSensitive, - )); - }); - } - - QueryBuilder timeGreaterThan( - String value, { - bool include = false, - bool caseSensitive = true, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'time', - value: value, - caseSensitive: caseSensitive, - )); - }); - } - - QueryBuilder timeLessThan( - String value, { - bool include = false, - bool caseSensitive = true, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'time', - value: value, - caseSensitive: caseSensitive, - )); - }); - } - - QueryBuilder timeBetween( - String lower, - String upper, { - bool includeLower = true, - bool includeUpper = true, - bool caseSensitive = true, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'time', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - caseSensitive: caseSensitive, - )); - }); - } - - QueryBuilder timeStartsWith( - String value, { - bool caseSensitive = true, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.startsWith( - property: r'time', - value: value, - caseSensitive: caseSensitive, - )); - }); - } - - QueryBuilder timeEndsWith( - String value, { - bool caseSensitive = true, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.endsWith( - property: r'time', - value: value, - caseSensitive: caseSensitive, - )); - }); - } - - QueryBuilder timeContains( - String value, - {bool caseSensitive = true}) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.contains( - property: r'time', - value: value, - caseSensitive: caseSensitive, - )); - }); - } - - QueryBuilder timeMatches( - String pattern, - {bool caseSensitive = true}) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.matches( - property: r'time', - wildcard: pattern, - caseSensitive: caseSensitive, - )); - }); - } - - QueryBuilder timeIsEmpty() { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'time', - value: '', - )); - }); - } - - QueryBuilder - timeIsNotEmpty() { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - property: r'time', - value: '', - )); - }); - } - - QueryBuilder valIsNull() { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'val', - )); - }); - } - - QueryBuilder valIsNotNull() { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'val', - )); - }); - } - - QueryBuilder valEqualTo( - String? value, { - bool caseSensitive = true, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'val', - value: value, - caseSensitive: caseSensitive, - )); - }); - } - - QueryBuilder valGreaterThan( - String? value, { - bool include = false, - bool caseSensitive = true, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'val', - value: value, - caseSensitive: caseSensitive, - )); - }); - } - - QueryBuilder valLessThan( - String? value, { - bool include = false, - bool caseSensitive = true, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'val', - value: value, - caseSensitive: caseSensitive, - )); - }); - } - - QueryBuilder valBetween( - String? lower, - String? upper, { - bool includeLower = true, - bool includeUpper = true, - bool caseSensitive = true, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'val', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - caseSensitive: caseSensitive, - )); - }); - } - - QueryBuilder valStartsWith( - String value, { - bool caseSensitive = true, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.startsWith( - property: r'val', - value: value, - caseSensitive: caseSensitive, - )); - }); - } - - QueryBuilder valEndsWith( - String value, { - bool caseSensitive = true, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.endsWith( - property: r'val', - value: value, - caseSensitive: caseSensitive, - )); - }); - } - - QueryBuilder valContains( - String value, - {bool caseSensitive = true}) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.contains( - property: r'val', - value: value, - caseSensitive: caseSensitive, - )); - }); - } - - QueryBuilder valMatches( - String pattern, - {bool caseSensitive = true}) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.matches( - property: r'val', - wildcard: pattern, - caseSensitive: caseSensitive, - )); - }); - } - - QueryBuilder valIsEmpty() { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'val', - value: '', - )); - }); - } - - QueryBuilder - valIsNotEmpty() { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - property: r'val', - value: '', - )); - }); - } -} - -extension FinTourTaskQueryObject - on QueryBuilder { - QueryBuilder pos( - FilterQuery q) { - return QueryBuilder.apply(this, (query) { - return query.object(q, r'pos'); - }); - } -} - // ************************************************************************** // JsonSerializableGenerator // ************************************************************************** diff --git a/lib/protocoll_messages/zip_message.dart b/lib/protocoll_messages/zip_message.dart new file mode 100644 index 0000000..b3e4030 --- /dev/null +++ b/lib/protocoll_messages/zip_message.dart @@ -0,0 +1,120 @@ +import 'package:isar/isar.dart'; +import 'package:json_annotation/json_annotation.dart'; + +part 'zip_message.g.dart'; + +/* + { + "recv": "rank", + "payload": { + "set_pos": { + "zip": "22525", + "track": { + "time": "2021-03-01T12:55:51Z", + "pos": + { + "lat": 53.595121, + "long": 9.907433, + "acc": 35 + } + } + }, + "reg_zip": { + "id": 2, + "zip": "22039" + } + } + } +*/ + +@JsonSerializable() +class ZipMessage { + @JsonKey(name: "set_pos") + ZipSetPos? setPos; + + @JsonKey(name: "req_zip") + ZipReqZip? reqZip; + + ZipMessage(); + + factory ZipMessage.fromJson(Map json) => _$ZipMessageFromJson(json); + + Map toJson() => _$ZipMessageToJson(this); +} + +@embedded +@JsonSerializable() +class ZipReqZip { + late int id; + + late String zip; + + ZipReqZip(); + + factory ZipReqZip.fromJson(Map json) => _$ZipReqZipFromJson(json); + + Map toJson() => _$ZipReqZipToJson(this); +} + +@embedded +@JsonSerializable() +class ZipSetPos { + late String zip; + + late ZipTrack track; + + ZipSetPos(); + + factory ZipSetPos.fromJson(Map json) => _$ZipSetPosFromJson(json); + + Map toJson() => _$ZipSetPosToJson(this); +} + +@embedded +@JsonSerializable() +class ZipTrack { + late String time; + + late ZipTrackPos? pos; + + ZipTrack(); + + factory ZipTrack.fromJson(Map json) => _$ZipTrackFromJson(json); + + Map toJson() => _$ZipTrackToJson(this); +} + +@embedded +@JsonSerializable() +class ZipTrackPos { + late double lat; + + late double long; + + late int acc; + + ZipTrackPos(); + + factory ZipTrackPos.fromJson(Map json) => _$ZipTrackPosFromJson(json); + + Map toJson() => _$ZipTrackPosToJson(this); +} + +/* +@JsonSerializable() +class MessageContent +{ + late String text; + + late String subj; + + late String time; + + MessageContent(); + + factory MessageContent.fromJson(Map json) => _$MessageContentFromJson(json); + + Map toJson() => _$MessageContentToJson(this); +} + +*/ \ No newline at end of file diff --git a/lib/protocoll_messages/zip_message.g.dart b/lib/protocoll_messages/zip_message.g.dart new file mode 100644 index 0000000..c4c764c --- /dev/null +++ b/lib/protocoll_messages/zip_message.g.dart @@ -0,0 +1,1077 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'zip_message.dart'; + +// ************************************************************************** +// IsarEmbeddedGenerator +// ************************************************************************** + +// coverage:ignore-file +// ignore_for_file: duplicate_ignore, non_constant_identifier_names, constant_identifier_names, invalid_use_of_protected_member, unnecessary_cast, prefer_const_constructors, lines_longer_than_80_chars, require_trailing_commas, inference_failure_on_function_invocation, unnecessary_parenthesis, unnecessary_raw_strings, unnecessary_null_checks, join_return_with_assignment, prefer_final_locals, avoid_js_rounded_ints, avoid_positional_boolean_parameters, always_specify_types + +const ZipReqZipSchema = Schema( + name: r'ZipReqZip', + id: 2176882141139579108, + properties: { + r'id': PropertySchema( + id: 0, + name: r'id', + type: IsarType.long, + ), + r'zip': PropertySchema( + id: 1, + name: r'zip', + type: IsarType.string, + ) + }, + estimateSize: _zipReqZipEstimateSize, + serialize: _zipReqZipSerialize, + deserialize: _zipReqZipDeserialize, + deserializeProp: _zipReqZipDeserializeProp, +); + +int _zipReqZipEstimateSize( + ZipReqZip object, + List offsets, + Map> allOffsets, +) { + var bytesCount = offsets.last; + bytesCount += 3 + object.zip.length * 3; + return bytesCount; +} + +void _zipReqZipSerialize( + ZipReqZip object, + IsarWriter writer, + List offsets, + Map> allOffsets, +) { + writer.writeLong(offsets[0], object.id); + writer.writeString(offsets[1], object.zip); +} + +ZipReqZip _zipReqZipDeserialize( + Id id, + IsarReader reader, + List offsets, + Map> allOffsets, +) { + final object = ZipReqZip(); + object.id = reader.readLong(offsets[0]); + object.zip = reader.readString(offsets[1]); + return object; +} + +P _zipReqZipDeserializeProp

( + IsarReader reader, + int propertyId, + int offset, + Map> allOffsets, +) { + switch (propertyId) { + case 0: + return (reader.readLong(offset)) as P; + case 1: + return (reader.readString(offset)) as P; + default: + throw IsarError('Unknown property with id $propertyId'); + } +} + +extension ZipReqZipQueryFilter + on QueryBuilder { + QueryBuilder idEqualTo( + int value) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.equalTo( + property: r'id', + value: value, + )); + }); + } + + QueryBuilder idGreaterThan( + int value, { + bool include = false, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.greaterThan( + include: include, + property: r'id', + value: value, + )); + }); + } + + QueryBuilder idLessThan( + int value, { + bool include = false, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.lessThan( + include: include, + property: r'id', + value: value, + )); + }); + } + + QueryBuilder idBetween( + int lower, + int upper, { + bool includeLower = true, + bool includeUpper = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.between( + property: r'id', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + )); + }); + } + + QueryBuilder zipEqualTo( + String value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.equalTo( + property: r'zip', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder zipGreaterThan( + String value, { + bool include = false, + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.greaterThan( + include: include, + property: r'zip', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder zipLessThan( + String value, { + bool include = false, + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.lessThan( + include: include, + property: r'zip', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder zipBetween( + String lower, + String upper, { + bool includeLower = true, + bool includeUpper = true, + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.between( + property: r'zip', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder zipStartsWith( + String value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.startsWith( + property: r'zip', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder zipEndsWith( + String value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.endsWith( + property: r'zip', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder zipContains( + String value, + {bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.contains( + property: r'zip', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder zipMatches( + String pattern, + {bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.matches( + property: r'zip', + wildcard: pattern, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder zipIsEmpty() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.equalTo( + property: r'zip', + value: '', + )); + }); + } + + QueryBuilder zipIsNotEmpty() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.greaterThan( + property: r'zip', + value: '', + )); + }); + } +} + +extension ZipReqZipQueryObject + on QueryBuilder {} + +// coverage:ignore-file +// ignore_for_file: duplicate_ignore, non_constant_identifier_names, constant_identifier_names, invalid_use_of_protected_member, unnecessary_cast, prefer_const_constructors, lines_longer_than_80_chars, require_trailing_commas, inference_failure_on_function_invocation, unnecessary_parenthesis, unnecessary_raw_strings, unnecessary_null_checks, join_return_with_assignment, prefer_final_locals, avoid_js_rounded_ints, avoid_positional_boolean_parameters, always_specify_types + +const ZipSetPosSchema = Schema( + name: r'ZipSetPos', + id: 2736271830323112702, + properties: { + r'track': PropertySchema( + id: 0, + name: r'track', + type: IsarType.object, + target: r'ZipTrack', + ), + r'zip': PropertySchema( + id: 1, + name: r'zip', + type: IsarType.string, + ) + }, + estimateSize: _zipSetPosEstimateSize, + serialize: _zipSetPosSerialize, + deserialize: _zipSetPosDeserialize, + deserializeProp: _zipSetPosDeserializeProp, +); + +int _zipSetPosEstimateSize( + ZipSetPos object, + List offsets, + Map> allOffsets, +) { + var bytesCount = offsets.last; + bytesCount += 3 + + ZipTrackSchema.estimateSize( + object.track, allOffsets[ZipTrack]!, allOffsets); + bytesCount += 3 + object.zip.length * 3; + return bytesCount; +} + +void _zipSetPosSerialize( + ZipSetPos object, + IsarWriter writer, + List offsets, + Map> allOffsets, +) { + writer.writeObject( + offsets[0], + allOffsets, + ZipTrackSchema.serialize, + object.track, + ); + writer.writeString(offsets[1], object.zip); +} + +ZipSetPos _zipSetPosDeserialize( + Id id, + IsarReader reader, + List offsets, + Map> allOffsets, +) { + final object = ZipSetPos(); + object.track = reader.readObjectOrNull( + offsets[0], + ZipTrackSchema.deserialize, + allOffsets, + ) ?? + ZipTrack(); + object.zip = reader.readString(offsets[1]); + return object; +} + +P _zipSetPosDeserializeProp

( + IsarReader reader, + int propertyId, + int offset, + Map> allOffsets, +) { + switch (propertyId) { + case 0: + return (reader.readObjectOrNull( + offset, + ZipTrackSchema.deserialize, + allOffsets, + ) ?? + ZipTrack()) as P; + case 1: + return (reader.readString(offset)) as P; + default: + throw IsarError('Unknown property with id $propertyId'); + } +} + +extension ZipSetPosQueryFilter + on QueryBuilder { + QueryBuilder zipEqualTo( + String value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.equalTo( + property: r'zip', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder zipGreaterThan( + String value, { + bool include = false, + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.greaterThan( + include: include, + property: r'zip', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder zipLessThan( + String value, { + bool include = false, + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.lessThan( + include: include, + property: r'zip', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder zipBetween( + String lower, + String upper, { + bool includeLower = true, + bool includeUpper = true, + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.between( + property: r'zip', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder zipStartsWith( + String value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.startsWith( + property: r'zip', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder zipEndsWith( + String value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.endsWith( + property: r'zip', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder zipContains( + String value, + {bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.contains( + property: r'zip', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder zipMatches( + String pattern, + {bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.matches( + property: r'zip', + wildcard: pattern, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder zipIsEmpty() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.equalTo( + property: r'zip', + value: '', + )); + }); + } + + QueryBuilder zipIsNotEmpty() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.greaterThan( + property: r'zip', + value: '', + )); + }); + } +} + +extension ZipSetPosQueryObject + on QueryBuilder { + QueryBuilder track( + FilterQuery q) { + return QueryBuilder.apply(this, (query) { + return query.object(q, r'track'); + }); + } +} + +// coverage:ignore-file +// ignore_for_file: duplicate_ignore, non_constant_identifier_names, constant_identifier_names, invalid_use_of_protected_member, unnecessary_cast, prefer_const_constructors, lines_longer_than_80_chars, require_trailing_commas, inference_failure_on_function_invocation, unnecessary_parenthesis, unnecessary_raw_strings, unnecessary_null_checks, join_return_with_assignment, prefer_final_locals, avoid_js_rounded_ints, avoid_positional_boolean_parameters, always_specify_types + +const ZipTrackSchema = Schema( + name: r'ZipTrack', + id: 8605425681395793610, + properties: { + r'pos': PropertySchema( + id: 0, + name: r'pos', + type: IsarType.object, + target: r'ZipTrackPos', + ), + r'time': PropertySchema( + id: 1, + name: r'time', + type: IsarType.string, + ) + }, + estimateSize: _zipTrackEstimateSize, + serialize: _zipTrackSerialize, + deserialize: _zipTrackDeserialize, + deserializeProp: _zipTrackDeserializeProp, +); + +int _zipTrackEstimateSize( + ZipTrack object, + List offsets, + Map> allOffsets, +) { + var bytesCount = offsets.last; + { + final value = object.pos; + if (value != null) { + bytesCount += 3 + + ZipTrackPosSchema.estimateSize( + value, allOffsets[ZipTrackPos]!, allOffsets); + } + } + bytesCount += 3 + object.time.length * 3; + return bytesCount; +} + +void _zipTrackSerialize( + ZipTrack object, + IsarWriter writer, + List offsets, + Map> allOffsets, +) { + writer.writeObject( + offsets[0], + allOffsets, + ZipTrackPosSchema.serialize, + object.pos, + ); + writer.writeString(offsets[1], object.time); +} + +ZipTrack _zipTrackDeserialize( + Id id, + IsarReader reader, + List offsets, + Map> allOffsets, +) { + final object = ZipTrack(); + object.pos = reader.readObjectOrNull( + offsets[0], + ZipTrackPosSchema.deserialize, + allOffsets, + ); + object.time = reader.readString(offsets[1]); + return object; +} + +P _zipTrackDeserializeProp

( + IsarReader reader, + int propertyId, + int offset, + Map> allOffsets, +) { + switch (propertyId) { + case 0: + return (reader.readObjectOrNull( + offset, + ZipTrackPosSchema.deserialize, + allOffsets, + )) as P; + case 1: + return (reader.readString(offset)) as P; + default: + throw IsarError('Unknown property with id $propertyId'); + } +} + +extension ZipTrackQueryFilter + on QueryBuilder { + QueryBuilder posIsNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(const FilterCondition.isNull( + property: r'pos', + )); + }); + } + + QueryBuilder posIsNotNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(const FilterCondition.isNotNull( + property: r'pos', + )); + }); + } + + QueryBuilder timeEqualTo( + String value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.equalTo( + property: r'time', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder timeGreaterThan( + String value, { + bool include = false, + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.greaterThan( + include: include, + property: r'time', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder timeLessThan( + String value, { + bool include = false, + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.lessThan( + include: include, + property: r'time', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder timeBetween( + String lower, + String upper, { + bool includeLower = true, + bool includeUpper = true, + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.between( + property: r'time', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder timeStartsWith( + String value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.startsWith( + property: r'time', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder timeEndsWith( + String value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.endsWith( + property: r'time', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder timeContains( + String value, + {bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.contains( + property: r'time', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder timeMatches( + String pattern, + {bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.matches( + property: r'time', + wildcard: pattern, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder timeIsEmpty() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.equalTo( + property: r'time', + value: '', + )); + }); + } + + QueryBuilder timeIsNotEmpty() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.greaterThan( + property: r'time', + value: '', + )); + }); + } +} + +extension ZipTrackQueryObject + on QueryBuilder { + QueryBuilder pos( + FilterQuery q) { + return QueryBuilder.apply(this, (query) { + return query.object(q, r'pos'); + }); + } +} + +// coverage:ignore-file +// ignore_for_file: duplicate_ignore, non_constant_identifier_names, constant_identifier_names, invalid_use_of_protected_member, unnecessary_cast, prefer_const_constructors, lines_longer_than_80_chars, require_trailing_commas, inference_failure_on_function_invocation, unnecessary_parenthesis, unnecessary_raw_strings, unnecessary_null_checks, join_return_with_assignment, prefer_final_locals, avoid_js_rounded_ints, avoid_positional_boolean_parameters, always_specify_types + +const ZipTrackPosSchema = Schema( + name: r'ZipTrackPos', + id: 7837584470752293488, + properties: { + r'acc': PropertySchema( + id: 0, + name: r'acc', + type: IsarType.long, + ), + r'lat': PropertySchema( + id: 1, + name: r'lat', + type: IsarType.double, + ), + r'long': PropertySchema( + id: 2, + name: r'long', + type: IsarType.double, + ) + }, + estimateSize: _zipTrackPosEstimateSize, + serialize: _zipTrackPosSerialize, + deserialize: _zipTrackPosDeserialize, + deserializeProp: _zipTrackPosDeserializeProp, +); + +int _zipTrackPosEstimateSize( + ZipTrackPos object, + List offsets, + Map> allOffsets, +) { + var bytesCount = offsets.last; + return bytesCount; +} + +void _zipTrackPosSerialize( + ZipTrackPos object, + IsarWriter writer, + List offsets, + Map> allOffsets, +) { + writer.writeLong(offsets[0], object.acc); + writer.writeDouble(offsets[1], object.lat); + writer.writeDouble(offsets[2], object.long); +} + +ZipTrackPos _zipTrackPosDeserialize( + Id id, + IsarReader reader, + List offsets, + Map> allOffsets, +) { + final object = ZipTrackPos(); + object.acc = reader.readLong(offsets[0]); + object.lat = reader.readDouble(offsets[1]); + object.long = reader.readDouble(offsets[2]); + return object; +} + +P _zipTrackPosDeserializeProp

( + IsarReader reader, + int propertyId, + int offset, + Map> allOffsets, +) { + switch (propertyId) { + case 0: + return (reader.readLong(offset)) as P; + case 1: + return (reader.readDouble(offset)) as P; + case 2: + return (reader.readDouble(offset)) as P; + default: + throw IsarError('Unknown property with id $propertyId'); + } +} + +extension ZipTrackPosQueryFilter + on QueryBuilder { + QueryBuilder accEqualTo( + int value) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.equalTo( + property: r'acc', + value: value, + )); + }); + } + + QueryBuilder accGreaterThan( + int value, { + bool include = false, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.greaterThan( + include: include, + property: r'acc', + value: value, + )); + }); + } + + QueryBuilder accLessThan( + int value, { + bool include = false, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.lessThan( + include: include, + property: r'acc', + value: value, + )); + }); + } + + QueryBuilder accBetween( + int lower, + int upper, { + bool includeLower = true, + bool includeUpper = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.between( + property: r'acc', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + )); + }); + } + + QueryBuilder latEqualTo( + double value, { + double epsilon = Query.epsilon, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.equalTo( + property: r'lat', + value: value, + epsilon: epsilon, + )); + }); + } + + QueryBuilder latGreaterThan( + double value, { + bool include = false, + double epsilon = Query.epsilon, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.greaterThan( + include: include, + property: r'lat', + value: value, + epsilon: epsilon, + )); + }); + } + + QueryBuilder latLessThan( + double value, { + bool include = false, + double epsilon = Query.epsilon, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.lessThan( + include: include, + property: r'lat', + value: value, + epsilon: epsilon, + )); + }); + } + + QueryBuilder latBetween( + double lower, + double upper, { + bool includeLower = true, + bool includeUpper = true, + double epsilon = Query.epsilon, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.between( + property: r'lat', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + epsilon: epsilon, + )); + }); + } + + QueryBuilder longEqualTo( + double value, { + double epsilon = Query.epsilon, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.equalTo( + property: r'long', + value: value, + epsilon: epsilon, + )); + }); + } + + QueryBuilder longGreaterThan( + double value, { + bool include = false, + double epsilon = Query.epsilon, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.greaterThan( + include: include, + property: r'long', + value: value, + epsilon: epsilon, + )); + }); + } + + QueryBuilder longLessThan( + double value, { + bool include = false, + double epsilon = Query.epsilon, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.lessThan( + include: include, + property: r'long', + value: value, + epsilon: epsilon, + )); + }); + } + + QueryBuilder longBetween( + double lower, + double upper, { + bool includeLower = true, + bool includeUpper = true, + double epsilon = Query.epsilon, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.between( + property: r'long', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + epsilon: epsilon, + )); + }); + } +} + +extension ZipTrackPosQueryObject + on QueryBuilder {} + +// ************************************************************************** +// JsonSerializableGenerator +// ************************************************************************** + +ZipMessage _$ZipMessageFromJson(Map json) => ZipMessage() + ..setPos = json['set_pos'] == null + ? null + : ZipSetPos.fromJson(json['set_pos'] as Map) + ..reqZip = json['req_zip'] == null + ? null + : ZipReqZip.fromJson(json['req_zip'] as Map); + +Map _$ZipMessageToJson(ZipMessage instance) => + { + 'set_pos': instance.setPos, + 'req_zip': instance.reqZip, + }; + +ZipReqZip _$ZipReqZipFromJson(Map json) => ZipReqZip() + ..id = json['id'] as int + ..zip = json['zip'] as String; + +Map _$ZipReqZipToJson(ZipReqZip instance) => { + 'id': instance.id, + 'zip': instance.zip, + }; + +ZipSetPos _$ZipSetPosFromJson(Map json) => ZipSetPos() + ..zip = json['zip'] as String + ..track = ZipTrack.fromJson(json['track'] as Map); + +Map _$ZipSetPosToJson(ZipSetPos instance) => { + 'zip': instance.zip, + 'track': instance.track, + }; + +ZipTrack _$ZipTrackFromJson(Map json) => ZipTrack() + ..time = json['time'] as String + ..pos = json['pos'] == null + ? null + : ZipTrackPos.fromJson(json['pos'] as Map); + +Map _$ZipTrackToJson(ZipTrack instance) => { + 'time': instance.time, + 'pos': instance.pos, + }; + +ZipTrackPos _$ZipTrackPosFromJson(Map json) => ZipTrackPos() + ..lat = (json['lat'] as num).toDouble() + ..long = (json['long'] as num).toDouble() + ..acc = json['acc'] as int; + +Map _$ZipTrackPosToJson(ZipTrackPos instance) => + { + 'lat': instance.lat, + 'long': instance.long, + 'acc': instance.acc, + }; diff --git a/lib/tools/constants.dart b/lib/tools/constants.dart index 946e4d3..daf9eae 100644 --- a/lib/tools/constants.dart +++ b/lib/tools/constants.dart @@ -7,7 +7,8 @@ class Constants { static const String messageTopicConnectionStatusChanged = "connection_status_changed"; static const String messageTopicSessionInfoUpdate = "status_info_updated"; static const String messageTopicSessionStatusInfoUpdate = "session_status_info_updated"; - static const String messageTopicStatusInfoUpdate = "status_info_updated"; + static const String messageTopicStatusInfoUpdated = "status_info_updated"; + static const String messageTopicRankingUpdated = "ranking_updated"; static const String messageTopicJobReceived = "job_received"; static const String messageTopicJobDeleted = "job_deleted"; static const String messageTopicMessageReceived = "message_received"; diff --git a/lib/tools/messages/ranking_updated.dart b/lib/tools/messages/ranking_updated.dart new file mode 100644 index 0000000..8fd63df --- /dev/null +++ b/lib/tools/messages/ranking_updated.dart @@ -0,0 +1,5 @@ +import 'package:stadtbote/model/status.dart'; + +class RankingUpdated { + RankingUpdated(); +} \ No newline at end of file diff --git a/lib/tools/mqtt_core.dart b/lib/tools/mqtt_core.dart index bc524b4..0e712fa 100644 --- a/lib/tools/mqtt_core.dart +++ b/lib/tools/mqtt_core.dart @@ -5,6 +5,7 @@ import 'dart:math'; import 'package:isar/isar.dart'; import 'package:mqtt_client/mqtt_client.dart'; import 'package:mqtt_client/mqtt_server_client.dart'; +import 'package:stadtbote/model/ranking.dart'; import 'package:stadtbote/model/status.dart'; import 'package:stadtbote/protocoll_messages/bootstrap_request.dart'; import 'package:stadtbote/protocoll_messages/bootstrap_response_payload.dart'; @@ -21,6 +22,7 @@ import 'package:stadtbote/tools/message_service.dart'; import 'package:stadtbote/tools/messages/job_deleted_message.dart'; import 'package:stadtbote/tools/messages/job_received_message.dart'; import 'package:stadtbote/tools/messages/message_message.dart'; +import 'package:stadtbote/tools/messages/ranking_updated.dart'; import 'package:stadtbote/tools/messages/session_info_update.dart'; import 'package:stadtbote/tools/messages/status_info_update.dart'; // ignore: depend_on_referenced_packages @@ -249,19 +251,19 @@ class MqttCore { await MyApp.isarInstance.status.put(statusMessage); }); - MessageService().publish(Constants.messageTopicStatusInfoUpdate, arguments: StatusInfoUpdate(status: statusMessage)); + MessageService().publish(Constants.messageTopicStatusInfoUpdated, arguments: StatusInfoUpdate(status: statusMessage)); } - void _rankingMessageReceived(payloadData) async { - Util.logInfo('_rankingMessageReceived'); - - /*var statusMessage = Status.fromJson(payloadData['status']); + void _rankingMessageReceived(List payloadData) async { + Map rankingMap = {}; + rankingMap["ranks"] = payloadData; + var ranking = Ranking.fromJson(rankingMap); await MyApp.isarInstance.writeTxn(() async { - await MyApp.isarInstance.status.put(statusMessage); + await MyApp.isarInstance.rankings.put(ranking); }); - BroadcastReceiver().publish(Constants.messageTopicStatusInfoUpdate, arguments: StatusInfoUpdate(status: statusMessage));*/ + MessageService().publish(Constants.messageTopicRankingUpdated, arguments: RankingUpdated()); } void _jobMessageReceived(payloadData) async { diff --git a/lib/tools/util.dart b/lib/tools/util.dart index ad58dac..7e627b0 100644 --- a/lib/tools/util.dart +++ b/lib/tools/util.dart @@ -299,7 +299,7 @@ String mapVehicleTypeToText(int vehType) { return "Service"; } - return "!UNBEKANTER VEHICLE TYPE!"; + return "!?????!"; } String mapTourMode(String mode) {